Hassbian initial configuration on Raspberry Pi MQTT gateway
-
Hello,
I am struggling to make the initial setup of MySensors with Hassbian. I am running both on same Raspberry Pi 3.
I installed MySensor gateway on the RPi with following configuration
./configure --my-transport=rf24 --my-rf24-ce-pin=18 --my-rf24-cs-pin=24 --my-gateway=mqtt --my-controller-ip-address=127.0.0.1 --my-mqtt-publish-topic-prefix=mygateway1-out --my-mqtt-subscribe-topic-prefix=mygateway1-in --my-mqtt-client-id=mygateway1
In Hassbian I installed Mosquitto and this is how my configuration.yaml file look like:
# MQTT gateway mqtt: broker: 127.0.0.1 client_id: mygateway1 username: pi password: raspberry # MySensor mysensors: gateways: - device: mqtt persistence_file: '/home/homeassistant/.homeassistant/mysensors.json' topic_in_prefix: 'mygateway1-out' topic_out_prefix: 'mygateway1-in' optimistic: false persistence: true retain: true version: '2.3.1' # Debug logger logger: default: info logs: homeassistant.components.mysensors: debug mysensors: debug
I followed the instructions from Home Assistant page and made a dummy sensor node with following code:
// Enable debug prints to serial monitor #define MY_DEBUG // Enable and select radio type attached #define MY_RADIO_RF24 // Enable repeater functionality for this node #define MY_REPEATER_FEATURE #include <MySensors.h> #define CHILD_ID 1 #define MY_NODE_ID 1 bool initialValueSent = false; bool state = false; MyMessage msg(CHILD_ID, V_LIGHT); void setup() { } void presentation() { sendSketchInfo("Relay+button", "1.0"); present(CHILD_ID, S_LIGHT); } void loop() { // Need to send initial values for Home Assistant if (!initialValueSent) { Serial.println("Sending initial value"); send(msg.set(state)); Serial.println("Requesting initial value from controller"); request(CHILD_ID, V_LIGHT); wait(2000, C_SET, V_LIGHT); } } void receive(const MyMessage &message) { if (message.isAck()) { Serial.println("This is an ack from gateway"); } if (message.type == V_LIGHT) { // We got initial values from Home Assistant if (!initialValueSent) { Serial.println("Receiving initial value from controller"); initialValueSent = true; } // Write some debug info Serial.print("Incoming change for sensor:"); Serial.print(message.sensor); Serial.print(", New status: "); Serial.println(message.getBool()); } }
I make sure that I send the sensor S_TYPE in the presentation and that I also send an initial value out.
The Arduino console output is the following:
16 MCO:BGN:INIT REPEATER,CP=RNNRA---,REL=255,VER=2.3.1 26 TSM:INIT 27 TSF:WUR:MS=0 34 TSM:INIT:TSP OK 36 TSF:SID:OK,ID=1 37 TSM:FPAR 74 TSF:MSG:SEND,1-1-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK: 2081 !TSM:FPAR:NO REPLY 2083 TSM:FPAR 2119 TSF:MSG:SEND,1-1-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK: 4127 !TSM:FPAR:NO REPLY 4129 TSM:FPAR 4165 TSF:MSG:SEND,1-1-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK: 6173 !TSM:FPAR:NO REPLY 6175 TSM:FPAR 6211 TSF:MSG:SEND,1-1-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK: 8219 !TSM:FPAR:FAIL 8220 TSM:FAIL:CNT=1 8222 TSM:FAIL:DIS 8224 TSF:TDI:TSL 18226 TSM:FAIL:RE-INIT
I tried using MySensor log parser and if I understand correctly the node does not get answer from the gateway.
On the Raspberry Pi, I checked the logs from Home Assistant and they seem fine.
2019-09-12 07:39:12 DEBUG (SyncWorker_17) [mysensors.persistence] Loading sensors from persistence file /home/homeassistant/.homeassistant/mysensors.json 2019-09-12 07:39:12 DEBUG (SyncWorker_6) [mysensors.persistence] Saving sensors to persistence file /home/homeassistant/.homeassistant/mysensors.json 2019-09-12 07:39:12 INFO (MainThread) [mysensors.gateway_mqtt] Setting up initial MQTT topic subscription 2019-09-12 07:39:12 DEBUG (MainThread) [mysensors.gateway_mqtt] Subscribing to: mygateway1-out/+/+/0/+/+, qos: 0 2019-09-12 07:39:12 DEBUG (MainThread) [mysensors.gateway_mqtt] Subscribing to: mygateway1-out/+/+/3/+/+, qos: 0 2019-09-12 07:39:12 DEBUG (MainThread) [homeassistant.components.mqtt] Subscribing to mygateway1-out/+/+/0/+/+ 2019-09-12 07:39:12 DEBUG (MainThread) [homeassistant.components.mqtt] Subscribing to mygateway1-out/+/+/3/+/+
So then I stopped MySensor gateway service and run it myself using the command
cd MySensors sudo ./bin/msgw
This is what I have as output
pi@hassbian:~/MySensors $ sudo ./bin/mysgw Sep 12 10:12:32 INFO Starting gateway... Sep 12 10:12:32 INFO Protocol version - 2.3.1 Sep 12 10:12:32 DEBUG MCO:BGN:INIT GW,CP=RNNGL---,REL=255,VER=2.3.1 Sep 12 10:12:32 DEBUG TSF:LRT:OK Sep 12 10:12:32 DEBUG TSM:INIT Sep 12 10:12:32 DEBUG TSF:WUR:MS=0 Sep 12 10:12:32 DEBUG TSM:INIT:TSP OK Sep 12 10:12:32 DEBUG TSM:INIT:GW MODE Sep 12 10:12:32 DEBUG TSM:READY:ID=0,PAR=0,DIS=0 Sep 12 10:12:32 DEBUG MCO:REG:NOT NEEDED Sep 12 10:12:32 DEBUG MCO:BGN:STP Sep 12 10:12:32 DEBUG MCO:BGN:INIT OK,TSP=1 Sep 12 10:12:32 DEBUG GWT:RMQ:MQTT RECONNECT Sep 12 10:12:32 DEBUG connected to 127.0.0.1 Sep 12 10:12:32 DEBUG TSM:READY:NWD REQ Sep 12 10:12:32 DEBUG TSF:MSG:SEND,0-0-255-255,s=255,c=3,t=20,pt=0,l=0,sg=0,ft=0,st=OK: Sep 12 10:12:32 DEBUG GWT:RMQ:MQTT RECONNECT Sep 12 10:12:32 DEBUG connected to 127.0.0.1 Sep 12 10:12:32 DEBUG GWT:RMQ:MQTT RECONNECT Sep 12 10:12:32 DEBUG connected to 127.0.0.1 ... (infinite amount of reconnect message) ... Sep 12 10:12:32 DEBUG GWT:RMQ:MQTT RECONNECT Sep 12 10:12:32 DEBUG connected to 127.0.0.1 Sep 12 10:12:32 DEBUG GWT:RMQ:MQTT RECONNECT Sep 12 10:12:32 DEBUG connected to 127.0.0.1 Sep 12 10:12:32 DEBUG TSF:MSG:READ,1-1-255,s=255,c=3,t=7,pt=0,l=0,sg=0: Sep 12 10:12:32 DEBUG TSF:MSG:BC Sep 12 10:12:32 DEBUG TSF:MSG:FPAR REQ,ID=1 Sep 12 10:12:32 DEBUG TSF:CKU:OK,FCTRL Sep 12 10:12:32 DEBUG TSF:MSG:GWL OK Sep 12 10:12:33 DEBUG !TSF:MSG:SEND,0-0-1-1,s=255,c=3,t=8,pt=1,l=1,sg=0,ft=0,st=NACK:0 Sep 12 10:12:33 DEBUG GWT:RMQ:MQTT RECONNECT Sep 12 10:12:33 DEBUG connected to 127.0.0.1 ...
I would assume the problem comes from the gateway that do not stay connected and constantly reconnect but I am out of clues of what I am doing wrong.
Any idea is appreciated, thanks!
-
I made some more tests and I think it doesn't work because when I setup Mosquitto, I created a user/password but didn't do it when building MySensor gateway.
I looked at the list of options from this page and added the next 2 configuration options:
--my-mqtt-user=pi --my-mqtt-password=raspberry
(pi / raspberry being the same user / password I set my Mosquitto user during the installation)
But when I configure the MySensor gateway I see this in the console:
[WARNING] Unknown option detected:--my-mqtt-user=pi, ignored [WARNING] Unknown option detected:--my-mqtt-password=raspberry, ignored
Is there any other way I could try to build the gateway with user/password than this? Or is this a bug? Those 2 options are clearly written in the configuration options page for the Raspberry Pi gateway.
-
@meach that's strange. Which version of MySensors are you using?
If you are unsure of the version, delete the MySensors folder and download latest stable by following the instructions on https://www.mysensors.org/build/raspberry from the top
-
@meach Configure is not seeing the = in your command line properly - so I'm assuming a cut+paste issue with character strings.
Ie. It's seeing the configuration option
--my-mqtt-user=pi
instead of--my-mqtt-user
and a value ofpi
.Try to retype that part of the command line manually and try it again.
A
EDIT: As an aside, I usually put my configure command line into a script and then just run the script. Handy when you come back to it 6-8 months later and wonder what configure options you used the last time you ran it.
-
This is what the configure command looks like on my system. The username and passwords work
pi@raspberrypi:~/MySensors $ ./configure --my-mqtt-user=pi --my-mqtt-password=raspberry [SECTION] Detecting target machine. [OK] machine detected: SoC=BCM2836, Type=rpi2, CPU=armv7l. [SECTION] Detecting SPI driver. [OK] SPI driver detected:BCM. [SECTION] Gateway configuration. [OK] Type: ethernet. [OK] Transport: rf24. [OK] Signing: Disabled. [OK] Encryption: Disabled. [OK] CPPFLAGS: -DMY_RADIO_RF24 -DMY_GATEWAY_LINUX -DMY_DEBUG -DLINUX_SPI_BCM -DLINUX_ARCH_RASPBERRYPI -DMY_MQTT_PASSWORD="raspberry" -DMY_MQTT_USER="pi" [SECTION] Detecting init system. [OK] Init system detected: systemd. [SECTION] Saving configuration. [OK] Saved. [SECTION] Cleaning previous builds. [OK] Finished.
-
What I had noticed and was trying to point out was that the error was:
[WARNING] Unknown option detected: --my-mqtt-user=pi, ignored
not:
[WARNING] Unknown option detected: --my-mqtt-user, ignored
-
You were right, there was a character problem when copy/pasting the command to the terminal.
Now I can build MySensor with username and password and it works fine.Thanks for the help!
Suggested Topics
-
Hi,
Home Assistant • • diltech