В конце-концов решил проблему размещения WEB-приложений с помощью халявных гугл-сервисов: Google Site +JS (frontend) App Script + Google Sheets (backend). В качестве БД может использоваться и Firebase, но в таблице хранить данные даже удобнее. Скрипты могут находиться как в составе гугл-таблицы (типа VBA в Excel), так и отдельно. В WEB-приложение их превращает встроенная обработка GET и POST запросов. При публикации в качестве WEB-приложения, пользователь получает URL с длиннющим уникальным токеном, которому и надо отправлять запросы. Единственное, что мне не понравилось, что при малейшем изменении кода, надо заново публиковать, и, соответственно менять URL в клиенте. Написано, что в тестовых целях, можно использовать базовый URL скрипта, который не меняется, и всегда относится к последней версии кода. Но, в реальности он не работает. Зато старые версии продолжают работать параллельно с новыми, пока их не удалишь вручную. Количество скриптов вроде ничем не ограничивается.
В частности, понадобилось решить задачу визуализации на странице параметров работающих агрегатов ГЭС в реальном времени + позже добавили показания датчика загрязненности воды и текущий приток в реке с метеостанции. Штатно такие задачи решаются установкой WEB-сервера, связанного со SCAD ГЭС. Но у нас поставка этого ящика сильно задерживается. SCAD в целях безопасности работает только по локальной сети, без возможности выхода в интернет.
Что получилось:
Данные о параметрах агрегатов (напряжение на статоре, активная и реактивная мощность) беру с резервных счетчиков эл. энергии по протоколу MODBUS TCP/IP (стандартный промышленный протокол) через такую шнягу:
Вложение:
Shiaga.jpg [ 169.19 КиБ | Просмотров: 941 ]
Это старенький TV-Box на Android 4.2, который долго валялся у меня без дела. Для этой задачи он хорошо подошел, т.к. имеет возможность подключаться к Ethernet через USB- адаптер и задавать статический IP. Т.о. одним портом смотрит в LAN и общается по MODBUS со счетчиками, а через WiFi попадает в интернет. Данные со счетчиков обрабатываются приложением на андроиде и передаются в Firebase для отображения в реальном времени. Параллельно передаются через App Script в Google Sheets для построения тенденций. Сайт, соответственно, подключается к Firebase для динамического отображения состояния агрегатов и к Google Sheets для отображения графиков по запросу. Приложение в шняге можно обновлять по WiFi (AirDroid). Питается от надежных 24В, и при перезагрузке, естественно, приложение самозапускается.
Показания с датчика загрязнения воды взял прямо с его выхода 4..20mA (врезался последовательно со штатным дисплеем). Через mA->V преобразователь кидаю в модуль ESP32, который шлет данные уже в другую таблицу, хотя м.б. слать и в ту же, просто на другую страницу.
И, наконец, данные о притоке в реке распарсиваются с сайта метеостанции.
В результате получилась такая схема:
Вложение:
diagrama.jpg [ 276.39 КиБ | Просмотров: 941 ]
Довольно громоздко, но делалось постепенно, добавляя новые элементы.
Скромная страничка с отображением параметров и возможностью голосовой озвучки событий:
Вложение:
pagina.jpg [ 86.36 КиБ | Просмотров: 948 ]
Для отображения графиков на странице, использую библиотеку google.charts. Можно вставлять графики прямо из таблицы, с библиотекой есть возможности масштабирования и т.п.
Вложение:
Chart2.jpg [ 107.53 КиБ | Просмотров: 954 ]
В заключение о немногих пределах гугл-халявы. Как я понимаю, никаких ограничений функциональности или по времени использования в вышеприведенных сервисах не заметил. В Firebase, базовый план разрешает до 100 одновременных подключений, что не так уж мало. Быстродействие вроде тоже не плохое. Т.е. для наших роботехнических целей, без особой публичности, должно хватить.