Aquacontroller2


Project maintained by VTeselkin Hosted on GitHub Pages — Theme by mattgraham

Документация

Screenshot_3.png

Описание устройства

Контроллер предназначен для автоматизированного управления электрооборудованием. Содержит восемь каналов для подключения нагрузок, до 6А на канал, которые могут управляться как в ручном режиме, так и в автоматическом режиме используя таймеры. А так же содержит до 10 шим каналов для управление внешними LED драйверами. Имеет гибкую систему настройки. Любой выход контроллера можно подключить к любому таймеру или температурному датчику. Также можно запрограммировать на один выход несколько таймеров.


Эксплуатация устройства

Устройство питается от сети переменного тока 220V. Проводить любые манипуляции с подключением, отключением нагрузок или датчиков только с выключенным из сети устройством чтобы исключить возможность поражения электрическим током или выхода из строя устройства! Так как устройство используется для управления высоковольтными нагрузками, необходимо обеспечить безопасную установку устройства при которой будет невозможно попадание воды на устройство или внутрь него. Контроллер оснащен часами реального времени, которые имеют свой собственный, внутренний элемент питания литиевая батарея CR2032 3.3V. При падении напряжения на батарее менее чем 2.5V контроллер не сможет сохранять время при отключении питания. Со временем может понадобится замена батареи.

Протокол передачи данных

Для связи с устройством используется встроенный модуль связи по технологии WiFi. Для обмена данных используется порт 8888 и сетевой протокол передачи данных UDP. Для обменом информации между устройством и клиентом пользователя используется внутренний протокол устройства основанный на JSON: Устройство связи принимает команды трех типов: GET, POST, INFO: Команды типа GET позволяют делать запрос на получения данных от устройства. Синтаксис команд: все команды отправляются только в строчном виде. В устройстве присутствует внутренний валидатор запросов, однако проверки на валидность параметров не предусмотрено, и вся валидация параметров должна происходить на стороне клиента, поэтому при разработке необходимо учитывать этот момент. Так как использование не валидных параметров может вызвать неоднозначную работу устройства.

Формат команд GET:

{
"status":"get",
"message":"device"
}

status - тип отправляемой команды: GET, POST, INFO

message - команда устройству:

data - дополнительный параметр для передачи параметров запроса, в запросе типа GET не используется.

На каждый запрос GET устройство шлет ответ в виде своего внутреннего JSON. Такие запросы и примеры таких ответов представлены ниже:

Информация об устройстве:

Информация об состоянии каналов устройства:

Информация о ежедневных таймерах устройства:

Информация о ежечасных таймерах устройства:

Информация о секундных таймерах устройства:

Информация о температурных настройках устройства:

Информация о температурных датчиках устройства:

Формат команд POST

Команды POST отличаются от команд GET только тем что в запросе необходимо в поле data указывать параметры запроса и поле status содержит параметр post. Формат данных для поля data аналогичен данным приходящим от устройства при запросе командой GET.

Примеры возможных запросов:

Изменение состояния каналов устройства:

Обратите внимание для изменения настроек каналов, отправлять нужно только параметр c_t, параметр cl не предназначен для изменения, он отвечает только за текущее состояние канала в зависимости от настроек таймеров или ручных настроек.

Изменение ежедневных таймеров устройства:

Изменение ежечасных таймеров устройства:

Изменение секундных таймеров устройства:

Изменение температурных настроек устройства:

При POST запросе нет необходимости указывать все параметры в поле data. При передаче значений в устройство можно отправлять только те данные которые изменились на клиенте. На каждый выполненный POST запрос, ответом будет ответ аналогичный GET с тем же message параметром, но уже с измененными данными.

Пример:

Формат команд INFO:

В данный момент запросы формата INFO используются только для внутренней передачи данных между Arduino и модулем связи ESP8266. В частности используется ESP8266 для передачи своего состояния и логирования процессов. Использование внешними клиентами в данной версии не предусмотрено.

Пример отправки логов WIFI соединения на устройство:

{
	"status": "info",
	"message": "wifi_log",
	"log": ""
}