Использование MegaD в openHAB

Обсуждение статей, технологий домашней автоматизации, программных и аппаратных решений
goodvin
Сообщения: 3
Зарегистрирован: 28 ноя 2017, 22:06

Re: Использование MegaD в openHAB

Сообщение goodvin » 04 дек 2017, 21:07

Впроде по их офиц.примеру ничего не меняется:

Код: Выделить всё

if (Temperature.state < 20) {
    Heating.sendCommand(ON)
}
Попробовал так:

Код: Выделить всё

rule "Servoprivod-1"

when
    Item TemperatureHTU received update
	var int T = (TemperatureHTU.state as DecimalType).intValue
then
	if (T > 26) {
		kladovkaout.sendCommand(OFF)
		} 
	else{
        kladovkaout.sendCommand(ON)
    }
end
Результат тоже нет. Что делать?(

empenoso
Сообщения: 1039
Зарегистрирован: 11 ноя 2015, 08:03
Откуда: Пермь

Re: Использование MegaD в openHAB

Сообщение empenoso » 05 дек 2017, 07:26

goodvin писал(а):Впроде по их офиц.примеру ничего не меняется:
...
Результат тоже нет. Что делать?(
У них на сайте половина примеров не работает. :D

Код: Выделить всё

var Number Temp = TemperatureHTU.state as DecimalType
А вы через дизайнер пишете?

Petros
Сообщения: 900
Зарегистрирован: 21 авг 2012, 22:09
Откуда: Москва

Re: Использование MegaD в openHAB

Сообщение Petros » 05 дек 2017, 08:47

Здравствуйте, вот это очень важный вопрос - через дизайнер пишите файлы правил или нет и при перезагрузке правил не возникает ли ошибок? Кроме того, ошибка говорит, что не может найти айтем с айдишником, который судя по всему создан в paper UI. Вы же показали нам инициализацию из файла. Так нельзя :)

UPD:
Вник в Ваши листинги и правила. Всё не так :mrgreen:

Проблема в этом правиле только одна.
rule "Servoprivod-1"
when
Item TemperatureHTU received update
then
if (TemperatureHTU.value > 26) {
sendCommand(kladovkaout, 0)
} else {
sendCommand(kladovkaout, 1)
}
end

Внимательно смотрим, и выясняем, что это у нас things!!

Bridge megad:bridge:megadeviceincoming [port=8800]
{
Thing device TemperatureHTU "Температура кладовка" [hostname="192.168.0.14", port="31", password="sec", refresh="10", scl="30", i2c_dev="htu21d", i2c_par="1"]
Thing device HumHTU "Влажность кладовка" [hostname="192.168.0.14", port="31", password="sec", refresh="10", scl="30", i2c_dev="htu21d", i2c_par="0"]
Thing device kladovkaout "Лампочка кладовка" [hostname="192.168.0.14", password="sec", port="7", refresh="0"]
}

Вы должны в правиле писать ТОЛЬКО item. Тем более он у Вас есть

Items:

Number TemperatureHTU "[%.2f °C]" {channel="megad:device:megadeviceincoming:TemperatureHTU:i2c"}
Number HumHTU "[%.2f %%]" {channel="megad:device:megadeviceincoming:HumHTU:i2c"}
Switch chulan_light {channel = "megad:device:megadeviceincoming:kladovkaout:out" }

Правильное правило:

Код: Выделить всё

rule "Servoprivod-1"
when
    Item TemperatureHTU received update
then
   if (TemperatureHTU.value > 26) {
    sendCommand([b]chulan_light [/b], OFF)
      } else {
        sendCommand([b]chulan_light [/b], ON)
    }
end
Судя по всему дизайнер не использовался, а зря :)

Kopyto80
Сообщения: 14
Зарегистрирован: 05 дек 2017, 18:10

Re: Использование MegaD в openHAB

Сообщение Kopyto80 » 05 дек 2017, 19:08

Народ можно просьбу, рабочие конфиги openhab2 с использованием мегад.
Начинаю разбираться но пока не совсем понимаю как это работает. С рабочими конфигами дело должно пойти быстро.

Petros
Сообщения: 900
Зарегистрирован: 21 авг 2012, 22:09
Откуда: Москва

Re: Использование MegaD в openHAB

Сообщение Petros » 05 дек 2017, 19:49


Kopyto80
Сообщения: 14
Зарегистрирован: 05 дек 2017, 18:10

Re: Использование MegaD в openHAB

Сообщение Kopyto80 » 06 дек 2017, 12:43

[ERROR] [b.binding.megad.handler.MegaDHandler] - Connect to megadevice 192.168.0.14 error: no protocol:
о чем говорит эта ошибка в логах?

Petros
Сообщения: 900
Зарегистрирован: 21 авг 2012, 22:09
Откуда: Москва

Re: Использование MegaD в openHAB

Сообщение Petros » 06 дек 2017, 12:46

Http binding ставил?

Отправлено с моего Mi Note 2 через Tapatalk

Kopyto80
Сообщения: 14
Зарегистрирован: 05 дек 2017, 18:10

Re: Использование MegaD в openHAB

Сообщение Kopyto80 » 06 дек 2017, 12:52

Petros писал(а):Http binding ставил?

Отправлено с моего Mi Note 2 через Tapatalk
не уверен, киньте ссылкой.

Petros
Сообщения: 900
Зарегистрирован: 21 авг 2012, 22:09
Откуда: Москва

Re: RE: Re: Использование MegaD в openHAB

Сообщение Petros » 06 дек 2017, 12:53

Kopyto80 писал(а):
Petros писал(а):Http binding ставил?

Отправлено с моего Mi Note 2 через Tapatalk
не уверен, киньте ссылкой.
Paper UI - add-ons - http binding

Отправлено с моего Mi Note 2 через Tapatalk

Kopyto80
Сообщения: 14
Зарегистрирован: 05 дек 2017, 18:10

Re: Использование MegaD в openHAB

Сообщение Kopyto80 » 06 дек 2017, 12:54

org.openhab.binding.megad_2.0.0.9.jar
Это он?

Petros
Сообщения: 900
Зарегистрирован: 21 авг 2012, 22:09
Откуда: Москва

Re: Использование MegaD в openHAB

Сообщение Petros » 06 дек 2017, 13:00

Нет. Http binding он именно так и называется.

Отправлено с моего Mi Note 2 через Tapatalk

Kopyto80
Сообщения: 14
Зарегистрирован: 05 дек 2017, 18:10

Re: Использование MegaD в openHAB

Сообщение Kopyto80 » 06 дек 2017, 13:05

Petros писал(а):Нет. Http binding он именно так и называется.

Отправлено с моего Mi Note 2 через Tapatalk
Я еще плаваю в вопросе, можно ссылку на него, спасибо за терпение.

Kopyto80
Сообщения: 14
Зарегистрирован: 05 дек 2017, 18:10

Re: Использование MegaD в openHAB

Сообщение Kopyto80 » 06 дек 2017, 13:06

Все, дошло, спасибо

Petros
Сообщения: 900
Зарегистрирован: 21 авг 2012, 22:09
Откуда: Москва

Re: RE: Re: Использование MegaD в openHAB

Сообщение Petros » 06 дек 2017, 13:09

Kopyto80 писал(а):Все, дошло, спасибо
Пожалуйста :)

Отправлено с моего Mi Note 2 через Tapatalk

Kopyto80
Сообщения: 14
Зарегистрирован: 05 дек 2017, 18:10

Re: Использование MegaD в openHAB

Сообщение Kopyto80 » 06 дек 2017, 13:29

Блин беда, установил Http binding и все перестало работать даже то что работало :(
В логи начало сыпаться это:

Код: Выделить всё

2017-12-06 10:26:41.463 [ERROR] [ome.core.thing.internal.ThingManager] - Exception occurred while initializing handler of thing 'megad:device:9189c619': java.lang.NumberFormatException: For input string: "30.0"
java.util.concurrent.ExecutionException: java.lang.NumberFormatException: For input string: "30.0"
        at java.util.concurrent.FutureTask.report(FutureTask.java:122)[:1.8.0_151]
        at java.util.concurrent.FutureTask.get(FutureTask.java:206)[:1.8.0_151]
        at org.eclipse.smarthome.core.common.SafeMethodCaller.callAsynchronous(SafeMethodCaller.java:194)[98:org.eclipse.smarthome.core:0.9.0.b5]
        at org.eclipse.smarthome.core.common.SafeMethodCaller.call(SafeMethodCaller.java:83)[98:org.eclipse.smarthome.core:0.9.0.b5]
        at org.eclipse.smarthome.core.common.SafeMethodCaller.call(SafeMethodCaller.java:67)[98:org.eclipse.smarthome.core:0.9.0.b5]
        at org.eclipse.smarthome.core.thing.internal.ThingManager.doInitializeHandler(ThingManager.java:738)[105:org.eclipse.smarthome.core.thing:0.9.0.b5]
        at org.eclipse.smarthome.core.thing.internal.ThingManager.initializeHandler(ThingManager.java:664)[105:org.eclipse.smarthome.core.thing:0.9.0.b5]
        at org.eclipse.smarthome.core.thing.internal.ThingManager.access$12(ThingManager.java:639)[105:org.eclipse.smarthome.core.thing:0.9.0.b5]
        at org.eclipse.smarthome.core.thing.internal.ThingManager$2.apply(ThingManager.java:681)[105:org.eclipse.smarthome.core.thing:0.9.0.b5]
        at org.eclipse.smarthome.core.thing.internal.ThingManager$2.apply(ThingManager.java:1)[105:org.eclipse.smarthome.core.thing:0.9.0.b5]
        at org.eclipse.smarthome.config.core.BundleProcessorVetoManager.bundleFinished(BundleProcessorVetoManager.java:68)[94:org.eclipse.smarthome.config.core:0.9.0.b5]
        at org.eclipse.smarthome.config.xml.osgi.AbstractAsyncBundleProcessor.informListeners(AbstractAsyncBundleProcessor.java:253)[97:org.eclipse.smarthome.config.xml:0.9.0.b5]
        at org.eclipse.smarthome.config.xml.osgi.AbstractAsyncBundleProcessor.access$3(AbstractAsyncBundleProcessor.java:251)[97:org.eclipse.smarthome.config.xml:0.9.0.b5]
        at org.eclipse.smarthome.config.xml.osgi.AbstractAsyncBundleProcessor$1.run(AbstractAsyncBundleProcessor.java:242)[97:org.eclipse.smarthome.config.xml:0.9.0.b5]
        at java.lang.Thread.run(Thread.java:748)[:1.8.0_151]
Caused by: java.lang.NumberFormatException: For input string: "30.0"
        at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)[:1.8.0_151]
        at java.lang.Integer.parseInt(Integer.java:580)[:1.8.0_151]
        at java.lang.Integer.parseInt(Integer.java:615)[:1.8.0_151]
        at org.openhab.binding.megad.handler.MegaDHandler.initialize(MegaDHandler.java:169)[192:org.openhab.binding.megad:2.0.0.9]
        at org.eclipse.smarthome.core.thing.internal.ThingManager$9.call(ThingManager.java:741)[105:org.eclipse.smarthome.core.thing:0.9.0.b5]
        at org.eclipse.smarthome.core.thing.internal.ThingManager$9.call(ThingManager.java:1)[105:org.eclipse.smarthome.core.thing:0.9.0.b5]
        at org.eclipse.smarthome.core.common.SafeMethodCaller$CallableWrapper.call(SafeMethodCaller.java:181)[98:org.eclipse.smarthome.core:0.9.0.b5]
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)[:1.8.0_151]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)[:1.8.0_151]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)[:1.8.0_151]
        ... 1 more
2017-12-06 10:26:41.505 [INFO ] [b.binding.megad.handler.MegaDHandler] - Switch: http://192.168.0.14/sec/?cmd=10:0

Что делать куда копать?

Petros
Сообщения: 900
Зарегистрирован: 21 авг 2012, 22:09
Откуда: Москва

Re: Использование MegaD в openHAB

Сообщение Petros » 06 дек 2017, 13:55

Начните сначала. Вы создаете и через веб-интерфейс и от руки айтемы. Остановитесь на чем-то одном. Чтобы что-то работало нужно писать правила. В дизайнере. Для этого лучше всё-таки делать файлы и класть их в папочки. Начните с входа и выхода. Температуру оставьте на потом.

goodvin
Сообщения: 3
Зарегистрирован: 28 ноя 2017, 22:06

Re: Использование MegaD в openHAB

Сообщение goodvin » 06 дек 2017, 19:37

Petros писал(а):Здравствуйте, вот это очень важный вопрос - через дизайнер пишите файлы правил или нет и при перезагрузке правил не возникает ли ошибок? Кроме того, ошибка говорит, что не может найти айтем с айдишником, который судя по всему создан в paper UI. Вы же показали нам инициализацию из файла. Так нельзя :)

UPD:
Вник в Ваши листинги и правила. Всё не так :mrgreen:

Проблема в этом правиле только одна.
rule "Servoprivod-1"
when
Item TemperatureHTU received update
then
if (TemperatureHTU.value > 26) {
sendCommand(kladovkaout, 0)
} else {
sendCommand(kladovkaout, 1)
}
end

Внимательно смотрим, и выясняем, что это у нас things!!

Bridge megad:bridge:megadeviceincoming [port=8800]
{
Thing device TemperatureHTU "Температура кладовка" [hostname="192.168.0.14", port="31", password="sec", refresh="10", scl="30", i2c_dev="htu21d", i2c_par="1"]
Thing device HumHTU "Влажность кладовка" [hostname="192.168.0.14", port="31", password="sec", refresh="10", scl="30", i2c_dev="htu21d", i2c_par="0"]
Thing device kladovkaout "Лампочка кладовка" [hostname="192.168.0.14", password="sec", port="7", refresh="0"]
}

Вы должны в правиле писать ТОЛЬКО item. Тем более он у Вас есть

Items:

Number TemperatureHTU "[%.2f °C]" {channel="megad:device:megadeviceincoming:TemperatureHTU:i2c"}
Number HumHTU "[%.2f %%]" {channel="megad:device:megadeviceincoming:HumHTU:i2c"}
Switch chulan_light {channel = "megad:device:megadeviceincoming:kladovkaout:out" }

Правильное правило:

Код: Выделить всё

rule "Servoprivod-1"
when
    Item TemperatureHTU received update
then
   if (TemperatureHTU.value > 26) {
    sendCommand([b]chulan_light [/b], OFF)
      } else {
        sendCommand([b]chulan_light [/b], ON)
    }
end
Судя по всему дизайнер не использовался, а зря :)
1. Пишу в Notepad++, соединяюсь через WinSCP
2. Все сделал по вашему стандарту:
1)правила

Код: Выделить всё

rule "Servoprivod-1"

when
    Item TemperatureHTU received update
then
	if (TemperatureHTU.value > 26) {
		sendCommand(KladovkaOut,OFF)
		} 
	else{
        sendCommand(KladovkaOut,ON)
    }
end
2)Синс

Код: Выделить всё

Bridge megad:bridge:megadeviceincoming [port=8800]
{
Thing device TemperatureHTU "Температура кладовка" [hostname="192.168.0.14", port="31", password="sec", refresh="10", scl="30", i2c_dev="htu21d", i2c_par="1"]
Thing device HumHTU "Влажность кладовка" [hostname="192.168.0.14", port="31", password="sec", refresh="10", scl="30", i2c_dev="htu21d", i2c_par="0"]
Thing device KladovkaOut "Лампочка кладовка" [hostname="192.168.0.14", password="sec", port="7"]
}
3)Итемс

Код: Выделить всё

Number TemperatureHTU "[%.2f °C]" {channel="megad:device:megadeviceincoming:TemperatureHTU:i2c"}
Number HumHTU "[%.2f %%]" {channel="megad:device:megadeviceincoming:HumHTU:i2c"}
Switch KladovkaOut {channel = "megad:device:megadeviceincoming:KladovkaOut:out" }
НО опять ошибки:

Код: Выделить всё

2017-12-06 18:30:37.661 [WARN ] [ome.core.thing.internal.ThingManager] - Cannot delegate update '26.44' for item 'TemperatureHTU' to handler for channel 'megad:device:2e004b7b:temp', because no thing with the UID 'megad:device:2e004b7b' could be found.
2017-12-06 18:30:37.667 [ERROR] [.script.engine.ScriptExecutionThread] - Rule 'Servoprivod-1': An error occured during the script execution: The name '<XFeatureCallImplCustom>.value' cannot be resolved to an item or type.
Мозг сломан. Где логика? Ничего не работает! Или опенХаб не реагирует на самописные правила, итемы, синсы или проблем в чем-то другом.
Также уважаемый Petros хотел спросить сколько обязательных биндингов должно быть закинуто в папку addons? Вопрос возник потому, что чисто на биндинге org.openhab.binding.megad_2.0.2.2 у меня система не работает, сейчас в папке 3 версии: 2.0.0.2, 2.0.0.9, 2.0.2.2. Может здесь собака зарыта? Подскажите пожалуйста

empenoso
Сообщения: 1039
Зарегистрирован: 11 ноя 2015, 08:03
Откуда: Пермь

Re: Использование MegaD в openHAB

Сообщение empenoso » 06 дек 2017, 20:15

goodvin писал(а):1. Пишу в Notepad++, соединяюсь через WinSCP
Дизайнер это тот же самый Notepad++, только ошибки сразу подсказывает. Особого удобства пользования нет конечно, но зато с ошибками веселее сразу и переменные с ошибками написанные тоже сверяет.
У них ведь есть отличная сборка openHABian https://github.com/openhab/openhabian/releases, можно WinSCP не использовать.
goodvin писал(а):Мозг сломан. Где логика? Ничего не работает! Или опенХаб не реагирует на самописные правила, итемы, синсы или проблем в чем-то другом.
Малейшая ошибка и все работает не так как хочешь или вообще не работает. Вам надо взять готовые шаблоны и откорректировать под себя просто.

d.v.ermakov
Администратор
Сообщения: 2187
Зарегистрирован: 29 май 2015, 21:23
Откуда: Екатеринбург, Нижний Тагил

Re: Использование MegaD в openHAB

Сообщение d.v.ermakov » 08 дек 2017, 14:42

Дизайнер это не то же самое, что текстовый редактор. У меня была как-то проблема из-за невидимого символа перевода строки. Просто открыл проблемный файл Дизайнером, добавил-убрал пробел, и сохранил. И всё заработало.
Начать искать ошибки конечно лучше без правил, и пошагово. Реально бывают неочевидные дебри джавовского синтаксиса, так работает, а так нет.
И, конечно, биндинг должен быть в системе одной версии, остальные нужно убрать.

В логе поста 30083 ошибка вроде бы только одна - неправильное определение типа "30.0", ожидался Number. Остальное всё следствия этой ошибки.

Kopyto80
Сообщения: 14
Зарегистрирован: 05 дек 2017, 18:10

Re: Использование MegaD в openHAB

Сообщение Kopyto80 » 11 дек 2017, 15:46

Всем привет!
Что я делаю не так?
items
Switch cab_lights {channel = "megad:device:megadeviceincoming:cab_lights:out" }
Switch sw_cab_lights {channel = "megad:device:megadeviceincoming:sw_cab_lights:in" }

tings
Bridge megad:bridge:megadeviceincoming
{
Thing device cab_lights "Освещение кабинета" [hostname="192.168.0.14", port="7", password="sec", refresh="20"]
Thing device sw_cab_lights "кнопка освещение кабинета" [hostname="192.168.0.14", port="0", password="sec", refresh="20"]
}
rules
/* Свет в туалете */
rule "cab_lights ON"
when
Item sw_cab_lights changed to ON
then
if (cab_lights.state == OFF) {
sendCommand(cab_lights, ON)
postUpdate(cab_lights, ON)
}
end
rule "cab_lights OFF"
when
Item sw_cab_lights changed to OFF
then
if (cab_lights.state == ON) {
sendCommand(cab_lights, OFF)
postUpdate(cab_lights, OFF)
}
end
почему не работает?
точнее включение работает а выключение нет.

Ответить