РЕКЛАМА НА ФОРУМХАУС Старую версию не использовал, небольшой отзыв по новой версии уже писал ранее. Работает OH2 вот уже почти полгода, проблем не заметил. Насколько я понимаю, основное отличие от первой версии это автоматический поиск оборудования, но я его не использую, предпочёл старый вариант с sitemap. Да и биндингов с поддержкой Things пока маловато. Из опробованного Хромкаст биндинг моментально находит все устройства в сети и предлагает их подключить. После подключения все работает. Ещё пробовал бета версии биндингов для ТВ Sony и спутниковых ресиверов на базе Enigma2, они работают пока криво. Первый так и не смог найти мои два ТВ Sony в сети, а во втором пока функций маловато. Через OH2 у меня идёт управление светом, контроль температуры в помещениях, просмотр изображений с камеры, просмотр состояния котла. Ближе к зиме, когда включу отопление, попробую связать датчики температуры в доме с котлом для автоматического регулирования температуры (на данный момент котёл регулирует температуру подачи только по 2 датчикам: в дистанционной панели управления и датчику на улице).
Пару месяцев назад обновился до 2, все работает, ничего не отваливается. из плюсов - habpanel причин откатывать на 1 нет
@alexeyand, до вашего сообщения на habpanel даже не обращал внимания, а сейчас сел, поигрался, удобная штука, спасибо за наводку .
Тоже перешел на вторую версию. Недавно обновился до 2.1. Работают три экземпляра. В квартире и загородном доме. По сравнению с первой версией конечно же стабильность и удобство с привязками и их количеством выше. Удобный конфигуратор системы. Добавили миграцию системы на usb ssd/hdd/ Актуально для arm устройств. Так же добавили резервное копирование. Вместе с системой можно сразу устанавливать mqtt. influxdb. grafana и ещё кучу чего. В habpanel я разочарован. Замерзает и тупит на трех планшетах. ios и андроид - без разницы. Перепробовал кучу браузеров - без толку. Постоянно надо перезагружать или обновлять и т. д. Для стариков в доме - не реально. А они за городом - основные пользователи. На десктопе работает нормально - но это не выход. Поэтому для контроля и визуализации использую Grafana. Для управления - базовый интерфейс.
@vshaev, подскажите, пожалуйста, а вы графики из Grafana встраивали в sitemap OpenHAB'а? У меня уж больно долго они грузятся (гружу как картинку через Image), если использовать вместо родного Graph.
Нет. Ещё на первой версии мне это не понравилось. Встроенного достаточно для примерной оценки. Для более глубокого анализа графана конечно удобнее. И уведомления можно настроить бет нудных правил в openhab.
Решил начать исследования связки Openhab2 + MQTT. Для этого установил брокер Установка проста. $ sudo apt-get install mosquitto mosquitto-clients После установки сервер (брокер) сразу готов к использованию. Проверяем как работает. Открываем 2 сессии (2 терминала) В одном вводим команду подписки на канал /test $ mosquitto_sub -h localhost -t /test На втором терминале вводим команду постинга в топик /test $ mosquitto_pub -h localhost -t /test -m "hello world" После ввода команды на втором терминале, в первом терминале отобразится hello world MQTT брокер mosquitto установлен и исправно работает. Переходим к настройке OH2. Для этого необходимо в Paper UI add-ons -> bindings найти MQTT Binding и инсталлировать его в систему (предварительно в настройках системы необходимо указать поддержку биндингов версии OH1) Настройка MQTT в OH2 \etc\openhab2\services\mqtt.cfg Код: # # Define your MQTT broker connections here for use in the MQTT Binding or MQTT # Persistence bundles. Replace <broker> with an ID you choose. # # URL to the MQTT broker, e.g. tcp://localhost:1883 or ssl://localhost:8883 #<broker>.url=tcp://<host>:1883 mosquitto.url=tcp://localhost:1883 Достаточно указать только адрес брокера и порт (порт по умолчанию 1883) Добавляем Items В данном примере значение будет интерпретироваться как Number Этот пример иллюстрирует передачу значения из OH в топик. Number smqtt "smqtt.test [%d]" {mqtt=">[mosquitto:/test:command:*:${command}]" } Теперь если в консоли OH2 присвоить значение smqtt например 2 Запись значения в item с консоли OH2 openhab> smarthome: send smqtt 5658 то это же значение Вы увидите в первом терминале, где прослушивали канал $ mosquitto_sub -h localhost -t /test Для чтения значений из топиков в OH в item указать: Number smqtt "smqtt.test [%d]" {mqtt="<[mosquitto:/test:state:default]" } Запуск консоли OH2 $ ssh openhab@localhost -p 8101 Запись значения в item с консоли OH2 openhab> smarthome: send smqtt 5658 Чтение item в консоли OH2 openhab> smarthome: status smqtt Вывод лога openhab> log: tail = Я делаю только первые шаги в изучении данного сервиса. Поэтому прошу тех, кто уже использует MQTT поделиться своими знаниями. И первый вопрос: Можно ли использовать одну переменную для записи и чтения? Нужно ли как-то разносить по топикам? Если не затруднит то приложите элементы кода с коментами, что бы быстрее и проще было понять как это правильно применять. Отдельная переменная - отдельный топик или один топик - одна процедура и внутри разбирать по переменным?
После установки MQTT биндинга надо еще mqtt. cfg править - открывать закомменченные строки: broker. url=tcp:/localhost:1883 и broker. clientId=openhab. Как-то странно работать с ОН через консоль, если есть Eclipse SmartHome Designer. Для контроля отправки устройствами или ОН сообщений, рекомендую использовать прогу mqttfx. Не понял вопроса. Есть топик. Устройство может писать в этот топик (отправлять значения переменной). Другие устройства, если подписаны на этот же топик, то смогут читать этот топик (узнавать значения переменной). Код: Switch LIGHT1 "Свет фронтальный под навесом" <light> {mqtt=">[broker:naves/light1/in:command:ON:1], >[broker:naves/light1/in:command:OFF:0], <[broker:naves/light1/out:state:ON:1], <[broker:naves/light1/out:state:OFF:0]"} String VOROTA_STATE "Ворота [%s]" <alarm> {mqtt="<[broker:vorota/vorota_state:state:default]"} Switch VOROTA_OPEN "Открыть/закрыть" <door-closed> {mqtt=">[broker:vorota/operate:command:ON:1]"} String KOLODCI_ALL "Дрен. колодцы [%s]" <cistern> {mqtt="<[broker:kolodci/alarm:state:default]"} Number ULICA_TEMPERATURE "Температура на улице [%.1f °C]" <temperature> {mqtt="<[broker:naves/temperature:state:default]"} Один топик - одно значение. Но топики могут быть вложены. Например общий топик vorota. А в нем куча подтопиков. vorota/state, vorota/open, vorota/time, naves/light/in, naves/light/out и т. д.
Вместо того, чтобы вписывать топики в каждый item, советую включить MQTT event bus binding в services/mqtt-eventbus.cfg. Тогда OH будет публиковать состояния всех items на брокер и будет подписан так, что можно будет изменять состояния всех items через нужные топики. Возни гораздо меньше.
Код: Switch LIGHT1 "Свет фронтальный под навесом" <light> {mqtt=">[broker:naves/light1/in:command:ON:1], >[broker:naves/light1/in:command:OFF:0], <[broker:naves/light1/out:state:ON:1], <[broker:naves/light1/out:state:OFF:0]"} item LIGHT1 Получает значение из топика broker: naves/light1/out а записывает значение в топик broker: naves/light1/in Предположим у Вас ОН с которого Вы управляете освещением и есть еще одно устройство (назовем Б), которое тоже посредсвом mqtt может управлять светом т. е. топиком broker: naves/light1/in И есть исполнительно устройство, которое прочитав значение broker: naves/light1/in и если там 1 реально включает свет. На компе в ОН, Вы сдвигаете переключатель LIGHT1 OFF В топик broker: naves/light1/in записалось значение 0 Устройство Б решило включить освещение и запостило в топик broker: naves/light1/in значение 1 Вопрос: Как это отобразится в интерфейсе ОН? В каком положении будет Swith LIGHT1?
out - это статус. Когда я включаю свет не с ОН, а с других ус-в, то когда исполнительное ус-во включит свет, то в топик out идет 1. В интерфейсе ОН переключатель сдвигается в положение ON и иконка лампочки меняется с серого цвета, на желтый. А "in" - это именно команда исполнительному устройству на включение света. Да, все так. Потому что ОН будет получать и обрабатывать все значения от брокера, а не только те, на которые подписан. А у меня ОН работает на RPI3. Поэтому мне этого не надо.
Если этим исполнительным устройством будет ПЛК, то в нем необходимо иметь две переменные. Одна для команд и вторая для состояния (например релюшки).