💬 Building a Raspberry Pi Gateway
-
@patrikr76 I beleive @phildefer pushed the code 4 days ago. See https://github.com/mysensors/MySensors/pull/1353
Something has seriously mangled whitespace in the modified code, but apart from that it looks good to me, but I am not that familiar with the rpi code and I have not tested it myself.
@mfalkvidd said in 💬 Building a Raspberry Pi Gateway:
@patrikr76 I beleive @phildefer pushed the code 4 days ago. See https://github.com/mysensors/MySensors/pull/1353
You are correct.
@phildefer, thank you.
There were a couple of minor warnings about indentations and the buffer size i mentioned earlier fixed by upping the declared buffer in GPIO.cpp. Not sure if that is a good fix or not, the warning goes away though.
A few other warnings looks like this:In member function ‘char* MyMessage::getString(char*) const’, inlined from ‘bool transportSendWrite(uint8_t, MyMessage&)’ at ./core/MyTransport.cpp:987:2, inlined from ‘bool transportRouteMessage(MyMessage&)’ at ./core/MyTransport.cpp:560:40, inlined from ‘void stUplinkTransition()’ at ./core/MyTransport.cpp:252:29: ./core/MyMessage.cpp:284:17: warning: ‘char* strncpy(char*, const char*, size_t)’ output may be truncated copying between 0 and 25 bytes from a string of length 25 [-Wstringop-truncation] (void)strncpy(buffer, this->data, this->getLength()); ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Not sure how to fix those.
Edit: Forgot to mention, it seems to be working though.
-
Thanks guys for the effort to port MySensors for the Pi 4.
I'm very interested, but my coding skills are not sufficient to help in the development. Maybe I can do some debug when my Pi4 will arrive
MySensors for the Pi4 is a must-have!😊
-
@patrikr76 I beleive @phildefer pushed the code 4 days ago. See https://github.com/mysensors/MySensors/pull/1353
Something has seriously mangled whitespace in the modified code, but apart from that it looks good to me, but I am not that familiar with the rpi code and I have not tested it myself.
I can confirm that the code compiles and runs on my rasbperry pi 4 model b. I am using a rfm69 radio and that seems to be working too. I couldn't test it yet though since I haven't wired any rfm69 nodes up yet.
-
I can confirm that the code compiles and runs on my rasbperry pi 4 model b. I am using a rfm69 radio and that seems to be working too. I couldn't test it yet though since I haven't wired any rfm69 nodes up yet.
@kiesel Good news!😉
I will test both (nrf24 and rfm69) when my Pi 4 arrive. -
Ok my Pi 4 is arrived. I have 2 gateway, one RFM69 and one NRF24 connected respectively to spi0 and spi1. Details here.
With a Raspberry Pi 3 all works fine (compilation and execution) with both Rasbian Stretch and with Raspbian Buster.
With a Raspberry Pi 4 and the same version of Rasbian Buster the situation is a bit different:
-
The RFM69 gateway on the SPI0 compiles and can be executed without problems. In this days I don't have an RFM69 radio module, so I don't know if it works, but the daemon start in a regular way.
-
The NRF24 gateway compile, but after few seconds of execution the daemon stops with the following error.
Oct 26 13:59:47 ERROR Could not open /sys/class/gpio/gpio12/directionConsidering that the same configuration works for a Pi 3, it is possible that the error is caused by the autodetect of SoC issue mentioned above?
The details of my /boot/config.txt file are here
-
-
Update:
-
tested the RFM69 gateway with a radio module attached -> Not working
-
tried to compile and execute the NRF24 gateway on the first spi bus (--spi-spidev-device=/dev/spidev0.0) -> same error as above
ERROR Could not open /sys/class/gpio/gpio12/directionI have checked my Makefile and configure files and they don't contain the modification proposed by @phildefer . Is this normal? I'm using the development branch.
-
-
Tested with this commit of @phildefer, now both gateways compiles and starts but for both I got this error.
Oct 27 20:50:41 DEBUG !TSM:INIT:TSP FAIL -
Hi, if someone needs more info (debug, log, etc...) I'm here.
I can perform tests on Rpi 3 and Rpi 4 (Raspbian Buster) with NRF24 and RFM69 radio modules and then report the results. Not so much but maybe this can help the development.
-
I'm doing a brand new install of Openhab2 and the mysensors gateway on a new Raspberry Pi 4 after having run Openhab(1) and the mysensors gateway successfully on a Raspberry Pi 3 for years. I used the development branch of the mysensorsgateway as discussed here: https://github.com/mysensors/MySensors/pull/1364
I wrote down my step by step procedure here in case it helps someone else. I'm starting out with the pre-built Openhabian image found here: https://www.openhab.org/docs/installation/openhabian.html
Install the PiGatewaySerial using these instructions:
- First get to your Downloads directory
cd cd Downloads- Clone the MySensors repository into your Downloads directory and then go into that folder
git clone https://github.com/mysensors/MySensors.git --branch development cd MySensors- Set configuration options (you can use “./configure —help” to see your options)
a. In this case we are choosing to use the serial gateway with a pseudo terminal and a symbolic link to that pseudoterminal called ttyUSB20 in /dev. We then set the group to tty.
./configure --my-gateway=serial --my-serial-is-pty --my-serial-pty=/dev/ttyUSB20 --my-serial-groupname=ttyEdit: If building this on a 64bit operating system you will need to edit the configure file before running make. Do the following:
cp configure configure_bk nano configureFind this function
function gcc_cpu_flags { local soc=$1 case $soc inand find your CPU. In my case it is the BCM2711 (I've only done this on this one CPU so your mileage may vary) and I changed this:
BCM2711) flags="-march=armv8-a+crc -mtune=cortex-a72 -mfpu=neon-fp-armv8 -mfloat-abi=hard"to this:
BCM2711) flags="-march=armv8-a+crc -mtune=cortex-a72"Then proceed to step 4 below.
- Run make and make install
make sudo make install- We can set it to launch on boot up by running
sudo systemctl enable mysgw.service- To launch it manually right now run (skip this step to run and see output for confirmation that it works)
sudo systemctl start mysgw.service- Executable in located:
cd /usr/local/bin- need root to run it:
sudo mysgwThat's pretty much it. I was happily greeted with:
Dec 29 16:01:50 INFO Starting gateway...
Dec 29 16:01:50 INFO Protocol version - 2.4.0-alpha
Dec 29 16:01:50 DEBUG Serial port /dev/ttyUSB20 (115200 baud) created
Dec 29 16:01:50 DEBUG MCO:BGN:INIT GW,CP=RNNGL---,FQ=NA,REL=0,VER=2.4.0-alpha
Dec 29 16:01:50 DEBUG TSF:LRT:OK
Dec 29 16:01:50 DEBUG TSM:INIT
Dec 29 16:01:50 DEBUG TSF:WUR:MS=0
Dec 29 16:01:50 DEBUG TSM:INIT:TSP OK
Dec 29 16:01:50 DEBUG TSM:INIT:GW MODE
Dec 29 16:01:50 DEBUG TSM:READY:ID=0,PAR=0,DIS=0
Dec 29 16:01:50 DEBUG MCO:REG:NOT NEEDED
Dec 29 16:01:50 DEBUG MCO:BGN:STP
Dec 29 16:01:50 DEBUG MCO:BGN:INIT OK,TSP=1
Dec 29 16:01:50 DEBUG TSM:READY:NWD REQ
Dec 29 16:01:50 DEBUG ?TSF:MSG:SEND,0-0-255-255,s=255,c=3,t=20,pt=0,l=0,sg=0,ft=0,st=OK:
Dec 29 16:01:50 DEBUG TSF:MSG:READ,4-4-0,s=255,c=3,t=21,pt=1,l=1,sg=0:0
Dec 29 16:01:50 DEBUG TSF:MSG:READ,0-4-255,s=255,c=3,t=20,pt=0,l=0,sg=0:
Dec 29 16:01:50 DEBUG TSF:MSG:BC
Dec 29 16:01:52 DEBUG TSF:MSG:READ,4-4-0,s=1,c=1,t=2,pt=2,l=2,sg=0:0
Dec 29 16:01:52 DEBUG TSF:MSG:READ,4-4-0,s=2,c=1,t=2,pt=2,l=2,sg=0:0
Dec 29 16:01:52 DEBUG TSF:MSG:READ,4-4-0,s=3,c=1,t=2,pt=2,l=2,sg=0:1
Dec 29 16:01:52 DEBUG TSF:MSG:READ,4-4-0,s=4,c=1,t=2,pt=2,l=2,sg=0:1
^CDec 29 16:02:35 NOTICE Received SIGINT -
Be advised that there seems to be an issue with rfm69HW on the raspberry pi:
When using the radio directly on the pi (not as a serial gateway) the range drops significantly:
https://github.com/mysensors/MySensors/issues/1367
Apparently this wasn't an issue with mysensors 2.2, so using that is an option if you can compile it for you raspberry pi.
-
I'm getting a bad file descriptor error, any advice? Seems only 1 instance to be running.
pi@raspberrypi:~ $ sudo mysgw Mar 19 20:14:04 INFO Starting gateway... Mar 19 20:14:04 INFO Protocol version - 2.3.2 Mar 19 20:14:04 DEBUG MCO:BGN:INIT GW,CP=RNNGL---,FQ=NA,REL=255,VER=2.3.2 Mar 19 20:14:04 DEBUG TSF:LRT:OK Mar 19 20:14:04 DEBUG TSM:INIT Mar 19 20:14:04 DEBUG TSF:WUR:MS=0 Mar 19 20:14:04 DEBUG TSM:INIT:TSP OK Mar 19 20:14:04 DEBUG TSM:INIT:GW MODE Mar 19 20:14:04 DEBUG TSM:READY:ID=0,PAR=0,DIS=0 Mar 19 20:14:04 DEBUG MCO:REG:NOT NEEDED Mar 19 20:14:04 ERROR bind: Address already in use Mar 19 20:14:04 ERROR Failed to bind! Mar 19 20:14:04 DEBUG MCO:BGN:STP Mar 19 20:14:04 DEBUG MCO:BGN:INIT OK,TSP=1 Mar 19 20:14:04 ERROR accept: Bad file descriptor Mar 19 20:14:04 ERROR accept: Bad file descriptor Mar 19 20:14:04 ERROR accept: Bad file descriptor Mar 19 20:14:04 ERROR accept: Bad file descriptor Mar 19 20:14:04 ERROR accept: Bad file descriptor Mar 19 20:14:04 ERROR accept: Bad file descriptor Mar 19 20:14:04 ERROR accept: Bad file descriptor Mar 19 20:14:04 ERROR accept: Bad file descriptor Mar 19 20:14:04 ERROR accept: Bad file descriptor Mar 19 20:14:04 ERROR accept: Bad file descriptor Mar 19 20:14:04 DEBUG TSM:READY:NWD REQ Mar 19 20:14:04 DEBUG ?TSF:MSG:SEND,0-0-255-255,s=255,c=3,t=20,pt=0,l=0,sg=0,ft=0,st=OK: Mar 19 20:14:04 ERROR accept: Bad file descriptor Mar 19 20:14:04 ERROR accept: Bad file descriptor Mar 19 20:14:04 ERROR accept: Bad file descriptor Mar 19 20:14:04 ERROR accept: Bad file descriptor Mar 19 20:14:04 ERROR accept: Bad file descriptor -
I'm getting a bad file descriptor error, any advice? Seems only 1 instance to be running.
pi@raspberrypi:~ $ sudo mysgw Mar 19 20:14:04 INFO Starting gateway... Mar 19 20:14:04 INFO Protocol version - 2.3.2 Mar 19 20:14:04 DEBUG MCO:BGN:INIT GW,CP=RNNGL---,FQ=NA,REL=255,VER=2.3.2 Mar 19 20:14:04 DEBUG TSF:LRT:OK Mar 19 20:14:04 DEBUG TSM:INIT Mar 19 20:14:04 DEBUG TSF:WUR:MS=0 Mar 19 20:14:04 DEBUG TSM:INIT:TSP OK Mar 19 20:14:04 DEBUG TSM:INIT:GW MODE Mar 19 20:14:04 DEBUG TSM:READY:ID=0,PAR=0,DIS=0 Mar 19 20:14:04 DEBUG MCO:REG:NOT NEEDED Mar 19 20:14:04 ERROR bind: Address already in use Mar 19 20:14:04 ERROR Failed to bind! Mar 19 20:14:04 DEBUG MCO:BGN:STP Mar 19 20:14:04 DEBUG MCO:BGN:INIT OK,TSP=1 Mar 19 20:14:04 ERROR accept: Bad file descriptor Mar 19 20:14:04 ERROR accept: Bad file descriptor Mar 19 20:14:04 ERROR accept: Bad file descriptor Mar 19 20:14:04 ERROR accept: Bad file descriptor Mar 19 20:14:04 ERROR accept: Bad file descriptor Mar 19 20:14:04 ERROR accept: Bad file descriptor Mar 19 20:14:04 ERROR accept: Bad file descriptor Mar 19 20:14:04 ERROR accept: Bad file descriptor Mar 19 20:14:04 ERROR accept: Bad file descriptor Mar 19 20:14:04 ERROR accept: Bad file descriptor Mar 19 20:14:04 DEBUG TSM:READY:NWD REQ Mar 19 20:14:04 DEBUG ?TSF:MSG:SEND,0-0-255-255,s=255,c=3,t=20,pt=0,l=0,sg=0,ft=0,st=OK: Mar 19 20:14:04 ERROR accept: Bad file descriptor Mar 19 20:14:04 ERROR accept: Bad file descriptor Mar 19 20:14:04 ERROR accept: Bad file descriptor Mar 19 20:14:04 ERROR accept: Bad file descriptor Mar 19 20:14:04 ERROR accept: Bad file descriptor -
@mfalkvidd thanks, I was wrongly under the impression that sudo mysgw would show the logs but it creates a second instance. Thanks for helping :smile:!
-
I have an Arduino Mesh network (see https://tmrh20.github.io/RF24Mesh/) (master and 4 nodes)
networkChannel 120, networkDataRate RF24_1MBPS, nodes 0-4Now I want to have my master be an RPi because it can talk to the real world.
It looks like I have the RPi wired up and software loaded (per https://www.mysensors.org/build/raspberry). Now I need to know how to talk to my Arduino's.
Now how do I talk to my Arduino's?
o- general description of what you are trying to do
Raspberry Pi controller with serial gateway with nrf24l01+ to connect to Arduino's
o- the exact configure command you used
git clone https://github.com/mysensors/MySensors.git --branch master
cd MySensors
./configure --my-transport=rf24 --my-gateway=serial --my-serial-is-pty --my-serial-port=/dev/ttyMySensorsGateway
make
sudo ./bin/mysgw
[reboot RPi]
cd MySensors
sudo make install
sudo systemctl enable mysgw.service
sudo systemctl start mysgw.service
ls -als /dev/ttyMySensorsGateway [yeilds: 0 lrwxrwxrwx 1 root root 10 Apr 9 19:22 /dev/ttyMySensorsGateway -> /dev/pts/1]o- the output from the test
Apr 09 18:47:32 INFO Config file /etc/mysensors.conf does not exist, creating new file.
Apr 09 18:47:32 INFO Starting gateway...
Apr 09 18:47:32 INFO Protocol version - 2.3.2
Apr 09 18:47:32 DEBUG Serial port /dev/ttyMySensorsGateway (115200 baud) created
Apr 09 18:47:32 INFO EEPROM file /etc/mysensors.eeprom does not exist, creating new file.
Apr 09 18:47:32 DEBUG MCO:BGN:INIT GW,CP=RNNGL---,FQ=NA,REL=255,VER=2.3.2
Apr 09 18:47:32 DEBUG TSF:LRT:OK
Apr 09 18:47:32 DEBUG TSM:INIT
Apr 09 18:47:32 DEBUG TSF:WUR:MS=0
Apr 09 18:47:32 DEBUG TSM:INIT:TSP OK
Apr 09 18:47:32 DEBUG TSM:INIT:GW MODE
Apr 09 18:47:32 DEBUG TSM:READY:ID=0,PAR=0,DIS=0
Apr 09 18:47:32 DEBUG MCO:REG:NOT NEEDED
Apr 09 18:47:32 DEBUG MCO:BGN:STP
Apr 09 18:47:32 DEBUG MCO:BGN:INIT OK,TSP=1
Apr 09 18:47:32 DEBUG TSM:READY:NWD REQ
Apr 09 18:47: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:
[did not return to command prompt]
o- the settings you used in your controller
n/a -
I have an Arduino Mesh network (see https://tmrh20.github.io/RF24Mesh/) (master and 4 nodes)
networkChannel 120, networkDataRate RF24_1MBPS, nodes 0-4Now I want to have my master be an RPi because it can talk to the real world.
It looks like I have the RPi wired up and software loaded (per https://www.mysensors.org/build/raspberry). Now I need to know how to talk to my Arduino's.
Now how do I talk to my Arduino's?
o- general description of what you are trying to do
Raspberry Pi controller with serial gateway with nrf24l01+ to connect to Arduino's
o- the exact configure command you used
git clone https://github.com/mysensors/MySensors.git --branch master
cd MySensors
./configure --my-transport=rf24 --my-gateway=serial --my-serial-is-pty --my-serial-port=/dev/ttyMySensorsGateway
make
sudo ./bin/mysgw
[reboot RPi]
cd MySensors
sudo make install
sudo systemctl enable mysgw.service
sudo systemctl start mysgw.service
ls -als /dev/ttyMySensorsGateway [yeilds: 0 lrwxrwxrwx 1 root root 10 Apr 9 19:22 /dev/ttyMySensorsGateway -> /dev/pts/1]o- the output from the test
Apr 09 18:47:32 INFO Config file /etc/mysensors.conf does not exist, creating new file.
Apr 09 18:47:32 INFO Starting gateway...
Apr 09 18:47:32 INFO Protocol version - 2.3.2
Apr 09 18:47:32 DEBUG Serial port /dev/ttyMySensorsGateway (115200 baud) created
Apr 09 18:47:32 INFO EEPROM file /etc/mysensors.eeprom does not exist, creating new file.
Apr 09 18:47:32 DEBUG MCO:BGN:INIT GW,CP=RNNGL---,FQ=NA,REL=255,VER=2.3.2
Apr 09 18:47:32 DEBUG TSF:LRT:OK
Apr 09 18:47:32 DEBUG TSM:INIT
Apr 09 18:47:32 DEBUG TSF:WUR:MS=0
Apr 09 18:47:32 DEBUG TSM:INIT:TSP OK
Apr 09 18:47:32 DEBUG TSM:INIT:GW MODE
Apr 09 18:47:32 DEBUG TSM:READY:ID=0,PAR=0,DIS=0
Apr 09 18:47:32 DEBUG MCO:REG:NOT NEEDED
Apr 09 18:47:32 DEBUG MCO:BGN:STP
Apr 09 18:47:32 DEBUG MCO:BGN:INIT OK,TSP=1
Apr 09 18:47:32 DEBUG TSM:READY:NWD REQ
Apr 09 18:47: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:
[did not return to command prompt]
o- the settings you used in your controller
n/a -
hi i am trying to install an MQTT type gateway on a raspberry pi 3,
I configured it as in the example:./configure --my-gateway = mqtt --my-controller-ip-address = 127.0.0.1 --my-mqtt-publish-topic-prefix = mysensors-out --my-mqtt-subscribe-topic-prefix = mysensors-in --my-mqtt-client-id = mygateway1
Then I do make and it does not generate errors.
and when i run
sudo mysgw
returns the following result, I do not understand what it can be or what it means.
Apr 10 15:12:21 DEBUG connected to 127.0.0.1
Apr 10 15:12:22 DEBUG! GWT: RMQ: FAIL
Apr 10 15:12:22 DEBUG GWT: RMQ: CONNECTING ...
Apr 10 15:12:22 DEBUG connected to 127.0.0.1
Apr 10 15:12:23 DEBUG! GWT: RMQ: FAIL
Apr 10 15:12:23 DEBUG GWT: RMQ: CONNECTING ...
Apr 10 15:12:23 DEBUG connected to 127.0.0.1I appreciate your time to explain this to me please, I am just starting to use Mysensors and it is incredible everything that can be generated.
Also I want to connect it to Mycontrroller.org to manage my devices from my sensor network with only 1 Gateway, I already downloaded it in my RPI3 and it runs fine, but when I connect or create the mqtt type gateway, it asks me for the broker host and I do not know what to put there, I thought of 127.0.0.1, but after that it tells me that the State is down and an error message with the IP of 127.0.0.1 and I do not know then that I need this. Thanks again for your time to explain this to you.
-
You're not being able to connect to your MQTT broker (Mosquitto or Moqutte as was in mycontroller.org). I havent used mycontroller so I cant help with that.
I use Mosquitto on the same Rpi (so just install mosquitto and mosquitto-clients). You should secure it but test first without credentials to get going. Remember to create credentials in mosquitto AND reconfig your gw
-
You're not being able to connect to your MQTT broker (Mosquitto or Moqutte as was in mycontroller.org). I havent used mycontroller so I cant help with that.
I use Mosquitto on the same Rpi (so just install mosquitto and mosquitto-clients). You should secure it but test first without credentials to get going. Remember to create credentials in mosquitto AND reconfig your gw
@MasMat I already managed to configure my gateway it already works with Mycontroller.org, I like the interface of this, but I was thinking if the nodes of my network, which are esp8266 can be configured an operating system like FreeRTOS, TinyOS or ApacHE MyNewt can be configured in my osp and handle all Mysensors processes?
There is a possibility or it is impossible -
@MasMat I already managed to configure my gateway it already works with Mycontroller.org, I like the interface of this, but I was thinking if the nodes of my network, which are esp8266 can be configured an operating system like FreeRTOS, TinyOS or ApacHE MyNewt can be configured in my osp and handle all Mysensors processes?
There is a possibility or it is impossible@Nicolás-Potier that's way way over my understanding and fluency with Mysensors. And way off topic, I think.
-
Hi all,
I want to launch gateway on RaspberryPi with a RS485 network.
I downloaded the software (MySensors Library v2.4.0-alpha).
And i made coniguration:
./configure --my-transport=rs485 --my-rs485-serial-port=/dev/ttyUSB0 --my-rs485-baudrate=9600 --my-gateway=serial --my-serial-is-pty --my-serial-port=/dev/ttyUSB20 -my-serial-baudrate=115200 -my-serial-groupname=ttyI have USB-RS485 (it uses FT232RL) converter connected to the /dev/ttyUSB0.
On the other side i have Arduino uno with UART-RS485 (MAX485) converter, and a MotionSensorRS485 example on it.After i made the program (make), and type sudo ./bin/mysgw, i've got this:

I'm able to add the hardware in domoticz (serial gateway ttyYSB20, 115200), but it doesn't see nodes.

Please help.