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