• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

domoticz и его расширение со своими устройствами.

Atom

Member
Привет. Кто нить знает плагины для расширения domoticz? И кто как свои датчики к нему подключает?

Если кому то интерена данная тема, то пишите ниже.
 

Atom

Member
это читали:
это читал. Там ни слова о разработки своих устройств, а о том как запустить на компе и подключить готовые устройства известных производителей.

Совсем другой вид открывается, если прикрутить mqtt и через него подключать свои устройства. Вот именно и в этом весь вопрос. Самая головная боль: индекс реального устройства в domoticz генерируется на основе внутреннего генератора, а у устройства он может быть жестко задан на основании других свойств. Компилировать код для устройства с конкретным индексом конечно можно, но неоптимально. Так же можно делать "конвертацию" на основе скриптов lua/pytoh/bat/bash, что тоже решение, но для профи.

Например у home asistant есть плэгин, позволяющий такое делать. Может у когото свои решения, свой опыт?
 

nikolz

Well-known member
это читал. Там ни слова о разработки своих устройств, а о том как запустить на компе и подключить готовые устройства известных производителей.

Совсем другой вид открывается, если прикрутить mqtt и через него подключать свои устройства. Вот именно и в этом весь вопрос. Самая головная боль: индекс реального устройства в domoticz генерируется на основе внутреннего генератора, а у устройства он может быть жестко задан на основании других свойств. Компилировать код для устройства с конкретным индексом конечно можно, но неоптимально. Так же можно делать "конвертацию" на основе скриптов lua/pytoh/bat/bash, что тоже решение, но для профи.

Например у home asistant есть плэгин, позволяющий такое делать. Может у когото свои решения, свой опыт?
это читали:
 

Atom

Member
опять же: сначала завести устройство на domoticz, затем внести этот код в прошивку.

на 4pda еще не досмотрел, нужно месяц флейм читать о том как вытащить из сервера цвета.
Но за ссылку спасибо
 

CodeNameHawk

Moderator
Команда форума

Atom

Member
Похоже, что каждый видит то, что надеется увидеть.
Есть же там
Попятка номер 2 объяснить суть проблемы.
Смотрим в терминал и видим сообщение из топика:

domoticz/out {
"Battery" : 255,
"RSSI" : 12,
"description" : "",
"dtype" : "Light/Switch",
"hwid" : "4",
"id" : "00014052",
"idx" : 2,
"name" : "lamp",
"nvalue" : 1,
"stype" : "Switch",
"svalue1" : "0",
"switchType" : "On/Off",
"unit" : 1
}

В подобных сообщениях Domoticz сообщает нам об изменении своего состояния. Формат тела сообщения - JSON. В поле name видим название, которое мы ранее установили для switch'а в domoticz. Новое состояние свитча мы можем увидеть в поле nvalue.

Программируем собственные IoT устройства на базе Arduino-like контроллеров.
Теперь, когда MQTT-брокер доступен из сети и Domoticz публикует туда сообщение каждый раз, когда мы переключаем switch, можно заняться программированием микроконтроллера. Задача: подключиться к сети, подключиться к брокеру MQTT, подписаться на нужный топик и парсить сообщения от Domoticz, выделяя те, поле name которых совпадает с названием, захардкоженым в программу, и выполняя переключения встроенного светодиода в зависимости от нового состояния из сообщения. Впоследствии переключаться будет не встроенный светодиод, а реле, управляя каким-либо процессом.

Для реализации данного функционала я использую клон Arduino Uno, Ethernet Shield, а также Arduino-like плату на основе контроллера ESP8266, который способен подключаться к сети по WiFi. Таким образом, у меня будут две версии устройства - с подключением по Ethernet и по WiFi.

Для работы с MQTT я использовал библиотеку MQTT.h. Для парсинга JSON - ArduinoJSON.h.

Изначально, написав скетч для Arduino, я, выставив значение для буферов MQTTClient и ArduinoJSON в 500 байт и использовав преобразование входных данных в класс String, превысил мизерное количество оперативной памяти в 2 килобайта. Уменьшив размер буферов до 300 байт и использовав "сишные" строки, мне удалось уложиться в данный лимит, и даже оставить 300-400 свободных байт, но стало понятно, что модифицировать и усложнять программу, добавлять дополнительную логику в случае этой платы будет затруднительно.

Исходный код скетча Arduino + Ethernet.

Программировать ESP8266 оказалось сильно проще, так как оперативной памяти здесь на порядок больше.

Исходный код скетча для ESP8266(WiFi).

И в коде записано lamp. Но у меня подобных lamp с одинаковой прошивкой много, а в домотиксе регистрируется только единственная. Тем более видеть 'lamp' как то не солидно. Хочется видеть "Лампа в коридоре", "Лампа в кухне" и т.д. При переименовывании в домотиксе вся эта лабуда конвертируется в UTF8 и отправляется в json. А json должен парсится на устройстве, где стоит ограничение на размер payload.

Или другой пример: Управление цветной лентой зарегистрированно как цветной диммер. json конский, хотя нужно только имя, и цвета.

Вопрос именно в этом - которакю мелочь решил. Неужели все разные прошивки для одних и тех же устройств прошивали.
 

CodeNameHawk

Moderator
Команда форума
Что мешает в этом поле задать индивидуальное название?
. json конский, хотя нужно только имя, и цвета.
Для есп размер вряд ли будет проблема.
Упоминалось, что json может разбирать отдельные поля, ищите.

Неужели все разные прошивки для одних и тех же устройств прошивали.
Прошивка может быть одинаковая, а конфигурация(настройки) индивидуальные.
Иногда конфигурация может быть в коде, тогда каждое устройство прошивается "своей" прошивкой.
 
Последнее редактирование:

Atom

Member
Что то не нашел возможность показывать "description" в названиях устройств на дэшборде.

Немного поковырялся и сделал mqttbridge. Соединяется к mqtt сервису, для него составляются правила: при получении mqtt-сообщения по подходящим условиям, создать новый json по описанным в правиле данным и отправляет его на любой топик. Пока сомпилил версию для linux - arm. Как работает под виндой не проверял, но теоретически может.
 
Сверху Снизу