💬 Building a Raspberry Pi Gateway


  • Mod

    @gohan how is the unregistration done? I didn’t know that was needed. We should probably add upgrade instructions to the build page.



  • @mirodin
    make install before testing did the trick, now it is 2.3.0 . 😃
    Was just going step by step through tutorial, there it´s make -> test -> make install. Didn´t realized it would use old parts if it´s not first install ☺

    @gohan
    thought stop, disable and remove the service would be enough to ensure the service is completely "uninstalled" - could you give me a hint what I´ve missed? 😅



  • Hi,
    I try to access log info from my gateway installed on my domoticz raspberry pi, but I get no success..
    First, I can't find the mysensors.conf file : nothing in the /etc folder. I tried to use "find / -name 'mysensors.conf' 2>/dev/null" command, but it finds nothing.
    I tried creating such a file (then it's found by the fond command above) and in which I have the lines

    log_pipe=0
    log_pipe_file=/tmp/mysgw.pipe
    

    as instructed above.
    I restarted the wole Raspberry PI, then tried the command cat /tmp/mysgw.pipe but error message:

    cat: /tmp/mysgw.pipe: Aucun fichier ou dossier de ce type
    

    (= no file or folder like that)
    I then tried this: sudo mysgw -c /etc/mysensors.conf and I got also error message:

    mysgw: invalid option -- 'c'
    

    I installed the Mysensor gateway on 17th October 2017 and my raspberry pi is working on Wheezy. In Domoticz, I see the Mysensor gateway has version 2.1.1.
    MY gateway seems working fine, communicating properly with sensors (both ways). I'm trying to find log because I face an issue with a new sensor which works properly when powered with external FTDI 3.3V and only 1 way (sensor to gateway only) when powered on battery (I raised question in another post, where I was suggested to check log fil on gtw side..)

    Any idea of what I should do (except "reinstall whole raspberry pi with latest OS..) ?
    Thanks a lot,
    Ricorico


  • Mod

    @ricorico94 there seems to have been some major changes in the raspberry pi gateway, without vorresponding updates to the documentation.

    I have not been able to locate the exact changes though. @marceloaqno might know.


  • Mod



  • @mfalkvidd : thanks a lot ! I had searched for such version history and couldn't find it.
    Indeed it seems introduction of the switches for log files was introduced in February, so I should probably update my install.

    Precisely, talking about upgrade process: I read in previous posts that we should uninstall/unregister the install/service. WHat would be commands to do so ? Should it be:

    sudo systemctl disable mysgw.service
    

    and executed before anything else ? So upgrade process would be:

    sudo systemctl disable mysgw.service
    make
    sudo make install
    sudo systemctl enable mysgw.service
    

    (and maybe test the gateway before the "systemctl enable..")
    Is there anyfile to remove manually ? or any other command to apply before or after ?



  • Would someone be willing to create a post that lists each step required to set up the simple encryption+signing option? I understand I have to add a password line to the arduino sketch. But how exactly one sets up the server side is still a bit of a mystery to me. It would rock if there was a similar simple command to give during the make process.


  • Contest Winner

    @alowhum https://www.mysensors.org/apidocs/group__RaspberryPiGateway.html
    That is straight from the documentation. Which in the case of Linux ports is also what you get if you issue ./configure --help
    I believe.



  • @alowhum
    I also need this info...


  • Code Contributor

    @ricorico94 to update your install run:

    sudo make install
    sudo systemctl restart mysgw.service
    


  • Thank you for the clarification !



  • @anticimex said in 💬 Building a Raspberry Pi Gateway:

    https://www.mysensors.org/apidocs/group__RaspberryPiGateway.html

    @Anticimex Thanks, but a documentation page (which I have checked before) is not the same as an easy to use guide for beginners.

    In my ideal world it would be this:

    1. Add the MY_SIMPLE_PASSWORD line to your Arduino sketch.
    2. Compile the gateway with --MY_SIMPLE_PASSWORD="yabadabad000!"
    3. Done

  • Contest Winner

    @alowhum it is not easy to have simple guides tailored for specific usecases when there are so many options.
    Those tend to not follow implementation and our documentation is made to live with the implementation to ensure it is always up to date. Maintaining a simple guide for every conceivable use case is simply not feasible. The signing and security documentation does have a step by step guide for setting up security.



  • @Anticimex: I understand, but:

    • Currently even the outline of the steps eludes me. Seeing the steps for usecase #14 or #385 would already help me understand the scope, and to see what ballpark of difficulty it's in. It's easier to mod a guide when there is something to go on.
    • Secondly, there must be a common use case? The defaults that MySensors uses already suggests a lot of these: a Raspberry Pi with the default settings of the software (ethernet), with the nRF24 radio.

  • Contest Winner

    @alowhum ok, well first of all, I don't have a rPi setup to test on, secondly I don't have time to look into that (this) environment.
    But, this is a open source project so anyone is free to contribute with both code and documentation (which in our case lives in the same repositories) so if there are guides missing enyone is welcome to contribute with experiences and guides to help others out.
    It is just important to understand that the guides need to be maintained in order to remain valid.
    I don't mind guides at all. But it makes little sense for me to write guides for an environment which I am not familiar with nor can test on.



  • @Anticimex: Sure, that's totally understandable. There are other people on the forum 🙂 Can anyone help me and @pepson out?

    And it is exactly my goal to create a more elaborate guide after someone points out the basic steps.



  • I have designed a 3D printable enclosure for this and the design/STL files are available here: https://www.thingiverse.com/thing:3072244


  • Admin

    @John-Oliva, nice! Added it to the MySensors collection:
    https://www.thingiverse.com/mysensors/collections/mysensors



  • @korleone HI
    I have same error
    Can you write that rigth do you ser to folder ?
    Andrey



  • @cadet I just remove /usr/local/bin/mysgw and compile again
    And I have one question - why is it happened?
    MysGW work fine about 3 months.


  • Mod

    what problem did you have?



  • @gohan mysgw: ERROR accept: Bad file descriptor - today morning


  • Mod

    I get that when another instance of the process is already running



  • @gohan I was try to find it with ps -ef, but nothing found. Reload RPI.
    @korleone was write about this
    "Hello, it seems I found the problem: Complete newbie thing: 🔰
    sudo ./bin/mysgw -h worked, but /usr/local/bin/mysgw didn't
    I just gave the right to the folder, and now it's working."

    But what right hi gave ?


  • Mod

    sudo ./bin/mysgw -h could work, it only depends in which folder you are running the command from



  • FYI looks like on the 2.3.1 beta the transport has been changed to rf24 instead of nrf24



  • Is the rasberry pi serving as a gateway and a server in this project? Or do you have to have a separate pi to host something like openhab and another pi for your gateway?


  • Mod

    Hi @magjef29, welcome to the MySensors forum!

    You can run your controller(s) on the same Raspberry Pi.

    Depending on what tou mean by ”server”, the gateway can be a server, but the gateway is not a controller.

    If you haven’t already, see the getting started guide for information about the different parts.



  • Hi! Does anybody test Cubieboard as Gateway? I have a cubieboard runing archlinux with spi enabled in kernel. How i define pins for nrf24 gateway connection? Or i need to make big changes in code to star work with different bord than Rpi?
    Best regards



  • This is my old dream to connect directly nrf to Cubieboard GPIOs. Few years ago i try to do this without success using this lib - https://github.com/bearpawmaxim/librf24-sunxi


  • Mod

    Hi @артем-тихонович, welcome to the MySensors forum!

    For the NRF24, the same defines as for normal sketches are used. Documentation: https://www.mysensors.org/apidocs/group__RF24SettingGrpPub.html
    The defines can be added to the Raspberry Pi gateway by following the instructions on https://www.mysensors.org/build/raspberry#advanced

    I have not heard about anyone using the Cubieboard but hopefully someone else has. The information provided on https://www.mysensors.org/build/orange might be useful if the Cubieboard is similar to the Orange Pie.

    oh, and in case you haven't already, see the ./configure --help text about the most common NRF24 defines; you might not need the advanced build options.



  • Thank you, @mfalkvidd. Ihave a little troubles with correct defining gpios from Cubie. In fex file the gpios defines is:
    [gpio_para]
    gpio_used = 1
    gpio_num = 2
    gpio_pin_1 = port:PH07<0><default><default><default>
    gpio_pin_2 = port:PH15<6><default><default><default>
    in sys/gpio:
    [root@Archey boot]# ls -ls /sys/class/gpio/
    total 0
    0 --w------- 1 root root 4096 Nov 21 11:58 export
    0 lrwxrwxrwx 1 root root 0 Nov 18 17:01 gpio1_ph7 -> ../../devices/platform/gpio-sunxi/gpio/gpio1_ph7
    0 lrwxrwxrwx 1 root root 0 Nov 21 11:54 gpio2_ph15 -> ../../devices/platform/gpio-sunxi/gpio/gpio2_ph15
    0 lrwxrwxrwx 1 root root 0 Nov 18 10:45 gpiochip1 -> ../../devices/platform/gpio-sunxi/gpio/gpiochip1
    0 --w------- 1 root root 4096 Nov 18 16:52 unexport

    When i define in configure: --my-rf24-ce-pin=1 --my-rf24-cs-pin=2 build is ok, but test failed with error:
    Nov 21 11:58:15 ERROR Could not open /sys/class/gpio/gpio1/direction[root@Archey MySensors]#
    when i define --my-transport=nrf24 --my-rf24-ce-pin=gpio1_ph7 the build failed wirh error:
    ./drivers/RF24/RF24.cpp: In function 'void RF24_ce(bool)':
    <command-line>:0:16: error: 'gpio1_ph7' was not declared in this scope
    ./drivers/RF24/RF24.cpp:52:17: note: in expansion of macro 'MY_RF24_CE_PIN'
    hwDigitalWrite(MY_RF24_CE_PIN, level);

    How can i resolve this problem? Please help.



  • I just see for another app using nrf24 on cubieboard
    and funcrtion to use nrf24 have GPIO defining is RF24 radio(SUNXI_GPB(10), SUNXI_GPB(11), "/dev/spidev0.0");
    GPIO set using this style: SUNXI_GPB(10), this type of gpio defined in #include "gpio_sun4i.h" file. Maybe this specific defining in ARCHLINUX ARM distro.



  • I hereby donate these images:

    4_1542918057729_step1.png 3_1542918057729_step2.png 2_1542918057728_step3.png 1_1542918057727_step4.png 0_1542918057727_step5.png


  • Mod

    In case someone can help @артем-тихонович, please post the answer in https://forum.mysensors.org/post/95304 so we don’t unnecessarily discuss the same thing in separate threads.



  • I get weird errors when "make"ing. Branch master.
    My command:
    sudo ./configure --my-transport=rf24 --my-rf24-irq-pin=15 --my-signing-debug --my-signing=password --my-security-password=ZZZZZZZZZZ --my-gateway=mqtt --my-controller-ip-address=127.0.0.1 --my-mqtt-user=XXXX --my-mqtt-password=YYYYY --my-mqtt-publish-topic-prefix=mysensors-out --my-mqtt-subscribe-topic-prefix=mysensors-in --my-mqtt-client-id=mygateway1 --my-leds-err-pin=12 --my-leds-rx-pin=16 --my-leds-tx-pin=18 --my-config-file=/etc/mysensors.conf

    M -c examples_linux/mysgw.cpp -o build/examples_linux/mysgw.o
    In file included from ./MySensors.h:148:0,
                     from examples_linux/mysgw.cpp:82:
    ./core/MySigningAtsha204Soft.cpp: In function ‘bool signerAtsha204SoftGetNonce(MyMessage&)’:
    ./core/MySigningAtsha204Soft.cpp:173:55: error: no matching function for call to ‘min(unsigned int, int)’
      msg.set(_signing_verifying_nonce, MIN(MAX_PAYLOAD, 32));
                                                           ^
    In file included from /usr/include/c++/6/algorithm:62:0,
                     from ./drivers/Linux/Arduino.h:32,
                     from ./MySensors.h:39,
                     from examples_linux/mysgw.cpp:82:
    /usr/include/c++/6/bits/stl_algo.h:3453:5: note: candidate: template<class _Tp, class _Compare> constexpr _Tp std::min(std::initializer_list<_Tp>, _Compare)
         min(initializer_list<_Tp> __l, _Compare __comp)
         ^~~
    /usr/include/c++/6/bits/stl_algo.h:3453:5: note:   template argument deduction/substitution failed:
    In file included from ./MySensors.h:148:0,
                     from examples_linux/mysgw.cpp:82:
    ./core/MySigningAtsha204Soft.cpp:173:55: note:   mismatched types ‘std::initializer_list<_Tp>’ and ‘unsigned int’
      msg.set(_signing_verifying_nonce, MIN(MAX_PAYLOAD, 32));
                                                           ^
    In file included from /usr/include/c++/6/algorithm:62:0,
                     from ./drivers/Linux/Arduino.h:32,
                     from ./MySensors.h:39,
                     from examples_linux/mysgw.cpp:82:
    /usr/include/c++/6/bits/stl_algo.h:3447:5: note: candidate: template<class _Tp> constexpr _Tp std::min(std::initializer_list<_Tp>)
         min(initializer_list<_Tp> __l)
         ^~~
    /usr/include/c++/6/bits/stl_algo.h:3447:5: note:   template argument deduction/substitution failed:
    In file included from ./MySensors.h:148:0,
                     from examples_linux/mysgw.cpp:82:
    ./core/MySigningAtsha204Soft.cpp:173:55: note:   mismatched types ‘std::initializer_list<_Tp>’ and ‘unsigned int’
      msg.set(_signing_verifying_nonce, MIN(MAX_PAYLOAD, 32));
                                                           ^
    In file included from /usr/include/c++/6/bits/char_traits.h:39:0,
                     from /usr/include/c++/6/ios:40,
                     from /usr/include/c++/6/ostream:38,
                     from /usr/include/c++/6/iostream:39,
                     from examples_linux/mysgw.cpp:20:
    /usr/include/c++/6/bits/stl_algobase.h:243:5: note: candidate: template<class _Tp, class _Compare> constexpr const _Tp& std::min(const _Tp&, const _Tp&, _Compare)
         min(const _Tp& __a, const _Tp& __b, _Compare __comp)
         ^~~
    /usr/include/c++/6/bits/stl_algobase.h:243:5: note:   template argument deduction/substitution failed:
    In file included from ./MySensors.h:148:0,
                     from examples_linux/mysgw.cpp:82:
    ./core/MySigningAtsha204Soft.cpp:173:55: note:   deduced conflicting types for parameter ‘const _Tp’ (‘unsigned int’ and ‘int’)
      msg.set(_signing_verifying_nonce, MIN(MAX_PAYLOAD, 32));
                                                           ^
    In file included from /usr/include/c++/6/bits/char_traits.h:39:0,
                     from /usr/include/c++/6/ios:40,
                     from /usr/include/c++/6/ostream:38,
                     from /usr/include/c++/6/iostream:39,
                     from examples_linux/mysgw.cpp:20:
    /usr/include/c++/6/bits/stl_algobase.h:195:5: note: candidate: template<class _Tp> constexpr const _Tp& std::min(const _Tp&, const _Tp&)
         min(const _Tp& __a, const _Tp& __b)
         ^~~
    /usr/include/c++/6/bits/stl_algobase.h:195:5: note:   template argument deduction/substitution failed:
    In file included from ./MySensors.h:148:0,
                     from examples_linux/mysgw.cpp:82:
    ./core/MySigningAtsha204Soft.cpp:173:55: note:   deduced conflicting types for parameter ‘const _Tp’ (‘unsigned int’ and ‘int’)
      msg.set(_signing_verifying_nonce, MIN(MAX_PAYLOAD, 32));
                                                           ^
    ./core/MySigningAtsha204Soft.cpp: In function ‘void signerAtsha204SoftPutNonce(MyMessage&)’:
    ./core/MySigningAtsha204Soft.cpp:190:89: error: no matching function for call to ‘min(unsigned int, int)’
      (void)memcpy((void *)_signing_nonce, (const void *)msg.getCustom(), MIN(MAX_PAYLOAD, 32));
                                                                                             ^
    In file included from /usr/include/c++/6/algorithm:62:0,
                     from ./drivers/Linux/Arduino.h:32,
                     from ./MySensors.h:39,
                     from examples_linux/mysgw.cpp:82:
    /usr/include/c++/6/bits/stl_algo.h:3453:5: note: candidate: template<class _Tp, class _Compare> constexpr _Tp std::min(std::initializer_list<_Tp>, _Compare)
         min(initializer_list<_Tp> __l, _Compare __comp)
         ^~~
    /usr/include/c++/6/bits/stl_algo.h:3453:5: note:   template argument deduction/substitution failed:
    In file included from ./MySensors.h:148:0,
                     from examples_linux/mysgw.cpp:82:
    ./core/MySigningAtsha204Soft.cpp:190:89: note:   mismatched types ‘std::initializer_list<_Tp>’ and ‘unsigned int’
      (void)memcpy((void *)_signing_nonce, (const void *)msg.getCustom(), MIN(MAX_PAYLOAD, 32));
                                                                                             ^
    In file included from /usr/include/c++/6/algorithm:62:0,
                     from ./drivers/Linux/Arduino.h:32,
                     from ./MySensors.h:39,
                     from examples_linux/mysgw.cpp:82:
    /usr/include/c++/6/bits/stl_algo.h:3447:5: note: candidate: template<class _Tp> constexpr _Tp std::min(std::initializer_list<_Tp>)
         min(initializer_list<_Tp> __l)
         ^~~
    /usr/include/c++/6/bits/stl_algo.h:3447:5: note:   template argument deduction/substitution failed:
    In file included from ./MySensors.h:148:0,
                     from examples_linux/mysgw.cpp:82:
    ./core/MySigningAtsha204Soft.cpp:190:89: note:   mismatched types ‘std::initializer_list<_Tp>’ and ‘unsigned int’
      (void)memcpy((void *)_signing_nonce, (const void *)msg.getCustom(), MIN(MAX_PAYLOAD, 32));
                                                                                             ^
    In file included from /usr/include/c++/6/bits/char_traits.h:39:0,
                     from /usr/include/c++/6/ios:40,
                     from /usr/include/c++/6/ostream:38,
                     from /usr/include/c++/6/iostream:39,
                     from examples_linux/mysgw.cpp:20:
    /usr/include/c++/6/bits/stl_algobase.h:243:5: note: candidate: template<class _Tp, class _Compare> constexpr const _Tp& std::min(const _Tp&, const _Tp&, _Compare)
         min(const _Tp& __a, const _Tp& __b, _Compare __comp)
         ^~~
    /usr/include/c++/6/bits/stl_algobase.h:243:5: note:   template argument deduction/substitution failed:
    In file included from ./MySensors.h:148:0,
                     from examples_linux/mysgw.cpp:82:
    ./core/MySigningAtsha204Soft.cpp:190:89: note:   deduced conflicting types for parameter ‘const _Tp’ (‘unsigned int’ and ‘int’)
      (void)memcpy((void *)_signing_nonce, (const void *)msg.getCustom(), MIN(MAX_PAYLOAD, 32));
                                                                                             ^
    In file included from /usr/include/c++/6/bits/char_traits.h:39:0,
                     from /usr/include/c++/6/ios:40,
                     from /usr/include/c++/6/ostream:38,
                     from /usr/include/c++/6/iostream:39,
                     from examples_linux/mysgw.cpp:20:
    /usr/include/c++/6/bits/stl_algobase.h:195:5: note: candidate: template<class _Tp> constexpr const _Tp& std::min(const _Tp&, const _Tp&)
         min(const _Tp& __a, const _Tp& __b)
         ^~~
    /usr/include/c++/6/bits/stl_algobase.h:195:5: note:   template argument deduction/substitution failed:
    In file included from ./MySensors.h:148:0,
                     from examples_linux/mysgw.cpp:82:
    ./core/MySigningAtsha204Soft.cpp:190:89: note:   deduced conflicting types for parameter ‘const _Tp’ (‘unsigned int’ and ‘int’)
      (void)memcpy((void *)_signing_nonce, (const void *)msg.getCustom(), MIN(MAX_PAYLOAD, 32));
                                                                                             ^
    ./core/MySigningAtsha204Soft.cpp: In function ‘bool signerAtsha204SoftSignMsg(MyMessage&)’:
    ./core/MySigningAtsha204Soft.cpp:229:50: error: no matching function for call to ‘min(unsigned int, int)’
                   MIN(MAX_PAYLOAD-mGetLength(msg), 32));
                                                      ^
    In file included from /usr/include/c++/6/algorithm:62:0,
                     from ./drivers/Linux/Arduino.h:32,
                     from ./MySensors.h:39,
                     from examples_linux/mysgw.cpp:82:
    /usr/include/c++/6/bits/stl_algo.h:3453:5: note: candidate: template<class _Tp, class _Compare> constexpr _Tp std::min(std::initializer_list<_Tp>, _Compare)
         min(initializer_list<_Tp> __l, _Compare __comp)
         ^~~
    /usr/include/c++/6/bits/stl_algo.h:3453:5: note:   template argument deduction/substitution failed:
    In file included from ./MySensors.h:148:0,
                     from examples_linux/mysgw.cpp:82:
    ./core/MySigningAtsha204Soft.cpp:229:50: note:   mismatched types ‘std::initializer_list<_Tp>’ and ‘unsigned int’
                   MIN(MAX_PAYLOAD-mGetLength(msg), 32));
                                                      ^
    In file included from /usr/include/c++/6/algorithm:62:0,
                     from ./drivers/Linux/Arduino.h:32,
                     from ./MySensors.h:39,
                     from examples_linux/mysgw.cpp:82:
    /usr/include/c++/6/bits/stl_algo.h:3447:5: note: candidate: template<class _Tp> constexpr _Tp std::min(std::initializer_list<_Tp>)
         min(initializer_list<_Tp> __l)
         ^~~
    /usr/include/c++/6/bits/stl_algo.h:3447:5: note:   template argument deduction/substitution failed:
    In file included from ./MySensors.h:148:0,
                     from examples_linux/mysgw.cpp:82:
    ./core/MySigningAtsha204Soft.cpp:229:50: note:   mismatched types ‘std::initializer_list<_Tp>’ and ‘unsigned int’
                   MIN(MAX_PAYLOAD-mGetLength(msg), 32));
                                                      ^
    In file included from /usr/include/c++/6/bits/char_traits.h:39:0,
                     from /usr/include/c++/6/ios:40,
                     from /usr/include/c++/6/ostream:38,
                     from /usr/include/c++/6/iostream:39,
                     from examples_linux/mysgw.cpp:20:
    /usr/include/c++/6/bits/stl_algobase.h:243:5: note: candidate: template<class _Tp, class _Compare> constexpr const _Tp& std::min(const _Tp&, const _Tp&, _Compare)
         min(const _Tp& __a, const _Tp& __b, _Compare __comp)
         ^~~
    /usr/include/c++/6/bits/stl_algobase.h:243:5: note:   template argument deduction/substitution failed:
    In file included from ./MySensors.h:148:0,
                     from examples_linux/mysgw.cpp:82:
    ./core/MySigningAtsha204Soft.cpp:229:50: note:   deduced conflicting types for parameter ‘const _Tp’ (‘unsigned int’ and ‘int’)
                   MIN(MAX_PAYLOAD-mGetLength(msg), 32));
                                                      ^
    In file included from /usr/include/c++/6/bits/char_traits.h:39:0,
                     from /usr/include/c++/6/ios:40,
                     from /usr/include/c++/6/ostream:38,
                     from /usr/include/c++/6/iostream:39,
                     from examples_linux/mysgw.cpp:20:
    /usr/include/c++/6/bits/stl_algobase.h:195:5: note: candidate: template<class _Tp> constexpr const _Tp& std::min(const _Tp&, const _Tp&)
         min(const _Tp& __a, const _Tp& __b)
         ^~~
    /usr/include/c++/6/bits/stl_algobase.h:195:5: note:   template argument deduction/substitution failed:
    In file included from ./MySensors.h:148:0,
                     from examples_linux/mysgw.cpp:82:
    ./core/MySigningAtsha204Soft.cpp:229:50: note:   deduced conflicting types for parameter ‘const _Tp’ (‘unsigned int’ and ‘int’)
                   MIN(MAX_PAYLOAD-mGetLength(msg), 32));
                                                      ^
    ./core/MySigningAtsha204Soft.cpp: In function ‘bool signerAtsha204SoftVerifyMsg(MyMessage&)’:
    ./core/MySigningAtsha204Soft.cpp:283:55: error: no matching function for call to ‘min(unsigned int, int)’
                        MIN(MAX_PAYLOAD-mGetLength(msg), 32))) {
                                                           ^
    In file included from /usr/include/c++/6/algorithm:62:0,
                     from ./drivers/Linux/Arduino.h:32,
                     from ./MySensors.h:39,
                     from examples_linux/mysgw.cpp:82:
    /usr/include/c++/6/bits/stl_algo.h:3453:5: note: candidate: template<class _Tp, class _Compare> constexpr _Tp std::min(std::initializer_list<_Tp>, _Compare)
         min(initializer_list<_Tp> __l, _Compare __comp)
         ^~~
    /usr/include/c++/6/bits/stl_algo.h:3453:5: note:   template argument deduction/substitution failed:
    In file included from ./MySensors.h:148:0,
                     from examples_linux/mysgw.cpp:82:
    ./core/MySigningAtsha204Soft.cpp:283:55: note:   mismatched types ‘std::initializer_list<_Tp>’ and ‘unsigned int’
                        MIN(MAX_PAYLOAD-mGetLength(msg), 32))) {
                                                           ^
    In file included from /usr/include/c++/6/algorithm:62:0,
                     from ./drivers/Linux/Arduino.h:32,
                     from ./MySensors.h:39,
                     from examples_linux/mysgw.cpp:82:
    /usr/include/c++/6/bits/stl_algo.h:3447:5: note: candidate: template<class _Tp> constexpr _Tp std::min(std::initializer_list<_Tp>)
         min(initializer_list<_Tp> __l)
         ^~~
    /usr/include/c++/6/bits/stl_algo.h:3447:5: note:   template argument deduction/substitution failed:
    In file included from ./MySensors.h:148:0,
                     from examples_linux/mysgw.cpp:82:
    ./core/MySigningAtsha204Soft.cpp:283:55: note:   mismatched types ‘std::initializer_list<_Tp>’ and ‘unsigned int’
                        MIN(MAX_PAYLOAD-mGetLength(msg), 32))) {
                                                           ^
    In file included from /usr/include/c++/6/bits/char_traits.h:39:0,
                     from /usr/include/c++/6/ios:40,
                     from /usr/include/c++/6/ostream:38,
                     from /usr/include/c++/6/iostream:39,
                     from examples_linux/mysgw.cpp:20:
    /usr/include/c++/6/bits/stl_algobase.h:243:5: note: candidate: template<class _Tp, class _Compare> constexpr const _Tp& std::min(const _Tp&, const _Tp&, _Compare)
         min(const _Tp& __a, const _Tp& __b, _Compare __comp)
         ^~~
    /usr/include/c++/6/bits/stl_algobase.h:243:5: note:   template argument deduction/substitution failed:
    In file included from ./MySensors.h:148:0,
                     from examples_linux/mysgw.cpp:82:
    ./core/MySigningAtsha204Soft.cpp:283:55: note:   deduced conflicting types for parameter ‘const _Tp’ (‘unsigned int’ and ‘int’)
                        MIN(MAX_PAYLOAD-mGetLength(msg), 32))) {
                                                           ^
    In file included from /usr/include/c++/6/bits/char_traits.h:39:0,
                     from /usr/include/c++/6/ios:40,
                     from /usr/include/c++/6/ostream:38,
                     from /usr/include/c++/6/iostream:39,
                     from examples_linux/mysgw.cpp:20:
    /usr/include/c++/6/bits/stl_algobase.h:195:5: note: candidate: template<class _Tp> constexpr const _Tp& std::min(const _Tp&, const _Tp&)
         min(const _Tp& __a, const _Tp& __b)
         ^~~
    /usr/include/c++/6/bits/stl_algobase.h:195:5: note:   template argument deduction/substitution failed:
    In file included from ./MySensors.h:148:0,
                     from examples_linux/mysgw.cpp:82:
    ./core/MySigningAtsha204Soft.cpp:283:55: note:   deduced conflicting types for parameter ‘const _Tp’ (‘unsigned int’ and ‘int’)
                        MIN(MAX_PAYLOAD-mGetLength(msg), 32))) {
                                                           ^
    ./core/MySigningAtsha204Soft.cpp: In function ‘void signerCalculateSignature(MyMessage&, bool)’:
    ./core/MySigningAtsha204Soft.cpp:307:48: error: no matching function for call to ‘min(uint8_t&, int)’
       uint8_t bytes_to_include = MIN(bytes_left, 32);
                                                    ^
    In file included from /usr/include/c++/6/algorithm:62:0,
                     from ./drivers/Linux/Arduino.h:32,
                     from ./MySensors.h:39,
                     from examples_linux/mysgw.cpp:82:
    /usr/include/c++/6/bits/stl_algo.h:3453:5: note: candidate: template<class _Tp, class _Compare> constexpr _Tp std::min(std::initializer_list<_Tp>, _Compare)
         min(initializer_list<_Tp> __l, _Compare __comp)
         ^~~
    /usr/include/c++/6/bits/stl_algo.h:3453:5: note:   template argument deduction/substitution failed:
    In file included from ./MySensors.h:148:0,
                     from examples_linux/mysgw.cpp:82:
    ./core/MySigningAtsha204Soft.cpp:307:48: note:   mismatched types ‘std::initializer_list<_Tp>’ and ‘unsigned char’
       uint8_t bytes_to_include = MIN(bytes_left, 32);
                                                    ^
    In file included from /usr/include/c++/6/algorithm:62:0,
                     from ./drivers/Linux/Arduino.h:32,
                     from ./MySensors.h:39,
                     from examples_linux/mysgw.cpp:82:
    /usr/include/c++/6/bits/stl_algo.h:3447:5: note: candidate: template<class _Tp> constexpr _Tp std::min(std::initializer_list<_Tp>)
         min(initializer_list<_Tp> __l)
         ^~~
    /usr/include/c++/6/bits/stl_algo.h:3447:5: note:   template argument deduction/substitution failed:
    In file included from ./MySensors.h:148:0,
                     from examples_linux/mysgw.cpp:82:
    ./core/MySigningAtsha204Soft.cpp:307:48: note:   mismatched types ‘std::initializer_list<_Tp>’ and ‘unsigned char’
       uint8_t bytes_to_include = MIN(bytes_left, 32);
                                                    ^
    In file included from /usr/include/c++/6/bits/char_traits.h:39:0,
                     from /usr/include/c++/6/ios:40,
                     from /usr/include/c++/6/ostream:38,
                     from /usr/include/c++/6/iostream:39,
                     from examples_linux/mysgw.cpp:20:
    /usr/include/c++/6/bits/stl_algobase.h:243:5: note: candidate: template<class _Tp, class _Compare> constexpr const _Tp& std::min(const _Tp&, const _Tp&, _Compare)
         min(const _Tp& __a, const _Tp& __b, _Compare __comp)
         ^~~
    /usr/include/c++/6/bits/stl_algobase.h:243:5: note:   template argument deduction/substitution failed:
    In file included from ./MySensors.h:148:0,
                     from examples_linux/mysgw.cpp:82:
    ./core/MySigningAtsha204Soft.cpp:307:48: note:   deduced conflicting types for parameter ‘const _Tp’ (‘unsigned char’ and ‘int’)
       uint8_t bytes_to_include = MIN(bytes_left, 32);
                                                    ^
    In file included from /usr/include/c++/6/bits/char_traits.h:39:0,
                     from /usr/include/c++/6/ios:40,
                     from /usr/include/c++/6/ostream:38,
                     from /usr/include/c++/6/iostream:39,
                     from examples_linux/mysgw.cpp:20:
    /usr/include/c++/6/bits/stl_algobase.h:195:5: note: candidate: template<class _Tp> constexpr const _Tp& std::min(const _Tp&, const _Tp&)
         min(const _Tp& __a, const _Tp& __b)
         ^~~
    /usr/include/c++/6/bits/stl_algobase.h:195:5: note:   template argument deduction/substitution failed:
    In file included from ./MySensors.h:148:0,
                     from examples_linux/mysgw.cpp:82:
    ./core/MySigningAtsha204Soft.cpp:307:48: note:   deduced conflicting types for parameter ‘const _Tp’ (‘unsigned char’ and ‘int’)
       uint8_t bytes_to_include = MIN(bytes_left, 32);
                                                    ^
    ./core/MySigningAtsha204Soft.cpp: In function ‘bool signerAtsha204SoftVerifyMsg(MyMessage&)’:
    ./core/MySigningAtsha204Soft.cpp:289:1: warning: control reaches end of non-void function [-Wreturn-type]
     }
     ^
    Makefile:98: recipe for target 'build/examples_linux/mysgw.o' failed
    make: *** [build/examples_linux/mysgw.o] Error 1
    

    Can someone better versed help?
    EDIT: tested branch development, no problems.


  • Mod



  • @mfalkvidd It sure looks the same. I did a fresh git clone to update my gateway, so shouldn't it be fixed? From what appears on github it looked fixed..
    EDIT appears fixed in development branch. But not master?


  • Mod

    @masmat said in 💬 Building a Raspberry Pi Gateway:

    EDIT appears fixed in development branch. But not master?

    Yes that is correct



  • hi,
    is it possible to conect NRF24 to SPI1 channel on RBpi3?
    (i mean pins 26, 35, 36,38,40)??


  • Mod

    Welcome to the forum @robert-król
    I have not tried it myself, but I beleive https://forum.mysensors.org/post/76079 shows how to do it.



  • Hello

    Is it possible to redefine pin used for DI00 with rfm69 (with configure option for example) ?
    Indeed, DI00 is on pin 22 on raspberry, and pin 2 on arduino.
    But with NRF, pin 2 on arduino is for IRQ, which is connected to pin 15 on raspberry.

    So if it was possible to force pin 15 for DI00, we could use adaptator card like this one https://www.mysensors.org/hardware/nrf2rfm69.



  • Hi, just build an Ethernet gateway on a raspberry pi B+ following the instructions on this site. And it works! I'm running raspbian stretch lite and used the master branch. No issues. I use the RFM69 radio and this gateway has the HW model. I did have to update al my nodes to use the new RFM69 drivers but that was clearly mentioned in the article.
    I have two questions:

    1. In this section :
    log_pipe=0
    log_pipe_file=/tmp/mysgw.pipe
    

    Is this correct, I think there should be a 1 to enable this type of logging.

    1. When a new version of mysensors is released, how do I update the gateway version on the raspberry pi?

    And here is a picture of my work:
    alt text

    Thanks for the effort you put into this project!



  • Has the issue with RFM automatic transmission control been addressed?



  • @kted Can you give me a pointer to the details of this issue? I'm willing to do some tests and report back my findings. Some info about my configuration, I have 5 nodes at this moment, all battery feeded, they are sending only nodes. They all work but they have a interval of several minutes between sending. The gateway is connected to Domoticz running on another Raspberry PI.



  • @rolo6442u I built an Raspberry gateway using an RFM69 radio, to replace one built around a NodeMCU.
    All nodes are transmit only, and using the latest stable API.
    I noticed that all sensors were using max TX power after the first couple of transmissions, although they were respecting the ATC setting before, and were using minimum power most of the time.
    Now I am concerned about battery life, so I switched back to the NodeMCU gateway, waiting for a fix.
    I'll put together a temporary net, with a RPi0 gateway and a single node later, to show some real data, if you need any more information.



  • @kted I wil do some tests to check if I see this behavior. Just build a simple test node with a pushbutton, on 2 AA batteries. This node has the low power W radio module. How did you discover/measure that the max TX power was used?


  • Mod

    @kted could be the same problem as discussed in https://forum.mysensors.org/topic/9796/rfm69-atc-not-working/



  • @rolo6442u From what the node itself reports from transportGetSignalReport(SR_TX_POWER_PERCENT). It starts from say 50%, and after a coule of transmissions it goes up to 100%, when the nodes are 1m apart. When using a stand alone ESP8266 gateway, it drops to 0%.
    I'll have the nodes ready in a couple of hours, after I come home from work...



  • Did some tests and I do see the TX power climbing to 100% after a few transmits :

    -42 :transportGetReceivingRSSI()
    127 :transportGetSendingRSSI()
    -256 :transportGetReceivingSNR()
    -256 :transportGetSendingSNR()
    6 :transportGetTxPowerLevel()
    77 :transportGetTxPowerPercent()
    0 :transportInternalToRSSI(_transportSM.uplinkQualityRSSI)
    
    -46 :transportGetReceivingRSSI()
    -102 :transportGetSendingRSSI()
    -256 :transportGetReceivingSNR()
    -256 :transportGetSendingSNR()
    7 :transportGetTxPowerLevel()
    80 :transportGetTxPowerPercent()
    0 :transportInternalToRSSI(_transportSM.uplinkQualityRSSI)
    
    -47 :transportGetReceivingRSSI()
    -102 :transportGetSendingRSSI()
    -256 :transportGetReceivingSNR()
    -256 :transportGetSendingSNR()
    10 :transportGetTxPowerLevel()
    90 :transportGetTxPowerPercent()
    0 :transportInternalToRSSI(_transportSM.uplinkQualityRSSI)
    
    -47 :transportGetReceivingRSSI()
    -105 :transportGetSendingRSSI()
    -256 :transportGetReceivingSNR()
    -256 :transportGetSendingSNR()
    11 :transportGetTxPowerLevel()
    93 :transportGetTxPowerPercent()
    0 :transportInternalToRSSI(_transportSM.uplinkQualityRSSI)
    
    -47 :transportGetReceivingRSSI()
    -103 :transportGetSendingRSSI()
    -256 :transportGetReceivingSNR()
    -256 :transportGetSendingSNR()
    13 :transportGetTxPowerLevel()
    100 :transportGetTxPowerPercent()
    0 :transportInternalToRSSI(_transportSM.uplinkQualityRSSI)
    
    -47 :transportGetReceivingRSSI()
    -106 :transportGetSendingRSSI()
    -256 :transportGetReceivingSNR()
    -256 :transportGetSendingSNR()
    13 :transportGetTxPowerLevel()
    100 :transportGetTxPowerPercent()
    0 :transportInternalToRSSI(_transportSM.uplinkQualityRSSI)
    
    

    Not sure if this has a great impact on battery life, depends on how often the node sends a message. Al my nodes have an interval of about 10 minutes. I leave the gateway running for now. Having it running on this PI is a great advantage for me. Will try to do some current measurement on this node and calculate what the impact is on battery life.


  • Mod

    @barrydou I gave a double gateway running on my raspberry both nrf24 and rfm69, still on v. 2.2



  • @gohan Nice. I was thinking to do that same at some time, but I wasn't sure if the Raspberry could handle the load, since I also run domoticz on it, along with pi-hole.
    How many devices do you have on each gateway?


 

Suggested Topics

305
Online

8.2k
Users

9.0k
Topics

95.9k
Posts