[Tutorial] openHAB with serial gateway
-
@Jan-Gatzke Thanks for the pointer. I will try that.
I think the reason is lack of understanding. After reading sea of information I am able to pull together the basic architecture of how this would work.
-
I am having trouble getting Arduino Nano detected by Raspberry Pi via USB.
I could see this in the monitor when I selected the correct baudrate:
0;0;3;0;14;Gateway startup complete.[151199.509040] usb 1-1.2: new full-speed USB device number 5 using dwc_otg [151199.612259] usb 1-1.2: New USB device found, idVendor=1a86, idProduct=7523 [151199.612296] usb 1-1.2: New USB device strings: Mfr=0, Product=2, SerialNumber=0 [151199.612314] usb 1-1.2: Product: USB2.0-Serial [153464.158413] usb 1-1.2: USB disconnect, device number 5 [153715.311307] usb 1-1.3: new full-speed USB device number 6 using dwc_otg [153715.414679] usb 1-1.3: New USB device found, idVendor=1a86, idProduct=7523 [153715.414717] usb 1-1.3: New USB device strings: Mfr=0, Product=2, SerialNumber=0 [153715.414733] usb 1-1.3: Product: USB2.0-SerialInitially while flashing serial gateway sketch to nano from Mac I had some trouble to get the right drivers. After following this post it worked fine. Is this to do with chinese knock offs?
http://kiguino.moos.io/2014/12/31/how-to-use-arduino-nano-mini-pro-with-CH340G-on-mac-osx-yosemite.htmlAlso I installed Arduino sketch on Raspberry pi with apt-get install arduino: When I launch Arduino and go to Tools>Port is disabled.
Is there anything I need to do on RPi so it can detect Arduino Nano knock pff?
@guzzler I stumbled over the same issue. The FTDI chip on my Nano is correctly recognized as USB device when I attach it to the Raspi. However, when I reboot the Raspi, the device is not there. I need to unplug and replug it.
That's not normal behaviour of an USB device. And it's quite hindering deploying the Nano as gateway via USB-serial. Maybe it has something to do with automatically performed reset on the Arduino Nano board??
(The hint about attaching directly to serial is great. Noted for later.)
-
@guzzler I stumbled over the same issue. The FTDI chip on my Nano is correctly recognized as USB device when I attach it to the Raspi. However, when I reboot the Raspi, the device is not there. I need to unplug and replug it.
That's not normal behaviour of an USB device. And it's quite hindering deploying the Nano as gateway via USB-serial. Maybe it has something to do with automatically performed reset on the Arduino Nano board??
(The hint about attaching directly to serial is great. Noted for later.)
@poeml more precisely, the Nano's FTDI chip connects to the booting Raspberry, but instead of registering a single device there are 4 (!) log lines claiming registering 4 devices (very funny), and none of the devices are bound.
May 23 23:16:21 bramble kernel: [ 3.738087] usb 1-1.5: new full-speed USB device number 5 using dwc_otg May 23 23:16:21 bramble kernel: [ 4.283520] usb 1-1.5: new full-speed USB device number 6 using dwc_otg May 23 23:16:21 bramble kernel: [ 4.768136] usb 1-1.5: new full-speed USB device number 7 using dwc_otg May 23 23:16:21 bramble kernel: [ 5.268161] usb 1-1.5: new full-speed USB device number 8 using dwc_otgI don't find a way to trigger re-registering the device, or power-cycle the USB port, via software. I can only power-cycle the whole USB bridge, which means that the LED goes out (the Ethernet chip is switched off as well...) and LED goes on again, but with the same faulty registering as when booting.
# cat reset-usb #!/bin/bash echo 0 > /sys/bus/usb/devices/1-1/authorized sleep 1 echo 1 > /sys/bus/usb/devices/1-1/authorizedUnplugging and replugging always works.
For the record: Raspberry Pi version 2 with the 4 USB ports, just updated to Debian 8.0 (Jessie). I didn't check with Debian Wheezy if it worked then. The Nano was linked from MySensors store I believe and works great otherwise. I have two of them and both have the same problem (or the Raspi's USB stack has the problem, who knows).
-
Great tutorial! Thank you for putting this together.
My controller is on RPi, and I'm using a Nano for mySerial gateway with the USB plugged into the RPi. When I specify the port as follows I get the following message
String Arduino "Arduino" { serial="/dev/ttyUSB0@115200" }
org.openhab.model.item.binding.BindingConfigParseException: Could not open serial port /dev/ttyUSB0@115200: Serial port '/dev/ttyUSB0@115200' could not be found. Available ports are:
/dev/ttyUSB0MySensors.h has the following
#define BAUD_RATE 115200I tried taking out @115200, I see openhab.log showing it trying to read garbage and the rules failing. So, I', thinking the garbage is because openhab is not reading it with the right baud rate. However, openhab on the RPi doesn't like /dev/ttyUSB0@115200
Any ideas anyone?
-
Your Version of openHAB is to old. You need openHAB 1.7 to set the baud rate with @xxxxx. Update openHAB or recompile the gateway sketch with 9600 baud in config.h.
-
@poeml more precisely, the Nano's FTDI chip connects to the booting Raspberry, but instead of registering a single device there are 4 (!) log lines claiming registering 4 devices (very funny), and none of the devices are bound.
May 23 23:16:21 bramble kernel: [ 3.738087] usb 1-1.5: new full-speed USB device number 5 using dwc_otg May 23 23:16:21 bramble kernel: [ 4.283520] usb 1-1.5: new full-speed USB device number 6 using dwc_otg May 23 23:16:21 bramble kernel: [ 4.768136] usb 1-1.5: new full-speed USB device number 7 using dwc_otg May 23 23:16:21 bramble kernel: [ 5.268161] usb 1-1.5: new full-speed USB device number 8 using dwc_otgI don't find a way to trigger re-registering the device, or power-cycle the USB port, via software. I can only power-cycle the whole USB bridge, which means that the LED goes out (the Ethernet chip is switched off as well...) and LED goes on again, but with the same faulty registering as when booting.
# cat reset-usb #!/bin/bash echo 0 > /sys/bus/usb/devices/1-1/authorized sleep 1 echo 1 > /sys/bus/usb/devices/1-1/authorizedUnplugging and replugging always works.
For the record: Raspberry Pi version 2 with the 4 USB ports, just updated to Debian 8.0 (Jessie). I didn't check with Debian Wheezy if it worked then. The Nano was linked from MySensors store I believe and works great otherwise. I have two of them and both have the same problem (or the Raspi's USB stack has the problem, who knows).
-
Your Version of openHAB is to old. You need openHAB 1.7 to set the baud rate with @xxxxx. Update openHAB or recompile the gateway sketch with 9600 baud in config.h.
@Jan-Gatzke That seemed to work. I'm getting readable data now. Thanks!
I also set the nodeId to 15 (The above example assumed it was set to 101), as follows in the sensor
gw.begin(NULL, 15);
I adjusted the mapping accordingly in the mapping, as specified in the tutorial using 15 instead of 101. The following is now being output from event.log
2015-05-31 22:18:33 - livingTemp01 state updated to 22
-
Dear all,
I've stuck. Please help me to understand.
Currently I have a serial gateway and openHAB 1.7. I've managed to get controller working and send commands to openhab installed on Windows.Now I need to understand how to convert commands from the gateway.
I have a rule
rule "Arduino sends to Openhab" when Item Arduino received update then var String lineBuffer = Arduino.state.toString.split("\n") for (String line : lineBuffer) { var String[] message = line.split(";") var Integer nodeId = new Integer(message.get(0)) var Integer childId = new Integer(message.get(1)) var Integer msgType = new Integer(message.get(2)) var Integer ack = new Integer(message.get(3)) var Integer subType = new Integer(message.get(4)) var String msg = message.get(5) if(msgType == 3 ){ if (subType == 9){ sendCommand(Arduino_Motion1, ON) pushover("Motion Detected", -1) } } } enditems:
String Arduino "Serial" {serial="COM4@115200"} Switch Arduino_Motion1 "Motion" <siren>and a sitemap
sitemap home label="Home" { Frame label="Serial" { Switch item=Arduino_Motion1 label="Motion Sensor" } }So in debug I have following:
2015-06-01 12:51:29.154 [INFO ] [runtime.busevents ] - Arduino state updated to 0;0;3;0;9;read: 1-1-0 s=1,c=1,t=16,pt=0,l=1:1 1;1;1;0;16;1 2015-06-01 12:51:29.156 [INFO ] [runtime.busevents ] - Arduino_Motion1 received command ONSo I've found an example of temp sensor but not the motion...
Pushover sends me notifications when motion sensor send 0 to the gateway every minute or so. (0;0;3;0;9;read: 1-1-0 s=1,c=1,t=16,pt=0,l=1:0). I don't understand how can I separate last 0 from 1.
I know I'm on a last step, please help :)Thank you!
-
Would you mind to share the solution?
-
The support for a baudrate of 115.200, which is used by the MySensor serial gateway, is available since 1.7.0 in the OpenHab serial binding.
You're able to remove the old version with "apt-get remove ...", no need to replace the files. Just use the installation in /opt.
@TimO Hi do you work with Openhab 2.0? I tried to install it and couldnt create a binding, its very hard for me. I need auto Discovery of mysensors with 2.0
-
A 2.0 binding would be great. How far did you get?
-
Last time I've tested Openhab 2.0 there were some (well known) serious bugs and it still is only an alpha version. An MySensors binding for Openhab would be really cool and I will give it a try, but not for the 1.X Version, because of the lack of autodiscovery mechanisms in Openhab itself and because I think it is a little bit too early for Openhab 2.0.
-
Last time I've tested Openhab 2.0 there were some (well known) serious bugs and it still is only an alpha version. An MySensors binding for Openhab would be really cool and I will give it a try, but not for the 1.X Version, because of the lack of autodiscovery mechanisms in Openhab itself and because I think it is a little bit too early for Openhab 2.0.
@TimO ok 2.0 alpha...
An idea for 1.x; Ready-Discovery ?
We write 250 mysensors items like ID=1-30 for switches, 31-50 for contacts, 51-70 for motion etc... if item is available then sitemap will show them.Is there anyway to create rules on frontend? Maybe IFTTT + MySensors goes well..
-
Last time I've tested Openhab 2.0 there were some (well known) serious bugs and it still is only an alpha version. An MySensors binding for Openhab would be really cool and I will give it a try, but not for the 1.X Version, because of the lack of autodiscovery mechanisms in Openhab itself and because I think it is a little bit too early for Openhab 2.0.
Hi
Please check this http://forum.mysensors.org/topic/1543/universal-gateway-for-315-433mhz-devices/2
Is there anyway to use directly 433 with openhab --- serial gateway will be 433 receiver and transmitter (without mysensors lib and devices)
-
hi,
just wanted to ask if anybody developed l154 work here http://forum.mysensors.org/topic/655/serial-gateway-connection-to-openhab/31? any arduino code for the node point with a few relays and a few sensors?
thanks! -
How to I add I_BATTERY_LEVEL to the openhab rules? Being internal I wasnt sure if hashmap would do it.
Something like this? Where Item is NodeX_Batt
// Internal Command if(msgType == 3){ if(subType == I_BATTERY_LEVEL){ postUpdate("Node" + nodeId + "_Batt, msg) println("Node" + nodeId + "_Batt:" + msg) }} -
This is a BRILLIANT tutorial. Up and running with a single temp/humidity node in minutes. Thanks so much.
I built a second node (identical simple DHT22 temp/humidity) and set the Node-id to 110. I'm just wondering how to add the second node into OpenHAB? I have confirmed that openhab is receiving the signals from the second node correctly, but not quite sure about the OpenHAB rules, sitemap and items configs for a second node - that is identical in every way save for the Node ID and different item names. I've simply duplicated all of the code in the relevant config files, changed the item names and added four extra lines to the mapping to map the second 110 node. When I do this I get no data from either of the nodes. If I comment out my changes, I get the values from my first node just fine.
Can anyone with multiple nodes post a link to their configs so I can see what I might be doing wrong? Cheers.
-
Scratch that...I figured it out. In the rules file, I needed to add a extra comma after the first chunk of mapping. As it stood, I presume it failed to process the whole rule, as there was a syntax error (missing comma) which mean't the 'list' of mappings were incomplete. Added a comma and all was right once again. :)
-
Hi guys,
I'm running in an interesting issue here, posting to see where I'm missing a step.
I have a Serial Gateway, connected to openHAB and working without issue. I see messages from the arduino Monitor and I can see the messages in openHAB without issue.
I'm running openHAB on Raspberry PI. arduino connected to PI by USB (on serial port /dev/ttyUSB0) declared as below:
String itmSensor_gateway_rawmessage { serial="/dev/ttyUSB0@115200" }The problem that I'm facing is related to the parse process ( I think ).
Message sent from my node:
send: 124-124-0-0 s=0,c=1,t=1,pt=7,l=5,sg=0,st=ok:32.0with this code:
This is the section of the arduino sketch that I'm using to send the Humidity status:float humidity = dht.getHumidity(); if (isnan(humidity)) { Serial.println("Failed reading humidity from DHT"); } else if (humidity != lastHum) { lastHum = humidity; gw.send(msgHum.set(humidity, 1)); Serial.print("H: "); Serial.println(humidity); numAttemptsHum = 0; } else { Serial.print("Attempt "); Serial.print(numAttemptsHum); Serial.print("/"); Serial.print(MAX_NUM_ATTEMPTS_HUM); Serial.print(" - Same Humidity level presented"); Serial.print(" (Previous:"); Serial.print(lastHum); Serial.print(" vs Current: "); Serial.print(humidity); Serial.println(") - not sending"); numAttemptsHum ++; if ( numAttemptsHum > MAX_NUM_ATTEMPTS_HUM ) { lastHum = 0; numAttemptsHum = 0; } }(it's based on the Humidity & Temp example with minor changes to avoid traffic witout reducing the sampling frequency but with consistent updates based on a specific threshold.).
Message received in openHAB:
13:27:54.142 [DEBUG] [b.serial.internal.SerialDevice:194 ] - Received message '0;0;3;0;9;read: 124-124-0 s=0,c=1,t=1,pt=7,l=5,sg=0:31.0 ' on serial port /dev/ttyUSB0So at this point I see that all messages are type 3 ( not 1 as in the above example ).
That message updates my openHAB item, as per this example I have a rule that descompose the original message ( no modifications done yet to the one posted here ).
So, when I finally get to the core msg ( the one that in this example is directly assigned to the openHAB item ) the value is:
124-124-0 s=0,c=1,t=1,pt=7,l=5,sg=0:31.0instead of the 31.0 that I was expecting.
Any ideas?
(happy to provide more sections of code if needed, didn't want to put everyting here to avoid garbage)
Thanks in advance for any help.