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/