API для получения прогноза погоды на базе ESP8266 для любительских погодных станций

Данное API представляет собой набор простых AT команд для получения прогноза погоды с https://openweathermap.org/, текущей даты-времени с https://www.nist.gov/, а также отправки данных с погодных датчиков на проект “Народный мониторинг” https://narodmon.ru/.

Основное назначение API - использование в любительских микропроцессорных конструкциях погодных станций посредством UART диалога на скорости 38400 бит в секунду.

Для тестирования работы нам потребуется:
  1. Mодуль на базе ESP8266-E12 (у меня это LoLin NodeMcu v.3).
  2. Регистрация на ресурсe https://openweathermap.org/ для получения прогноза погоды.
  3. Регистрация на https://narodmon.ru/ для записи показаний датчиков.
Скачайте файл прошивки погодного API для модуля ESP8266-E12. Используя программу NodeMcu firmware programmer (находится в архиве) залейте программу в модуль. Для подключения к ПК модуля LoLin NodeMcu v.3 вам может пригодиться драйвер виртуального COM порта.



Для проверки результата прошивки подключите плату к ПК, настройте программу терминала на скорость передачи данных 38400 бит в секунду, подключитесь к отладочной плате и дайте команду “VERSION=?”. В ответ вы должны получить версию прошивки. У меня это “20200511”.


Зарегистрируйтесь на https://openweathermap.org/. После регистрации вам выдадут API KEY для получения прогноза погоды. Данный ключ позволяет получать прогноз погоды на ближайшее время до 60 раз в минуту, что вполне достаточно для любительских устройств.



Рекомендую сразу же подсмотреть правильное написание своего города и страны: зайдите на главную страницу ресурса и попробуйте посмотреть прогноз погоды для своего города:



Для передачи данных на “Народный мониторинг” вам потребуется регистрация на сайте https://narodmon.ru/, а также информация о MAC адресе устройства связи (см. нижне, как это сделать).

Список поддерживаемых команд и пример диалога для получения прогноза погоды с https://openweathermap.org/ и отправки данных на https://narodmon.ru/

// Версия прошивки
VERSION=?
VERSION=20200511

// MAC адрес устройства связи
MAC=?
MAC=000000000000

// Подключиться к сети с именем

SSID=MY_WIFI_NET
SSID=OK

// Подключиться к сети с паролем
PSWD=MY_PASSWORD_FOR_WIFI_NET
PSWD=OK

// Город для получения прогноза погоды
CITY=BREST
CITY=OK

// Страна для получения прогноза погоды
COUNTRY=BY
COUNTRY=OK

// API KEY ресурса https://openweathermap.org/
APIKEY=1ae4d8b2e6b7873eca21
APIKEY=OK

// Режим отображения данных (0 - краткий, 1 - полный)
IMODE=1
IMODE=OK

// Получить прогноз погоды на ближайшие 3 часа
FORECAST=1
FORECAST1=03^Clouds^+23.50^747.75^2020-05-11 15:00:00^scattered clouds^

// Задержка в секундах при выводе результата некоторых команд
DELAY=2
DELAY=OK

// Получить прогноз погоды на ближайшие 3 и 6 часов
FORECAST=1-2
FORECAST1=03^Clouds^+23.50^747.75^2020-05-11 15:00:00^scattered clouds^
FORECAST2=10^Rain^+18.90^746.25^2020-05-11 18:00:00^light rain^

// Получить прогноз погоды на ближайшие 3, 6, 9, 12 часов
FORECAST=1-4
FORECAST1=03^Clouds^+23.50^747.75^2020-05-11 15:00:00^scattered clouds^
FORECAST2=10^Rain^+18.90^746.25^2020-05-11 18:00:00^light rain^
FORECAST3=10^Rain^+15.90^745.50^2020-05-11 21:00:00^light rain^
FORECAST4=10^Rain^+12.90^744.75^2020-05-12 00:00:00^light rain^

// Получить текущую погоду
WEATHER=?
WEATHER=04^Clouds^+25.00^750.00^^broken clouds^

// Отправить данные на ресурс https://narodmon.ru/
NARODMON=+10.00^+15.60^760.50^
NARODMON=OK

// Временная зона
TIMEZONE=3
TIMEZONE=OK

// Получение текущего времени с https://www.nist.gov/

TIME=?
TIME=11:44:39

// Получение текущей даты времени с https://www.nist.gov/
DATETIME=?
DATETIME=Mon May 11 11:46:20 2020




ESPLuaTool


Программа для заливки LUA скриптов NodeMCU (https://en.wikipedia.org/wiki/NodeMCU) в микроконтроллер ESP8622 из командной строки.


NodeMCU

Разработана на FreePascal, IDE Lazarus (https://www.lazarus-ide.org/index.php?page=downloads).

Для компиляции и сборки требуется компонент Cportlaz_v1.0.0 (https://sourceforge.net/projects/cportlaz/). В случае возникновения ошибок компиляции в компоненте при установке в IDE - строки с ошибками необходимо закомментировать (изменить) по смыслу.

Разработано специально для использования совместно с notepad++ в качестве дополнения.



ESPLuaTool совместно с notepad++

Для подключения к notepad++ воспользуйтесь следующей инструкцией:

  • Скачайте последнюю версию notepad++ (https://notepad-plus-plus.org/download/).
  • Скачайте дополнение NppExec к notepad++ (https://sourceforge.net/projects/npp-plugins/files/NppExec/).
  • Установите дополнене NppExec, распаковав содержимое архива в папку "plugins" notepad++.
  • Скачайте последнюю версию ESPLuaTool (https://github.com/MatrexAl/espluatool/archive/master.zip).
  • Распакуйте ESPLuaTool в любую директорию.
  • Запустите notepad++, запустите "Плагины -> NppExec -> Execute" (или нажмите F6).
  • В открывшемся окне введите стоку запуска для прошивки микроконтроллера "d:\Lazarus\!project\espluatool\bin\espluatool.exe -p COM6 -b 9600 -wc $(FULL_CURRENT_PATH)" (без кавычек). Нажмите кнопку "Save..." и введите имя скрипта для сохранения, например "LUA Запись и компиляция". Подтвердите сохранение.
  • Для запуска скрипта в notepad++ запустите "Плагины -> NppExec -> Execute" (или нажмите F6), выберите нужный скрипт, нажмите "Ок".

  • Некоторые переменные среды notepad++ если вы редактируете, например, файл "E:\my Web\main\welcome.html":

  • $(FULL_CURRENT_PATH) — "E:\my Web\main\welcome.html"
  • $(CURRENT_DIRECTORY) — "E:\my Web\main\"
  • $(FILE_NAME) — "welcome.html"
  • $(NAME_PART) — "welcome"
  • $(EXT_PART) — "html"
  • $(SYS.<переменная>) — имя системной переменной окружения, например, $(SYS.PATH).

  • Ключи командной строки приложения ESPLuaTool (вводятся без кавычек):

  • "-с" проверка скрипта после загрузки в микроконтроллер
  • "-p COMx" назначение порта к которому подключен микроконтроллер
  • "-b xxxxx" назначение скорости обмена данными
  • "-w filepath" загрузка скрипта в микроконтроллер
  • "-wc filepath" загрузка скрипта в микроконтроллер, компиляция и запуск
  • "-ga dir" сохранение в указанную директорию всех файлов скриптов микроконтроллера
  • "-g dir -f file" сохранение в указанную директорию файла скрипта микроконтроллера

  • Примеры командной строки:

  • для прошивки микроконтроллера: espluatool.exe -c -p COM6 -b 9600 -w c:\init.lua
  • для прошивки микроконтроллера, компиляции и запуска: espluatool.exe -c -p COM6 -b 9600 -wс c:\init.lua
  • получить содержимое всех файлов и положить их в каталог: espluatool.exe -p COM6 -b 9600 -ga c:\
  • получить содержимое фала и положить его в каталог: espluatool.exe -p COM6 -b 9600 -g c:\ -f init.lua

  • Скачать программу можно по адресу https://github.com/MatrexAl/espluatool/





    PCDUINO. Настройка HTTP сервера Apache и базы данных MySQL

    Проще всего это сделать с помощью набора LAMP (Linux-Apache-MySQL-PHP) включающего в себя уже практически сконфигурированные и настроенные Apache 2, PHP 5, и MySQL 5.0.

    Настройку сервера Apache и базы данных MySQL будем выполнять удаленно, по протоколу SSH. Подключаемся к PCDuino с помощью программы PUTTY (для Windows систем) или с помощью команды ssh -p 22 ubuntu@192.169.100.56 (для Linux).

    Напоминаю стандартный логин/пароль для удаленного подключения к PCDuino: ubuntu/ubuntu.

    Весь процесс установки прост и достаточно автоматизирован. Выполняется без особых проблем через стандартные диалоги.

    После подключения получаем права root:

    sudo su

    Установим LAMP а так же веб-интерфейс управления БД MySQL выполнив команду:

    apt-get install lamp-server phpmyadmin


    В процессе установки будет предложено ввести пароль администратора для БД MySQL (его следует запомнить, а лучше записать), а так же автоматически сконфигурировать сопутствующие приложения:


    Продолжится скачивание, установка и распаковка необходимых пакетов. Терпеливо ждем примерно минут 10.

    Подтвердим автоматическое конфигурирование пакетов phpmyadmin:


    Вводим пароли для создания БД самого phpmyadmin:




    Собственно говоря, это все. Сервер стартует автоматически. Осталось проверить работоспособность сервера.

    С соседнего компьютера через браузер попытаемся подключиться к отладочной плате - в строке адреса наберем http://192.168.100.56 (у вас это может быть свой адрес):


    Проверим как работает phpmyadmin: http://192.168.100.56/phpmyadmin/. Вводим учетные данные пользователь/пароль: root/тот_который_вводили_ранее:


    Перезагрузим плату, для того что бы убедиться в автозапуске сервисов apache после рестарта:

    sudo reboot now

    После перезагрузки повторно пытаемся подключиться к плате через браузер. Если получаем ошибку, подключаемся к плате по SSH и идентифицируем проблему:

    sudo service apache2 restart

    У меня было две ошибки:

    «Waiting apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName»

    Решение:

    Открываем файл файл /etc/apache2/httpd.conf с root правами и вписываем строку:

    ServerName localhost


    «No such file or directory: apache2: could not open error log file /var/log/apache2/error.log»

    Решение:

    Создать свою папку для ведения логов, например /home/ubuntu/settings/apache/log прописать ее в файле /etc/apache2/envvars изменив параметр APACHE_LOG_DIR:

    APACHE_LOG_DIR=/home/ubuntu/settings/apache/log$SUFFIX



    Android Studio. Ошибка "Сannot resolve symbol "R""

    При сознании новых прогектов в Android Studio начал получать ошибку "Сannot resolve symbol "R"".


    Android Studio. Ошибка "Сannot resolve symbol "R""


    Проблема возникает из-за "недоработки" в библиотеке совместимости "appcompat". Решение простое. Необходимо изменить текущую версию библиотеки на стабильную, например на "com.android.support:appcompat-v7:22.2.0" (по состоянию на 2017.01.05).

    Как это сделать? Идем в структуру проекта "File->Project Structure".


    Android Studio. Структура проекта


    В открывшемся окне, в левой части формы, выбираем "app" и переходим на вкладку "Dependensies".


    Android Studio. Изменение версии библиотеки совместимости


    Удаляем текущую библиотеку совместимости "com.android.support:appcompat-v7:XX.X.X" (нажав "минус" в правой части формы) и добавляем новую с именем "com.android.support:appcompat-v7:22.2.0" (без кавычек).


    Android Studio. Изменение версии библиотеки совместимости



    Девайсы. Другие реализации зарядного устройства VERTER

    Ниже представлены другие варианты конструкции автоматического зарядного устройства для автомобильных аккумуляторов VERTER.

    От пользователя stream.3, г. Киев, Ноябрь 2016 г.

    Отличительной особенностью этой реализации является то, что в качестве источника тока используется внешний блок.


    Зарядное устройство для автомобильных аккумуляторов VERTER. Конструкция.


    Зарядное устройство для автомобильных аккумуляторов VERTER. Общий вид.


    Зарядное устройство для автомобильных аккумуляторов VERTER в процессе работы.


    Зарядное устройство для автомобильных аккумуляторов VERTER в процессе работы.


    Зарядное устройство для автомобильных аккумуляторов VERTER. Печатная плата.

    Скачать печатную плату в формате Sprint Layout.

    Связаться с автором реализации можно по адресу: stream.3@mail.ru

    Подключение к БД Firebird с помощью IBExpert и FlameRobin

    В предыдущей статье мы выполнили установку и настройку БД Firebird на удаленном сервере Ubuntu, однако с настройками по умолчанию данный сервер не будет "виден" другим компьютерам в сети. Для того что бы дать доступ клиентских машин к серверу базы данных, необходимо в файле конфигурации Firebird (firebird.conf) изменить параметр "RemoteBindAddres = localhost" на "RemoteBindAddres = " и перезагрузить сервер.


    Firebird. Настройка сервера для доступа клиентских машин


    Подключаемся к серверу с помощью программы IBExpert (для Windows систем).

    Запускаем программу IBExpert. Нажимаем кнопку "Зарегистрировать БД" и заполняем следующие поля:

  • Server: Remote (Для нас это сервер Remote - удаленный)
  • Server name: 192.168.100.55 (IP адрес или HOST имя сервера, у меня это 192.168.100.55)
  • Protocol: TCP/IP (Протокол взаимодействия с сервером - TCP/IP)
  • Server Version: Firebird 2.1 (Версия сервера. Должна соответствовать версии, установленной на сервере, для меня это Firebird 2.5 или максимально поддерживаемая программой IBExpert)
  • Database file: tst.dbf (Имя базы данных - это как раз то имя, которое мы задавали в файле aliases.conf)
  • Database alias: tst.dbf (Имя для отображения в программе IBExpert - может быть любым для вас понятным)
  • User name: SYSDBA
  • Password: masterkey


  • IBExpert. Настройка подключения к удаленному серверу Firebird


    Нажимаем "Ok", а затем "Подключиться к БД". После подключения пробуем прочитать любую таблицу - результат ниже.


    IBExpert. Подключение к удаленному серверу Firebird


    Подключаемся к серверу с помощью программы Flamerobin (для Linux систем).

    Устанавливаем программу Flamerobin:

    sudo apt-get install flamerobin


    Flamerobin. Установка


    Запускаем программу Flamerobin и регистрируем сервер: выбираем "Server -> Register server":

  • Display name: 192.168.100.55 (Имя для отображения в программе Flamerobin - может быть любым для вас понятным)
  • Host name: 192.168.100.55 (IP адрес или HOST имя сервера, у меня это 192.168.100.55)
  • Port: не заполняем (порт TCP/IP по умолчанию 3050)

  • Нажимаем кнопку "Register".


    Flamerobin. Регистрация сервера


    Регистрируем таблицу. Выбираем сервер, нажимаем правую кнопку мыши и выбираем "Register existing database". Заполняем поля:

  • Display name: tst.fdb (Имя для отображения в программе Flamerobin - может быть любым для вас понятным)
  • Database path: tst.fdb (Имя базы данных - это как раз то имя, которое мы задавали в файле aliases.conf)
  • User name: SYSDBA
  • Password: masterkey

  • Нажимаем кнопку "Сохранить", а затем, через контекстное меню, выбираем команду "Connect". Если соединение выполнено успешно, вы увидите структуру БД и можно будет попробовать прочитать какую нибудь таблицу:


    Flamerobin. Подключение к базе данных и чтение талицы

    Установка БД Firebird на сервер Ubuntu 14.04.4 LTS

    Будим сервер:
    wakeonlan 192.168.100.55 00:1a:4d:3d:7c:60

    Подключаемся по SSH:
    ssh 192.168.100.55

    Обновим информацию о пакетах:
    sudo apt-get update

    Установим пакеты:
    sudo apt-get install libstdc++5
    sudo apt-get install xinetd
    sudo apt-get install firebird2.5-super

    В процессе установки firebird2.5-super будет предложено задать пароль суперпользователя SYSDBA - зададим как "masterkey"

    Установим примеры и dev-пакет разработчика:
    sudo apt-get install firebird2.5-examples firebird2.5-dev

    Добавим себя в группу firebird:
    sudo adduser `id -un` firebird

    Запустим конфигуратор Firebird:
    sudo dpkg-reconfigure firebird2.5-super

    Настроим автоматический запуск сервера при старте системы (ответим "Да" на запрос), и если необходимо, поменяем пароль для пользователя SYSDBA.


    Firebird. Настройка автозапуска


    Firebird. Смена пароля

    Проверить работу сервисов Firebird можно с помощью команды:
    ps -A | grep fb

    В результате вы должны увидеть как минимум два рабочих процесса БД Firebird: fbguard и fbserver (может быть несколько).

    Firebird. Сервисы БД

    Распакуем файл с примером БД:
    sudo gunzip /usr/share/doc/firebird2.5-examples/examples/empbuild/employee.fdb.gz

    Запустим mc (должен быть установлен командой sudo apt-get mc) и создадим папку, где будут храниться базы, например:
    /home/alexander/server/firebird/bd

    и папку с настройками firebird (этот и следующий шаг необходим только для удобства последующих настроек сервера и его можно пропустить):
    /home/alexander/server/firebird/config

    В папке с настройками создадим символические ссылки на файлы конфигурации Firebird:
    - файл с паролем SYSDBA (доступен для просмотра и правки только под root):
    /etc/firebird/2.5/SYSDBA.password
    - файл с краткими ссылками на БД:
    /etc/firebird/2.5/aliases.conf
    - основной файл конфигурации Firebird:
    /etc/firebird/2.5/firebird.conf


    Firebird. Создание символических ссылок на настройки

    Из папки /usr/share/doc/firebird2.5-examples/examples/empbuild/ в папку /home/alexander/server/firebird/bd/ скопируем файл с примером БД "employee.fdb".

    Скорректируем файл aliases.conf для кратких ссылок на базу:
    tst.fdb = fdb /home/alexander/server/firebird/bd/employee.fdb
    tst = fdb /home/alexander/server/firebird/bd/employee.fdb


    Firebird. Правка файла алиасов (кратких ссылок)

    Проверим работоспособность сервера. Запустим консольную утилиту isql-fb:
    isql-fb

    На приглашение введем (не забываем про символ ";" в конце команды):
    connect "localhost:tst.fdb" user 'SYSDBA' password 'masterkey';
    или, если добавили себя в группу firebird:
    connect "tst.fdb" user 'SYSDBA' password 'masterkey';
    а можно указать и целый путь:
    connect "localhost:/home/alexander/server/firebird/bd/employee.fdb" user 'SYSDBA' password 'masterkey';

    Eсли все ок - в ответ должны увидеть:
    Database: "localhost:tst.fdb", User: SYSDBA

    Зачитаем список таблиц:
    show tables;

    В ответ получим:
    COUNTRY
    CUSTOMER
    DEPARTMENT
    EMPLOYEE
    EMPLOYEE_PROJECT
    JOB
    PROJECT
    PROJ_DEPT_BUDGET
    SALARY_HISTORY
    SALES

    Наберем для выхода из isql-fb: exit;


    Firebird. Проверка работоспособности сервера

    Сервер настроен. Работоспособность сервера Firebird на локальной машине проверена. В следующей статье рассмотрим пример подключения к данному серверу с другого компьютера при помощи графических оболочек IBExpert (для Windows) и FlameRobin (Linnux - систем).