💬 Building a Raspberry Pi Gateway
-
From a node-red perspective, IMHO, mqtt is easier to handle even without specific mysensors nodes, but it all depends what you need to do. I played with it some months ago but I got stuck when I had to start using javascript as I still don't know that language, but it was quite easy to link mysensors values to the dashboard without actually touching any code.
-
I compiled the gateway for spi1 because I have a display using spi0. Two problems I came across:
- the master branch doesn't work. It compiles, it seems to work but it never receives anything.
- the development branch works but I needed to define the right cs-pin even if I redirected the pin in config.txt (with
dtoverlay=spi1-1cs,cs0_pin=16)
The following configure worked for me:
./configure --spi-driver=SPIDEV --spi-spidev-device=/dev/spidev1.0 --my-rf24-cs-pin=36 --my-rf24-ce-pin=33 --my-rf24-irq-pin=31 -
For the ones having problems with the stable build (Version 2.1.1), always getting "mysgw: !TSM:INIT:TSP FAIL":
Seems there is a bug, you have to install "development" (Version 2.2.0)
Maybe someone adds an note on top of the tutorial, so others won´t also spend hours in searching for the problem on their Pi/Hardware. -
So far it looks to me it is something related to the latest versions of Linux since it was working on older releases
-
@gohan ah okay wasn´t aware of it, as the dev channel worked I assumed the bug at MySensors.
However, would be awesome if there were a little hint in the tutorial. Took plenty of time to find out it was an software incompability ;) -
Today my rPi gateway (2.1.1 stable) completely stopped working as a service (cli surprisingly worked), I thought that could be some debian update so I switched to devel, but when building it I get this:
LINUX_ARCH_RASPBERRYPI -DMY_PORT=5003 -DMY_RX_MESSAGE_BUFFER_FEATURE -DMY_RF24_IRQ_PIN=18 -Ofast -g -Wall -Wextra -I. -I./core -I./drivers/Linux -I./drivers/BCM -c drivers/BCM/bcm2835.c -o build/drivers/BCM/bcm2835.o
drivers/BCM/bcm2835.c: In function ‘bcm2835_delayMicroseconds’:
drivers/BCM/bcm2835.c:441:40: error: expected ‘)’ before ‘PRIu64’
printf("bcm2835_delayMicroseconds %" PRIu64 "\n", micros);
^
drivers/BCM/bcm2835.c:441:40: warning: spurious trailing ‘%’ in format [-Wformat=]
Makefile:102: recipe for target 'build/drivers/BCM/bcm2835.o' failed
make: *** [build/drivers/BCM/bcm2835.o] Error 1Is this normal? I used the same configure was working before.
-
Today my rPi gateway (2.1.1 stable) completely stopped working as a service (cli surprisingly worked), I thought that could be some debian update so I switched to devel, but when building it I get this:
LINUX_ARCH_RASPBERRYPI -DMY_PORT=5003 -DMY_RX_MESSAGE_BUFFER_FEATURE -DMY_RF24_IRQ_PIN=18 -Ofast -g -Wall -Wextra -I. -I./core -I./drivers/Linux -I./drivers/BCM -c drivers/BCM/bcm2835.c -o build/drivers/BCM/bcm2835.o
drivers/BCM/bcm2835.c: In function ‘bcm2835_delayMicroseconds’:
drivers/BCM/bcm2835.c:441:40: error: expected ‘)’ before ‘PRIu64’
printf("bcm2835_delayMicroseconds %" PRIu64 "\n", micros);
^
drivers/BCM/bcm2835.c:441:40: warning: spurious trailing ‘%’ in format [-Wformat=]
Makefile:102: recipe for target 'build/drivers/BCM/bcm2835.o' failed
make: *** [build/drivers/BCM/bcm2835.o] Error 1Is this normal? I used the same configure was working before.
@Sergio-Rius a fix is available at https://github.com/mysensors/MySensors/pull/983
It is a one line change so you can just add it manually
-
Thaaanksss! I'll give it a go :)
-
@mfalkvidd Mmmmm... that worked, but now I'm always getting "mysgw: !TSM:INIT:TSP FAIL" as stated avobe. But I'm on development.
Wait, seems that after the 8'th intent it's working. I'll let him go and see. -
I'm afraid that after some time it stops working. I get in Domoticz:
2017-11-12 19:17:01.744 MySensors: trying to connect to: 127.0.0.1:5003
2017-11-12 19:17:02.744 TCP: Connection problem (Unable to connect to specified IP/Port)
2017-11-12 19:17:02.744 TCP: Reconnecting in 30 seconds...Over and over again.
$ sudo systemctl status mysgw.service
● mysgw.service - MySensors Gateway daemon
Loaded: loaded (/etc/systemd/system/mysgw.service; enabled)
Active: failed (Result: signal) since dom 2017-11-12 19:16:53 CET; 5min ago
Process: 491 ExecStart=/usr/local/bin/mysgw (code=killed, signal=SEGV)
Main PID: 491 (code=killed, signal=SEGV)
nov 12 19:16:47 Domoticz systemd[1]: Started MySensors Gateway daemon.
nov 12 19:16:48 Domoticz mysgw[491]: Starting gateway...
nov 12 19:16:48 Domoticz mysgw[491]: Protocol version - 2.2.0-rc.1
nov 12 19:16:53 Domoticz systemd[1]: mysgw.service: main process exited, code=killed, status=11/SEGV
nov 12 19:16:53 Domoticz systemd[1]: Unit mysgw.service entered failed state.But it seems Domoticz being crashing it.
If I do restart the service, Domoticz picks it and works for a while.2017-11-12 19:24:17.562 TCP: Connection problem (Unable to connect to specified IP/Port)
2017-11-12 19:24:17.562 TCP: Reconnecting in 30 seconds...
2017-11-12 19:24:47.565 TCP: Reconnecting...
2017-11-12 19:24:47.565 MySensors: connected to: 127.0.0.1:5003
2017-11-12 19:24:48.566 MySensors: Gateway Ready...
2017-11-12 19:24:48.566 MySensors: Gateway Version: 2.2.0-rc.1
2017-11-12 19:24:49.566 MySensors: Gateway Version: 2.2.0-rc.1Is there any further log for exactly seeing what is the crash cause?
EDIT: Also it seems that there's any comunication at all. I only get internal heartbeats on MysController.
-
@gohan Yep! I exactly ran this command:
git clone https://github.com/mysensors/MySensors.git --branch development && cd MySensorsI'm now powering off my rPi for changing the PA+LNA radio for a standard one and bypassing the power regulator.
EDIT: I've done the above tasks and still getting strange things. It may be Domoticz as:
2017-11-12 19:44:37.634 MySensors: trying to connect to: 127.0.0.1:5003
2017-11-12 19:44:37.638 RFXCOM: Using serial port: /dev/ttyUSB0
2017-11-12 19:44:38.213
2017-11-12 19:44:38.288 Error: RFXCOM: Invalid data received!....
2017-11-12 19:44:38.635 MySensors: connected to: 127.0.0.1:5003
2017-11-12 19:44:38.635 MySensors: Gateway Ready...
2017-11-12 19:44:39.635 MySensors: Gateway Version: 2.2.0-rc.1
2017-11-12 19:44:39.635 MySensors: Gateway Version: 2.2.0-rc.1
...
2017-11-12 20:26:00.153 Error: Scheduler thread seems to have ended unexpectedly
2017-11-12 20:26:00.154 Error: MySGW_NRF hardware (9) thread seems to have ended unexpectedly
2017-11-12 20:26:00.154 Error: RFXCOM hardware (15) thread seems to have ended unexpectedly
2017-11-12 20:26:00.154 Error: RFXCOM hardware (15) nothing received for more than 30 Minutes!....
2017-11-12 20:26:01.155 Error: Restarting: RFXCOM
2017-11-12 20:26:01.707 RFXCOM: Serial Worker stopped...
2017-11-12 20:26:02.722 RFXCOM: Using serial port: /dev/ttyUSB0
2017-11-12 20:26:03.297
2017-11-12 20:26:03.372 Error: RFXCOM: Invalid data received!....
2017-11-12 20:26:16.745 (RFXCOM) Temp + Humidity (Biblioteca [TH])
2017-11-12 20:26:48.745 Error: PROXY: timeout occurred, reconnecting
2017-11-12 20:26:54.716 (MySGW_NRF) Temp (Temp)
2017-11-12 20:26:54.717 (MySGW_NRF) Temp + Humidity (TempHum)
...
and stabilized -
Possibly same problem with Domoticz here too. Using a directly attached NRF24 radio to a Raspberry Pi Zero W.
I tried to remake using the latest dev code, and got this error:
gcc -MT build/drivers/BCM/bcm2835.o -MMD -MP -march=armv6zk -mtune=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard -DMY_RADIO_NRF24 -DMY_GATEWAY_LINUX -DMY_DEBUG -DLINUX_SPI_BCM -DLINUX_ARCH_RASPBERRYPI -DMY_PORT=5003 -DMY_RF24_PA_LEVEL=RF24_PA_LOW -Ofast -g -Wall -Wextra -I. -I./core -I./drivers/Linux -I./drivers/BCM -c drivers/BCM/bcm2835.c -o build/drivers/BCM/bcm2835.o drivers/BCM/bcm2835.c: In function ‘bcm2835_delayMicroseconds’: drivers/BCM/bcm2835.c:441:40: error: expected ‘)’ before ‘PRIu64’ printf("bcm2835_delayMicroseconds %" PRIu64 "\n", micros); ^ drivers/BCM/bcm2835.c:441:40: warning: spurious trailing ‘%’ in format [-Wformat=] Makefile:102: recipe for target 'build/drivers/BCM/bcm2835.o' failed make: *** [build/drivers/BCM/bcm2835.o] Error 1// commenting out the problem allowed make to finish:
//if (debug) { // /* Cant access sytem timers in debug mode */ // printf("bcm2835_delayMicroseconds %" PRIu64 "\n", micros); // return; //}This is my config:
./configure --my-transport=nrf24 --my-rf24-pa-level=RF24_PA_LOW --my-gateway=ethernet --my-port=5003 -
Hello all!
I'm trying to build a gateway with a Raspberry pi2, ethernet and Domoticz.
It looks like the gateway is beeing built ok and seems to run fine but nodes can not communicate with it.
I have read most of the postings here but I can not find any solution.
Hope you guys can help? Please!I run raspbian (Jessie) pi@raspberrypi:~/MySensors/bin $ uname -a Linux raspberrypi 4.9.35-v7+ #1014 SMP Fri Jun 30 14:47:43 BST 2017 armv7l GNU/LinuxUsing master branch
https://www.mysensors.org/build/raspberry git clone https://github.com/mysensors/MySensors.git --branch masterConfiguring like this
pi@raspberrypi:~/MySensors $ ./configure --my-gateway=ethernet --my-port=5003 --my-transport=nrf24 --my-rf24-ce-pin=22 --my-rf24-cs-pin=24 [SECTION] Detecting target machine. [OK] machine detected: SoC=unknown, Type=unknown, CPU=armv7l. [SECTION] Checking GPIO Sysfs. [OK] /sys/class/gpio/export found [SECTION] Detecting SPI driver. [OK] SPI driver detected:SPIDEV. [SECTION] Detecting init system. [OK] init system detected: systemd. [SECTION] Saving configuration. [SECTION] Cleaning previous builds. [OK] Finished.Obs! No Raspberry identification, why not? Maybe that is the culprit?
After make I start the gateway and get this:pi@raspberrypi:~/MySensors $ cd bin pi@raspberrypi:~/MySensors/bin $ sudo ./mysgw -d mysgw: Starting gateway... mysgw: Protocol version - 2.1.1 mysgw: MCO:BGN:INIT GW,CP=RNNG---,VER=2.1.1 mysgw: TSM:INIT mysgw: TSF:WUR:MS=0 mysgw: TSM:INIT:TSP OK mysgw: TSM:INIT:GW MODE mysgw: TSM:READY:ID=0,PAR=0,DIS=0 mysgw: MCO:REG:NOT NEEDED mysgw: Listening for connections on 0.0.0.0:5003 mysgw: MCO:BGN:STP mysgw: MCO:BGN:INIT OK,TSP=1 mysgw: New connection from 127.0.0.1 mysgw: Client 0 connected mysgw: Client 0: 0;0;3;0;2; mysgw: Client 0: 0;0;3;0;2;Get Version mysgw: Client 0: 0;0;3;0;18;PINGSeems nice and dandy and Domoticz connecting fine.
Trying with this example node:#define MY_RADIO_NRF24 #define MY_RF24_PA_LEVEL RF24_PA_LOW #define MY_DEBUG #define MY_NODE_ID 42 //#define MY_DEBUG_VERBOSE_RF24 #define MY_BAUD_RATE 9600 #include <MySensors.h> #include<Arduino.h> #define OPEN 1 #define CLOSE 0 #define CHILD_ID 1 MyMessage msg(CHILD_ID, V_TRIPPED); uint8_t value = OPEN; void setup() { Serial.print("setup()\n"); } void presentation() { sendSketchInfo("Door", "2.1.1"); present(CHILD_ID, S_DOOR); Serial.print("presentation()\n"); } void loop() { value = value == OPEN ? CLOSE : OPEN; send(msg.set(value)); Serial.print("message sent"); Serial.print(value + "\n"); sleep(1000); }And recieve this when running:
--- Miniterm on /dev/ttyUSB0 9600,8,N,1 --- --- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H --- 0 MCO:BGN:INIT NODE,CP=RNNNA--,VER=2.1.1 40 TSM:INIT 55 TSF:WUR:MS=0 77 TSM:INIT:TSP OK 96 TSM:INIT:STATID=42 120 TSF:SID:OK,ID=42 141 TSM:FPAR 190 TSF:MSG:SEND,42-42-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK: 2267 !TSM:FPAR:NO REPLY 2291 TSM:FPAR 2340 TSF:MSG:SEND,42-42-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK: 4417 !TSM:FPAR:NO REPLY 4442 TSM:FPAR 4491 TSF:MSG:SEND,42-42-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK: 6569 !TSM:FPAR:NO REPLY 6594 TSM:FPAR 6643 TSF:MSG:SEND,42-42-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK: 8720 !TSM:FPAR:FAIL 8740 TSM:FAIL:CNT=1 8761 TSM:FAIL:PDTAnd no output in gateway either.
Both radio modules using capacitors.What have I missed?
Thanks, Andreas!
-
I tried for months to get a stable working nrf24 attached to pi to act as a gw and controller.
In the end I gave up and now have a 3.3V 8MHz pro mini gw attached to the pi. I took 0v and 5v from the pi (via a 3.3v buck converter) and serial tx and rx. Only 4 wires needed and has been as stable as can be for over a week now.
Maybe help someone with the same unsolveable problems?
-
Hello all!
I'm trying to build a gateway with a Raspberry pi2, ethernet and Domoticz.
It looks like the gateway is beeing built ok and seems to run fine but nodes can not communicate with it.
I have read most of the postings here but I can not find any solution.
Hope you guys can help? Please!I run raspbian (Jessie) pi@raspberrypi:~/MySensors/bin $ uname -a Linux raspberrypi 4.9.35-v7+ #1014 SMP Fri Jun 30 14:47:43 BST 2017 armv7l GNU/LinuxUsing master branch
https://www.mysensors.org/build/raspberry git clone https://github.com/mysensors/MySensors.git --branch masterConfiguring like this
pi@raspberrypi:~/MySensors $ ./configure --my-gateway=ethernet --my-port=5003 --my-transport=nrf24 --my-rf24-ce-pin=22 --my-rf24-cs-pin=24 [SECTION] Detecting target machine. [OK] machine detected: SoC=unknown, Type=unknown, CPU=armv7l. [SECTION] Checking GPIO Sysfs. [OK] /sys/class/gpio/export found [SECTION] Detecting SPI driver. [OK] SPI driver detected:SPIDEV. [SECTION] Detecting init system. [OK] init system detected: systemd. [SECTION] Saving configuration. [SECTION] Cleaning previous builds. [OK] Finished.Obs! No Raspberry identification, why not? Maybe that is the culprit?
After make I start the gateway and get this:pi@raspberrypi:~/MySensors $ cd bin pi@raspberrypi:~/MySensors/bin $ sudo ./mysgw -d mysgw: Starting gateway... mysgw: Protocol version - 2.1.1 mysgw: MCO:BGN:INIT GW,CP=RNNG---,VER=2.1.1 mysgw: TSM:INIT mysgw: TSF:WUR:MS=0 mysgw: TSM:INIT:TSP OK mysgw: TSM:INIT:GW MODE mysgw: TSM:READY:ID=0,PAR=0,DIS=0 mysgw: MCO:REG:NOT NEEDED mysgw: Listening for connections on 0.0.0.0:5003 mysgw: MCO:BGN:STP mysgw: MCO:BGN:INIT OK,TSP=1 mysgw: New connection from 127.0.0.1 mysgw: Client 0 connected mysgw: Client 0: 0;0;3;0;2; mysgw: Client 0: 0;0;3;0;2;Get Version mysgw: Client 0: 0;0;3;0;18;PINGSeems nice and dandy and Domoticz connecting fine.
Trying with this example node:#define MY_RADIO_NRF24 #define MY_RF24_PA_LEVEL RF24_PA_LOW #define MY_DEBUG #define MY_NODE_ID 42 //#define MY_DEBUG_VERBOSE_RF24 #define MY_BAUD_RATE 9600 #include <MySensors.h> #include<Arduino.h> #define OPEN 1 #define CLOSE 0 #define CHILD_ID 1 MyMessage msg(CHILD_ID, V_TRIPPED); uint8_t value = OPEN; void setup() { Serial.print("setup()\n"); } void presentation() { sendSketchInfo("Door", "2.1.1"); present(CHILD_ID, S_DOOR); Serial.print("presentation()\n"); } void loop() { value = value == OPEN ? CLOSE : OPEN; send(msg.set(value)); Serial.print("message sent"); Serial.print(value + "\n"); sleep(1000); }And recieve this when running:
--- Miniterm on /dev/ttyUSB0 9600,8,N,1 --- --- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H --- 0 MCO:BGN:INIT NODE,CP=RNNNA--,VER=2.1.1 40 TSM:INIT 55 TSF:WUR:MS=0 77 TSM:INIT:TSP OK 96 TSM:INIT:STATID=42 120 TSF:SID:OK,ID=42 141 TSM:FPAR 190 TSF:MSG:SEND,42-42-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK: 2267 !TSM:FPAR:NO REPLY 2291 TSM:FPAR 2340 TSF:MSG:SEND,42-42-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK: 4417 !TSM:FPAR:NO REPLY 4442 TSM:FPAR 4491 TSF:MSG:SEND,42-42-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK: 6569 !TSM:FPAR:NO REPLY 6594 TSM:FPAR 6643 TSF:MSG:SEND,42-42-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK: 8720 !TSM:FPAR:FAIL 8740 TSM:FAIL:CNT=1 8761 TSM:FAIL:PDTAnd no output in gateway either.
Both radio modules using capacitors.What have I missed?
Thanks, Andreas!