๐Ÿ’ฌ Building a Raspberry Pi Gateway



  • 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)



  • Hi,
    I tried to update gcc, just in case.. though I'm not sure of what I do.๐Ÿ˜•
    I ran:

    pi@raspberrypi ~/MySensors $ sudo apt-get upgrade gcc
    

    and after a little while, it ended without obvious mistake.
    but if I do gcc -v again, I still get
    gcc version 4.6.3 (Debian 4.6.3-14+rpi1)
    (even after reboot)
    Is there another step to be done, or am I using wrong command ?


  • Mod

    try running first sudo apt-get update and then sudo apt-get upgrade , it should update all packages



  • @gohan : JUst tried it, but same result.. no change on version number.
    is there something like apt-get install to be done also ?


  • Mod

    I don't know really... I am using dietpi on a RPI3 and there is a convenient tool that you can check what to install and installs for you and among the others I have chosen the "Build-Essentials" that contains all the common packages for compile, so I don't know what packages are included.


  • Code Contributor

    @ricorico94 Do you see gcc-4.9 in the list returned by the command below?

    sudo apt-cache search gcc
    

    If it's listed, try installing it by specifying the version:

    sudo apt-get install gcc-4.9
    


  • Hi, wouldn't be proper to include in the guide also the command "--my-rfm69-irq-pin=22" during the configure procedure in order to improve the throughput for the rfm69 radios?



  • Hi,
    Thanks to @marceloaqno and @Gohan and @arraWX , I could progress somewhow.. but still not working.

    When listing the versions as per Marceloagno advice, I could see gcc-4.6 and -4.7 and 4.8 but nothing else (no 4.9).
    I then decided to take the risk of installing the 4.8.. The commands from Marcelagno did not work (well, I mean gcc - v was still showing 4.6).
    Then I followed this tutorial on upgrade step by step to upgrade to gcc-4.8 and then the make command apparently succeeded (well, plenty messages, some warnings.. but no error apparently, as ar as I could see. I dd not find the folders desribed in website, but the commands were still ok.. weird, but I'm too rookie..)

    I then followed again the Mysensors tutorial with
    sudo ./bin/mysgw -h
    sudo ./bin/mysgw -d (and no error message. great!)
    sudo make install
    but then I ran
    sudo systemctl enable mysgw.service
    and I got error message

    sudo: systemctl: command not found
    

    After some search, I saw that it's a Jessie command whereas I discovered that my good old version of Rasp Pi, which was built from the standard Domoticz image in 2015 is still Wheezy

    pi@raspberrypi ~/MySensors $ cat /etc/os-release
    PRETTY_NAME="Raspbian GNU/Linux 7 (wheezy)"
    NAME="Raspbian GNU/Linux"
    VERSION_ID="7"
    VERSION="7 (wheezy)"
    ID=raspbian
    ID_LIKE=debian
    ANSI_COLOR="1;31"
    HOME_URL="http://www.raspbian.org/"
    SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
    BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"
    

    Any idea of what I should do now?..
    another commande equivalent to the systemctl ?
    an upgrade to Jessie (any risk ? and how to do it safely ?)

    br,
    Ricorico94


  • Admin

    I am new to Linux and hopefully have an easy question...
    I have followed the build instructions and everything seems to be working well so far. One issue I'm having is getting node-red to see the usb port (/dev/ttyUSB020). I did some searching online and found that if I run the following command node-red will see the port and things start working.

    sudo chmod 666 /dev/ttyUSB020
    

    The problem is that each time I reboot the Pi the command needs to be run again. Does anyone have any ideas on how I can resolve this so I don't need to run the command each time the system is booted? Thanks in advance.


  • Mod

    @petewill you can put the chmod command in /etc/rc.local
    That will execute it on every boot.
    https://www.raspberrypi.org/documentation/linux/usage/rc-local.md


  • Mod

    @petewill or you can compile the gateway as ethernet or mqtt that are both supported by node-red, making life a little easier


  • Admin

    @mfalkvidd Thanks. I thought about doing something like that but I wasn't sure that was the best process or if something should be modified during the install. I'll give it a shot this way though. Thanks again.


  • Admin

    @gohan Sorry, I did not see your reply earlier. I tried an ethernet gateway in node-red a while ago and could never get it to work with Vera. There was some port conflicts or something. I have never played with mqtt. I need to learn it at some point but I am hoping to finish this project so I can move on to some others. ๐Ÿ™‚ Do you think I will gain significant advantages by using that over a serial/usb gateway?


  • Mod

    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.


  • Admin

    @gohan Thanks! I seem to have the serial stuff working well (but haven't yet put it into production) so I think I'll go that way for now. I definitely need to look into mqtt at some point though.


  • Mod

    Ofc it has its PROs and CONs but I believe it is the way to go for the future.



  • I compiled the gateway for spi1 because I have a display using spi0. Two problems I came across:

    1. the master branch doesn't work. It compiles, it seems to work but it never receives anything.
    2. 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.


  • Mod

    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 ๐Ÿ˜‰



  • A little hint in the tutorial would have saved me a lot of time too.


  • Mod

    I added a comment; I hope my English is sufficiently clear ๐Ÿ˜„



  • 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 1

    Is this normal? I used the same configure was working before.


  • Mod

    @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.1

    Is 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.


  • Mod

    Did you get the latest version from development branch?



  • @gohan Yep! I exactly ran this command:

    git clone https://github.com/mysensors/MySensors.git --branch development && cd MySensors
    

    I'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


  • Mod

    If you keep a myscontroller connected to the gateway, does it stays connected or does it get disconnected at the same time as domoticz? Also try to run the gateway from console with debug enabled so you can actually see what it is doing


  • Plugin Developer

    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/Linux
    

    Using master branch

    https://www.mysensors.org/build/raspberry
    git clone https://github.com/mysensors/MySensors.git --branch master
    

    Configuring 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;PING
    

    Seems 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:PDT
    

    And 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?


  • Mod

    @aglock I put a note on the raspberry gateway page to use latest development in case of problems with stable. Did you try?



  • @gohan yes. Interesting though when I used git to switch between branches it said all files where the same?
    Do you think the fault is in the gateway somehow?



  • @gohan Tried it again
    configure now recognizes the rpi:

    pi@raspberrypi:~/mys_dev $ ./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=BCM2836, Type=rpi2, CPU=armv7l.
    [SECTION] Detecting SPI driver.
      [OK] SPI driver detected:BCM.
    [SECTION] Detecting init system.
      [OK] init system detected: systemd.
    [SECTION] Saving configuration.
    [SECTION] Cleaning previous builds.
    [OK] Finished.
    

    But make fails with the following error:

    -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
    pi@raspberrypi:~/mys_dev $ 
    

    What to do about it?


  • Mod



  • @mfalkvidd Wow, thanks that works! ๐Ÿ˜„



  • Got mysensors gateway working on gpio of my Pi again using ./configure --my-transport=nrf24 --my-rf24-irq-pin=15 --my-leds-err-pin=12 --my-leds-rx-pin=16 --my-leds-tx-pin=18 --my-gateway=ethernet --my-port=5003

    However on tx or tx always the two leds connected to pin 16 and 18 are lit. More people with the same problem?


  • Hardware Contributor

    @Woeka There is (on Arduino Gateway) a function named "DEFINE INVERSE BLINK". Try to search for same for PI....



  • Can we use the "debug ota log" features with the raspberryPi gateway ??

    My node is not accessible and runs MYSBootloader.
    My gateway is raspberryPI.

    Now, I need to update the firmware on my node. Via MYSController, no problems, upload runs like a charm.

    But how to do for debugging my sketch ? Some bugs appear...... , I need to take a look on some vars values.
    Usually, I use the serial port with serial.print(some vars).
    Which alternative I have to use without serial port, only OTA features ?

    Thanks for the great work !!


  • Mod

    Unless you are using an esp8266, I don't think you can remote debug a pro mini. @sundberg84 is working on a serial logger to microsd card, maybe it could help you in some way



  • In fact, I do not need to log, but need to look what's happen in my sketch.
    The new "OTALog" function, MY_OTA_LOG_SENDER_FEATURE or MY_DEBUG_OTA seems to be the good way.
    From the docs, it allows to send a debug message to another node or gateway via OTA.

    But how to got the debug message from OTA node, on the gateway side (RaspberryPi) ?


  • Mod


Log in to reply
 

Suggested Topics

  • 3
  • 2
  • 584
  • 164
  • 110
  • 109

0
Online

11.4k
Users

11.1k
Topics

112.7k
Posts