РЕКЛАМА НА ФОРУМХАУС Один комп крутится в качестве NAS (Ubuntu server), можно на него нагрузить. По SCADA смотрел SIMP LIGHT, Rapid SCADA и др. Но как правило все они на Win платформе, а мне не хочется +1 комп запускать. Запускать на Virtual BOX это как то совсем извращение.
Всем привет! А кто нибудь прикручивал сервер openHAB к BananaPi ? На винде восьмой у меня сервер запустился, а вот на банане под линуксом не пошел! пишу service openhab start... пишет ок пишу service openhab status... пишет сервер е запущен? может кто знает где смотреть причину?
В результате различных экспериментов связки ПЛК и 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?
Помогите с грамотой по работе с 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)
Из описания: 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 на смартфон, последний легко подцепился и дал пощелкать переменными на ПЛК.
Я не знаком с этим НАС но вот тут есть целый форум. Вам необходимо на НАС установить поддержку ssh (например openssh) и затем со своего компа подключиться к НАС при помощи любого клиента (например Putty SSH Client). Таким образом Вы попадете на консоль Вашего НАС. Ну а затем как приводил выше по пунктам. зы. Вообще порекомендовал бы не экспериментировать сразу на работающем НАС. Установите себе на компьютер (Win) VirtualBOX, и установите любую операционную систему на виртуальной машине. Туда же и openhab. В случае каких либо проблем - виртуальную машину можно просто прибить (удалить) и создать заново. От этого работа Вашего компа или НАС не будет нарушена ни как. зы. openhab в дистрибутиве есть в том числе для платформы win. Может с нее начать?
Дело в том, что openhab я уже установил на НАС. Посредством путти захожу на НАС. А вот какие команды дальше вводить, как смотреть/редактировать каталоги/файлы- знаний не хватает. Если бы была оболочка типа mc или там far...
Установил mc. Запустил демо- прикольно пощелкать, да. Теперь нужно уйти от демо и связать с плк (s7-1200). Видимо у меня та же задача с модбас, что и у вас, только плк другой... Подскажите, какой файл нужно "ковырять" и где он лежит?
\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" } }
HABmin Довольно хороший визуальный редактор для openhab. Практически все можно сделать при помощи данного редактора. Не нужно заботиться о том как правильно писать те или иные команды. За 20 минут полностью пересоздал интерфейс и навел красоты
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 }
Автозапуск: 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