💬 Building a Raspberry Pi Gateway


  • Mod

    Adding link to the github issue (thanks for creating!) for future reference
    https://github.com/mysensors/MySensors/issues/895



  • I just noticed that mysgw is constantly consuming 95-100% CPU here. This even happens when I unplug the NRF24 module so that after starting mysgw basically nothing happens. Running development branch. Hmmmm. Any idea what to check?


  • Mod

    @Velo17 strace might be able to help:

    sudo strace ./bin/mysgw -d
    

    Could you post your configure command? I'd like to try to reproduce the problem. I have a gateway with development from git as of about 2 weeks ago (a9418271) but I'm not using the nrf24. That gateway uses about 2% cpu on my Raspberry Pi 1. There have only been 6 commits since I built my gateway but I can update it and see if it starts acting up.

    On my gateway, strace outputs loads and loads of these:

    gettimeofday({1501098316, 668956}, NULL) = 0
    ioctl(6, FIONREAD, [0])                 = 0
    gettimeofday({1501098316, 671383}, NULL) = 0
    gettimeofday({1501098316, 672447}, NULL) = 0
    gettimeofday({1501098316, 673818}, NULL) = 0
    nanosleep({0, 10000000}, NULL)          = 0
    gettimeofday({1501098316, 685602}, NULL) = 0
    getsockopt(6, SOL_TCP, TCP_INFO, "\1\0\0\0\0\7g\1P4\3\0@\234\0\0\250\5\0\0\30\2\0\0\0\0\0\0\0\0\0\0"..., [104]) = 0
    getsockopt(6, SOL_TCP, TCP_INFO, "\1\0\0\0\0\7g\1P4\3\0@\234\0\0\250\5\0\0\30\2\0\0\0\0\0\0\0\0\0\0"..., [104]) = 0
    gettimeofday({1501098316, 689179}, NULL) = 0
    ioctl(6, FIONREAD, [0])                 = 0
    

    Also, which git hash are you using? (git log -1)

    Another thing to try could be to enable all the debug flags in MyConfig.h and see if they give you something interesting.


  • Mod

    I updated my gateway to 10ef623 (latest from git). Still works ok.



  • @mfalkvidd I make / make install a couple of times and maybe did a git pull inbetween as well - now everything is back to normal again. Thank you for giving me some dbug tips for the next issue 🙂

    My strace output looks similiar.

    My configure line is

    ./configure --my-rf24-channel=124 --my-rf24-irq-pin=29 --my-rf24-ce-pin=31 --my-rf24-cs-pin=36 --spi-driver=SPIDEV --spi-spidev-device=/dev/spidev1.0 --my-debug=disable
    


  • Should be possible to connect two radio modules and run two instances at the same time?
    It could be interesting to have a hat with nrf+rfm, all in one.


  • Mod

    @Sergio-Rius it would be great if you could contribute to making that a reality.
    An earlier discussion on the same topic: https://forum.mysensors.org/topic/4151/nrf24l01-and-rfm69-on-one-gw/

    So far, people have found it easier to add a separate gateway for each transport.



  • @mfalkvidd thanks for guiding me on the starting point. Perhaps the raspberry can break the doble transport limitation.
    I'll investigate in how to install two services at once. But it'll would be nice any advice on the device virtualization part.


  • Mod


  • Mod

    Maybe it could be as simple as running two instances of mysgw, using different pins for the nrf and the rfm?



  • @mfalkvidd Maybe. I'm programmer, but not for Linux. My concern is the part of the service that creates the virtual device colliding between the instances.
    I'll do a test in a virtual machine as soon as I have some time.
    It should be something easy to test.


  • Mod

    @Sergio-Rius by "virtual device", do you mean the com port? If that's the caee, it can be specified with --my-serial-pty=

    Ot let one gateway be serial and the other ethernet.



  • @mfalkvidd yes. Should work. I admit I've not taken a look at the code nor I don't know how to install the service two times.
    I'm used to having problems with programs that use static resources allocation. But I don't know if that's the case.


  • Mod

    maybe you could also consider making 2 ethernet gateway one on port 5003 and the other on port 5004 so that you can use myscontroller to debug from remote.



  • Hi guys couple of questions, apologies if they have been covered elsewhere.
    I am running latest dev branches of domoticz and MYS on a pi2.
    At random times it seems the NRF24L01+ LNA/PA goes down, or MYS goes down and domotics stops receiving signals from all of the nodes at the same time. I have the interrupt feature enabled.
    I have set the option under domoticz/hardware/data timeout to restart if no data received in five minutes but I dont think this is an ideal solution, and have yet to find out if this domoticz feature actually works in my scenario.
    Any idea what causes this? I found an old thread over on the domoticz/mysensors forum but no answers there. I am using a new sd card class 10.
    What I want to do is try out the different MYS builds on domoticz ie MQTT and SERIAL as well as ethernet which I am currently running. However I'm not sure how to stop the current MYS service and completely clean up the current build to start from scratch... I have tried just re entering the ./configure commands then 'make' but this does not seem to work.
    Many thanks,
    Matt


  • Mod

    @Matt log files for the time where the problem occurred will be essential for troubleshooting.

    make uninstall will stop the service and uninstall
    make cleanconfig will remove previous ./configure settings
    make clean will remove compiled code



  • @ccy that correction to the detect_machine function was necessary on my Rpi 3 too (I took the latest version from master). I got it working with that addition.
    Soooo I guess that would be worth adding to the code / opening an issue on github, wouldn't it?



  • I'm just now testing the two instances installation. I was going to just alter the flag --prefix but now I see in options that there's also the install dir:

    Installation options:
        --prefix=<PREFIX>           Installation prefix path. [/usr/local]
        --gateway-dir=<DIR>         Gateway files installation directory. [PREFIX/bin]
    

    What do you think should be the preferred way for installing two instances, only changing --gateway-dir?



  • @mfalkvidd OK thanks for your reply.
    Have set up the -d parameter in mysgw.servie and am waiting for it to fall over again.
    If I catch it I will post syslog.
    Thanks,
    Matt



  • Seems that I'll need some help for getting this properly done.
    I can't launch two instances of the service.

    What I've done is following the guide instructions with the following configuration:

    ./configure \
     --my-transport=nrf24 \
     --my-rf24-irq-pin=18 \
     --my-gateway=ethernet --my-port=5003 \
     --prefix=/opt/mysgw-nrf
    

    Then manually executed it, and it run ok and get one test node connected and Domoticz saw it all.

    Then I duplicated the MySensors folder and in there made the build with the following configuration:

    ./configure \
     --my-transport=nrf24 \
     --my-rf24-channel=82 \
     --my-rf24-ce-pin=37 \
     --my-rf24-cs-pin=36 \
     --my-rf24-irq-pin=33 \
     --my-gateway=ethernet --my-port=5004 \
     --prefix=/opt/mysgw-rfm
    

    Even when it says rfm, i connected a second NRF with the following pinout (blue=first NRF, green=second):
    0_1501511919817_Pinouts.png
    *IRQ on pin 33 as config says, and power from 1.

    Then I tried to make and run and I get this output:

    pi@domo_testing:~/MySGW_RFM $ sudo ./bin/mysgw -d
    mysgw: Starting gateway...
    mysgw: Protocol version - 2.2.0-beta
     __  __       ____
    |  \/  |_   _/ ___|  ___ _ __  ___  ___  _ __ ___
    | |\/| | | | \___ \ / _ \ `_ \/ __|/ _ \| `__/ __|
    | |  | | |_| |___| |  __/ | | \__ \  _  | |  \__ \
    |_|  |_|\__, |____/ \___|_| |_|___/\___/|_|  |___/
            |___/                      2.2.0-beta
    
    mysgw: MCO:BGN:INIT CP=RNNG--Q-
    mysgw: TSF:LRT:OK
    mysgw: TSM:INIT
    mysgw: TSF:WUR:MS=0
    mysgw: pinMode: invalid pin: 33
    mysgw: pinMode: invalid pin: 37
    mysgw: pinMode: invalid pin: 36
    mysgw: digitalWrite: invalid pin: 37
    mysgw: digitalWrite: invalid pin: 36
    mysgw: You need root privilege to use SPI.
    

    Is that I have to connect MOSI and MISO to the same pins that the first NRF?


  • Mod



  • @mfalkvidd That was the culprit. Thanks.
    But now... seems that the radio that is using channel 76 also get connections from nodes on channel 83, and the second radio, the 83 one doesn't pick anything.

    Is there a way to confirm that gw and nodes are using one channel or other during the bootup?


  • Mod

    @Sergio-Rius try increasing the distance between channels to at least 10 or more



  • @gohan Done. I've just burnt the node with channel 125 and it seems to have no effect. It registers on the 76 radio.

    Does the #define MY_RF24_CHANNEL 125 has to be before or after the include of mysensors.h? I have it before.



  • Well, I've changed the channel for the 1st radio to 83 and left the second at 125.
    If I burn the testing node for ch125 it doesn't receives reply from the gw. If I then burn it on ch83, it registers and comunicates with the first radio.

    So I think the second radio does not work on the Raspberry Pi. The service communicates with the controller but does nothing for the network side.
    Also on the second radio:

    mysgw: Client 0: 0;0;3;0;18;PING
    mysgw: Client 0: 0;0;3;0;18;PING
    mysgw: Client 0: 0;0;3;0;18;PING
    mysgw: !TSF:SAN:FAIL
    mysgw: TSM:FAIL:CNT=1
    mysgw: TSM:FAIL:DIS
    mysgw: TSF:TDI:TSL
    mysgw: Client 0: 0;0;3;0;18;PING
    mysgw: TSM:FAIL:RE-INIT
    mysgw: TSM:INIT
    mysgw: TSM:INIT:TSP OK
    mysgw: TSM:INIT:GW MODE
    mysgw: TSM:READY:ID=0,PAR=0,DIS=0
    mysgw: Client 0: 0;0;3;0;18;PING
    mysgw: Client 0: 0;0;3;0;18;PING
    

  • Mod

    @Sergio-Rius if you shut down mysgw for the first radio and restart mysgw for the second radio, does the second radio start to work?
    And do you get the same debug output? The SPI message looks bad. Maybe the two gateways are conflicting.



  • @mfalkvidd Nope, the service seems to have stopped the SAN errors but still no communication:

    pi@domo_testing:~/MySGW_RFM $ sudo ./bin/mysgw -d
    mysgw: Starting gateway...
    mysgw: Protocol version - 2.2.0-beta
     __  __       ____
    |  \/  |_   _/ ___|  ___ _ __  ___  ___  _ __ ___
    | |\/| | | | \___ \ / _ \ `_ \/ __|/ _ \| `__/ __|
    | |  | | |_| |___| |  __/ | | \__ \  _  | |  \__ \
    |_|  |_|\__, |____/ \___|_| |_|___/\___/|_|  |___/
            |___/                      2.2.0-beta
    
    mysgw: MCO:BGN:INIT CP=RNNG--Q-
    mysgw: TSF:LRT:OK
    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:5004
    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;PING
    mysgw: Client 0: 0;0;3;0;18;PING
    mysgw: Client 0: 0;0;3;0;18;PING
    mysgw: Client 0: 0;0;3;0;18;PING
    mysgw: Client 0: 0;0;3;0;18;PING
    
    0 MCO:BGN:INIT NODE,CP=RNNNA--,VER=2.1.1
    4 TSM:INIT
    4 TSF:WUR:MS=0
    12 TSM:INIT:TSP OK
    14 TSF:SID:OK,ID=1
    16 TSM:FPAR
    51 TSF:MSG:SEND,1-1-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
    2060 !TSM:FPAR:NO REPLY
    2062 TSM:FPAR
    2099 TSF:MSG:SEND,1-1-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
    4106 !TSM:FPAR:NO REPLY
    4108 TSM:FPAR
    4145 TSF:MSG:SEND,1-1-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
    6152 !TSM:FPAR:NO REPLY
    6154 TSM:FPAR
    6191 TSF:MSG:SEND,1-1-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
    8198 !TSM:FPAR:FAIL
    8200 TSM:FAIL:CNT=1
    8202 TSM:FAIL:PDT
    18206 TSM:FAIL:RE-INIT
    18208 TSM:INIT
    18214 TSM:INIT:TSP OK
    18219 TSF:SID:OK,ID=1
    18221 TSM:FPAR
    18257 TSF:MSG:SEND,1-1-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
    20267 !TSM:FPAR:NO REPLY
    20269 TSM:FPAR
    20305 TSF:MSG:SEND,1-1-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
    22315 !TSM:FPAR:NO REPLY
    22317 TSM:FPAR
    22353 TSF:MSG:SEND,1-1-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
    24363 !TSM:FPAR:NO REPLY
    24365 TSM:FPAR
    24401 TSF:MSG:SEND,1-1-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
    26411 !TSM:FPAR:FAIL
    26413 TSM:FAIL:CNT=2
    26415 TSM:FAIL:PDT
    36419 TSM:FAIL:RE-INIT
    36421 TSM:INIT
    36427 TSM:INIT:TSP OK
    36431 TSF:SID:OK,ID=1
    36433 TSM:FPAR
    36470 TSF:MSG:SEND,1-1-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
    38479 !TSM:FPAR:NO REPLY
    38481 TSM:FPAR
    38518 TSF:MSG:SEND,1-1-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
    40527 !TSM:FPAR:NO REPLY
    40529 TSM:FPAR
    40566 TSF:MSG:SEND,1-1-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
    42575 !TSM:FPAR:NO REPLY
    42577 TSM:FPAR
    42614 TSF:MSG:SEND,1-1-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
    44623 !TSM:FPAR:FAIL
    44625 TSM:FAIL:CNT=3
    

    You find the pinouts I send before are right to you?


  • Mod

    MY_* defines need to be before #include MySensors.h so you're doing the right thing.
    I don't know about the pins, have never used anything but the default wiring myself. But if the pins were wrong you should get TSM:INIT:TSP FAIL instead of TSM:INIT:TSP OK.

    If you reconfigure the first mysgw (the one with the default pins) to use channel 83, does communication with the node on channel 83 work?



  • @mfalkvidd yeah, look three posts before.
    I'll try to get mosi and miso from the default pin out sharing with the first radio. Now I'm using the ones marked as 1, when the default ones are marked 0.


  • Mod

    @Sergio-Rius I see. Sorry. Then we know the channel parameter works. Good testing.
    Strange problem. It looks from the threads I linked earlier that using the second SPI does indeed work (if the pin definition fix is applied). When the first mysgw is stopped, your second mysgw should behave just as it did for Velo17 and wergeld. Can you think of any difference in your setup?



  • @mfalkvidd I have the impression that if I stop the first service, the second picks the first radio.
    I disconnected the power from the first radio and left the second all connected and I only got TSM errors and fails. As soon as I attached power to the first NRF it worked.
    Perhaps the other users only used the configurable pins (CS/CE/IRQ) on the extended bank...



  • That's it. It doesn't use MOSI, MISO and SCLK from the SPI1. I removed the NRF1 and only connected those tree pins of NRF2 into SPI0 and service2 works with NRF2 at channel 125.

    I've tried to share those pins (MOSI, MISO, SCLK) between both radios but as soon as I connect NRF1, 2 stops communicating. Same effect than connecting NRF2 to SPI1.

    What a pity... #@%&!!! 😀

    Edit: I finally tried a more "standard" configuration. Using only the first SPI bank and also doesn't work.



  • Hi!
    I have a problem with the pseudo port. Node-serialport (v4.0.7) on the command serialport.list produces the result of the undefined.

    Rpi3 and DietPi, nodejs 4.8.4



  • @mfalkvidd OK have attached the logfiles below.
    No clues that I can see. At 1502 the NRF goes quiet. I have tried a different pi2, different NRF (PA/LNA) and am currently running the NRF off of 5V from the PI through one of those $1.00 regulator adapter things with built in caps and such. Have also tried different PSUs including a 2A one.
    Only thing I can think left to try is reducing the power output in case the high output of the radio module is inducing transients in the cables...
    Am kinda stumped here. I have an arduino NRF gateway that I will try via USB if low power does not work. I have tried setting up MYSGW as LAN and USB via ./configure but the same thing happens each time.
    One thought just came to me, I AM using the pin15 IRQ option on the NRF now that is still experimental?
    So next time will try without IRQ and low power...

    Any help/suggestions greatly appreciated.
    FYI I have had domoticz running on a lubuntu netbook with USB arduino NRF gateway that has been rock solid. Am trying the get a workable PI solution though, for myself and my father in law but not workable as yet sadly...

    At 15:02:34 you can see the last incoming node message after that the only MYSGW activity is the PING thing... which seems to happen every 10S or so. This goes on for an hour after that with no more incomings. I have ~12 sensors around the place including a power meter one which reports every minute.

    15:02:29 raspberrypi dhcpcd[734]: wlan0: Router Advertisement from fe80::260:64ff:fed7:f613
    Aug  5 15:02:33 raspberrypi mysgw: TSF:MSG:READ,23-23-0,s=1,c=1,t=0,pt=7,l=5,sg=0:18.0
    Aug  5 15:02:33 raspberrypi mysgw: TSF:MSG:READ,23-23-0,s=0,c=1,t=1,pt=7,l=5,sg=0:21.0
    Aug  5 15:02:34 raspberrypi mysgw: TSF:MSG:READ,23-23-0,s=255,c=3,t=0,pt=1,l=1,sg=0:68
    Aug  5 15:02:34 raspberrypi dhcpcd[734]: wlan0: Router Advertisement from fe80::260:64ff:fed7:f613
    Aug  5 15:02:36 raspberrypi mysgw: Client 0: 0;0;3;0;18;PING
    Aug  5 15:02:37 raspberrypi mysgw: TSF:MSG:READ,41-7-0,s=0,c=1,t=0,pt=7,l=5,sg=0:11.6
    Aug  5 15:02:41 raspberrypi dhcpcd[734]: wlan0: Router Advertisement from fe80::260:64ff:fed7:f613
    Aug  5 15:02:46 raspberrypi mysgw: Client 0: 0;0;3;0;18;PING
    Aug  5 15:02:50 raspberrypi dhcpcd[734]: wlan0: Router Advertisement from fe80::260:64ff:fed7:f613
    Aug  5 15:02:56 raspberrypi mysgw: Client 0: 0;0;3;0;18;PING
    Aug  5 15:02:57 raspberrypi dhcpcd[734]: wlan0: Router Advertisement from fe80::260:64ff:fed7:f613
    Aug  5 15:03:06 raspberrypi dhcpcd[734]: wlan0: Router Advertisement from fe80::260:64ff:fed7:f613
    Aug  5 15:03:06 raspberrypi mysgw: Client 0: 0;0;3;0;18;PING
    Aug  5 15:03:13 raspberrypi dhcpcd[734]: wlan0: Router Advertisement from fe80::260:64ff:fed7:f613
    Aug  5 15:03:16 raspberrypi mysgw: Client 0: 0;0;3;0;18;PING
    

    Also FWIW to log from domoticz below. Ignore FANFLAG thats just a blockly flag I use...

    2017-08-05 15:01:18.936 (GW) General/Voltage (FanIntakeV)
    2017-08-05 15:02:04.935 (GW) General/kWh (Meter)
    2017-08-05 15:02:33.940 (GW) Temp + Humidity (Mitch2)
    2017-08-05 15:02:33.945 (GW) Temp + Humidity (Mitch2)
    2017-08-05 15:02:37.941 (GW) Temp (MBR Fan)
    2017-08-05 15:50:02.678 Set UserVariable FanFlag = 1
    2017-08-05 15:51:02.693 Set UserVariable FanFlag = 1
    2017-08-05 15:52:02.703 Set UserVariable FanFlag = 1
    2017-08-05 15:53:02.710 Set UserVariable FanFlag = 1
    2017-08-05 15:54:00.037 Set UserVariable FanFlag = 1
    

    Thanks,
    Matt


  • Mod

    @Matt I agree that power is the most likely cause. The nrf24 is very sensitive.

    Before you recompile, add --extra-cxxflags=-DMY_DEBUG_VERBOSE_RF24 to the configure command and you'll get extra details on the radio status in the gateway's debug log.



  • @mfalkvidd Thankyou. Stable for now. Not sure if they are even genuine modules so... Can reach outside to my glasshouse even on low power setting.
    If it starts playing up again I'll add verbose logging and have another look.



  • Anyone having issues with compilation of latest stable?

    Looks like missing libraries... fatal error: SPI.h: No such file or directory



  • Yesterday I've tried compiling it also (first time for me) and I had same error.


  • Mod

    @niehoff80 and/or @Oliviakrk can you run

    sudo raspi-config
    

    (install it using sudo apt-get install raspi-config if it isn't already installed)
    Select

    8 Advanced Options
    

    and

    A6 SPI
    

    and

    Yes
    

    to all questions. Reboot the raspberry pi and try running make again. If that works I'll add it to the documentation.



  • @mfalkvidd

    I was able to compile it after doing what you're suggesting. It's still have error message during communication with the gateway but that is probably a noobs-error in my config. so I have to investigate a bit more.



  • Hi

    I enabled SPI. For Rasberry PI B it was under 5. Interfacing options. The build completed successfully. Thanks!

    But there is a problem...When I run mysqgw -d I get:
    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 FAIL
    mysgw: TSM:FAIL:CNT=1
    mysgw: TSM:FAIL:PDT

    I also tried development release. Works perfectly. Looks like there is problem with stable.



  • Have the same problem with the stable branch as @Oliviakrk using the NRF24 transport on an Raspberry PI B, it might be a driver issue, is see that the make for the development branche builds the BCM drivers while the master branche does not.



  • Ok, I had same error as Oliviakrk & syotos on my Raspberry Pi 3 and I also tried the development release and that one works perfectly!



  • Hi I followed the instructions, but I can't get it to work, I have a Raspberry Pi 1 Rev1 with NRF24 connected following the instructions.
    First I configured it just using ./configure --spi-driver=SPIDEV --spi-spidev-device=/dev/spidev0.0 --soc=BCM2835 --my-transport=nrf24 --my-rf24-ce-pin=22 --my-rf24-cs-pin=24 --my-gateway=ethernet --my-port=5003
    I also tried with almost every combination but I always get the same errors.
    The idea is for it to be used as a standalone GW running from RPI with RF directly attached to it (SPI is enabled and I don't get any errors when compiling)
    I can send the logs if needed, any help will be welcome, thanks!
    pi@raspberrypi:~/MySensors $ sudo ./bin/mysgw -d
    mysgw: Starting gateway...
    mysgw: Protocol version - 2.1.1
    mysgw: MCO:BGN:INIT GW,CP=RNNG---,VER=2.1.1
    mysgw: TSF:LRT:OK
    mysgw: TSM:INIT
    mysgw: TSF:WUR:MS=0
    mysgw: !TSM:INIT:TSP FAIL
    mysgw: TSM:FAIL:CNT=1
    mysgw: TSM:FAIL:PDT
    mysgw: TSM:FAIL:RE-INIT
    mysgw: TSM:INIT
    mysgw: !TSM:INIT:TSP FAIL
    mysgw: TSM:FAIL:CNT=2
    mysgw: TSM:FAIL:PDT


  • Mod

    Try latest mysensors version from development branch



  • Tried it and got the same output, I also tried with a different NRF24 just in case and doublechecked the connections. are the options I am using ok?
    ./configure --spi-driver=SPIDEV --spi-spidev-device=/dev/spidev0.0 --soc=BCM2835 --my-debug=enable --my-transport=nrf24 --my-rf24-ce-pin=22 --my-rf24-cs-pin=24 --my-gateway=ethernet --my-port=5003



  • @gohan, Thank you! I got it to work. First I tried with the development branch and it didn't work either, then I used the following instructions https://forum.mysensors.org/topic/1151/tutorial-raspberry-pi-nrf24l01-direct-connection
    And when that didn't work either I rechecked the wiring which ended up being the reason for it to fail previously, "faulty wires".
    I got it to work with the master branch.

    pi@raspberrypi:~/MySensors $ sudo ./bin/mysgw -d
    mysgw: Starting gateway...
    mysgw: Protocol version - 2.1.1
    mysgw: MCO:BGN:INIT GW,CP=RNNG---,VER=2.1.1
    mysgw: TSF:LRT:OK
    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



  • Sorry, just want to ask does anyone have the output of this gateway?


  • Mod

    @Zuhairi the previous post?



  • Hi.
    I have a Raspberry Pi already configured as gateway, but I don't know how to interact with. I means, how can I read incoming data from? I tried open /dev/ttyMySensorsGateway as a common serial port but I got a message error:
    cu: open (/dev/ttyMySensorsGateway): Permission denied
    cu: /dev/ttyMySensorsGateway: Line in use
    With 'ps ax' command I can see only '/usr/local/sbin/PiGatewaySerial -d' running as a deamon.
    Could someone explain me what's ne next step for?


  • Mod

    I'd compile it as ethernet gateway, follow the guide on how to configure the parameters, then you can use MySController (search the forum, there is a topic with download link) and use that to connect to it


  • Mod

    Welcome to the MySensors community @Djames-Suhanko

    It looks like you are using the Raspberry Pi gateway for MySensors 1.5. If you are just starting out, I suggest you use the gateway for the current version instead. Documentation: https://www.mysensors.org/build/raspberry

    That version of the gateway has a debug mode where you can see the messages in the console.

    The next step would be to select a controller. Information about this is available at https://www.mysensors.org/about/network



  • @gohan Thank you to answer! Good tip, I will do that!



  • @mfalkvidd Yes, I'm using 1.5. Thank you for suggest me the newer version. I will update it today!



  • Hello, all!
    I read a lot of comments to find a solution to my problem, but seems it's something that I couldn't understand yet.

    The old version was working in my Raspberry Pi using Raspbian Wheeze, so, to install the new version i updated my system until the latest version (Raspbian Stetch). I could compile MySensors, but I'm getting the common error when testing with mysgw -d:
    "MYSGW: MCD:BGN INIT GW, CP=RNNG---,VER-2.1.1" and so on.

    I used this parameters in configure:
    ./configure --my-transport=nrf24 --my-gateway=ethernet
    --my-port=5003 --my-controlle-ip-address=192.168.1.2
    --my-gateway=mqtt --my-mqtt-publish-topic-prefix=mysensors-out
    --my-mqtt-subscribe-topic-prefix=mysensors-in
    --my-mqtt-client-id=mygateway1

    I couldn't find a solution yet. Can someone help me?


  • Mod

    @Djames-Suhanko MYSGW: MCD:BGN INIT GW, CP=RNNG---,VER-2.1.1 means that the gateway is starting up. It is not an error.

    "controller" is misspelled in your configure command though.


  • Mod

    @Djames-Suhanko I think you have to decide wether you want to make an ethernet or mqtt gateway, you can't specify both



  • wow, it's was really fast! Thanks to answer. I'm use an ethernet interface. It's up but have no cable on their. I didn't install a controller yet, so, is there no problem yet, right?
    Sorry that, I'm really a newbie using MySensors.

    [updating]
    ysgw: 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 FAIL
    mysgw: TSM:FAIL:CNT=1
    mysgw: TSM:FAIL:PDT
    mysgw: TSM:FAIL:RE-INIT
    mysgw: TSM:INIT
    mysgw: !TSM:INIT:TSP FAIL
    mysgw: TSM:FAIL:CNT=2
    mysgw: TSM:FAIL:PDT


  • Mod

    @Djames-Suhanko said in 💬 Building a Raspberry Pi Gateway:

    --my-controlle-ip-address

    this also is not necessary. Also for now remove all these --my-gateway=mqtt --my-mqtt-publish-topic-prefix=mysensors-out
    --my-mqtt-subscribe-topic-prefix=mysensors-in
    --my-mqtt-client-id=mygateway1
    and use it as ethernet gateway to keep it simple



  • Ok, I will try it right now!



  • Hello folks,
    my past experience is using nrf24 library at https://github.com/Blavery/lib_nrf24, and i was able to send/receive "text" data (or "string" data) in between Raspi3 (master node) and Arduino (slave). And this is a big issue, because what i need is numerical data (float or integer), not text data, so Raspi 3 can process the numerical data (such as to do the plotting), and based on the processed data to make some decisions. My raspi 3 is controlling a moving robot. Can you advise appropriate nrf24 library for raspberry pi and Arduino, and sample codes for this kind of applicaitons? Thanks


  • Mod

    Welcome to the MySensors community @erobot !

    Not sure how you found us, but the library we use here is...MySensors. It certanly does what you describe. The best way to start is to read how MySensors works at https://www.mysensors.org/about and then go on to the many build examples and build your first node.



  • hi there, somehow my gateway seems to stop receiving data after a day or so from my sensors,
    restarting the service seems to solve it for a time, how can i troubleshoot this issue ?



  • @Richard-van-der-Plas

    Same trouble for me. I use mySensors since 2 years and I have no problem with my Arduino Gateway. But from now 2 weeks, I try to use a pi gateway. It's working well but sometime, don't no why, my nrf24 stop to receive messages. Just restarting mygw service and re-work again. I don't see nothing anormal in my log, stop randomlly after 1 or 2 days.

    Maybe a power issue to nrf24, I will try to add capacitor just for testing if can resolve this problem.



  • Same here too. With Rpi3 gateway. Would stop for hours, maybe start agian for a hour or two and then stop.
    Have been running debug mode for last day, no idea what happened, but been stable so perhaps something in the update/upgrade made a problem and has now been fixed.
    Will keep an eye on here and let you know if I find anything.



  • Looks as if it happened after updating Home Assistant, but that should be 2 different things right ?


  • Mod

    @Richard-van-der-Plas what version are you using?



  • @gohan for me version dev (2.2)



  • dev 2.2.0 beta


  • Mod

    Have you tried both ethernet or mqtt?



  • @gohan the latest stable version i guess. Where can i check?


  • Mod

    @Richard-van-der-Plas try the 2.2 beta, it usually works better



  • @gohan just checked it's 2.1.1, is it easy to upgrade?


  • Mod

    @Richard-van-der-Plas just clone the 2.2 dev instead of the stable, the rest is the same



  • @gohan fatal: destination path 'MySensors' already exists and is not an empty directory. It goes wrong with the first command, could you please give me some pointers ?


  • Mod

    you need to either delete or rename the Mysensors folder 🙂



  • Hello,
    I designed a PCB for rfm or nrf -> raspberry pi
    https://www.openhardware.io/view/470/MySensors-Gateway-for-Raspberry-PI


  • Mod

    I am trying to get the gateway to run the RFM69W radio but when I issue the "make" command I get this

    In file included from ./MySensors.h:318:0,
                     from examples_linux/mysgw.cpp:83:
    ./drivers/RFM69/new/RFM69_new.cpp:658:12: warning: ‘void RFM69_ATCmode(bool, int16_t)’ defined but not used [-Wunused-function]
     LOCAL void RFM69_ATCmode(const bool onOff, const int16_t targetRSSI)
                ^
    

    It is latest beta.


  • Mod

    @gohan what configure command did you use? Knowing that would make it easier to reproduce the problem...
    Does this warning cause any problem?


  • Mod

    Just simple rfm69w 433 with default options. It compiles but I get no communication with nodes and 100% processor, but maybe I did a bad wiring


  • Mod

    @gohan debug output could be useful 😉


  • Mod

    I would have posted it but it just shows as no nodes are trying to connect and nodes are unable to find a parent of course. I'm using the rfm2nrf pcb in order to have the pins to connect to the raspberry.

    PS here is the log of the startup

     __  __       ____
    |  \/  |_   _/ ___|  ___ _ __  ___  ___  _ __ ___
    | |\/| | | | \___ \ / _ \ `_ \/ __|/ _ \| `__/ __|
    | |  | | |_| |___| |  __/ | | \__ \  _  | |  \__ \
    |_|  |_|\__, |____/ \___|_| |_|___/\___/|_|  |___/
            |___/                      2.2.0-beta
    
    mysgw: MCO:BGN:INIT GW,CP=RPNG----,VER=2.2.0-beta
    mysgw: TSF:LRT:OK
    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;PING
    mysgw: Client 0: 0;0;3;0;18;PING
    

  • Mod

    On my test RPI3 it is working.... I have to double check the other one.



  • @gohan Hi there updated to the latest dev, but i still have to restart the service after a few days, this is the message in the log:

    Sep 17 20:31:51 raspberrypi hass[17999]: #033[32m2017-09-17 20:31:51 INFO (Thread-13) [mysensors.gateway_tcp] Closing socket at ('192.168.1.115', 5003).#033[0m
    Sep 17 20:31:51 raspberrypi hass[17999]: #033[32m2017-09-17 20:31:51 INFO (Thread-13) [mysensors.gateway_tcp] Socket closed at ('192.168.1.115', 5003).#033[0m
    Sep 17 20:31:51 raspberrypi hass[17999]: #033[32m2017-09-17 20:31:51 INFO (Thread-13) [mysensors.gateway_tcp] No response. Disconnected.#033[0m
    Sep 17 20:31:51 raspberrypi hass[17999]: #033[32m2017-09-17 20:31:51 INFO (Thread-13) [mysensors.gateway_tcp] Trying to connect to ('192.168.1.115', 5003)#033[0m
    

    checking with top, i see high CPU utilization:

    20921 root      20   0   20036    872    784 R  CPU ->99,5  0,1 682:53.59 mysgw
    
    


  • @ccy

    Hello, I'm also have issue with this question. My Raspberry Pi 2 type is a01041, but by the original "configure" file it is not recognized:

    [SECTION] Detecting target machine.
      [OK] machine detected: SoC=unknown, Type=unknown, CPU=armv7l.
    

    Maybe someone could explain why it is not recognized?

    "Configure" file lines:

    function detect_machine {
    ...
        case $hardware in
    ...
        BCM2835)
            soc="BCM2835"
            if [[ $machine == "Raspberry"* ]]; then
                local rev=($(detect_rpi_revision))
                if [[ $rev == "a02082" || $rev == "a22082" ]]; then
                    tp="RPi3"
                else
                    tp="Rpi2"
                fi
            fi
            ;;
    ...
    
    My Raspberry Pi 2 info:
    processor       : 0
    model name      : ARMv7 Processor rev 5 (v7l)
    BogoMIPS        : 38.40
    Features        : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm
    CPU implementer : 0x41
    CPU architecture: 7
    CPU variant     : 0x0
    CPU part        : 0xc07
    CPU revision    : 5
    
    processor       : 1
    model name      : ARMv7 Processor rev 5 (v7l)
    BogoMIPS        : 38.40
    Features        : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm
    CPU implementer : 0x41
    CPU architecture: 7
    CPU variant     : 0x0
    CPU part        : 0xc07
    CPU revision    : 5
    
    processor       : 2
    model name      : ARMv7 Processor rev 5 (v7l)
    BogoMIPS        : 38.40
    Features        : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm
    CPU implementer : 0x41
    CPU architecture: 7
    CPU variant     : 0x0
    CPU part        : 0xc07
    CPU revision    : 5
    
    processor       : 3
    model name      : ARMv7 Processor rev 5 (v7l)
    BogoMIPS        : 38.40
    Features        : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm
    CPU implementer : 0x41
    CPU architecture: 7
    CPU variant     : 0x0
    CPU part        : 0xc07
    CPU revision    : 5
    
    Hardware        : BCM2835
    Revision        : a01041
    Serial          : 0000000049a14619




  • I followed the instructions carefully. However I get an error. Can someone help?

    git clone https://github.com/mysensors/MySensors.git --branch master
    cd MySensors
    ./configure --my-transport=nrf24 --my-gateway=ethernet
    

    This results in a warning:

    [SECTION] Detecting SPI driver.
      [WARNING] No supported SPI driver detected.
    

    When I run make I get the follwing error:

    In file included from examples_linux/mysgw.cpp:74:0:
    ./MySensors.h:254:2: error: #error No support for nRF24 radio on this platform
     #error No support for nRF24 radio on this platform
      ^
    In file included from ./drivers/RF24/RF24.cpp:23:0,
                     from ./MySensors.h:290,
                     from examples_linux/mysgw.cpp:74:
    ./drivers/RF24/RF24.h:52:17: fatal error: SPI.h: No such file or directory
     #include <SPI.h>
                     ^
    compilation terminated.
    Makefile:114: recipe for target 'build/examples_linux/mysgw.o' failed
    make: *** [build/examples_linux/mysgw.o] Error 1
    

    Hope someone can help. Thanks.



  • Maybe you didn't enable SPI on the pi.

    From command prompt type 'sudo raspi-config', then select option 5 from the menu. This takes you to where you can enable the SPI bus on the pi. Then try again.

    S>



  • @skywatch Thank you! That solved my problem.



  • Hello friends,

    Reading the instructions for building a RaspberryPi Gateway using RFM69, it states that one should use the development branch and not master, since the Pi is using a different version of the driver.

    Anyone knows when this will be merged to master branch?

    Also, since this forces all nodes to use development branch as well to be able to communicate with the gateway, assuming I use the development branch now and it is later on merged into master, is there an easy way to upgrade nodes remotely to the new code?

    I am planning to use Wall Switch Insertable Node, and Mini Relay Mode - Both support OTA updates, am I correct to assume this will allow upgrading without taking the nodes out of where they are located?

    Thanks!
    Sefi


  • Mod

    Like all nodes, you need to change the bootloader in order to enable ota.



  • hello, is there a inclusion mode planned for the raspberry pi gateway ?



  • Hi,
    This seems a great job, but despite I had a look at many posts (yes, many out of the dozens of pages.. 😉 ), I still can't figure out some questions..

    • Beyond the obvious advantage of saving an arduino (and power supply, space..), is there an advantage for having the gateway hosted by the raspberry PI hosting my Domoticz ? (like more CPU available for handling communications or for signing ? or on the opposite more risks to overload the PI CPU -despite only a couple persons have complained about high CPU load))
    • the default setup is Ethernet. What are the pros and cons of ethernet vs serial setup ? (speed? reliability ? possibility to move to other gateway?..)
    • Is signing now implemented in this setup ? I didn't see it explicitely described, but some posts seem related to signing.
    • if I want to use an external antenna and the high power NRF24, should I use an aother power source than raspberry PI ? (or maybe sharing the same USB charger, but diverting the power in parallel of the PI ?)
    • is there a tutorial somewhere detailing how to uninstall and migrate to an external gateway ? During such migration, would I need to "touch" again my sensors and would I lose history logs of these sensors in Domoticz ?

    Sorry for all these questions..

    br,
    Ricorico94


  • Mod

    @ricorico94 said in 💬 Building a Raspberry Pi Gateway:

    Hi,
    This seems a great job, but despite I had a look at many posts (yes, many out of the dozens of pages.. 😉 ), I still can't figure out some questions..

    • Beyond the obvious advantage of saving an arduino (and power supply, space..), is there an advantage for having the gateway hosted by the raspberry PI hosting my Domoticz ? (like more CPU available for handling communications or for signing ? or on the opposite more risks to overload the PI CPU -despite only a couple persons have complained about high CPU load))

    Not really. Cpu usage is normally 0-2% so it doesn't affect either way.

    Switching between different gateway types (serial, ethernet, mqtt) can be easier since there is no need to re-wire anything, just reconfigure and recompile. But that could be done with a all-in-one Arduino setup as well.

    Remote debug might be a benefit, since logging in to the raspberry pi to view log files can be done remotely. Remote debug for Arduino is possible, but usually requires additional hardware.

    The raspberry pi has room for more logging, which can help troubleshooting.

    The biggest downside is that a raspberry pi environment is infinitely more complex than an Arduino, which could affect reliability and make troubleshooting harder. On the other hand, there are more debugging tools available which might make troubleshooting easier.

    • the default setup is Ethernet. What are the pros and cons of ethernet vs serial setup ? (speed? reliability ? possibility to move to other gateway?..)

    No difference in speed. No difference in reliability.

    Ethernet can easily be made accessible over the network. Doing that with serial can be done but is a bit tricky.

    Some controllers don't have support for all gateway types. See https://www.mysensors.org/controller for details.

    • Is signing now implemented in this setup ? I didn't see it explicitely described, but some posts seem related to signing.

    Yes. See the help text produced by running ./configure --help

    • if I want to use an external antenna and the high power NRF24, should I use an aother power source than raspberry PI ? (or maybe sharing the same USB charger, but diverting the power in parallel of the PI ?)

    Yes. See the note on https://www.mysensors.org/build/raspberry#wiring

    • is there a tutorial somewhere detailing how to uninstall and migrate to an external gateway ? During such migration, would I need to "touch" again my sensors and would I lose history logs of these sensors in Domoticz ?

    See my answer in the question you posted yesterday.

    Sorry for all these questions..

    No worries. Except for posting one of the questions again (which wastes people's time and confuses people when they read only one of the places), you are very welcome to post as many questions as you like. Asking questions is usually the next best way to learn.



  • Thanks a lot for your clear explanations ! Very useful !
    and.. bravo ! for all your work



  • Hi,
    I'm trying to install the gateway on a Raspberry Pi 2 hosting Domoticz already (I had used the standard Domoticz image).
    I receive an error message on the make step, but maybe I've not properly understood instructions (not very friendly with raspberry and linux environment).
    First, I wired the NRF24 with PA (meaning I used an adapter and the 5V physical PIN#4) and the IRQ (wired on physical pin #15)
    Then I logged into my raspberry and staid in initial directory (pi@raspberrypi )
    I then typed:

    pi@raspberrypi ~ $ git clone https://github.com/mysensors/MySensors.git --branch master
    Cloning into 'MySensors'...
    remote: Counting objects: 14895, done.
    remote: Compressing objects: 100% (8/8), done.
    remote: Total 14895 (delta 0), reused 5 (delta 0), pack-reused 14887
    Receiving objects: 100% (14895/14895), 12.17 MiB | 1.68 MiB/s, done.
    Resolving deltas: 100% (9022/9022), done.
    pi@raspberrypi ~ $ cd MySensors
    pi@raspberrypi ~/MySensors $ ./configure --help
    

    Hopefully I did it in adequate folder ? (now I see a Mysensors folder in my /home/pi folder).
    Then I typed:

    pi@raspberrypi ~/MySensors $ --my-transport=nrf24
    -bash: --my-transport=nrf24 : commande introuvable
    pi@raspberrypi ~/MySensors $ ./configure --my-transport=nrf24
    [SECTION] Detecting target machine.
      [OK] machine detected: SoC=BCM2836, Type=Rpi2, CPU=armv7l.
    [SECTION] Detecting SPI driver.
      [OK] SPI driver detected:BCM.
    [SECTION] Detecting init system.
      [OK] init system detected: sysvinit.
    [SECTION] Saving configuration.
    [SECTION] Cleaning previous builds.
    [OK] Finished.
    
    

    So far, no error.. but should I have typed "./configure --my-transport=nrf24 --my-rf24-irq-pin=15" to implement the IRQ ? If yes, can I retype that command with new settings without issue ?

    Then I understaood I had to run make command:

    pi@raspberrypi ~/MySensors $ make
    gcc -MT build/drivers/Linux/log.o -MMD -MP -march=armv7-a -mtune=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard -DMY_RADIO_NRF24 -DMY_GATEWAY_LINUX -DMY_DEBUG -DLINUX_SPI_BCM -DLINUX_ARCH_RASPBERRYPI  -Ofast -g -Wall -Wextra  -I. -I./core -I./drivers/Linux -I./drivers/RPi -I./drivers/BCM -c drivers/Linux/log.c -o build/drivers/Linux/log.o
    cc1: error: bad value (cortex-a7) for -mtune switch
    Makefile:118: recipe for target 'build/drivers/Linux/log.o' failed
    make: *** [build/drivers/Linux/log.o] Error 1
    
    

    But errors... 😧
    I tried to search on forum, and saw someone else meniotning a smilar error, but people were answering about OrangePI, whereas I use a Rasp PI 2.
    I probably misunderstood some steps.. Could someone help me ?

    Note: in instructions, there's a statement I don't understand for ethernet gateway: "To set the gateway as a client that connects to a controller, use:--my-gateway=ethernet --my-controller-url-address=YOUR-CONTROLLER-ADDRES" . IN which case do we need that ? (as said, I plan to simply use this gateway on My dodmoticz rasp PI).

    br,
    Ricorico94


  • Mod

    @ricorico94 said in 💬 Building a Raspberry Pi Gateway:

    ./configure --my-transport=nrf24 --my-rf24-irq-pin=15

    That is fine, no need to add extra parameters as by defaults it will configure as ethernet gateway. Also try using the development branch as it has lots of bugs fixed.



  • @ricorico94 Yesterday I managed to make a working rpi gateway. I am on rpi3, use a socket adapter board for the radio and use domoticz. I posted all the details here: https://forum.mysensors.org/topic/7793/nrf24l01-problems-in-2-1-1-and-2-2-0-beta/24



  • Hi,
    @arraWX : I looked at your post. Unfortunately, the error I face is before the start, as it's during the make, so it appears I follow the first steps you describe (config & make), but I still don't know how to solve the make errors.

    In case it can help understanding what's going on or what to do, I ran the command:

    gcc -v 
    

    which displayed: gcc version 4.6.3 (Debian 4.6.3-14+rpi1)
    Could it be an issue this "+rpi1" whreas I've a PI 2 ?



  • Do not know if it is of any help, but mine says: gcc version 4.9.2 (Raspbian 4.9.2-10)


Log in to reply
 

Suggested Topics

  • 3
  • 347
  • 10
  • 164
  • 109
  • 2

0
Online

11.4k
Users

11.1k
Topics

112.7k
Posts