Both sides previous revision
Previous revision
Next revision
|
Previous revision
|
openhab [2018/01/02 22:42] robm [Install legacy OpenHAB v1 add-on for LightwaveRF] |
openhab [2018/01/03 00:31] (current) robm |
Create the following start-up file, I called mine ''/opt/openhab/run.sh'': | Create the following start-up file, I called mine ''/opt/openhab/run.sh'': |
| |
<code:bash> | <code:bash>#!/bin/bash -x |
#!/bin/bash -x | |
CMD=( | CMD=( |
docker run | docker run |
openhab/openhab:2.3.0-snapshot-amd64-debian | openhab/openhab:2.3.0-snapshot-amd64-debian |
) | ) |
"${CMD[@]}" | "${CMD[@]}" || docker start --attach --interactive openhab |
</code> | </code> |
| |
<code> | <code> |
echo -ne '100,!R1D1F1' | socat STDIN UDP-DATAGRAM:255.255.255.255:9760,broadcast,sourceport=9761 | echo -ne '100,!R1D1F1' | socat STDIN UDP-DATAGRAM:255.255.255.255:9760,broadcast,sourceport=9761 |
| </code> |
| |
| <note tip>The LightwaveRF Link protocol is documented at https://api.lightwaverf.com/introduction_basic_comms.html</note> |
| |
| ===== Configuring the (not yet installed) LightwaveRF Bindings ===== |
| |
| Best to create the configuration file *before* installing the bindings to avoid some noisy start-up messages. |
| |
| The instructions for the legacy (openHAB v1) bindings for LightwaveRF are [[https://github.com/openhab/openhab1-addons/wiki/LightwaveRF-Binding|here]]. |
| |
| Create a new file at ''/opt/openhab/conf/services/lightwaverf.cfg'' (all files in this directory are named, so just ensure it is unique. Most guides call this file ''openhab.cfg''), and enter the following: |
| |
| <note important>Do **not** copy the sample at [[https://github.com/openhab/openhab1-addons/wiki/LightwaveRF-Binding|GitHub]], it has errors! |
| |
| ''lightwaveRf:ip'' should be ''lightwaverf:ip'' (note the case!) throughout, and the sendport and receiveport numbers are backwards! |
| |
| </note> |
| |
| <code:bash>################################### LightwaveRf Binding ##################################### |
| # |
| # The IP Address of the LightwaveRf Wifi Link you can use the broadcast address (required) |
| lightwaverf:ip=255.255.255.255 |
| # The port to monitor for messages you shouldn't need to change this |
| lightwaverf:receiveport=9761 |
| # The port to send messages on, it will also be monitored for incoming messages |
| # you shouldn't need to change this |
| lightwaverf:sendport=9760 |
| # For a new computer you will need to register it with the wifi link to be allowed to send messages |
| # setting this to true we will send a registration message on startup. You will need to confirm |
| # registration on the wifi link. There is no harm leaving this as true but you can set to false |
| # once you have registerd for the first time. |
| lightwaverf:registeronstartup=false |
| # Delay between sending messages in ms to avoid swapming Wifi Link |
| lightwaverf:senddelay=2000 |
| # Timeout for OK Messages in ms, we will retry messages we don't receive an ok for in the timeout |
| lightwaverf:okTimeout=1000 |
</code> | </code> |
| |
| |
<code> | <code> |
18:22:05.597 [INFO ] [ghtwaverf.internal.LightwaveRfBinding] - LightwaveBinding: IP[255.255.255.255] | 22:48:21.683 [INFO ] [htwaverf.internal.LightwaveRfWifiLink] - LightwaveRfWifiLink Connection Stopped |
18:22:05.599 [INFO ] [ghtwaverf.internal.LightwaveRfBinding] - LightwaveBinding: ReceivePort[9761] | 22:48:21.735 [INFO ] [ghtwaverf.internal.LightwaveRfBinding] - LightwaveBinding: IP[192.168.1.50] |
18:22:05.599 [INFO ] [ghtwaverf.internal.LightwaveRfBinding] - LightwaveBinding: Send Port[9760] | 22:48:21.739 [INFO ] [ghtwaverf.internal.LightwaveRfBinding] - LightwaveBinding: ReceivePort[9760] |
18:22:05.600 [INFO ] [ghtwaverf.internal.LightwaveRfBinding] - LightwaveBinding: Register On Startup[true] | 22:48:21.740 [INFO ] [ghtwaverf.internal.LightwaveRfBinding] - LightwaveBinding: Send Port[9761] |
18:22:05.600 [INFO ] [ghtwaverf.internal.LightwaveRfBinding] - LightwaveBinding: Send Delay [100] | 22:48:21.740 [INFO ] [ghtwaverf.internal.LightwaveRfBinding] - LightwaveBinding: Register On Startup[false] |
18:22:05.602 [INFO ] [ghtwaverf.internal.LightwaveRfBinding] - LightwaveBinding: Timeout for Ok Messages [500] | 22:48:21.741 [INFO ] [ghtwaverf.internal.LightwaveRfBinding] - LightwaveBinding: Send Delay [2000] |
18:22:05.606 [INFO ] [htwaverf.internal.LightwaveRfWifiLink] - Starting LightwaveRfWifiLink Connection | 22:48:21.741 [INFO ] [ghtwaverf.internal.LightwaveRfBinding] - LightwaveBinding: Timeout for Ok Messages [1000] |
18:22:05.830 [ERROR] [htwaverf.internal.LightwaveRfWifiLink] - Error converting message: *!{"trans":483,"mac":"20:3B:85","time":1514917325,"pkt":"error","fn":"nonRegistered","payload":"Not yet registered. See LightwaveLink"} | 22:48:21.742 [INFO ] [htwaverf.internal.LightwaveRfWifiLink] - Starting LightwaveRfWifiLink Connection |
18:22:06.128 [INFO ] [verf.internal.LightwaveRFSenderThread] - Ok message not received for 100,!F*p | |
, retrying again. Retry count 2 | |
18:22:06.433 [ERROR] [htwaverf.internal.LightwaveRfWifiLink] - Error converting message: *!{"trans":484,"mac":"20:3B:85","time":1514917326,"pkt":"error","fn":"nonRegistered","payload":"Not yet registered. Send !F*p to register"} | |
18:22:06.730 [INFO ] [verf.internal.LightwaveRFSenderThread] - Ok message not received for 100,!F*p | |
, retrying again. Retry count 3 | |
18:22:07.048 [ERROR] [htwaverf.internal.LightwaveRfWifiLink] - Error converting message: *!{"trans":485,"mac":"20:3B:85","time":1514917326,"pkt":"error","fn":"nonRegistered","payload":"Not yet registered. Send !F*p to register"} | |
18:22:07.333 [INFO ] [verf.internal.LightwaveRFSenderThread] - Ok message not received for 100,!F*p | |
, retrying again. Retry count 4 | |
18:22:07.560 [ERROR] [htwaverf.internal.LightwaveRfWifiLink] - Error converting message: *!{"trans":486,"mac":"20:3B:85","time":1514917327,"pkt":"error","fn":"nonRegistered","payload":"Not yet registered. Send !F*p to register"} | |
18:22:07.935 [INFO ] [verf.internal.LightwaveRFSenderThread] - Ok message not received for 100,!F*p | |
, retrying again. Retry count 5 | |
18:22:08.174 [ERROR] [htwaverf.internal.LightwaveRfWifiLink] - Error converting message: *!{"trans":487,"mac":"20:3B:85","time":1514917328,"pkt":"error","fn":"nonRegistered","payload":"Not yet registered. Send !F*p to register"} | |
18:22:08.538 [ERROR] [verf.internal.LightwaveRFSenderThread] - Unable to send message 100,!F*p | |
after 5 attempts giving up | |
</code> | </code> |
| |
You need to press the LINK button on the LightwaveRF Wi-Fi Link during those messages to pair it. This only has to be done once, and permits the MAC address of the VM to send commands to the LightwaveRF Wi-Fi Link. | If you change the configuration file, you can restart (all) legacy openHAB v1 bindings by restarting the compatibility layer bundle from the interactive prompt of OpenHAB (the ''/opt/openhab/run.sh'' script): |
| |
If you miss get as far at the "giving up" message you can restart the binding to try again. Legacy bindings do not appear in the list of bundles, **but** you can effectively reload all of them by restarting the legacy compatibility layer. | |
| |
<code> | <code> |
openhab> bundle:restart "openHAB 1.x Compatibility Layer" | bundle:restart "openHAB 1.x Compatibility Layer" |
openhab> | |
</code> | </code> |
| |
This is what success looks like in the output of ''log:tail'': | |
| |
<code> | |
18:34:28.024 [INFO ] [ghtwaverf.internal.LightwaveRfBinding] - LightwaveBinding: IP[255.255.255.255] | |
18:34:28.025 [INFO ] [ghtwaverf.internal.LightwaveRfBinding] - LightwaveBinding: ReceivePort[9761] | |
18:34:28.026 [INFO ] [ghtwaverf.internal.LightwaveRfBinding] - LightwaveBinding: Send Port[9760] | |
18:34:28.026 [INFO ] [ghtwaverf.internal.LightwaveRfBinding] - LightwaveBinding: Register On Startup[true] | |
18:34:28.026 [INFO ] [ghtwaverf.internal.LightwaveRfBinding] - LightwaveBinding: Send Delay [100] | |
18:34:28.027 [INFO ] [ghtwaverf.internal.LightwaveRfBinding] - LightwaveBinding: Timeout for Ok Messages [500] | |
18:34:28.027 [INFO ] [htwaverf.internal.LightwaveRfWifiLink] - Starting LightwaveRfWifiLink Connection | |
18:34:28.227 [ERROR] [htwaverf.internal.LightwaveRfWifiLink] - Error converting message: *!{"trans":509,"mac":"20:3B:85","time":1514918067,"pkt":"error","fn":"nonRegistered","payload":"Not yet registered. See LightwaveLink"} | |
18:34:28.546 [INFO ] [verf.internal.LightwaveRFSenderThread] - Ok message not received for 100,!F*p | |
, retrying again. Retry count 2 | |
18:34:28.841 [ERROR] [htwaverf.internal.LightwaveRfWifiLink] - Error converting message: *!{"trans":510,"mac":"20:3B:85","time":1514918068,"pkt":"error","fn":"nonRegistered","payload":"Not yet registered. Send !F*p to register"} | |
18:34:29.046 [ERROR] [htwaverf.internal.LightwaveRfWifiLink] - Error converting message: *!{"trans":511,"mac":"20:3B:85","time":1514918068,"type":"link","prod":"lwl","pairType":"local","msg":"success","class":"","serial":""} | |
18:34:29.148 [INFO ] [verf.internal.LightwaveRFSenderThread] - Ok message not received for 100,!F*p | |
, retrying again. Retry count 3 | |
18:34:29.359 [INFO ] [verf.internal.LightwaveRFSenderThread] - Ok message received for 100,!F*p | |
| |
18:34:29.359 [WARN ] [ghtwaverf.internal.LightwaveRfBinding] - No item for incoming message[100,?V="N2.94D" | |
] | |
</code> | |
| |
| |
===== Configuring the LightwaveRF Bindings ===== | |
| |
The instructions for the legacy (openHAB v1) bindings for LightwaveRF are [[https://github.com/openhab/openhab1-addons/wiki/LightwaveRF-Binding|here]]. | |
| |
Create a new file at ''/opt/openhab/conf/services/openhab.cfg'' (there should be one configuration file per service in this directory, and the service we are configuring is "openHAB v1 compatibility layer"), and copy the sample from GitHub: | |
| |
<code:bash> | |
################################### LightwaveRf Binding ##################################### | |
# | |
# The IP Address of the LightwaveRf Wifi Link you can use the broadcast address (required) | |
lightwaveRf:ip=255.255.255.255 | |
# The port to monitor for messages you shouldn't need to change this | |
lightwaveRf:receiveport=9760 | |
# The port to send messages on, it will also be monitored for incoming messages | |
# you shouldn't need to change this | |
lightwaveRf:sendport=9761 | |
# For a new computer you will need to register it with the wifi link to be allowed to send messages | |
# setting this to true we will send a registration message on startup. You will need to confirm | |
# registration on the wifi link. There is no harm leaving this as true but you can set to false | |
# once you have registerd for the first time. | |
lightwaverf:registeronstartup=true | |
# Delay between sending messages in ms to avoid swapming Wifi Link | |
lightwaverf:senddelay=2000 | |
# Timeout for OK Messages in ms, we will retry messages we don't receive an ok for in the timeout | |
lightwaverf:okTimeout=1000 | |
</code> | |
| |