Guide: Setting up and testing MQTT Client Gateway
-
Hi,
I'm trying to set up the MQTT gateway to work with Home-Assistant; since the serial gateway plugin lacks in binary switches (ex relays, and other things).
I have the MQTT sketch installed on a Nano with W5100 module, and serial output from the Arduino is good. But when I add a sensor to the Gateway, there is no communication.
Here is my output from Arduino, where would I go next?
0;0;3;0;9;Starting gateway (RNNGA-, 1.6.0-beta) 0;0;3;0;9;Radio init successful. IP: 192.168.86.112 0;0;3;0;9;Attempting MQTT connection... 0;0;3;0;9;MQTT connected 0;0;3;0;9;Init complete, id=0, parent=0, distance=0 ad: 0-0-0 s=0,c=0,t=0,pt=0,l=0,sg=0: 0;0;3;0;9;ver mismatch 0;0;3;0;9;Attempting MQTT connection... 0;0;3;0;9;Attempting MQTT connection... 0;0;3;0;9;Attempting MQTT connection... 0;0;3;0;9;Attempting MQTT connection... 0;0;3;0;9;Attempting MQTT connection... 0;0;3;0;9;Attempting MQTT connection... 0;0;3;0;9;Attempting MQTT connection... 0;0;3;0;9;Attempting MQTT connection... 0;0;3;0;9;Attempting MQTT connection... 0;0;3;0;9;Attempting MQTT connection... 0;0;3;0;9;Attempting MQTT connection... 0;0;3;0;9;Attempting MQTT connection... 0;0;3;0;9;Attempting MQTT connection... 0;0;3;0;9;Attempting MQTT connection... 0;0;3;0;9;MQTT connected``` -
@dakky said:
The gateway tries to open a lot of connections and all of them seem to die after a short while
Any idea?Narghs!
Seems to be a hardware problem. I changed the w5100 module with an w5100 arduino shield and now it works fine:
0;0;3;0;9;Starting gateway (RNNGA-, 1.6.0-beta) 0;0;3;0;9;Radio init successful. IP: 192.168.100.10 0;0;3;0;9;Attempting MQTT connection... 0;0;3;0;9;MQTT connected 0;0;3;0;9;Init complete, id=0, parent=0, distance=0I'm still interested in the reason. Hardware broken or wiring fail?
- pinging the arduino worked
- i can see the connections on the broker
=> basic networking seems to work, but "delivering content" failed. Any guesses?
Strange fact: with the "broken" hardware:
0;0;3;0;9;Radio init successful. IP: 0.40.68.10with the shield:
0;0;3;0;9;Radio init successful. IP: 192.168.100.10Same sketch, 192.168.100.10 is the correct Ip (obviously) ;)
Greeting
Dakky -
@dakky said:
The gateway tries to open a lot of connections and all of them seem to die after a short while
Any idea?Narghs!
Seems to be a hardware problem. I changed the w5100 module with an w5100 arduino shield and now it works fine:
0;0;3;0;9;Starting gateway (RNNGA-, 1.6.0-beta) 0;0;3;0;9;Radio init successful. IP: 192.168.100.10 0;0;3;0;9;Attempting MQTT connection... 0;0;3;0;9;MQTT connected 0;0;3;0;9;Init complete, id=0, parent=0, distance=0I'm still interested in the reason. Hardware broken or wiring fail?
- pinging the arduino worked
- i can see the connections on the broker
=> basic networking seems to work, but "delivering content" failed. Any guesses?
Strange fact: with the "broken" hardware:
0;0;3;0;9;Radio init successful. IP: 0.40.68.10with the shield:
0;0;3;0;9;Radio init successful. IP: 192.168.100.10Same sketch, 192.168.100.10 is the correct Ip (obviously) ;)
Greeting
Dakky@dakky I guess I had that problem once or twice before but I don't pay attention to it as there was other bugs which were more important.
I remember that I just reset the nano and it worked at once. Glad that it worked for you but as you have said, knowing the root cause it important.
Will try to reproduce it again when I have time.
-
Another question:
I don't have any experience with the classic setup (broker on gateway). But does
The topic resembles the serial protocol. You must define you preferred subscribe and publish prefix in the sketch. The topic is build like this:
MY_MQTT_PUBLISH_TOPIC_PREFIX/FROM-NODE-ID/SENSOR-ID/CMD-TYPE/ACK-FLAG/SUB-TYPEmean, that the consuming controllers configuration (openhab in my case) has to be changed?
Fromsensor-gw1-out/99/3/V_TRIPPEDTo
sensor-gw1-out/99/3/1/0/16in order to represent what is really pushed to the mqtt broker? Because thats what is posted to the broker?
-
A little bit cofused. Can this sketch be uploaded to ESP12 set as in the "ESP8266 WiFi Gateway"? Without the arduino?
After uploading it to esp all i getload 0x4010f000, len 1264, room 16 tail 0 chksum 0x42 csum 0x42 ~ld -
Can more detailed instructions be given on the development branch? As i understand this is not a simple copy the code from here https://github.com/mysensors/Arduino/blob/development/libraries/MySensors/examples/GatewayESP8266MQTTClient/GatewayESP8266MQTTClient.ino paste into arduino IDE compile and upload process?
-
Well i had to move all the libs from production branch and extract clean only the development branch in arduino IDE to get it to work.
Afterwards had to do the same thing back to production to compile the humidity sensor as it gave me the following error during compilationArduino: 1.6.5 (Windows 7), Board: "Arduino Pro or Pro Mini, ATmega328 (5V, 16 MHz)" In file included from Mysensors_DHT_Wireless.ino:31:0: \My Documents\Arduino\libraries\MySensors/MySensor.h:201:3: error: #error No forward link or gateway feature activated. This means nowhere to send messages! Pretty pointless. #error No forward link or gateway feature activated. This means nowhere to send messages! Pretty pointless. ^ Mysensors_DHT_Wireless:39: error: 'MySensor' does not name a type Mysensors_DHT_Wireless.ino: In function 'void setup()': Mysensors_DHT_Wireless:50: error: 'gw' was not declared in this scope Mysensors_DHT_Wireless.ino: In function 'void loop()': Mysensors_DHT_Wireless:75: error: 'gw' was not declared in this scope Mysensors_DHT_Wireless:85: error: 'gw' was not declared in this scope Mysensors_DHT_Wireless:90: error: 'gw' was not declared in this scope 'MySensor' does not name a type -
Is there some miscompatability betweed development/production branches?
My humidity sensor reports in the serial console just fine.
req id send: 255-255-0-0 s=255,c=3,t=3,pt=0,l=0,sg=0,st=ok: req id send: 255-255-0-0 s=255,c=3,t=3,pt=0,l=0,sg=0,st=ok: T: 24.60 req id send: 255-255-0-0 s=255,c=3,t=3,pt=0,l=0,sg=0,st=ok: H: 87.00On the gateway i see the following
0;255;3;0;9;read: 255-255-0 s=255,c=3,t=3,pt=0,l=0,sg=0: 0;255;3;0;9;Sending message on topic: mygateway1-out/255/255/3/0/3 0;255;3;0;9;read: 255-255-0 s=255,c=3,t=3,pt=0,l=0,sg=0: 0;255;3;0;9;Sending message on topic: mygateway1-out/255/255/3/0/3 0;255;3;0;9;read: 255-255-0 s=255,c=3,t=3,pt=0,l=0,sg=0: 0;255;3;0;9;Sending message on topic: mygateway1-out/255/255/3/0/3But in mosquitto...
mygateway1-out/255/255/3/0/3 (null) mygateway1-out/255/255/3/0/3 (null) mygateway1-out/255/255/3/0/3 (null) -
Please ignore the last post. Solved by finding out that Openhab doesn't handle Node ID assigning.
-
Hi,
Just tried to set up an ESP-12E as MQTT gateway and noticed one bug in the actual development branch:
As soon as one of the three LED PIN assignments is not defined (commented out), the Example sketch will lock itself after initializing NRF radio, and running DHCP. So, no further NRF communication nor signup at the broker. WDT steps in then.Just defining all three LEDs, without any other parameter or use the LED blinking feature, and everything is fine.
-
Im lost...
Ive just setup a new MQTT client gateway ( from link at the top of this post..) and have a few nodes successfully sending data to a mosquito server.
What im trying to now do is, using the RelayActuator sketch, is control the relay via a MQTT message...but im confused as to what i need to send it!
Here is the serial output from the RelayActuator sketch:
Starting repeater (RNNRA-, 2.0.0-beta) Radio init successful. send: 9-9-0-0 s=255,c=3,t=15,pt=1,l=1,sg=0,st=ok:0 send: 9-9-0-0 s=255,c=0,t=18,pt=0,l=10,sg=0,st=ok:2.0.0-beta send: 9-9-0-0 s=255,c=3,t=6,pt=1,l=1,sg=0,st=ok:0 send: 9-9-0-0 s=255,c=3,t=11,pt=0,l=5,sg=0,st=ok:Relay send: 9-9-0-0 s=255,c=3,t=12,pt=0,l=3,sg=0,st=ok:1.0 send: 9-9-0-0 s=1,c=0,t=3,pt=0,l=0,sg=0,st=ok: Init complete, id=9, parent=0, distance=1So what message do i send it from another MQTT client ?
ive been trying things such as mygateway1-in/9/0/1/1 with message of 0 or 1Pls help ! ;-)
-
mmm..perhaps there is a problem between mosquito and the mqttclient gateway. As ive now attached a serial monitor to the mqttclient gateway and sending the message doesnt appear in the console. I assume it should...
Opening port Port open 0;255;3;0;9;read: 9-9-0 s=255,c=3,t=15,pt=1,l=1,sg=0:0 0;255;3;0;9;Sending message on topic: mygateway1-out/9/255/3/0/15 0;255;3;0;9;read: 9-9-0 s=255,c=0,t=18,pt=0,l=10,sg=0:2.0.0-beta 0;255;3;0;9;Sending message on topic: mygateway1-out/9/255/0/0/18 0;255;3;0;9;read: 9-9-0 s=255,c=3,t=6,pt=1,l=1,sg=0:0 0;255;3;0;9;Sending message on topic: mygateway1-out/9/255/3/0/6 0;255;3;0;9;read: 9-9-0 s=255,c=3,t=11,pt=0,l=5,sg=0:Relay 0;255;3;0;9;Sending message on topic: mygateway1-out/9/255/3/0/11 0;255;3;0;9;read: 9-9-0 s=255,c=3,t=12,pt=0,l=3,sg=0:1.0 0;255;3;0;9;Sending message on topic: mygateway1-out/9/255/3/0/12 0;255;3;0;9;read: 9-9-0 s=1,c=0,t=3,pt=0,l=0,sg=0: 0;255;3;0;9;Sending message on topic: mygateway1-out/9/1/0/0/3 0;255;3;0;9;read: 1-1-0 s=0,c=1,t=0,pt=7,l=5,sg=0:26.8 0;255;3;0;9;Sending message on topic: mygateway1-out/1/0/1/0/0 0;255;3;0;9;read: 1-1-0 s=1,c=1,t=0,pt=7,l=5,sg=0:26.7 0;255;3;0;9;Sending message on topic: mygateway1-out/1/1/1/0/0as you can see no incoming messages from mosqutto.
-
I can see in mosquitto logs a subscription from the gateway
1452645694: mosquitto version 1.3.4 terminating 1452645694: Sending CONNACK to mysensors-1 (0) 1452645694: Received SUBSCRIBE from mysensors-1 1452645694: mygateway1-in/+/+/+/+/+ (QoS 0) 1452645694: Sending SUBACK to mysensors-1So looks like i need to add an extra level to the message i send!
So i just tried sending a message to topic:mygateway1-in/9/1/0/1/1
and now i can see in my serial outputs of both the mqttclient gateway and the relaysketch node the message received!
( but its not swithing my relay yet! )@hek is this the correct MQTT formatting:
MY_MQTT_PUBLISH_TOPIC_PREFIX/FROM-NODE-ID/SENSOR-ID/CMD-TYPE/ACK-FLAG/SUB-TYPE -
Ok got it... ( sorry for making mess of this discussion!)
If i publish to
mygateway1-in/9/1/1/0/2 and send message values of 0 or 1 it works.... ;-)Hope this helps someone else!
Greg ;-)
-
@hek
That thread does not directly touch on the issue I noticed, although that might be connected.Some other questions:
Why is the topic structure as it is? I like my MQTT topics in hierarchical order. So, having different prefixes for send and receive (in and out) is not nice, but ok. BUt why is the ACK flag before the data type, which is usually linked to a value or variable in the sensor? I would consider ACK to be a sub-value of that one.And is there a way to have more speaky names instead of numbers? So, the source does not have that option and as that gateway is now included in the library I only see the possibility of changing the source in the library, which will disconnect from updates. Not nice. What about an option of excluding gatewayTransportSend and incomingMQTT via define from the library and define then in the own sketch?
-
What is the correct way to run DHCP? Tried commenting out
#define MY_IP_ADDRESS
but that didn't help.Also is it possible to use fqdn for the mqtt broker instead of the ip?