My Arduino UNO is up and running, but no mqtt messages


#1

Hi All,

I’ve just started with OpenMQTTGateway and need help resolving some issues.

I use Arduino UNO with Ethernet shield and receiver (RXB6-like)/transmitter (WL102) attached, and my goal is to build a RF gateway for my 433 MHz devices to communicate with Home Assistant (on RPi3). I used these receiver/transmitter pair with Arduino Mega/RFLink and they all worked fine.

I managed to upload a project into UNO and Serial Monitor shows the following:

Simple ethernet config
OpenMQTTGateway ip:
192.168.0.37
Ethernet ok
1883
Connecting to MQTT by IP adress
192.168.0.34
RF_EMITTER_PIN
4
RF_RECEIVER_PIN
1
ZgatewayRF setup done
MQTT_MAX_PACKET_SIZE
256
Setup OpenMQTTGateway end
MQTT connection…
Connected to broker
Subscription OK to the subjects

For some reason it uses pin D1, not D3.
In the mqtt broker’s log I can see only its availability status:
home/OpenMQTTGateway/LWT online
home/OpenMQTTGateway/version 0.9beta

And apparently every time Arduino receives a 433 MHz signal it crashes because I immediately see in mqtt log:
home/OpenMQTTGateway/LWT offline

and in Serial Monitor:
MQTT connection…
failure_number
1
failed, rc=
-2
try again in 5s
MQTT connection…
failure_number
2
failed, rc=
-2
try again in 5s
MQTT connection…
failure_number
3

and it goes forever until I press Reset button on it.

Currently I have only a receiver with its data pin connected to D3 pin of the shield (4th from the nearest corner) as described here. If I connect it to D1 (2nd pin from the nearest corner), the Arduino doesn’t crash when it receives a signal, but I can see no mqtt messages in the mqtt log.

So how can I debug it and make the thing work properly?


#2

Hi,

Could you give us the traces given by your compilation?


#3

What is it? I’ve got only this when I select Verify/Compile:
Archiving built core (caching) in: /var/folders/47/y8hjsn9s5fb21gdtfj8bpq740000gn/T/arduino_cache_304831/core/core_arduino_avr_uno_97af79b2ac9aebec92d0dd9b1f2ab947.a
lto1: note: array types have different bounds
Sketch uses 29698 bytes (92%) of program storage space. Maximum is 32256 bytes.
Global variables use 1679 bytes (81%) of dynamic memory, leaving 369 bytes for local variables. Maximum is 2048 bytes.
Low memory available, stability problems may occur.


#4

Try maybe to change mqtt max packet size to 128 in pubsubclient.h


#5

In /library/PubSubClient/src/pubsubclient.h? I can see there only this:
#ifndef MQTT_MAX_PACKET_SIZE
#define MQTT_MAX_PACKET_SIZE 128
#endif

It’s set to 256 in .ino file. Just changed it to 128, compiled and uploaded, got this:
Archiving built core (caching) in: /var/folders/47/y8hjsn9s5fb21gdtfj8bpq740000gn/T/arduino_cache_438800/core/core_arduino_avr_uno_97af79b2ac9aebec92d0dd9b1f2ab947.a
Sketch uses 29698 bytes (92%) of program storage space. Maximum is 32256 bytes.
Global variables use 1551 bytes (75%) of dynamic memory, leaving 497 bytes for local variables. Maximum is 2048 bytes.
Low memory available, stability problems may occur.

And it changes nothing. I can see voltage changing on the data pin when I disconnect it from Arduino and emit a signal, but still no messages in mqtt log.
The first question is why it says RF_RECEIVER_PIN 1 - probably that’s the source of issues?


#6

Flashed my Sonoff RF Bridge with the current OpenMQTTGateway and followed the instructions.
All I can see when subscribing to the # topic is:
home/OpenMQTTGateway/LWT online
home/OpenMQTTGateway/version 0.9beta
home/OpenMQTTGateway/SYStoMQTT {“uptime”:120,“freeMem”:44872,“rssi”:-47,“SSID”:“Level2”,“modules”:“SRFB”}

It does not catch any RF signals at all. Looks like a software error/lack of configuration info to me as behaves identically on different types of hardware.

p.s I did not configure any WiFi options like AP name/password, but it seems to connect to it, how?


#7

Please open a different thread


#8

We should try to avoid this message: [quote=“AhmadK, post:5, topic:221”]
Low memory available, stability problems may occur.
[/quote]

Could you try on your arduino uno v0.9beta ?


#9

As you can see in my initial post, I uploaded 0.0beta into my Arduino UNO.
Don’t know how to avoid that Low memory warning though…


#10

Yes sorry,

Here is some other tips


#11

Could you post your user_config.h please without the credentials?


#12

Well, I decreased the MQTT packet size to 128 and the warnings gone.
However, despite me commenting #define IR_USE_TIMER2 and uncommenting #define IR_USE_TIMER1 in /libraries/Adruino-IRremote/broaddefs.h (lines 144-145) it still says in the serial monitor:
OpenMQTTGateway ip:
192.168.0.37
Ethernet ok
1883
Connecting to MQTT by IP adress
192.168.0.34
RF_EMITTER_PIN
4
RF_RECEIVER_PIN
1

And I can see only its status messages in mqtt log


#13

Here is the part I have changed:

#define OMG_VERSION “0.8.1”

/-------------DEFINE YOUR MQTT PARAMETERS BELOW----------------/
//MQTT Parameters definition
//#define mqtt_server_name “www.mqtt_broker.com” // instead of defining the server by its IP you can define it by its name, uncomment this line and set the correct MQTT server host name
char mqtt_user[20] = “mqtt”; // not compulsory only if your broker needs authentication
char mqtt_pass[20] = “xxxxx”; // not compulsory only if your broker needs authentication
char mqtt_server[40] = “192.168.0.34”;
char mqtt_port[6] = “1883”;

#define Gateway_Name “OpenMQTTGateway”
#define Base_Topic “home/”
#define version_Topic Base_Topic Gateway_Name “/version”
#define will_Topic Base_Topic Gateway_Name “/LWT”
#define will_QoS 0
#define will_Retain true
#define will_Message “Offline”
#define Gateway_AnnouncementMsg “Online”

/-------------DEFINE YOUR NETWORK PARAMETERS BELOW----------------/

//#define ESPWifiManualSetup true //uncomment you don’t want to use wifimanager for your credential settings on ESP
#define WifiManager_password “your_password”
//#define MDNS_SD //uncomment if you want to use mdns for discovering automatically your ip server, please note that MDNS with ESP32 can cause the BLE to not work
//#define cleanFS true //uncomment if you want to clean the ESP memory and reenter your credentials
#define maxMQTTretry 4 //maximum MQTT connection attempts before going to wifi setup

//set minimum quality of signal so it ignores AP’s under that quality
#define MinimumWifiSignalQuality 8

// Update these with values suitable for your network.
#if defined(ESP32) || defined(ESPWifiManualSetup) // for nodemcu, weemos and esp8266
#define wifi_ssid “wifi ssid”
#define wifi_password “wifi password”
#else // for arduino + W5100
const byte mac[] = { 0x60, 0x01, 0x94, 0x69, 0x38, 0xC1 }; //W5100 ethernet shield mac adress
#endif

const byte ip[] = { 192, 168, 0, 37 }; //ip adress
const byte gateway[] = { 0, 0, 0, 0 }; //ip adress, if first value is different from 0 advanced config network will be used and you should fill gateway & dns
const byte Dns[] = { 0, 0, 0, 0 }; //ip adress, if first value is different from 0 advanced config network will be used and you should fill gateway & dns
const byte subnet[] = { 255, 255, 255, 0 }; //ip adress

/-------------DEFINE YOUR OTA PARAMETERS BELOW----------------/
#define ota_hostname Gateway_Name
#define ota_password “OTAPASSWORD”
#define ota_port 8266

/-------------DEFINE PINs FOR STATUS LEDs----------------/
#define led_receive 40
#define led_send 42
#define led_error 44

// VCC ------------D|-----------////\ ----------------- Arduino PIN
// LED Resistor 270-510R

/-------------DEFINE THE MODULES YOU WANT BELOW----------------/
//Addons and module management, comment the Z line

#define ZgatewayRF “RF” //ESP8266, Arduino, ESP32
//#define ZgatewayRF315 “RF315” //ESP8266, Arduino, ESP32
//#define ZgatewayIR “IR” //ESP8266, Arduino, Sonoff RF Bridge
//#define ZgatewayBT “BT” //ESP8266, Arduino, ESP32
//#define ZgatewayRF2 “RF2” //ESP8266, Arduino, ESP32
//#define ZgatewaySRFB “SRFB” // Sonoff RF Bridge
//#define Zgateway2G “2G” //ESP8266, Arduino, ESP32
//#define ZactuatorONOFF “ONOFF” //ESP8266, Arduino, ESP32, Sonoff RF Bridge
//#define ZsensorINA226 “INA226” //ESP8266, Arduino, ESP32
//#define ZsensorHCSR501 “HCSR501” //ESP8266, Arduino, ESP32, Sonoff RF Bridge
//#define ZsensorADC “ADC” //ESP8266, Arduino, ESP32
//#define ZsensorBH1750 “BH1750” //ESP8266, Arduino, ESP32
//#define ZsensorTSL2561 “TSL2561” //ESP8266, Arduino, ESP32
//#define ZsensorBME280 “BME280” //ESP8266, Arduino, ESP32
//#define ZsensorDHT “DHT” //ESP8266, Arduino, ESP32, Sonoff RF Bridge
//#define ZgatewayRFM69 “RFM69” //ESP8266, Arduino, ESP32


#14

ok and now we have a clean install could you post a picture of your setup and point the kind of remote control you are using for your tests


#15

Here is a picture of my setup.
As a source of RF signal I use D026 door sensor (Kerui) and a Sonoff PIR2.

I tried to select Arduino/Genuino UNO and Arduino Ethernet - what is suitable in my case (UNO+Ethernet shield)?


#16

Did you have a look to this file?

D3 = 1 is ok, you can also try with D2 = 0

Verify also that your receiver has voltage on its pins.


#17

Well, I saw this file, but followed this guide, and they do not match if you look at the picture

I’m still not sure what do these Dx mean, and what’s D3 = 1 etc.

My receive has 4.65V on its GNG-+5V, and I can see fluctuation of voltage (between 0 and 1.9v) on the data pin when it’s disconnected and I emit a RF signal.
But if I connect it to the pin 0 (RX), it’s constantly 4.46V and no sign of mqtt messages.


#18

D3 is the name of the pin, 1 is the GPIO number = the number that you should set on config_RF.h

At final you should try to connect the data pin to D3 and put
RF_RECEIVER_PIN 1

or to D2 and put
RF_RECEIVER_PIN 0

The data pin of your receiver should be connected to D3 or D2 not RX