openHAB


#1

Подскажите пожалуйста как настроить подключение wirenboard к openhub, а конкретно что вписать в настройки ниже (cfg файл openHAB’a).
пусть openHAB 192.168.1.2, wirenboard 192.168.1.3

В нём 2 раздела MQTT:

MQTT Persistence

Name of the broker as defined in the section MQTT Transport

mqtt-persistence:broker=

The MQTT topic to which the persistence messages should be sent.

mqtt-persistence:topic=

A string representing the persistence message content.

mqtt-persistence:message=

и второй

MQTT Transport

Define your MQTT broker connections here for use in the MQTT Binding or MQTT

Persistence bundles. Replace <broker> with a id you choose.

URL to the MQTT broker, e.g. tcp://localhost:1883 or ssl://localhost:8883

#mqtt:<broker>.url=tcp://<host>:1883

Optional. Client id (max 23 chars) to use when connecting to the broker.

If not provided a default one is generated.

#mqtt:<broker>.clientId=<clientId>

Optional. User id to authenticate with the broker.

mqtt:<broker>.user=<user>

Optional. Password to authenticate with the broker.

#mqtt:<broker>.pwd=<password>

Optional. Set the quality of service level for sending messages to this broker.

Possible values are 0 (Deliver at most once),1 (Deliver at least once) or 2

(Deliver exactly once). Defaults to 0.

#mqtt:<broker>.qos=<qos>

Optional. True or false. Defines if the broker should retain the messages sent to

it. Defaults to false.

#mqtt:<broker>.retain=<retain>

Optional. True or false. Defines if messages are published asynchronously or

synchronously. Defaults to true.

#mqtt:<broker>.async=<async>

Optional. Defines the last will and testament that is sent when this client goes offline

Format: topic:message:qos:retained <br/>

#mqtt:<broker>.lwt=<last will definition>


#2

openHAB - исправьте


#3

Опыта настройки openHAB у меня нет, но предположу, что туда надо вписать только адрес брокера (mosquitto).
То что в примере (tcp://localhost:1883) должно работать, только localhost надо заменить на ip-адрес WB.
Порт правильный, аутентификации там нет.

Судя по тому, что про топики в этом куске конфига нет ни слова, они настроиваются потом как-то ещё.


#4

#mqtt:<broker>.url=tcp://<host>:1883
а что вместо <broker>?


#5

Вот фак:


#6

#7

Покурил интернет ():
в openhab.cfg пишем:

mqtt:mosquitto.url=tcp://вашадресWB:1883
mqtt:mosquitto.retain=true
mqtt:mosquitto.clientId=ohab1

mqtt-eventbus:broker=mosquitto
mqtt-eventbus:commandPublishTopic=home/openHAB/out/${item}/command
mqtt-eventbus:statePublishTopic=home/openHAB/state/${item}/state
mqtt-eventbus:stateSubscribeTopic=home/openHAB/in/${item}/state

В .items пишем:

Number My_TempX 		&quot;Температура [%.2f °C]&quot; 	&lt;temperature&gt;	{mqtt=&quot;&lt;[mosquitto:/devices/noolite_rx_0x14aa/controls/temperature:state:default]&quot;} /* это темп датчик ноолайт */
Number Ttest 			&quot;Test Temp [%.1f °C]&quot; 		&lt;temperature&gt;	{mqtt=&quot;&lt;[mosquitto:1/2:state:default]&quot;}

В .sitemap пишем:

Frame label=&quot;Моё&quot;{
		Text item=My_TempX
		Text item=Ttest
	}

Всё, теперь надо перезапустить openhab и проверить как общаются WB и OpenHAB:
в консоли WB по комманде mosquitto_sub -v -t ‘#’ должны появиться данные из OpenHAB

home/openHAB/state/My_Temp/state 28.0
home/openHAB/state/My_Hum_OWM/state 99
home/openHAB/state/My_Hum0/state 77
home/openHAB/state/My_Temp_OWM/state 19.371
home/openHAB/state/My_Temp0/state 28.0
home/openHAB/state/My_Sens_Temp_LastUpdate/state 2014-08-27T01:25:32
home/openHAB/state/My_Hum/state 77
home/openHAB/state/Weather_Temperature/state 12
home/openHAB/state/Weather_LastUpdate/state 2014-08-27T01:25:36

и наоборот в консоли Openhab появятся данные из WB.

Можно проверить еще так из консоли WB:
mosquitto_pub -h вашадресWB -t 1/2 -m "11.9"
И в OpenHAB поменяется значение Ttest, тк Ttest подписан на канал 1/2


#8

Подключил по вашей инструкции OpenHAB.
Сделал Switch, настроил связь с реле.
Из OpenHAB переключатель работает отлично, но вот если переключать в HomA это реле, то статус переключателя не передается в OpenHAB.
Мануал по OpenHAB учитался, но так и не понял, как сделать Switch одновременно и считывающим значение и передающим команду через mosquitto…

Может быть есть какие идеи на этот счет?


#9

Разобрался с “обратной связью” на Switch.
Необходимо было подсунуть правильные “маппинги” статусов ON/OFF:

mqtt_on_off_cmd.map:

OFF=0
ON=1

mqtt_on_off.map:

0=OFF
1=ON

Итоговый биндинг для получения переключения и получения статуса реле:
{mqtt=">[mosquitto:/devices/wb-gpio/controls/Relay_2/on:command:*:MAP(mqtt_on_off_cmd.map)],<[mosquitto:/devices/wb-gpio/controls/Relay_2:state:MAP(mqtt_on_off.map)]"}


#10

вот проще:
в items:
Switch Mosq_test2 {mqtt=">[mosquitto:/devices/wb-gpio/controls/Relay_1/on:command:ON:1],>[mosquitto:/devices/wb-gpio/controls/Relay_1/on:command:OFF:0]"}

в sitemap:
Switch item=Mosq_test2 label="Вкл реле1" mappings=[ON="Вкл", OFF="Выкл"]


#11

Toshik - не понял сначала о чем ты, где почитать про такие хиитрые маппинги? я не нашел.


#12
вот проще:

Этот маппинг не даст “обратной связи”, т.е. если в HomA переключить реле, то это не отобразится в интерфейсе OpenHAB

Toshik – не понял сначала о чем ты, где почитать про такие хиитрые маппинги? я не нашел.

>[mosquitto:/devices/wb-gpio/controls/Relay_2/on:command:*:MAP(mqtt_on_off_cmd.map)]
Этот биндинг удобен тем, что комманды и коды для них описываются в одном файле (mqtt_on_off_cmd.map), а не в каждом свиче, как ты предлагаешь (command:ON:1/command:OFF:0)

<[mosquitto:/devices/wb-gpio/controls/Relay_2:state:MAP(mqtt_on_off.map)]
А этот биндинг - описывает обратные правила, т.е. то, что отдаёт WirenBoard и как это интерпретируется в OpenHAB. Опять же обратные правила описаны в файле “mqtt_on_off.map”

Обрати внимание на символы “>” и “<” перед биндингами - они указывают направление “исходящее”/“входящее”

Немного документации есть тут, хотя очень скромно все описано: https://github.com/openhab/openhab/wiki/MQTT-Binding


#13

А не подскажите, как поступить с диммером от Ноолайта?
в MQTT он регулируется по адресу /devices/noolite_tx_…/controls/level/on
попробовал прикрутить его через Dimmer в items и Slider в sitemaps, но в итоге получал только команды ON, OFF, INCREASE, DECREASE
Ради опыта жестко назначил мапинги на эти команды разным значениям (100, 0, 70, 30) соответственно - эксперимент удался, и диммер стал устанавливаться на соттветствующие уровни.
Но проблема в следующем - диапазон значения диммера Ноолайта в MQTT от 0 до 254. А слайдер в OpenHAB умеет только о 0 до 100, как я понял. Что можно прикрутить?
Еще подумал поработать через SetPoint, но там не совсем удобно все по всему диапазону от 0 до 254 кликать.


#14

Дааа, диммер в OpenHAB это вообще “сказка”…

Если пользуетесь компонентом Dimmer, то придется писать правило в файл .rules, со скриптом, меняющим процент диммирования при INCREASE/DECREASE (пример есть в demo.rules), а далее делать маппинг, переводящий проценты в абсолютные значения, понятные вашему диммеру.

Из их документации, они рекомендуют использовать Setpoint для таких

Честно говоря, я очень надеюсь, что есть более вменяемый способ для работы с различными диммерами из OpenHAB, но я его не нашел пока…


#15

Тогда подскажите, а то никак не могу поймать логику работы правил rules.
При изменении Итема сначала срабатывает правило, а потом маппинг? Или наоборот?


#16

alex - прошу выложи сюда свой код для ноолайта.
А на форуме народ вот так делает:

I used the following items:

Dimmer        R6D1     &quot;Dimmer1 [%d]&quot;  &lt;slider&gt;  (Test)  {udp=&quot;&gt;[0:192.168.0.6:9760:&#039;MAP(r6d1.map)&#039;]&quot;}
Dimmer        R6D2     &quot;Dimmer1 [%d]&quot;  &lt;slider&gt;  (Test)  {udp=&quot;&gt;[0:192.168.0.6:9760:&#039;MAP(r6d2.map)&#039;]&quot;}
Dimmer        R6D3     &quot;Dimmer1 [%d]&quot;  &lt;slider&gt;  (Test)  {udp=&quot;&gt;[0:192.168.0.6:9760:&#039;MAP(r6d3.map)&#039;]&quot;}

and a sample of the r6d1.map file (one per dimmer only the dimmer name being different in each file, which is why if I could set the &#039;preamble&#039; per item then I would only need one transform file to convert the percentage to a value between 0 and 32):

OFF=111,!R6D1F0
ON=111,!R6D1F1
0=111,!R6D1F0
1=111,!R6D1FdP1
2=111,!R6D1FdP1
3=111,!R6D1FdP1
4=111,!R6D1FdP1
5=111,!R6D1FdP2
6=111,!R6D1FdP2
7=111,!R6D1FdP2
8=111,!R6D1FdP3
9=111,!R6D1FdP3
10=111,!R6D1FdP3
11=111,!R6D1FdP4
12=111,!R6D1FdP4
13=111,!R6D1FdP4
14=111,!R6D1FdP5
15=111,!R6D1FdP5
16=111,!R6D1FdP5
17=111,!R6D1FdP6
18=111,!R6D1FdP6
19=111,!R6D1FdP6
20=111,!R6D1FdP7
21=111,!R6D1FdP7
22=111,!R6D1FdP7
23=111,!R6D1FdP8
24=111,!R6D1FdP8
25=111,!R6D1FdP8
26=111,!R6D1FdP8
27=111,!R6D1FdP9
28=111,!R6D1FdP9
29=111,!R6D1FdP9
30=111,!R6D1FdP10
31=111,!R6D1FdP10
32=111,!R6D1FdP10
33=111,!R6D1FdP11
34=111,!R6D1FdP11
35=111,!R6D1FdP11
36=111,!R6D1FdP12
37=111,!R6D1FdP12
38=111,!R6D1FdP12
39=111,!R6D1FdP13
40=111,!R6D1FdP13
41=111,!R6D1FdP13
42=111,!R6D1FdP14
43=111,!R6D1FdP14
44=111,!R6D1FdP14
45=111,!R6D1FdP15
46=111,!R6D1FdP15
47=111,!R6D1FdP15
48=111,!R6D1FdP16
49=111,!R6D1FdP16
50=111,!R6D1FdP16
51=111,!R6D1FdP16
52=111,!R6D1FdP17
53=111,!R6D1FdP17
54=111,!R6D1FdP17
55=111,!R6D1FdP18
56=111,!R6D1FdP18
57=111,!R6D1FdP18
58=111,!R6D1FdP19
59=111,!R6D1FdP19
60=111,!R6D1FdP19
61=111,!R6D1FdP20
62=111,!R6D1FdP20
63=111,!R6D1FdP20
64=111,!R6D1FdP21
65=111,!R6D1FdP21
66=111,!R6D1FdP21
67=111,!R6D1FdP22
68=111,!R6D1FdP22
69=111,!R6D1FdP22
70=111,!R6D1FdP23
71=111,!R6D1FdP23
72=111,!R6D1FdP23
73=111,!R6D1FdP24
74=111,!R6D1FdP24
75=111,!R6D1FdP24
76=111,!R6D1FdP24
77=111,!R6D1FdP25
78=111,!R6D1FdP25
79=111,!R6D1FdP25
80=111,!R6D1FdP26
81=111,!R6D1FdP26
82=111,!R6D1FdP26
83=111,!R6D1FdP27
84=111,!R6D1FdP27
85=111,!R6D1FdP27
86=111,!R6D1FdP28
87=111,!R6D1FdP28
88=111,!R6D1FdP28
89=111,!R6D1FdP29
90=111,!R6D1FdP29
91=111,!R6D1FdP29
92=111,!R6D1FdP30
93=111,!R6D1FdP30
94=111,!R6D1FdP30
95=111,!R6D1FdP31
96=111,!R6D1FdP31
97=111,!R6D1FdP32
98=111,!R6D1FdP32
99=111,!R6D1FdP32
100=111,!R6D1FdP32 



#17

Обязательно выложу, как только что-то работоспособное сделаю.

Сейчас столкнулся с тем. что через MQTT не работает управление. Такое впечатление, что очередь зависает и перестает что-либо отправлять в ноолайт.
Дошло даже до того, что перестают работать все привязанные к диммеру пульты, пока WirenBoard не перезагрузишь.


#18
Сейчас столкнулся с тем. что через MQTT не работает управление. Такое впечатление, что очередь зависает и перестает что-либо отправлять в ноолайт. Дошло даже до того, что перестают работать все привязанные к диммеру пульты, пока WirenBoard не перезагрузишь.
Было и у меня такое, когда крутил туда сюда ползунки яркости в веб морде WB, хаотично мигали лампы, на пульты ноолайта не реагировали. Вкл-Вылк исполнителя не помогло, помогла перезагрузка WB. Думал будет проще с WB, оказалось не так уж.

#19

Вроде как удалось победить связку nooLite - MQTT (WB) - OpenHAB.
Чтобы 2 раза не писать - кину ссылкой на блог


#20

Странно, но ссылка не выложилась