1 2 3 4 5 6 7 8 9 10 10/10 10,00оценок: 5

OpenHAB - обмен опытом, совместное изучение и т. п

Тема в разделе "Умный дом", создана пользователем Anton66, 15.03.14.

  1. alexeyand
    Регистрация:
    13.01.14
    Сообщения:
    199
    Благодарности:
    61

    alexeyand

    Живу здесь

    alexeyand

    Живу здесь

    Регистрация:
    13.01.14
    Сообщения:
    199
    Благодарности:
    61
    Адрес:
    Philadelphia, Pennsylvania
    на скрине версия биндинга 1.10
    поэтому в paper ui он не появится
    настраивать по старинке)
     
  2. Smith2007
    Регистрация:
    27.05.12
    Сообщения:
    1.265
    Благодарности:
    748

    Smith2007

    Живу здесь

    Smith2007

    Живу здесь

    Регистрация:
    27.05.12
    Сообщения:
    1.265
    Благодарности:
    748
    Адрес:
    Россия
    Modbus binding 1.10

    Верно уже заметили, что нужно его в ручную прописывать.
    Но работает стабильно. Нареканий нет.
     
  3. stilet69
    Регистрация:
    12.05.14
    Сообщения:
    566
    Благодарности:
    377

    stilet69

    Живу здесь

    stilet69

    Живу здесь

    Регистрация:
    12.05.14
    Сообщения:
    566
    Благодарности:
    377
    Адрес:
    Санкт-Петербург - Долгопрудный
    Я собрал систему на OpenHAB2 и MegaD-2561 - получилось вполне себе бюджетно. Я даже не знаю, можно ли бюджетней собрать.
     
  4. alexeyand
    Регистрация:
    13.01.14
    Сообщения:
    199
    Благодарности:
    61

    alexeyand

    Живу здесь

    alexeyand

    Живу здесь

    Регистрация:
    13.01.14
    Сообщения:
    199
    Благодарности:
    61
    Адрес:
    Philadelphia, Pennsylvania
    Кстати непонятно куда физически прописываются настройки биндингов 2. х
    никаких конфиг файлов не создается
    как бекапить конфигурацию? пока единственный вариант копировать весь каталог с ОН
     
  5. kam711
    Регистрация:
    26.04.09
    Сообщения:
    20.540
    Благодарности:
    43.178

    kam711

    Строю дом...

    kam711

    Строю дом...

    Регистрация:
    26.04.09
    Сообщения:
    20.540
    Благодарности:
    43.178
    Адрес:
    Москва
    Второй день стучания в бубен. Тесты с подбором параметров через Modbus Poll и какой-то косяк с комментами в файле items. Но все получилось. Удалось достучаться до реле.

    img-2017-10-02-16-30-49.png

    Работает реально быстро. Смена состояния в браузере отражается практически одновременно с установкой параметра MP.

    Теперь осталось понять как работать с битовыми масками, поскольку есть один регистр на вход и один на выход. Походу нужны какие-то виртуальные кнопки или как это лучше сделать? Плюс еще как-то отследить нажатие кнопки для перевода состояний. Как делается по циклу понимаю, а как сделать в концепте ОН пока не очень. Может у кого-то есть примеры?
     
  6. Smith2007
    Регистрация:
    27.05.12
    Сообщения:
    1.265
    Благодарности:
    748

    Smith2007

    Живу здесь

    Smith2007

    Живу здесь

    Регистрация:
    27.05.12
    Сообщения:
    1.265
    Благодарности:
    748
    Адрес:
    Россия
    Посмотрите мои примеры, я постил рулесы в соседней ветке.
    Смотреть в сторону тригеров
    Код:
    rule "Protect" when
    Item PCode_0 changed from CLOSED to OPEN or
    Item PCode_1 changed from CLOSED to OPEN or
    Item PCode_2 changed from OPEN to CLOSED or
    Item Test_Protect changed from OFF to ON
    .....
     
  7. Smith2007
    Регистрация:
    27.05.12
    Сообщения:
    1.265
    Благодарности:
    748

    Smith2007

    Живу здесь

    Smith2007

    Живу здесь

    Регистрация:
    27.05.12
    Сообщения:
    1.265
    Благодарности:
    748
    Адрес:
    Россия
    /var/lib/openhab2
    /usr/share/openhab2

    рабочие настройки сюда копируются.
     
  8. alexeyand
    Регистрация:
    13.01.14
    Сообщения:
    199
    Благодарности:
    61

    alexeyand

    Живу здесь

    alexeyand

    Живу здесь

    Регистрация:
    13.01.14
    Сообщения:
    199
    Благодарности:
    61
    Адрес:
    Philadelphia, Pennsylvania
    что имеется ввиду? что прилетает в он и что надо сделать?
    надо видеть ваши items, sitemap и rules чтобы рассмотреть предметно

    у меня macos. вся движуха происходит в каталоге он. полное копирование сохраняет настройки
    просто не видя конфигов создается ощущение что настройки могут слететь. может ошибаюсь
    какие файлы находятся в этих каталогах?
     
    Последнее редактирование: 03.10.17
  9. kam711
    Регистрация:
    26.04.09
    Сообщения:
    20.540
    Благодарности:
    43.178

    kam711

    Строю дом...

    kam711

    Строю дом...

    Регистрация:
    26.04.09
    Сообщения:
    20.540
    Благодарности:
    43.178
    Адрес:
    Москва
    спасибо, уже разобрался. Сделал виртуальные свитчи, которые по 1 байтовому регистру управляют релюхами. Теперь осталось сделать отображение состояния релюх.

    Код:
    rule "Owen Switch1" when
    Item Owen_Switch1 received command
    then
    var n=(Owen_State.state as DecimalType).intValue
        logInfo("Owen_Switch1", "Processing command")
        if(receivedCommand != null){      
            switch(receivedCommand.toString.upperCase) {      
                case "ON" : {
                    Owen_State.sendCommand( n.bitwiseOr(0x01))
                }
                case "OFF":{
                    Owen_State.sendCommand(  n.bitwiseAnd(0x0E) )
                }
                       }
        }
    end
     
  10. alexeyand
    Регистрация:
    13.01.14
    Сообщения:
    199
    Благодарности:
    61

    alexeyand

    Живу здесь

    alexeyand

    Живу здесь

    Регистрация:
    13.01.14
    Сообщения:
    199
    Благодарности:
    61
    Адрес:
    Philadelphia, Pennsylvania
    А это читали? https://docs.openhab.org/addons/bindings/modbus1/readme.html
    SwitchMySwitch "MyModbusSwitch" (ALL) {modbus="slave1:<6:>7"}
    статус в ui при этом обновляется автоматически тк вы прописываете в items связь выключателя (Switch) и канала в фигурных скобках {}. говорите ОН - по биндингу modbus, на канале "slave1" из адреса 6 читаем (знак <), в 7 пишем(>)
    через rule в текущем варианте статусы не сделаете. например, если с другого устройства переключить реле, ОН этого не заметит и в приложении статус не поменяется
    чтобы обновился статус, информация должна поступить в он, а без прописанного в items канала (например {modbus="slave1:<6:>7"}) это никак

    я вообще с modbus не работал, но в случае с knx смысл тот же
    Switch light_bath_up "Bath Light" (Lights,Bath_Lights) { knx="2/1/0+<2/1/1" }
    имеется биндинг и адреса куда писать и откуда читать
     
  11. kam711
    Регистрация:
    26.04.09
    Сообщения:
    20.540
    Благодарности:
    43.178

    kam711

    Строю дом...

    kam711

    Строю дом...

    Регистрация:
    26.04.09
    Сообщения:
    20.540
    Благодарности:
    43.178
    Адрес:
    Москва
    конечно видел - но не получается, Насколько понял для этого должен быть тип Coil, который Owen не поддерживает. Вр всяком слуае OH у меня нарисовал 10 файлов логов с ошибками.

    Но в целом согласен - получается крайне не удобно.
     
    Последнее редактирование: 03.10.17
  12. alexeyand
    Регистрация:
    13.01.14
    Сообщения:
    199
    Благодарности:
    61

    alexeyand

    Живу здесь

    alexeyand

    Живу здесь

    Регистрация:
    13.01.14
    Сообщения:
    199
    Благодарности:
    61
    Адрес:
    Philadelphia, Pennsylvania
    Не ну это говен, тут уже не подскажу. главное понять смысл - чтоб была обратная связь, инфа должна поступать в он
    хотя
    если почитать:

    Switch MySwitch "My Modbus Switch" (ALL) {modbus="slave1:5"}

    where slave1 is the name of the slave in openhab configuration, and 5 is the reference to the coil, discrete input, input register or holding register.

    то есть может быть: coil или discrete input или input register или holding register
    копните в этом направлении
     
  13. Smith2007
    Регистрация:
    27.05.12
    Сообщения:
    1.265
    Благодарности:
    748

    Smith2007

    Живу здесь

    Smith2007

    Живу здесь

    Регистрация:
    27.05.12
    Сообщения:
    1.265
    Благодарности:
    748
    Адрес:
    Россия
    ПЛК Овен + OH прекрасно работают с Coil

    DateTime Datum "[%1$tA, %1$td.%1$tm.%1$tY %1$tH:%1$tM]" <clock> { channel="ntp:ntp:local:dateTime" }
    String LocalTime_Date { channel="ntp:ntp:3b8ac082:String" }
    Number cfgMode "Mode[%s]" <shield>
    Number cfgModeCO "Режим СО[%s]" <settings>
    Number cfgModePol "Режим Пол[%s]" <settings>
    Number cfgModePwSw01 "Режим PwSw[%s]"<settings>
    Number Chart_Period "Период"
    Number Chart_Period2 "Период"
    Switch K1 "Котел 1[MAP (baxi.map):%s]" <switch> (Kotel_1) { modbus="slave1:0" }
    Switch K2 "Котел 2[MAP (baxi.map):%s]" <switch> (Kotel_2) { modbus="slave1:1" }
    Switch AlertWater "Датчик протечки [MAP (AlertWater.map):%s]" (Water) { modbus="slave1:2" }
    Contact ModeSO "Статус: СО [MAP (ModeSO.map):%s]" (Heat_Engine) { modbus="<[slave1:3]" }
    Contact ModePol "Статус: Пол [MAP (ModePol.map):%s]" (Heat_Engine) { modbus="<[slave1:4]" }
    Contact Tb "Режим ГВС/СО [MAP (Tb.map):%s]" (Heat_Engine) { modbus="<[slave1:5]" }
    Contact Ntpol_ "Насос ТП [MAP (Nasos.map):%s]" <pump> (Heat_Engine) { modbus="<[slave1:6]" }
    Contact Ngvs_ "Насос ГВС [MAP (Nasos.map):%s]" <pump> (Heat_Engine) { modbus="<[slave1:7]" }
    Contact Nso_ "Насос СО [MAP (Nasos.map):%s]" <pump> (Heat_Engine) { modbus="<[slave1:8]" }
    Contact K1gvs_ "Котел 1. Режим работы [MAP (KXgvs.map):%s]" (Kotel_1) { modbus="<[slave1:9]" }
    Contact K2gvs_ "Котел 2. Режим работы [MAP (KXgvs.map):%s]" (Kotel_2) { modbus="<[slave1:10]" }
    Contact K1so_ "Котел 1. Режим лето/зима [MAP (KXso.map):%s]" (Kotel_1) { modbus="<[slave1:11]" }
    Contact K2so_ "Котел 2. Режим лето/зима [MAP (KXso.map):%s]" (Kotel_2) { modbus="<[slave1:12]" }
    Contact Warning "Авария" <siren> (Heat_Engine) { modbus="<[slave1:13]" }
    Switch GLock "Gidro Lock [MAP (glock.map):%s]" <faucet> (Water) { modbus="slave1:14" }
    Switch Pompa "Помпа [MAP (pompa.map):%s]" (Water) { modbus="slave1:15" }
    Contact Door1 "Секционные [MAP (door.map):%s]" (Doors) { modbus="<[slave1:16]" }
    Contact Door2 "Калитка секц. [MAP (door.map):%s]" (Doors) { modbus="<[slave1:17]" }
    Contact Door3 "Распашные 1 [MAP (door.map):%s]" (Doors) { modbus="<[slave1:18]" }
    Contact Door4 "Калитка [MAP (door.map):%s]" (Doors) { modbus="<[slave1:19]" }
    Contact Door5 "Распашные 2 [MAP (door.map):%s]" (Doors) { modbus="<[slave1:20]" }
    Switch btDoor00 <slider> { modbus="slave1:21" }
    Switch btDoor02 <slider> { modbus="slave1:22" }
    Switch btDoor01 <slider> { modbus="slave1:23" }
    Contact l1 (Water) { modbus="<[slave1:24]" }
    Contact l2 (Water) { modbus="<[slave1:25]" }
    Contact l3 (Water) { modbus="<[slave1:26]" }
    Switch ProtectAlarm "Night" <siren> { modbus="slave1:30" }
    Switch ProtectRest "Night" <slider> { modbus="slave1:31" }
    Contact PCode_0 "Гараж [MAP (pcode.map):%s]" <protect> { modbus="<[slave1:32]" }
    Contact PCode_1 "Мастерская [MAP (pcode.map):%s]" <protect> { modbus="<[slave1:33]" }
    Contact PCode_2 "Котельная [MAP (pcode.map):%s]" <protect> { modbus="<[slave1:34]" }
    Contact PCode_3 "Ванная 0 эт [MAP (pcode.map):%s]" <protect> { modbus="<[slave1:35]" }
    Contact PCode_4 "Фойе 2 эт [MAP (pcode.map):%s]" <protect> { modbus="<[slave1:36]" }
    Contact PCode_5 "Прихожая [MAP (pcode.map):%s]" <protect> { modbus="<[slave1:37]" }
    Contact PCode_6 "Ванная 1 эт [MAP (pcode.map):%s]" <protect> { modbus="<[slave1:38]" }
    Contact PCode_7 "Гараж-Стекло [MAP (pcode.map):%s]" <protect> { modbus="<[slave1:39]" }
    Contact PCode_8 "Мастерская-Стекло [MAP (pcode.map):%s]" <protect> { modbus="<[slave1:40]" }
    Contact PCode_9 "Котельная-Стекло [MAP (pcode.map):%s]" <protect> { modbus="<[slave1:41]" }
    Contact PCode_10 "Ванная 0 эт-Стекло [MAP (pcode.map):%s]" <protect> { modbus="<[slave1:42]" }
    Contact PCode_11 "Ванная 1 эт-Стекло [MAP (pcode.map):%s]" <protect> { modbus="<[slave1:43]" }
    Contact PCode_12 "Секционные ворота [MAP (pcode.map):%s]" <protect> { modbus="<[slave1:44]" }
    Contact PCode_13 "Калитка сек. ворот [MAP (pcode.map):%s]" <protect> { modbus="<[slave1:45]" }
    Contact PCode_14 "Распашные ворота 1 [MAP (pcode.map):%s]" <protect> { modbus="<[slave1:46]" }
    Contact PCode_15 "Распашные ворота 2 [MAP (pcode.map):%s]" <protect> { modbus="<[slave1:47]" }
    Contact PCode_16 "Калитка уличная [MAP (pcode.map):%s]" <protect> { modbus="<[slave1:48]" }
    Contact PCode_17 "Хозблок ворота [MAP (pcode.map):%s]" <protect> { modbus="<[slave1:49]" }
    Contact PCode_18 "Резерв [MAP (pcode.map):%s]" <protect> { modbus="<[slave1:50]" }
    Contact PCode_19 "Резерв [MAP (pcode.map):%s]" <protect> { modbus="<[slave1:51]" }
    Contact PCode_20 "Резерв [MAP (pcode.map):%s]" <protect> { modbus="<[slave1:52]" }
    Contact PCode_21 "Резерв [MAP (pcode.map):%s]" <protect> { modbus="<[slave1:53]" }
    Contact PCode_22 "KNS [MAP (pcode.map):%s]" <siren> { modbus="<[slave1:54]" }
    Contact PCode_23 "T ГВС! [MAP (pcode.map):%s]" <siren> { modbus="<[slave1:55]" }
    Contact PCode_24 "P SO! [MAP (pcode.map):%s]" <siren> { modbus="<[slave1:56]" }

    Contact, Switch - это все coil
    Код:
    # Bool
    modbus:tcp.slave1.connection=192.168.0.10:502
    modbus:tcp.slave1.id=1
    modbus:tcp.slave1.start=0
    modbus:tcp.slave1.length=512
    modbus:tcp.slave1.type=coil
    
    
    Все легко меняется.
    Если переменная изменилась в rules - нужно вызвать один из методов:
    NameVar.sendCommand(value)
    postUpdate(NemaVar, value)

    и она тут же отразится в интерфейсе
     
  14. alexeyand
    Регистрация:
    13.01.14
    Сообщения:
    199
    Благодарности:
    61

    alexeyand

    Живу здесь

    alexeyand

    Живу здесь

    Регистрация:
    13.01.14
    Сообщения:
    199
    Благодарности:
    61
    Адрес:
    Philadelphia, Pennsylvania
    это да, если переменная изменилась
    но у kam711 она там не изменится в его конфигурации - я об этом
    да и каждую переменную обыгрывать в rules - чокнуться можно. это неправильный подход
    нужно их в items обрабатывать
     
  15. kam711
    Регистрация:
    26.04.09
    Сообщения:
    20.540
    Благодарности:
    43.178

    kam711

    Строю дом...

    kam711

    Строю дом...

    Регистрация:
    26.04.09
    Сообщения:
    20.540
    Благодарности:
    43.178
    Адрес:
    Москва
    Добился все-таки правильного отражения статусов. Даже при изменении из других источников.

    Код:
    rule "Owen State" when
    System started or
    Item Owen_State changed
    then
            var n=(Owen_State.state as DecimalType).intValue
            if(n.bitwiseAnd(0x01)!=0 ){
                Owen_Switch1.sendCommand(ON)
            }
            else {
                Owen_Switch1.sendCommand(OFF)
            }
            if(n.bitwiseAnd(0x02)!=0 ){
                Owen_Switch2.sendCommand(ON)
            }
            else {
                Owen_Switch2.sendCommand (OFF)
            }
            if(n.bitwiseAnd(0x04)!=0 ){
                Owen_Switch3.sendCommand(ON)
            }
            else {
                Owen_Switch3.sendCommand (OFF)
            }
            if(n.bitwiseAnd(0x08)!=0 ){
                Owen_Switch4.sendCommand(ON)
            }
            else {
                Owen_Switch4.sendCommand (OFF)
            }    
    end
    Но блин такой секас мне как-то совсем не по душе. Код конечно тупой, но его получается много. Без Coil на модбасе с одним регистром делать нечего. Буду пробовать входы - посмотрим как будет получаться.
     
    Последнее редактирование: 03.10.17