Skip to content

Latest commit

 

History

History
128 lines (100 loc) · 14.5 KB

3.app.md

File metadata and controls

128 lines (100 loc) · 14.5 KB

"Приложение" GyverHub

Приложение написано на HTML/CSS/JS и представляет собой "сайт", для запуска которого нужен сервер. Сервером может быть сама плата на базе esp, локальный сервер может быть вшит в приложение и так далее. Исходный код приложения можно почитать здесь.

Вариации приложения

GyverHub доступен в разных вариациях и на разных платформах. Приложение полностью автономное, для работы ему не нужен интернет, оно не зависит от каких-то серверов и вообще от разработчика, поэтому в системе даже нет таких понятий как "регистрация" и "личный кабинет". Приложение существует:

Примечание: все варианты приложения за исключением вебморды ESP автоматически обновляются: при выходе обновления приложение скачивает себе в память минифицированный HTML файл приложения вот отсюда (размер около 700кб)

Способы связи

По техническим причинам в некоторых версиях приложения доступны не все способы связи. Это не относится к устройству с библиотекой, речь идёт только о приложении!

Источник / режим WiFi MQTT Serial/BT BLE Telegram
Desktop dev
Android dev dev dev
iOS dev
ESP
localhost dev
Сайт HTTP ✔* dev
Сайт HTTPS ✔*** dev
PWA HTTP** dev
PWA HTTPS dev
Telegram dev

Особенности и настройки

Вебморда ESP

Сайт может работать из памяти ESP8266/32, в библиотеке для этого уже настроен веб-сервер. Файлы вебморды весят 55 кБ. Если зайти в браузере на IP адрес ESP в локальной сети - откроется вебморда. Также она автоматически откроется при подключении к AP (настроен MDNS). Код сильно оптимизирован и настроено кеширование, морда будет открываться очень быстро: вес главной страницы всего 300 байт. Чтобы это работало, нужно подключить нужную опцию.

Из программы

Необходимые файлы будут включены в программу в бинарном виде, для этого нужно объявить дефайн GH_INCLUDE_PORTAL перед подключением библиотеки:

#define GH_INCLUDE_PORTAL
#include <GyverHub.h>

Из файлов

Нужно загрузить в файловую систему файлы приложения из архива esp-gz.zip - скачать свежую версию. Это можно сделать через:

  • Портал загрузки esp: http://ip_еспшки/hub/upload_portal, он автоматически загружает файлы в нужный каталог
  • Файловый менеджер в приложении GyverHub (подключившись через отдельное приложение)
  • Arduino IDE: ESP8266, ESP32
  • PlatformIO: ESP8266, ESP32

Файлы должны располагаться в папке /hub/:

  • /hub/index.html.gz
  • /hub/script.js.gz
  • /hub/style.css.gz

Также нужно объявить дефайн GH_FILE_PORTAL перед подключением библиотеки:

#define GH_FILE_PORTAL
#include <GyverHub.h>

Сайт HTTP (hub.gyver.ru)

Современные браузеры запрещают слать запросы на локальные адреса в целях безопасности, поэтому для работы в режиме WiFi нужно перейти по адресу chrome://flags/#block-insecure-private-network-requests (адрес настройки для вашей версии браузера будет указан в настройках GyverHub) и отключить настройку Block insecure private network requests. Затем перезапустить браузер.

⚠️⚠️⚠️
Эта настройка снижает безопасность браузера! По возможности используйте приложение GyverHub или MQTT связь
⚠️⚠️⚠️

Если сайт hub.gyver.ru не открывается по http

  • Chrome
    • Открыть chrome://net-internals/#hsts, пункт Delete domain security policies, ввести hub.gyver.ru, нажать Delete
    • Очистить кэш
      • chrome://settings/clearBrowserData выбрать Изображения и другие файлы
      • ИЛИ на сайте хаба в строке адреса нажать иконку со значком i, Файлы cookie... и очистить
  • Firefox: нажать Ctrl + Shift + H, найти hub.gyver.ru, правой кнопкой - забыть сайт

PWA HTTP

Для установки PWA приложения с HTTP версии сайта (для работы в режиме WiFi) нужно включить настройку chrome://flags/#unsafely-treat-insecure-origin-as-secure (адрес настройки для вашего браузера указан в настройках GyverHub) и добавить http://hub.gyver.ru в список доверенных сайтов. После этого можно будет установить PWA приложение по кнопке HTTP и пользоваться им в локальном режиме.

Настройка связи, поиск

Перед поиском устройства нужно ввести в настройках имя сети, которое указано в программе устройства.

WiFi

В этом режиме устройство общается с приложением по протоколам HTTP/WS. Устройство должно находиться в одной сети с приложением (подключены к одному роутеру, телефон подключен к ESP).

Вручную

Если локальный адрес устройства известен - можно ввести его в поле "добавить по IP" и нажать + - устройство будет добавлено.

Поиск

Для поиска в этом режиме нужно указать:

  • Локальный IP приложения (девайса с открытым приложением или сайтом) или IP роутера. Также можно определить автоматически, для этого нужно отключить Anonymize local IPs exposed by WebRTC вот тут chrome://flags/#enable-webrtc-hide-local-ips-with-mdns
  • Маску подсети роутера. По умолчанию стоит стандартная для большинства роутеров
  • HTTP порт (по умолч. 80, задаётся в библиотеке)

После этого можно нажать кнопку поиска ниже.

Примечание: поиск в этом режиме работает на основе перебора всех адресов подсети, некоторые роутеры могут блокировать такие запросы и устройство не найдётся. Иногда поиск начинает работать после перезагрузки роутера.

MQTT

MQTT позволяет управлять устройством через интернет из любой другой точки планеты. GyverHub работает с внешним MQTT брокером, это может быть бесплатный брокер, платный, а также можно поднять свой сервер на малинке или роутере - инструкция. Требования к брокеру:

Для экспериментов можно использовать бесплатный публичный mosquitto, он настроен в примерах и в приложении по умолчанию:

  • Хост: test.mosquitto.org
  • Порт (ESP): 1883
  • Порт (приложение): 8081

Внимание! На публичном MQTT брокере ваше устройство могут обнаружить и другие люди и полноценно им пользоваться! Пользуйтесь брокерами с авторизацией из списка выше

После успешного подключения к серверу (появится иконка в правом верхнем углу) можно запускать поиск устройства.

Примечание: это публичный сервер, другие пользователи смогут найти ваше устройство, если случайно угадают имя сети. Это маловероятно, но реально, поэтому рекомендуется использовать сервер с авторизацией логин-пароль. Из платных брокеров могу порекомендовать WQTT - 300 рублей в год + удобная интеграция устройств с Яндекс Алисой.

Serial

Serial это не только проводная связь через USB, но и Bluetooth модули, которые создают виртуальный COM порт. Например HC-05, HC-06, JDY-21. Подключение к некоторым платам по аппаратному Serial приводит к перезагрузке устройства, поэтому в приложении предусмотрен таймаут - запрос на устройство будет отправлен через указанное кол-во миллисекунд, чтобы устройство успело загрузиться.

Bluetooth

В рамках приложения GyverHub связь Bluetooth работает с BLE модулями, например HM-10, JDY-08, AT-09, CC41-A.

Экраны приложения

TODO