httpwaterius web сервер с простым UI, который отображает данные, полученные с устройств waterius.
- Docker
- Docker Compose
- Доменное имя и DNS provider account
- Текущая версия приложения не умеет отправлять email с показаниями счетчиков
- Текущая версия приложения не имеет БД для хранения данных сенсоров, отображаются текущие полученные данные
docker pull grffio/httpwaterius
go install ./...
Приложение настраивается с помощью переменных окружения.
Имена переменных должны начинаться с префикса HTTPWATERIUS_
.
Посмотреть список всех поддерживаемых переменных можно с помощью команды:
httpwaterius -h
или
docker run --rm httpwaterius -h
Для правильной работы сервиса необходимо настроить устройство waterius:
- В поле
Уникальный ключ
указать идентификатор устройства (например,Bathroom
илиKitchen
). - В поле
Адрес сервера
указать адрес и порт httpwaterius (например,http://IP:8080/data
илиhttps://ВАШ-ДОМЕН/data
).
В настройках httpwaterius необходимо перечислить ваши устройства (например, HTTPWATERIUS_SERVICE_DEVICES="Bathroom,Kitchen"
).
Данные идентификаторы будут отображаться в UI (Имя уcтройства).
docker run -d --name httpwaterius -p 8080:8080/tcp \
-e HTTPWATERIUS_SERVICE_DEVICES="Bathroom,Kitchen" grffio/httpwaterius
docker run -d --name httpwaterius -p 8080:8080/tcp \
-e HTTPWATERIUS_SERVICE_DEVICES="Bathroom,Kitchen" \
-e HTTPWATERIUS_SERVICE_USERNAME="admin" \
-e HTTPWATERIUS_SERVICE_PASSWORD="P@ssw0rd" \
grffio/httpwaterius
Перейдите на страницу http://localhost:8080/
или http://IP:8080/
curl --insecure -X POST -H "Content-Type: application/json" -d '{"ch0":"1", "ch1":"2", "delta0":"1", "delta1":"1", "key":"Kitchen", "voltage":"4.99", "voltage_low":"false", "version":"v0.0.1", "version_esp":"v0.1.4"}' http://localhost:8080/data
В примере используется сервис GoDaddy в качестве регистратора домена, для А записи указан IP сервера, на котором запускается приложение, список поддерживаемых провайдеров с DNS API. Перед началом работы перейдите в директорию bootstrap
:
cd bootstrap
- В файле
docker-compose.yml
- замените значения переменных окружения на ваши:- GD_Key=GODADDY_KEY
- GD_Secret=GODADDY_SECRET
- HTTPWATERIUS_SERVICE_USERNAME=admin
- HTTPWATERIUS_SERVICE_PASSWORD=P@ssw0rd
- HTTPWATERIUS_SERVICE_DEVICES=Bathroom,Kitchen
- В файле
docker-compose.yml
- замените доменное имя сexample.com
на ваше (во всех вхождениях).
Запустите приложение:
docker-compose up -d
На хостовой системе создется каталог
/opt/acmesh
, в котором расположены автоматически сгенерированные сертификаты. Сертификат будет автоматически обновляться, для того чтобы новый сертификат применился в приложении, его необходимо перезапустить:docker-compose restart httpwaterius
Перед началом работы перейдите в директорию bootstrap
:
cd bootstrap
- Сгенерируйте Self-Signed сертификат:
./gen-cert.sh
. - В память устройства waterius необходимо записать
server.crt
. - В файле
docker-compose.yml
- замените значения переменных окружения на ваши:- HTTPWATERIUS_SERVICE_USERNAME=admin
- HTTPWATERIUS_SERVICE_PASSWORD=P@ssw0rd
- HTTPWATERIUS_SERVICE_DEVICES=Bathroom,Kitchen
Запустите приложение:
docker-compose --file docker-compose-ss.yml up -d
TODO:
- Добавить возможность отправки email с данными счетчиков по расписанию
- Добавить запуск сервера на двух портах http\https , добавить redirect с http на https
- Добавить выпуск Let's Encrypt сертификата в приложение
- Добавить поддержку БД для хранения данных сенсоров
- Добавить провайдера аутентификации
- Добавить идентификацию устройств по автоматически сгенерированному ключу, привязать к email
- Переделать UI, добавить: графики, возможность переименовывания устройств, серийные номера к счетчикам, отображение favicon
- Разобраться с 'listen tcp :443: bind: permission denied' в контейнере с непривилегированным пользователем
- Разобраться с пробросом переменной VERSION как аргумента для docker build
Исходный код данного проекта распространяется под лицензией MIT.