💬 Building a MQTT Gateway
-
Is it possible to have the MQTT client also act as a network gateway?
-
The old network gateway with mqtt seems to be removed and the client version is the one that id preferred. Is it possible to have both mqtt server and network gateway in that version?
-
Sorry for my ignorance but I would like to know how to connect the gateway to the sensor.
As I understand it, the radio communication is responsible for it, so can I put arduino + NRF24L01 + sensor at the other end?
Thank you! -
@DIM said:
my ignorance but I would like to k
The gateway is a arduino with NRF24L01+ (or RFM69) and serial/network/RS485 component. The sensor is another arduino with NRF24L01+ (or RFM69) and the sensor that are attached. The gateway is then acting as a translator from the NRF24L01+ (or RFM69) radiosignal to the medium that can talk to your controller
-
I thought that the gateway could be done only with the ESP8266 module.
Thanks! -
If you're using an ESP8266 and you find it "SOFT WDT resetting" whenever a node tries to send a message, try moving the wire from GPIO4 to GPIO5 - There are a few esp12E boards which have been incorrectly screen printed - worked for me with this board!
https://twitter.com/bdcatalin/status/663434209265078272 -
Regarding ACK flag in MQTT.
If a sensor sends data to the gateway, and it requests an ACK.
It is the gateway that responds with an ACK, not the controller.How do one utilize the ACK flag in MQTT?
Or rather, how do one get the ACK to display in a MQTT message?void receive(const MyMessage &message) { int value = debouncer.read(); //We only expect one type of message from controller. But we better check anyway. if (message.isAck()) { Serial.println("This is an ack from gateway"); } }Should I write a codesnippet like the above but one that sends a message back to the gateway, that the ACK was received?
And also, if an ACK was not received that the sensor should try to send the message again. -
I have set up an MQTT gateway running on a Wemos D1, and a motion sensor running on an arduino nano.
It seems to work successfully, but I had to define MY_NODE_ID in the sensor sketch because the negotiation for this is done by the controller. Presumably, I'm going to have to program my controller to respond to the mqtt message being sent to negiotiate the id, but I cannot find any documentation on the correct reply. Does someone have a link?
The mqtt message being sent to negotiate the node id was
mygateway1-out/255/255/3/0/3 (null) -
Not sure if you want to leave the GPS on there unless that isn't your house with the double hot tub in tha back garden :)
-
Hi, is it possible to configure the MQTT gateway to let me in to port 5003 via telnet and read the communication message (not MQTT payloads) there also?
-
Not sure if this helps but for debugging I use MQTT spy (https://github.com/eclipse/paho.mqtt-spy/wiki) for tracking the comms
-
I know what is going on the MQTT server and I am subscribed to the topics the Mysensors gateway created and publish data to it.
But, I want to know what is going on the GATEWAY as well. I'd like to see messages like these when I telnet to the gateway on port 5003 (that's the default as I remember)
0;255;3;0;9;Starting gateway (RNNGA-, 2.0.0)
0;255;3;0;9;TSM:INIT
0;255;3;0;9;TSM:RADIO:OK
0;255;3;0;9;TSM:GW MODE
0;255;3;0;9;TSM:READY
IP: 192.168.0.109
0;255;3;0;9;No registration required
0;255;3;0;9;Init complete, id=0, parent=0, distance=0, registration=1
0;255;3;0;9;TSP:MSG:READ 255-255-255 s=255,c=3,t=7,pt=0,l=0,sg=0:
0;255;3;0;9;TSP:MSG:BC
0;255;3;0;9;TSP:MSG:FPAR REQ (sender=255)
0;255;3;0;9;TSP:CHKUPL:OK (FLDCTRL)
0;255;3;0;9;TSP:MSG:GWL OK
0;255;3;0;9;TSP:MSG:SEND 0-0-255-255 s=255,c=3,t=8,pt=1,l=1,sg=0,ft=0,st=bc:0
0;255;3;0;9;TSP:MSG:READ 255-255-255 s=255,c=3,t=7,pt=0,l=0,sg=0: -
My gateway seems to be constantly repeating the following on the serial monitor:
IP: 192.168.0.22 0;255;3;0;9;Attempting MQTT connection... 0;255;3;0;9;MQTT connected 0;255;3;0;9;Sending message on topic: Gateway1-out/0/255/0/0/18 0;255;3;0;9;Message arrived on topic: Gateway1-in/4/1/1/0/2 0;255;3;0;9;TSF:MSG:SEND,0-0-4-4,s=1,c=1,t=2,pt=0,l=1,sg=0,ft=0,st=OK:0 IP: 192.168.0.22 0;255;3;0;9;Attempting MQTT connection... 0;255;3;0;9;MQTT connected 0;255;3;0;9;Sending message on topic: Gateway1-out/0/255/0/0/18 0;255;3;0;9;Message arrived on topic: Gateway1-in/4/1/1/0/2 0;255;3;0;9;TSF:MSG:SEND,0-0-4-4,s=1,c=1,t=2,pt=0,l=1,sg=0,ft=0,st=OK:0 IP: 192.168.0.22 0;255;3;0;9;Attempting MQTT connection... 0;255;3;0;9;MQTT connected 0;255;3;0;9;Sending message on topic: Gateway1-out/0/255/0/0/18 0;255;3;0;9;Message arrived on topic: Gateway1-in/4/1/1/0/2 0;255;3;0;9;TSF:MSG:SEND,0-0-4-4,s=1,c=1,t=2,pt=0,l=1,sg=0,ft=0,st=OK:0Does this look like its in a reset loop or would you say there is some other issue going on?
If needed, my config is a Arduino Mega 2560 witha w5100 shield on top. I have specified the IP address of itself, the subnet, gateway, mqtt client IP (Controller), the mqtt topics, port, changed my LED pins.
I have a node with a button next to me, when i press it the message is picked up by the gateway. Below is what happens in the serial monitor when i press the node button.
IP: 192.168.0.22 0;255;3;0;9;Attempting MQTT connection... 0;255;3;0;9;MQTT connected 0;255;3;0;9;Sending message on topic: Gateway1-out/0/255/0/0/18 0;255;3;0;9;Message arrived on topic: Gateway1-in/4/1/1/0/2 0;255;3;0;9;TSF:MSG:SEND,0-0-4-4,s=1,c=1,t=2,pt=0,l=1,sg=0,ft=0,st=OK:0 0;255;3;0;9;TSF:MSG:READ,3-3-0,s=3,c=1,t=2,pt=2,l=2,sg=0:1 0;255;3;0;9;Sending message on topic: Gateway1-out/3/3/1/0/2I'm a little confused at what point to troubleshoot here because I seem to think that for some reason it keeps refreshing its connection to the MQTT server. Not too sure why it is pushing a message to the topic of "Gateway1-out/0/255/0/0/18" either.