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

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

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

  1. Smith2007
    Регистрация:
    27.05.12
    Сообщения:
    1.265
    Благодарности:
    746

    Smith2007

    Живу здесь

    Smith2007

    Живу здесь

    Регистрация:
    27.05.12
    Сообщения:
    1.265
    Благодарности:
    746
    Адрес:
    Россия
    Один комп крутится в качестве NAS (Ubuntu server), можно на него нагрузить. По SCADA смотрел
    SIMP LIGHT, Rapid SCADA и др. Но как правило все они на Win платформе, а мне не хочется +1 комп запускать. Запускать на Virtual BOX это как то совсем извращение.
     
  2. nicmus
    Регистрация:
    05.10.10
    Сообщения:
    127
    Благодарности:
    94

    nicmus

    Живу здесь

    nicmus

    Живу здесь

    Регистрация:
    05.10.10
    Сообщения:
    127
    Благодарности:
    94
    Адрес:
    Калуга
    Всем привет!
    А кто нибудь прикручивал сервер openHAB к BananaPi ?
    На винде восьмой у меня сервер запустился, а вот на банане под линуксом не пошел!
    пишу service openhab start... пишет ок
    пишу service openhab status... пишет сервер е запущен?
    может кто знает где смотреть причину?
     
  3. Smith2007
    Регистрация:
    27.05.12
    Сообщения:
    1.265
    Благодарности:
    746

    Smith2007

    Живу здесь

    Smith2007

    Живу здесь

    Регистрация:
    27.05.12
    Сообщения:
    1.265
    Благодарности:
    746
    Адрес:
    Россия
    В результате различных экспериментов связки ПЛК и OpenHAB по modbus выявились некоторые вопросы:
    1. Биндинг
    Код:
    modbus:poll=2000
    modbus:tcp.slave1.connection=192.168.0.10:502
    modbus:tcp.slave1.id=1
    modbus:tcp.slave1.start=0
    modbus:tcp.slave1.length=6
    modbus:tcp.slave1.type=holding
    
    .item
    Код:
    Number var1  { modbus="slave1:4" }
    Number var2  { modbus="slave1:5" }
    
    В слейве 4,5 word - это float переменная с уставкой температуры
    В первых двух байтах посылки битовые значения дискретных датчиков.
    Добавляю биндинг
    Код:
    modbus:tcp.slave2.connection=192.168.0.10:502
    modbus:tcp.slave2.id=1 (пробовал 2)
    modbus:tcp.slave2.start=0
    modbus:tcp.slave2.length=6
    modbus:tcp.slave2.type=coil
    
    и item
    Код:
    Switch sw1 {modbus="slave2:0}
    
    Как только перезапускаю openhab появляются ошибки.
    Не понимаю в чем заключается ошибка и почему не работает два биндинга на один слейв.

    2. Алгоритм изменения значения float переменной.
    На ПЛК имеется глобальная переменная с установленным по умолчанию значением
    var
    t_max: REAL := 13.0;
    end_var

    Не пойму как мне произвести корректировку данной переменной со стороны openhab.
    Убрать объявление переменной из глобальных и описать ее сразу в модуле Slave?

    Как произвести корректировку значения t_max на стороне openhab?
     
  4. ford7
    Регистрация:
    28.12.11
    Сообщения:
    233
    Благодарности:
    12

    ford7

    Живу здесь

    ford7

    Живу здесь

    Регистрация:
    28.12.11
    Сообщения:
    233
    Благодарности:
    12
    Адрес:
    Ижевск
    Помогите с грамотой по работе с openhab...
    Установил его на свой NAS (synology 212j), а что дальше? как вообще попасть на страницу настроек или что еще нужно загрузить/добавить?
    Попробовал на страничку демо зайти, а там пишет, что ее нет:
    Код:
    HTTP ERROR 500
    
    Problem accessing /openhab.app. Reason:
    
        Sitemap 'demo' could not be found
    
    Caused by:
    
    org.openhab.ui.webapp.render.RenderException: Sitemap 'demo' could not be found
        at org.openhab.ui.webapp.internal.servlet.WebAppServlet.service(WebAppServlet.java:114)
        at org.eclipse.equinox.http.servlet.internal.ServletRegistration.service(ServletRegistration.java:61)
        at org.eclipse.equinox.http.servlet.internal.ProxyServlet.processAlias(ProxyServlet.java:128)
        at org.eclipse.equinox.http.servlet.internal.ProxyServlet.service(ProxyServlet.java:60)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
        at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:598)
        at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:486)
        at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
        at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1065)
        at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:413)
        at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:192)
        at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:999)
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)
        at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:250)
        at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:149)
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:111)
        at org.eclipse.jetty.server.Server.handle(Server.java:350)
        at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:454)
        at org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:890)
        at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:944)
        at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:630)
        at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:230)
        at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:77)
        at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:606)
        at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:46)
        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:603)
        at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:538)
        at java.lang.Thread.run(Thread.java:745)
    
     
  5. Smith2007
    Регистрация:
    27.05.12
    Сообщения:
    1.265
    Благодарности:
    746

    Smith2007

    Живу здесь

    Smith2007

    Живу здесь

    Регистрация:
    27.05.12
    Сообщения:
    1.265
    Благодарности:
    746
    Адрес:
    Россия
    Из описания:
    0. Установите Java (из репозитария или с сайта https://java.com/)
    1. создайте папку /opt/openhab (на НАС)
    2. распакуйте в нее содержимое distribution-<version>-runtime.zip
    3. В эту же папку распакуйте distribution-<version>-demo-configuration.zip
    4. запускайте файл start. sh (с консоли НАС)
    5. Браузером со своего компа заходим по адресу http://<ip адрес Вашего NAS>:8080/openhab.app?sitemap=demo

    4-ый пункт я делаю из под рута. Это скорее всего не правильно и нужно завести специальную учетку и дать права ей на openhab, но для экспериментов достаточно.

    Установил из гугл-маркета приложение openhab на смартфон, последний легко подцепился и дал пощелкать переменными на ПЛК.
     
  6. ford7
    Регистрация:
    28.12.11
    Сообщения:
    233
    Благодарности:
    12

    ford7

    Живу здесь

    ford7

    Живу здесь

    Регистрация:
    28.12.11
    Сообщения:
    233
    Благодарности:
    12
    Адрес:
    Ижевск
    Вот по подробнее- как создать папку на НАС, как попасть/установить консоль?
     
  7. Smith2007
    Регистрация:
    27.05.12
    Сообщения:
    1.265
    Благодарности:
    746

    Smith2007

    Живу здесь

    Smith2007

    Живу здесь

    Регистрация:
    27.05.12
    Сообщения:
    1.265
    Благодарности:
    746
    Адрес:
    Россия
    Я не знаком с этим НАС но вот тут есть целый форум.
    Вам необходимо на НАС установить поддержку ssh (например openssh) и затем со своего компа подключиться к НАС при помощи любого клиента (например Putty SSH Client). Таким образом Вы попадете на консоль Вашего НАС.
    Ну а затем как приводил выше по пунктам.

    зы. Вообще порекомендовал бы не экспериментировать сразу на работающем НАС.
    Установите себе на компьютер (Win) VirtualBOX, и установите любую операционную систему на виртуальной машине. Туда же и openhab. В случае каких либо проблем - виртуальную машину можно просто прибить (удалить) и создать заново. От этого работа Вашего компа или НАС не будет нарушена ни как.

    зы. openhab в дистрибутиве есть в том числе для платформы win. Может с нее начать?
     
  8. ford7
    Регистрация:
    28.12.11
    Сообщения:
    233
    Благодарности:
    12

    ford7

    Живу здесь

    ford7

    Живу здесь

    Регистрация:
    28.12.11
    Сообщения:
    233
    Благодарности:
    12
    Адрес:
    Ижевск
    Дело в том, что openhab я уже установил на НАС. Посредством путти захожу на НАС. А вот какие команды дальше вводить, как смотреть/редактировать каталоги/файлы- знаний не хватает. Если бы была оболочка типа mc или там far...
     
  9. Smith2007
    Регистрация:
    27.05.12
    Сообщения:
    1.265
    Благодарности:
    746

    Smith2007

    Живу здесь

    Smith2007

    Живу здесь

    Регистрация:
    27.05.12
    Сообщения:
    1.265
    Благодарности:
    746
    Адрес:
    Россия
  10. ford7
    Регистрация:
    28.12.11
    Сообщения:
    233
    Благодарности:
    12

    ford7

    Живу здесь

    ford7

    Живу здесь

    Регистрация:
    28.12.11
    Сообщения:
    233
    Благодарности:
    12
    Адрес:
    Ижевск
    Установил mc. Запустил демо- прикольно пощелкать, да.
    Теперь нужно уйти от демо и связать с плк (s7-1200). Видимо у меня та же задача с модбас, что и у вас, только плк другой...
    Подскажите, какой файл нужно "ковырять" и где он лежит?
     
  11. Smith2007
    Регистрация:
    27.05.12
    Сообщения:
    1.265
    Благодарности:
    746

    Smith2007

    Живу здесь

    Smith2007

    Живу здесь

    Регистрация:
    27.05.12
    Сообщения:
    1.265
    Благодарности:
    746
    Адрес:
    Россия
    \openhub\configurations\openhab.cfg
    Код:
    ############################### Modbus Binding ########################################
    #
    # sets refresh interval to Modbus polling service.
    # Value in milliseconds (optional, defaults to 200)
    #modbus:poll=1000
    
    # host (mandatory)
    #modbus:tcp.slave1.connection=192.168.0.10:502
    
    # The data type, can be "coil" "discrete" "holding" "input"
    #modbus:tcp.slave1.type=input
    
    # the TCP port (optional, defaults to '502')
    #modbus:tcp.slave1.port=502
    
    # The slave id (optional, defaults to '1')
    #modbus:tcp.slave1.id=1
    
    # The slave start address (optional, defaults to '0')
    #modbus:tcp.slave1.start=0
    
    # The number of data item to read
    # (optional, defaults to '0' - but set it to something meaningful)
    #modbus:tcp.slave1.length=2
    
    modbus:poll=3000
    modbus:tcp.slave1.connection=192.168.0.10:502
    modbus:tcp.slave1.id=1
    modbus:tcp.slave1.start=0
    modbus:tcp.slave1.length=32
    modbus:tcp.slave1.type=coil
    
    
    modbus:tcp.slave2.connection=192.168.0.10:504
    modbus:tcp.slave2.id=1
    modbus:tcp.slave2.start=0
    modbus:tcp.slave2.length=14
    modbus:tcp.slave2.type=holding
    
    \openhub\configurations\items\sh.items
    Код:
    Group All
    Group Heat_Engine "Котельная/ГВС"
    Group Kotel_1 "Котел 1" (Heat_Engine)
    Group Kotel_2 "Котел 2" (Heat_Engine)
    Group Water "Водоснабжение"
    Group Doors
    
    Switch K1 "Котел 1" (Kotel_1) { modbus="slave1:0" }
    Switch K2 "Котел 2" (Kotel_2) { modbus="slave1:1" }
    Contact Water0 "Датчик протечки [MAP(en.map):%s]" (Water){ modbus="slave1:2" }
    Contact ModeSO "Режим системы отопления (СО) [MAP(on_off.map):%s]" (Heat_Engine){ modbus="slave1:3" }
    Contact ModePol "Режим Теплый пол [MAP(on_off.map):%s]" (Heat_Engine){ modbus="slave1:4" }
    Contact Tb "Режим ГВС [MAP(on_off.map):%s]" (Heat_Engine){ modbus="slave1:5" }
    Contact Ntpol_ "Насос теплого пола [MAP(on_off.map):%s]" (Heat_Engine){ modbus="slave1:6" }
    Contact Ngvs_ "Насос ГВС [MAP(on_off.map):%s]" (Heat_Engine){ modbus="slave1:7" }
    Contact Nso_ "Насос системы отопления [MAP(on_off.map):%s]" (Heat_Engine){ modbus="slave1:8" }
    Contact K1gvs_ "Котел 1. Режим работы [MAP(gvs_so.map):%s]" (Kotel_1){ modbus="slave1:9" }
    Contact K2gvs_ "Котел 2. Режим работы [MAP(gvs_so.map):%s]" (Kotel_2){ modbus="slave1:10" }
    Contact K1so_ "Котел 1. Режим лето/зима [MAP(leto_zima.map):%s]" (Kotel_1){ modbus="slave1:11" }
    Contact K2so_ "Котел 2. Режим лето/зима [MAP(leto_zima.map):%s]" (Kotel_2){ modbus="slave1:12" }
    Contact Warning_ "Аварийный режим [MAP(en.map):%s]" (Heat_Engine){ modbus="slave1:13" }
    Contact GLock_ "Блокировка подачи воды [MAP(on_off.map):%s]" (Water){ modbus="slave1:14" }
    Contact GLock_ "Помпа [MAP(en.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 "Ролетные ворота [MAP(door.map):%s]" (Doors){ modbus="slave1:18" }
    Contact Door4 "Калитка уличная [MAP(door.map):%s]" (Doors){ modbus="slave1:19" }
    Contact Door5 "Калитка гаража [MAP(door.map):%s]" (Doors){ modbus="slave1:20" }
    Contact l1 "Минимальный уровень выгребной ямы [MAP(en.map):%s]" (Water){ modbus="slave1:24" }
    Contact l2 "Средний уровень выгребной ямы [MAP(en.map):%s]" (Water){ modbus="slave1:25" }
    Contact l3 "Максимальный уровень выгребной ямы [MAP(en.map):%s]" (Water){ modbus="slave1:26" }
    
    
    
    Number Tgvs_1 { modbus="slave2:0" }
    Number Tgvs_2 { modbus="slave2:1" }
    Number Tgvs  "Температура бойлера ГВС [%.1f °C]" <temperature> (Heat_Engine)
    
    Number Tout_1 { modbus="slave2:2" }
    Number Tout_2 { modbus="slave2:3" }
    Number Tout  "Уличная Температура [%.1f °C]" <temperature> (Heat_Engine)
    
    Number TsoR_1 { modbus="slave2:4" }
    Number TsoR_2 { modbus="slave2:5" }
    Number TsoR  "Температура обратки СО [%.1f] °C" <temperature>  (Heat_Engine)
    
    Number Tpol_1 { modbus="slave2:6" }
    Number Tpol_2 { modbus="slave2:7" }
    Number Tpol  "Температура подачи на теплый пол [%.1f °C]" <temperature>  (Heat_Engine)
    
    Number Pso_1 { modbus="slave2:8" }
    Number Pso_2 { modbus="slave2:9" }
    Number Pso  "Давление в контуре отопления [%.1f кг/см2]"  (Heat_Engine)
    
    Number Phv_1 { modbus="slave2:10" }
    Number Phv_2 { modbus="slave2:11" }
    Number Phv  "Давление в контуре водоснабжения [%.1f кг/см2]"  (Water)
    
    Number Tl0_1 { modbus="slave2:12" }
    Number Tl0_2 { modbus="slave2:13" }
    Number Tl0  "Температура в цокольном этаже [%.1f °C]" <temperature>  (Heat_Engine)
    
    \openhub\configurations\rules\sh.rules
    Код:
    import java.lang.Float
    import org.openhab.core.library.types.*
    import org.openhab.core.persistence.*
    import org.openhab.model.script.actions.*
    
    rule "Tgvs" when
    Item Tgvs_1 changed or
    Item Tgvs_2 changed
    then
    var n2 = (Tgvs_1.state as DecimalType).intValue
    var n1 = (Tgvs_2.state as DecimalType).intValue
    var temp = n1 * 256 * 256 + n2
    var result = Float::intBitsToFloat(temp)
    Tgvs.sendCommand(result)
    end
    
    rule "Tout" when
    Item Tout_1 changed or
    Item Tout_2 changed or
    System started
    then
    var n2 = (Tout_1.state as DecimalType).intValue
    var n1 = (Tout_2.state as DecimalType).intValue
    var temp = n1 * 256 * 256 + n2
    var result = Float::intBitsToFloat(temp)
    Tout.sendCommand(result)
    end
    
    rule "TsoR" when
    Item TsoR_1 changed or
    Item TsoR_2 changed
    then
    var n2 = (TsoR_1.state as DecimalType).intValue
    var n1 = (TsoR_2.state as DecimalType).intValue
    var temp = n1 * 256 * 256 + n2
    var result = Float::intBitsToFloat(temp)
    TsoR.sendCommand(result)
    end
    
    rule "Tpol" when
    Item Tpol_1 changed or
    Item Tpol_2 changed
    then
    var n2 = (Tpol_1.state as DecimalType).intValue
    var n1 = (Tpol_2.state as DecimalType).intValue
    var temp = n1 * 256 * 256 + n2
    var result = Float::intBitsToFloat(temp)
    Tpol.sendCommand(result)
    end
    
    rule "Pso" when
    Item Pso_1 changed or
    Item Pso_2 changed
    then
    var n2 = (Pso_1.state as DecimalType).intValue
    var n1 = (Pso_2.state as DecimalType).intValue
    var temp = n1 * 256 * 256 + n2
    var result = Float::intBitsToFloat(temp)
    Pso.sendCommand(result)
    end
    
    rule "Phv" when
    Item Phv_1 changed or
    Item Phv_2 changed
    then
    var n2 = (Phv_1.state as DecimalType).intValue
    var n1 = (Phv_2.state as DecimalType).intValue
    var temp = n1 * 256 * 256 + n2
    var result = Float::intBitsToFloat(temp)
    Phv.sendCommand(result)
    end
    
    rule "Tl0" when
    Item Tl0_1 changed or
    Item Tl0_2 changed
    then
    var n2 = (Tl0_1.state as DecimalType).intValue
    var n1 = (Tl0_2.state as DecimalType).intValue
    var temp = n1 * 256 * 256 + n2
    var result = Float::intBitsToFloat(temp)
    Tl0.sendCommand(result)
    end
    
    \openhub\configurations\sitemaps\sh.sitemap
    Код:
    sitemap sh label="Smart Home"
    {
        Frame label="Main" {
        Group item=Heat_Engine label="Котельная" icon="house"
        Group item=Water label="Водоснабжение" icon="cistern-80"
        Group item=Doors label="Ворота/Двери" icon="door-open"
        }  
    }
    
    ПЛК110-modbus.slave1.jpg

    ПЛК110-modbus.slave2.jpg
     

    Вложения:

  12. Smith2007
    Регистрация:
    27.05.12
    Сообщения:
    1.265
    Благодарности:
    746

    Smith2007

    Живу здесь

    Smith2007

    Живу здесь

    Регистрация:
    27.05.12
    Сообщения:
    1.265
    Благодарности:
    746
    Адрес:
    Россия
    HABmin
    Довольно хороший визуальный редактор для openhab.
    Практически все можно сделать при помощи данного редактора. Не нужно заботиться о том как правильно писать те или иные команды.
    За 20 минут полностью пересоздал интерфейс и навел красоты :)
    HabMin.jpg
     
    Последнее редактирование: 30.10.14
  13. ford7
    Регистрация:
    28.12.11
    Сообщения:
    233
    Благодарности:
    12

    ford7

    Живу здесь

    ford7

    Живу здесь

    Регистрация:
    28.12.11
    Сообщения:
    233
    Благодарности:
    12
    Адрес:
    Ижевск
    А openhab designer это не то же самое или этот удобнее?
     
  14. Smith2007
    Регистрация:
    27.05.12
    Сообщения:
    1.265
    Благодарности:
    746

    Smith2007

    Живу здесь

    Smith2007

    Живу здесь

    Регистрация:
    27.05.12
    Сообщения:
    1.265
    Благодарности:
    746
    Адрес:
    Россия
    openhab designer помогает в написании rule (правил) обработки. Следит за синтаксическими ошибками не более.
    HABmin это как визуальное средство создания всего проекта.
    Но в habmin нет (пока нет) проверки синтаксических ошибок в скриптах и правилах.
    В общем нужны оба пакета на сегодня. HABmin мне показался очень простым и удобным. И устанавливается проще некуда.
    1. Скачать архив и распаковать в каталог openhub/webapps/habmin/ (каталог habmin предварительно создать)
    2. Из каталога addons (в пакете habmin) скопировать два файла
    org. openhab. binding. zwave-1.6.0-SNAPSHOT.jar
    org. openhab. io. habmin-1.6.0-SNAPSHOT.jar

    в каталог
    openhub/addons/
    3. Рестартуем openhab
    4. Заходим по ссылке http://localhost:8080/habmin/index.html
    5. Удивляемся как просто и быстро можно сделать свой проект.

    -
    1. Download the project zip file from GitHub and unzip files in the directory webapps/habmin (you will need to create this directory - note that the directory name must be lower case).
    2. Place the org. openhab. io. habmin*.jar file into the addons directory (this is stored in the addons directory in the repository).
    3. Place the org. openhab. binding. zwave*.jar into the addons directory (this is stored in the addons directory in the repository).
    4. Either way, you will probably need to restart openHAB for the new interfaces to take affect.

    You can then start HABmin at the address http://localhost:8080/habmin/index.html (assuming openHAB is running on your local computer using the default port - if this is not the case, you will need to adjust the address accordingly).
    -

    Кроме этого я запустил openhab не как консольное приложение а как сервис. Теперь он стартует одновременно со стартом компа и управляется
    /etc/init.d/openhab {start | stop | restart | status }
     
  15. Smith2007
    Регистрация:
    27.05.12
    Сообщения:
    1.265
    Благодарности:
    746

    Smith2007

    Живу здесь

    Smith2007

    Живу здесь

    Регистрация:
    27.05.12
    Сообщения:
    1.265
    Благодарности:
    746
    Адрес:
    Россия
    Автозапуск:
    1. распаковать скрипт из файла openhab. rar
    2. Скопировать его в каталог /etc/init.d/
    3. создать в системе пользователя openhab и группу openhab
    4. Сделать файл openhab исполняемым и дать права пользователю openhab
    5. выполнить две команды.
    sudo chmod a+x /etc/init.d/openhab
    sudo update-rc.d /etc/init.d/openhab defaults

    Взято от сюда.

    После этих процедур необходимо сменить владельца каталога /openhab (и всех вложенных) на пользователя openhab

    sudo chown -R openhab: openhab /opt/openhab

    Запускаем:
    /etc/init.d/openhab start

    Проверяем
    /etc/init.d/openhab status
     

    Вложения: