РЕКЛАМА НА ФОРУМХАУС Вопрос по ОХ. 1) можно ли определять в рулесах свои классы (методы) и затем использовать в правилах. Попробовал - не жалуется и не работает вообще ни одно правило. Как получить какую-то диагностику по синтаксису? 2) в лямбда выражениях, похоже, нельзя из тела одного выражения вызывать другое? или можно? The name ... cannot be resolved to an item or type. не может разрешить ссылку? Можно писать в личку.
Отвечаю: 1) нельзя, это все-та-ки не Xtend, а xBase его подмножество. Описали бы где нибудь возможности языка скриптов ОХ для народа. 2) можно, если внести его через параметры (не знаток, но это требование лямбда выражений).
Оказалось что Болид побеждён не до конца. Чтобы разобраться с управлением болидом я собрал переходник для перехвата обмена по rs232, и через терминальную программу, отслеживал обмен между ОХ и Болидом, или ОХ и эмулятором модбаса. Удалось подобрать настройки для постановки и снятия зон и разделов, получения их состояния, управления реле. Но при попытке подключить датчик влажности и температуры обнаружилась проблема. Для получения данных с датчика необходимо 6 командой записать номер зоны в рег. B463 а затем из рег. B4F8 3 командой прочитать данные. Но при обращении к рег. B463 с командой 3 болид выдает ошибку №2 что регистр недоступен и ОХ не отправляет 6 команду на этот регистр. Как это преодолеть непонятно. Ещё выяснилось, что ошибки модбуса не выдаются в программу. Как бы так усовершенствовать binding чтобы он выдавал в ОХ ошибки и позволял записывать в регистры которых как бы не существует ?
Техподдержка Болида оперативно откликнулась и прислала исправленную прошивку на с2000 ПП. Теперь всё работает!
Добрый день. Кто знает, подскажите. Как правильно перебрать в цикле for each элементы hashMAP. /-определили MAP var java. util. Map<String, org. openhab. core. library. items. GenericItem> roomTempContMap = newHashMap /-инициализировали элементы отображения в правиле старта системы roomTempContMap = newHashMap( "kitchen" -> kitchenTempNow, "bedroom" -> bedroomTempNow, "living" -> livingTempNow ) as java. util. Map<String, org. openhab. core. library. items. GenericItem> /-преобразование к типу множества, чтоб применить итератор java. util. Set<Map.Entry<String, org. openhab. core. library. items. GenericItem> roomTempContSet = roomTempContMap. entrySet() /-и далее в правиле - вывести все ключи множества rule "UpDown Heat Kitchen" when Time cron "10 * * * * ?" then for (Map.Entry<String, org. openhab. core. library. items. GenericItem> tempElement: roomTempContSet){ logInfo("heatControlLogic","Key = " + tempElement. getKey() } end Ругается 2015-11-05 18:10:11.640 [ERROR] [.o.m.r.i.engine.ExecuteRuleJob] - Error during the execution of rule UpDown Heat Kitchen java. lang. RuntimeException: The name 'roomTempContSet' cannot be resolved to an item or type.
В обход (перебор ключей оказался достаточен) /-определили MAP var java. util. Map<String, org. openhab. core. library. items. GenericItem> roomTempContMap = newHashMap /-инициализировали элементы отображения в правиле старта системы roomTempContMap = newHashMap( "kitchen" -> kitchenTempNow, "bedroom" -> bedroomTempNow, "living" -> livingTempNow /-далее правило с перебором rule "UpDown All Heating" when Time cron "0/30 * * * * ?" then var String keyStr for (keyStr: roomTempContMap. keySet()){ logInfo("heatControlLogic","Check State cron2 KetStr = " + keyStr) heatControlLigic. apply (keyStr, roomTempContMap, roomStateMap, HeatMap) } end
Добрый день. Не могу зацепить к опенхабу датчик Fibaro motion sensor. Имееться Rpi2+raZberry, датчик Fibaro motion sensor 3 в 1. Установил сам опенхаб, запустил демо, все отобразилось. Затем сделал свой openhab. cfg, в нем прописал bindning на z-wave: zwave: port=/dev/ttyAMA0 Далее сделал свой test. items, в нем прописал: Number Temp "Temperature [%.1f ºC]" <temperature> {zwave="2:comand=sensor_multilevel,sensor_type=1"} После чего сделал свой test. sitemap, в нем прописал: sitemap test lable="Test" { Frame{ Text item=Temp Lable="Temperature" icon="temperature" } } Температура не отображается. В логах: Serial Error: Port /dev/ttyAMA0 does not exist Порт на сколько я знаю именно этот а не ttyS0. В чем может быть проблема?
Подскажите пожалуйста как организовать кнопку включения охраны в OpenHab? Добавил item, прописал его в sitemap. А на правиле завис. Как Вы решили вопрос проверки статуса выключателя охраны? Не шлёт же он Вам постоянно сообщения если Вы ходите по дому, как то же кнопка должна быть реализована.
@goodle, несколько режимов работы системы. В одном режиме (дневной) вся охранка отключена, за исключением аварийных ситуаций инженерных систем. В ночном режиме включаются в работу датчики периметра. Ну и полная охрана - это когда дома ни кого. Реализовано все на базе контроллера под управление Codesys, а OH это у меня средство визуализации и переключения режимов и разного рода настроек. Выключаю OH и все прекрасно без него работает.
Во-во именно это интересует - как определяется, что никого нет? В опенхабе же наверно кнопочка "Включит охрану"?
Реализовал два режима. Между дневным и ночным режимами система переключается автоматом (по времени). Но в то же время остается возможность ручного переключения. Как правило ночью мы дома но спим и поэтому не плохо если система сама в определенное время переключиться, а то можно просто забыть. А вот постановка на полную охрану - только ручная. При этом из этого режима переключиться можно тоже только в ручную. Примерно так: Код: Selection item=cfgMode label="Режим" mappings=[0="День", 1="Ночь", 2="Охрана"]
Я примерно до того же дошёл. У меня квартира и охрана периметра ночью не нужна, а вот днём, когда никого нету - вполне актуально (соседей снизу недавно обнесли, вот и задумался о сигналке хоть какой-то). Решено режим переключать только вручную, т. к. график работы непостоянный и проще будет просто кнопкой включать/выключать. А вот в силу своей неграмотности в плане программирования на rules залип, не пойму как организовать проверку условия о статусе выключателя этого. В примерах все правила идут с привязкой к действию (смене статуса выключателя, item который).