MQTT Client gateway
-
Could someone please post the latest working version of the MQTT Client gateway sketch?
-
Does anyone have a version of this reworked for the new 1.5 client? Looking through the MySensor class, it looks like a lot of the code in MyMQTTClient.cpp can be removed as it's now in the sensor class. I'd like to use this for my gateway as it's a much better system than the broker gateway that's in the standard library but it needs to support message signing and the newer 1.5 code base. If someone else finished this already I'll just use that, otherwise I'll start working on it. I have family coming in town so I don't expect to get much done in the next week but assuming that the MQTT code is working fine (I have no experience with that writing an MQTT client), it shouldn't take much work to refactor the client to use the new MySensor base.
-
I just did an adaptation. I removed the MyMQTTClient.cpp completely. It looks codewise more than the MQTTGateway. I am in the process of testing it.
You can find it here https://github.com/tomkxy/Arduino.git in the branch MQTTClient.
-
Well it seems to work. Only point I saw and don't understand is that the gateway tries to send a message back to the sensor which does not seem to be an ACK. See my post here http://forum.mysensors.org/topic/1782/gateway-is-sending-command-1-type-1-c-1-t-1-message-to-sensor but so far no feedback on that. Functional wise it works, at least with my test temp and humidity sensor.
-
Please help! This MQTT client gateway fails to compile. I use 1.6.5. IDE, 1.5 library. Applied patches as suggested by ntruchsess and still get this error:
MyMQTTClient.cpp: In constructor 'MyMQTTClient::MyMQTTClient(PubSubClient, uint8_t, uint8_t)': MyMQTTClient.cpp:108: error: no matching function for call to 'MySensor::MySensor(uint8_t&, uint8_t&)' MySensor(_cepin, _cspin), buffsize(0) ^ MyMQTTClient.cpp:108:41: note: candidates are: In file included from MyMQTTClient.h:16:0, from MyMQTTClient.cpp:14: R:\Arduino\libraries\MySensors/MySensor.h:153:2: note: MySensor::MySensor(MyTransport&, MyHw&) MySensor(MyTransport &radio =*new MyTransportNRF24(), MyHw &hw=*new MyHwDriver() ^ R:\Arduino\libraries\MySensors/MySensor.h:153:2: note: no known conversion for argument 1 from 'uint8_t {aka unsigned char}' to 'MyTransport&' R:\Arduino\libraries\MySensors/MySensor.h:144:7: note: MySensor::MySensor(const MySensor&) class MySensor ^ R:\Arduino\libraries\MySensors/MySensor.h:144:7: note: candidate expects 1 argument, 2 provided MyMQTTClient.cpp: In member function 'void MyMQTTClient::begin(rf24_pa_dbm_e, uint8_t, rf24_datarate_e, uint8_t, uint8_t, uint8_t)': MyMQTTClient.cpp:148: error: 'setupRepeaterMode' was not declared in this scope setupRepeaterMode(); ^ MyMQTTClient.cpp:154: error: 'setupRadio' was not declared in this scope setupRadio(paLevel, channel, dataRate); ^ MyMQTTClient.cpp:155: error: 'BASE_RADIO_ID' was not declared in this scope RF24::openReadingPipe(WRITE_PIPE, BASE_RADIO_ID); ^ MyMQTTClient.cpp:157: error: cannot call member function 'void RF24::startListening()' without object RF24::startListening(); ^ no matching function for call to 'MySensor::MySensor(uint8_t&, uint8_t&)' -
to tomkhy: your gateway sketch compiles, but Arduino runs out of memory (I use Nano with W5100 ethernet module, SOFTSPI enabled). It does fit with MY_SIGNING_FEATURE and DEBUG disabled, but I need debug - somehow it is not registering with MQTT server. Please tell me how to reduce memory footprint.
-
Hi,
can this run on ESP8266 (as wifi-mqttclient-gateway), too?
GreetingsAndreas
-
to tomkhy: your gateway sketch compiles, but Arduino runs out of memory (I use Nano with W5100 ethernet module, SOFTSPI enabled). It does fit with MY_SIGNING_FEATURE and DEBUG disabled, but I need debug - somehow it is not registering with MQTT server. Please tell me how to reduce memory footprint.
@ruslan said:
to tomkhy: your gateway sketch compiles, but Arduino runs out of memory (I use Nano with W5100 ethernet module, SOFTSPI enabled). It does fit with MY_SIGNING_FEATURE and DEBUG disabled, but I need debug - somehow it is not registering with MQTT server. Please tell me how to reduce memory footprint.
Looks like you have it working now, but just incase, Previously when I have had memory issues , I have upgraded my bootloader to use Optiboot which gives you a little bit more.
HTH
-
OK. I've got the gateway to compile and get the following:
Started! 0;0;3;0;9;read: 110-110-0 s=1,c=1,t=0,pt=7,l=5:13.2 0;0;3;0;9;read: 105-105-0 s=0,c=1,t=1,pt=7,l=5:70.0 0;0;3;0;9;read: 110-110-0 s=0,c=1,t=1,pt=7,l=5:58.3 0;0;3;0;9;read: 105-105-0 s=0,c=1,t=1,pt=7,l=5:69.9 0;0;3;0;9;read: 110-110-0 s=0,c=1,t=1,pt=7,l=5:58.2 0;0;3;0;9;read: 105-105-0 s=0,c=1,t=1,pt=7,l=5:70.0 0;0;3;0;9;read: 110-110-0 s=0,c=1,t=1,pt=7,l=5:58.3 0;0;3;0;9;read: 105-105-0 s=0,c=1,t=1,pt=7,l=5:69.9 0;0;3;0;9;read: 110-110-0 s=0,c=1,t=1,pt=7,l=5:58.2 0;0;3;0;9;read: 110-110-0 s=0,c=1,t=1,pt=7,l=5:58.3 0;0;3;0;9;read: 105-105-0 s=0,c=1,t=1,pt=7,l=5:69.8 0;0;3;0;9;read: 110-110-0 s=1,c=1,t=0,pt=7,l=5:13.3 0;0;3;0;9;read: 110-110-0 s=0,c=1,t=1,pt=7,l=5:58.5I can ping the MQTTClinetGateway from another machine and I've confirmed Mosquitto is running OK with a series of pub/subs from other machines/devices and that side of things is working perfectly fine.
I'm not seeing any of the above gateway readings publish to my broker. Thoughts?
Cheers.
-
Following points to verify and check:
- is the gateway connected to the broker. As far as I remember you can check that by subscribiing to Mosquitto status messages
mosquitto_sub -v -t \$SYS/#If not check what the authentication method is mosquitto is. If it allows anonymous access make sure that "MQTT_AUTH_REQUIRED" is not defined in the MQTTClientGateway sketch. If username and password are set correctly.
It seems that you are not using signing. So ensure that your MQTTClientGateway is compiled with the signing feature disabled. That are the two points I can imagine now provided that you are sure that you have of course a working ethernet connection.
-
I downloaded and installed the development branch and got the MQTTClientGateway running on an UNO with a W5100 shield (that I'm suspicious of, in terms of its reliability). The sketch runs great for a while publishing data to Mosquitto on my Mac Mini, but then stops responding after a while. I'm pretty sure the cause of the problem is the ethernet shield as it bombs out when running other sketches - the webserver one for example.
I have a few of these ENC28J60 boards and I'd like to use one of those instead, but have had some problems.
I notice in the MQTTClientGateway sketch that I should just need to comment out the one W5100 Ethernet.h library and substitute with the UIPEthernet.h one, but I tried that and had no joy. Does anyone have a working sketch based on the ENC28J60 that they could post, along with the wiring diagram to connect that board in along with any additional tweaks necessary to get it running on an Uno? Thanks in advance. Cheers.
-
Hi Guys,
I get this:
Started! 0;0;3;0;9;read: 0-0-0 s=0,c=0,t=0,pt=0,l=0: 0;0;3;0;9;version mismatch 0;0;3;0;9;read: 0-0-0 s=0,c=0,t=0,pt=0,l=0: 0;0;3;0;9;version mismatchAlso the Gateway does not answer to pings. Any suggestions?
edit: after a rebbot I get valid readings in the Serial monitor of the Arduino IDE now:
0;0;3;0;9;read: 20-20-0 s=3,c=1,t=16,pt=2,l=2:1 0;0;3;0;9;read: 20-20-0 s=3,c=1,t=16,pt=2,l=2:0 0;0;3;0;9;read: 20-20-0 s=3,c=1,t=16,pt=2,l=2:1 0;0;3;0;9;read: 20-20-0 s=3,c=1,t=16,pt=2,l=2:0 0;0;3;0;9;read: 20-20-0 s=3,c=1,t=16,pt=2,l=2:1 0;0;3;0;9;read: 20-20-0 s=3,c=1,t=16,pt=2,l=2:0 0;0;3;0;9;read: 20-20-0 s=3,c=1,t=16,pt=2,l=2:1 0;0;3;0;9;read: 20-20-0 s=3,c=1,t=16,pt=2,l=2:0 0;0;3;0;9;read: 20-20-0 s=3,c=1,t=16,pt=2,l=2:1 0;0;3;0;9;read: 20-20-0 s=3,c=1,t=16,pt=2,l=2:0 0;0;3;0;9;read: 20-20-0 s=3,c=1,t=16,pt=2,l=2:1But still, can´t ping the gw. Double checked IP and Port, seems to be fine.