MySensors Raspberry port suggestions
-
Would it be possible to enable both the Serial and Ethernet communication at the same time in the gateway? I'm about to try PiDome as a controller. And it seems that it only have support for Serial gateway. But the Ethernet gateway is so practical to use when I need to debug and use MYScontroller to connect and see what is happening. Or if I would like to try OTA updates of my nodes.
-
@raptorjr some people have used nodered to "split" the communication to more than one controller. NodeRed has the ability to prevent certain types of messages. If two controllers are connected to the same gateway without filtering, both controllers will respond which might be very confusing for the node.
https://forum.mysensors.org/topic/4112/is-it-possible-to-connect-an-ethernet-gateway-to-node-red-and-share-it/ is a pretty good place to start
-
Thank you. Maybe I should just try out PiDome first with serial gateway
But anyway, I thought that mysGateway would create something like /dev/ttyMySensorsGateway that I could then use, or ln to something like ttyUSB20, and add it in PiDome.
But after compiling and installing mysGateway with serial support I only get a a error "Unable to open the serial port /dev/ttyUSB0". Am I thinking the wrong way? Isn't mysGateway supposed to work like the old Raspberry MySensors gateway?
-
@raptorjr Sorry, pseudo tty isn't supported. I will try to add it till the end of the day.
-
What does the serial gateway do then? Can I use it as it is today with PiDomo and a RasberryPi? Or do I need to make a dedicated stand-alone serial gateway with a Arduino and a NRF?
-
@raptorjr
In the current state, serial gateway on RPi can only use a "real" serial port like /dev/ttyAMA0 (gpio pins) or (if an arduino is connected or a USB->Serial adapter) /dev/ttyACM0. To use PiDomo you will need to put an Arduino to the mix.
-
Thank you. I'll have to wait for pseudo tty or for PiDome to get support for Ethernet gateway.
-
@raptorjr
I think PiDome also supports MQTT Gateway. Did you try that?
-
I don't really understands what MQTT is and how to use it. But maybe I'll try that. Would like to see how PiDome works and if I like it better than Domoticz.
-
@raptorjr PiDome should work now (https://forum.mysensors.org/topic/2389/added-support-for-local-mysensors-rpi-direct-radio-connection).
You need to add --my-serial-is-pty when running ./configure or uncomment the line #define MY_IS_SERIAL_PTY in mysGateway.cpp.
-
Wow. That was fast work
Trying it now and the /dev/ttyMySensorsGateway is created. Followed the guide in the link you provided. Everything goes great until the last step. I don't see the message "Gateway startup complete". So I don't know if I have any communication between PiDome and the gateway?
I'll start reading forums and see if I can find a solution. Or if I missed something.
-
@marceloaqno I've got the MysGateway configured and built to be an MQTT Gateway. I have a node (MySensors v2.01) sending temperature, humidity and voltage data to the Gateway. Looking at the stdout on the Raspberry Pi I can see that the information is being correctly received but there seems to be a problem with the published messages. I'm getting "send: Broken pipe" messages. I've copied and pasted some of the MysGateway stdout terminal output below. Do you have any insights on what might be going wrong?
Thanks very much
Sending message on topic: MyGW2out/0/255/0/0/18
TSF:MSG:READ,20-20-255,s=255,c=3,t=7,pt=0,l=0,sg=0:
TSF:MSG:BC
TSF:MSG:FPAR REQ,ID=20
TSF:CHKUPL:OK
TSF:MSG:GWL OK
TSF:MSG:SEND,0-0-20-20,s=255,c=3,t=8,pt=1,l=1,sg=0,ft=0,st=OK:0
TSF:MSG:READ,20-20-0,s=255,c=3,t=24,pt=1,l=1,sg=0:1
TSF:MSG:PINGED,ID=20,HP=1
TSF:MSG:SEND,0-0-20-20,s=255,c=3,t=25,pt=1,l=1,sg=0,ft=0,st=OK:1
TSF:MSG:READ,20-20-0,s=255,c=3,t=12,pt=0,l=3,sg=0:0.5
Sending message on topic: MyGW2out/20/255/3/0/12
send: Broken pipe
Attempting MQTT connection...
MQTT connected
Sending message on topic: MyGW2out/0/255/0/0/18
TSF:MSG:READ,20-20-0,s=2,c=0,t=23,pt=0,l=0,sg=0:
Sending message on topic: MyGW2out/20/2/0/0/23
TSF:MSG:READ,20-20-0,s=255,c=3,t=26,pt=1,l=1,sg=0:2
TSF:MSG:SEND,0-0-20-20,s=255,c=3,t=27,pt=1,l=1,sg=0,ft=0,st=OK:1
TSF:MSG:READ,20-20-0,s=1,c=1,t=0,pt=7,l=5,sg=0:19.9
Sending message on topic: MyGW2out/20/1/1/0/0
send: Broken pipe
Attempting MQTT connection...
MQTT connected
Sending message on topic: MyGW2out/0/255/0/0/18
TSF:MSG:READ,20-20-0,s=2,c=1,t=38,pt=7,l=5,sg=0:3319.0
Sending message on topic: MyGW2out/20/2/1/0/38
send: Broken pipe
Attempting MQTT connection...
MQTT connected
Sending message on topic: MyGW2out/0/255/0/0/18
TSF:MSG:READ,20-20-0,s=0,c=1,t=1,pt=7,l=5,sg=0:58.6
Sending message on topic: MyGW2out/20/0/1/0/1
send: Broken pipe
Attempting MQTT connection...
MQTT connected
Sending message on topic: MyGW2out/0/255/0/0/18
-
feature request: logging via syslog (journald). or unbuffered debug output to stdio
-
I think there may be a memory leak in the gateway. While using it as a ethernet gateway I loose about 100Mb every day, if my only node is turned on. After a few days I can't even login with SSH and need to remove the power to my Pi3 to reboot it.
If I turn off my node, memory usage is normal. So it seems to have something to to when messages is received/transmitted. Is there anything I can do to get more details where the problem could be?
I'm using the image from Domoticz where everything is installed, and have only added mysGateway.
-
@raptorjr @hawk_2050 I'll check.
@b0rmann I'll do something about it.
-
gateway running 8 days:
pi@pi:~$ ls -ld /proc/`pidof mysGateway` dr-xr-xr-x 7 root root 0 Aug 30 22:40 /proc/3935
memory consumption (peak) - 22M
pi@pi:~$ cat /proc/`pidof mysGateway`/status Name: mysGateway State: S (sleeping) Tgid: 3935 Ngid: 0 Pid: 3935 PPid: 1 TracerPid: 0 Uid: 0 0 0 0 Gid: 0 0 0 0 FDSize: 256 Groups: NStgid: 3935 NSpid: 3935 NSpgid: 3935 NSsid: 3935 VmPeak: 22108 kB VmSize: 22108 kB VmLck: 0 kB VmPin: 0 kB VmHWM: 3088 kB VmRSS: 3088 kB VmData: 236 kB VmStk: 136 kB VmExe: 80 kB VmLib: 4392 kB VmPTE: 30 kB VmPMD: 0 kB VmSwap: 0 kB Threads: 1 SigQ: 0/7339 SigPnd: 0000000000000000 ShdPnd: 0000000000000000 SigBlk: 0000000000000000 SigIgn: 0000000000001000 SigCgt: 0000000180004002 CapInh: 0000000000000000 CapPrm: 0000003fffffffff CapEff: 0000003fffffffff CapBnd: 0000003fffffffff Seccomp: 0 Cpus_allowed: f Cpus_allowed_list: 0-3 Mems_allowed: 1 Mems_allowed_list: 0 voluntary_ctxt_switches: 71974874 nonvoluntary_ctxt_switches: 167964
-
@marceloaqno Hi, could you please explain to me what the steps are to compile it for RPi3?
I went here - https://github.com/marceloaqno/Raspberry
Downloaded and tried to compile. The following error has come up:pi@m:~/Raspberry-GW $ make all make -C librf24-bcm make[1]: Entering directory '/home/pi/Raspberry-GW/librf24-bcm' cp utility/RPi/includes.h utility/includes.h g++ -Wall -fPIC -Ofast -mfpu=vfp -mfloat-abi=hard -march=armv7-a -mtune=arm1176jzf-s -c RF24.cpp g++ -Wall -fPIC -Ofast -mfpu=vfp -mfloat-abi=hard -march=armv7-a -mtune=arm1176jzf-s -c utility/RPi/spi.cpp gcc -Wall -fPIC -Ofast -mfpu=vfp -mfloat-abi=hard -march=armv7-a -mtune=arm1176jzf-s -c utility/RPi/bcm2835.c g++ -Wall -fPIC -Ofast -mfpu=vfp -mfloat-abi=hard -march=armv7-a -mtune=arm1176jzf-s -c utility/RPi/interrupt.c g++ -shared -Wl,-soname,librf24-bcm.so.1 -pthread -Ofast -mfpu=vfp -mfloat-abi=hard -march=armv7-a -mtune=arm1176jzf-s -o librf24-bcm.so.1.0 RF24.o spi.o bcm2835.o interrupt.o make[1]: Leaving directory '/home/pi/Raspberry-GW/librf24-bcm' g++ -std=c++0x -g -Wall -Wextra -Ofast -mfpu=vfp -mfloat-abi=hard -mtune=arm1176jzf-s -Ilibmysensors -Ilibrf24-bcm -pthread -DRASPBERRYPI_ARCH -march=armv7-a -MMD -c -o src/Basic/PiGatewaySample.o src/Basic/PiGatewaySample.cpp src/Basic/PiGatewaySample.cpp: In function âint main()â: src/Basic/PiGatewaySample.cpp:63:15: error: âusleepâ was not declared in this scope usleep(10000); // 10ms ^ Makefile:103: recipe for target 'src/Basic/PiGatewaySample.o' failed make: *** [src/Basic/PiGatewaySample.o] Error 1
Thanks
-
OK, I manage to install it finally.
However, again I have a problem:
./configure --my-gateway=ethernet --my-rf24-channel=1 --my-rf24-pa-level=RF24_PA_MAX --my-controller-ip-address=127,0,0,1
when I start it I have the following in the log:
failed to bind accept: Bad file descriptor accept: Bad file descriptor accept: Bad file descriptor accept: Bad file descriptor accept: Bad file descriptor accept: Bad file descriptor accept: Bad file descriptor accept: Bad file descriptor accept: Bad file descriptor accept: Bad file descriptor accept: Bad file descriptor accept: Bad file descriptor accept: Bad file descriptor accept: Bad file descriptor accept: Bad file descriptor accept: Bad file descriptor accept: Bad file descriptor accept: Bad file descriptor accept: Bad file descriptor accept: Bad file descriptor
-
Add some options to the gateway execution:
# ./examples_linux/mysGateway -h Usage: mysGateway [options] Options: -h Display a short summary of all program options. -d Enable debug. -b Become a daemon.
Debug is now disabled by default.
You can't run it as a linux daemon if debug is enabled.
When daemonized all messages will be print to syslog.
-
This post is deleted!
-
@marceloaqno Interesting. When I execute "mysGateway -h" I get the following:
pi@m:~/MySensors/examples_linux $ mysGateway -h MCO:BGN:INIT GW,CP=RNNG---,VER=2.0.1-beta TSM:INIT Segmentation fault
What does "Segmentation fault' mean please?
-
@alexsh1 You must be root to run the gateway:
$ sudo mysGateway
It seems that you are not using the latest version, -h should have shown you the options list.
-
@marceloaqno I have the latest version (downloaded yesterday). Thanks very much for your help. I got the following:
pi@m:~/MySensors/examples_linux $ sudo mysGateway -h MCO:BGN:INIT GW,CP=RNNG---,VER=2.0.1-beta TSM:INIT TSM:INIT:TSP OK TSM:INIT:GW MODE TSM:READY MCO:REG:NOT NEEDED MCO:BGN:STP MCO:BGN:INIT OK,ID=0,PAR=0,DIS=0,REG=1
In Domoticz:
2016-09-09 09:32:26.032 TCP: Reconnecting... 2016-09-09 09:32:26.032 MySensors: connected to: 127.0.0.1:5003
I added MySensors with LAN in Domoticz (port 5003), but here a problem. I can see the node and the GW communicating:
GW:
TSF:MSG:READ,255-255-0,s=255,c=3,t=3,pt=0,l=0,sg=0: TSF:MSG:READ,255-255-0,s=255,c=3,t=3,pt=0,l=0,sg=0: TSF:MSG:READ,255-255-0,s=255,c=3,t=3,pt=0,l=0,sg=0: Client 0: 0;0;3;0;18;PING TSF:MSG:READ,255-255-0,s=255,c=3,t=3,pt=0,l=0,sg=0: TSF:MSG:READ,255-255-0,s=255,c=3,t=3,pt=0,l=0,sg=0: Client 0: 0;0;3;0;18;PING
Starting sensor (RNNNA-, 2.0.0-beta) Radio init successful. req id send: 255-255-0-0 s=255,c=3,t=3,pt=0,l=0,sg=0,st=ok: req id send: 255-255-0-0 s=255,c=3,t=3,pt=0,l=0,sg=0,st=ok: req id send: 255-255-0-0 s=255,c=3,t=3,pt=0,l=0,sg=0,st=ok: req id send: 255-255-0-0 s=255,c=3,t=3,pt=0,l=0,sg=0,st=ok: Init complete, id=255, parent=0, distance=1 requesting time req id send: 255-255-0-0 s=255,c=3,t=3,pt=0,l=0,sg=0,st=ok: requesting time req id send: 255-255-0-0 s=255,c=3,t=3,pt=0,l=0,sg=0,st=ok: requesting time req id send: 255-255-0-0 s=255,c=3,t=3,pt=0,l=0,sg=0,st=ok: requesting time req id send: 255-255-0-0 s=255,c=3,t=3,pt=0,l=0,sg=0,st=ok: requesting time req id send: 255-255-0-0 s=255,c=3,t=3,pt=0,l=0,sg=0,st=ok:
The RF communication is fine, but I do not understand why Domoticz is not assigning ID.......
EDIT: I can see in Domoticz in the Hardware section:
MySensors Gateway with LAN interface Version: ? Setup
Typically ? comes up when the controller is not recognised or not connected
EDIT2:Deleted and started fresh. Unfortunately, now the log file is flooded with the following:
mysGateway: Max number of ethernet clients reached. mysGateway: Max number of ethernet clients reached. mysGateway: Max number of ethernet clients reached. mysGateway: Max number of ethernet clients reached. mysGateway: Max number of ethernet clients reached. mysGateway: Max number of ethernet clients reached. mysGateway: Max number of ethernet clients reached. mysGateway: Max number of ethernet clients reached. mysGateway: Max number of ethernet clients reached. mysGateway: Max number of ethernet clients reached. mysGateway: Max number of ethernet clients reached. mysGateway: Max number of ethernet clients reached. mysGateway: Max number of ethernet clients reached.
-
@alexsh1 There is a bug with --my-controller-ip-address, I'm not sure if it's your case, but try to avoid it.
I tried Domoticz here and everything seems fine:
MySensors Gateway with LAN interface Version: 2.0.1-beta (Setup)
I recommend you to start from scratch, re-download the gateway from here:
https://github.com/marceloaqno/MySensors/tree/dev-raspberrypi
-
@marceloaqno OK, this must be the reason. I have tried the serial setup and it worked with a little tweak:
/dev/ttyUSB20 -> /dev/ttyMySensorsGateway
For whatever reason Domoticz did not see ttyMySensorsGateway so I had to create ttyUSB20
-
@alexsh1 said:
For whatever reason Domoticz did not see ttyMySensorsGateway so I had to create ttyUSB20
Domoticz seems to only look for ttyUSB* interfaces. One easy trick is to run ./configure with this option so you don't have to worry with symlinking
./configure --my-serial-pty=/dev/ttyUSBMySensorsGateway
BTW @marceloaqno , what does the option --my-serial-is-pty exactly do?
So far I've been running the gateway in ethernet mode for a little while and it's working flawlessly, thanks a lot for this port.
-
@emc2 said:
./configure --my-serial-pty=/dev/ttyUSBMySensorsGateway
Exallent fix! Thanks
@marceloaqno I can confirm that the Ethernet GW works fine without --my-controller-ip-address
MAny thanks for your port and help!
-
@alexsh1 said:
I can confirm that the Ethernet GW works fine without --my-controller-ip-addressJust a guess, I see on your previous post that you used --my-controller-ip-address=127,0,0,1 it may have been a typo here, but did you try with --my-controller-ip-address=127.0.0.1? (dots instead of commas in the IP)?
-
@emc2 No, this is not a typo. This is a format. And yes, I have tried it with dots (127.0.0.1) - it did not compile.
-
Good to know then, thanks!
-
BTW, I am using a nice adapter for nrf24l01+ LNA+PA designed by @GertSanders :
https://www.openhardware.io/view/17/Raspberry-Pi2-GPIO-interface-for-NRF24L01Works nicely with this port and RPi 3.
-
Same, I had one Pi with GertSanders adapter and now switched to the SMD versions to fit nicely in my case.
https://www.openhardware.io/view/105/MySRaspiGW
https://www.openhardware.io/view/116/MySRaspiGW-PALNAInterestingly the regular one is working better than the PA+LNA version since moved to 2.0, at least in term of sending commands. Receiving is fine. Compiling with --my-rf24-pa-level=RF24_PA_LOW helps a lot. It seems 2.0 is really more power hungry, any hope to optimize this?
Which remind me of one thing, sorry to bother you again @marceloaqno (how) is the --my-rf24-irq-pin=<PIN> working?
I installed wiringpi to get rid of the wiringPiISR: Can't find gpio program but I'm not sure if it's supposed to do anything in the long term.
I was thinking updating the design of my PCB to link BCM 24 (pin 18) to the IRQ pin of the radio module but it's unclear to me if the IRQ will ever actually be used on the gateway.
-
Those are cool adapters, I need to build one for me.
@emc2 It's no bother at all!
Using nrf24 IRQ pin can give you more throughput and less chance of losing messages. It makes more sense to use if you have many sensors or need to transfer binary data (https://forum.mysensors.org/topic/3594/solar-powered-observation-nesting-box-network/).--my-serial-is-pty will simulate a serial port and create a symbolic link to it instead of using a real one.
-
@marceloaqno Thanks for the heads up.
I'm totally happy with the ethernet version, but as it seems @hek is in the process of writing guides on https://www.mysensors.org/build/raspberry I did a few tests.If I understood correctly (and it seems to work), to "replace" the 1.x serial gateway with the new one running the following command should work as is (/dev/ttyUSBMySensorsGateway can be renamed to /dev/ttyMySensorsGateway to be exactly as in 1.x or /dev/ttyUSB20 to bypass the symlink step)
./configure --my-gateway=serial --my-serial-is-pty --my-serial-pty=/dev/ttyUSBMySensorsGateway --my-rf24-pa-level=RF24_PA_LOW
--my-rf24-pa-level=RF24_PA_LOW can be omitted, especially if not using a PA+LNA module, but it seems 2.0 is really more power hungry than 1.4.
@marceloaqno said:
Those are cool adapters, I need to build one for me.
If you are interested by the SMD ones, PM me your address and I will happily send you something!
-
@marceloaqno The mechanism for assigning the pty serial port the specified group ownership doesn't appear to be working. The pty port is always created with root:root ownership. Can you (or anyone else) confirm whether this is working for you? I'm on a Raspberry Pi 2 running Raspian Jessie. Thanks.
-
@emc2 I appreciate the offer for the adapter, but my country's post is a little complicated (to say the least).
@hawk_2050 /dev/ttyUSBMySensorsGateway (or any other parameter you pass to --my-serial-pty) is a symbolic link:
$ ls -lah /dev/ttyMySensorsGateway lrwxrwxrwx 1 root root 10 Sep 16 12:39 /dev/ttyMySensorsGateway -> /dev/pts/2
In this case it is pointing to /dev/pts/2 but can vary, and it's the one who holds the specified group ownership.
-
@marceloaqno Up to you. I don't mind giving it a shot, if I send you the pcb alone it will fit in a regular letter and should not even have to go through customs etc. Worst case scenario it won't reach you.
-
@marceloaqno , I assume your link for the wiring pinout behind the link is for Raspi 1 A+ with 26 pin header? Or for which version?
I'd like to try this with raspi 2 B, would you have instructions how to wire it?
Raspi2:
Raspi1:
Thanks
-
No, looking it again, it's vice versa, so yours is for Raspi2, right?
-
So this 1.6 pinout would still apply? https://forum.mysensors.org/topic/2437/step-by-step-procedure-to-connect-the-nrf24l01-to-the-gpio-pins-and-use-the-raspberry-as-a-serial-gateway-mysensors-1-x
-
@ikkeT yes, these are the default pins.
(SCK = 23, MISO = 21, MOSI = 19, CS = 24, CE = 22)
-
Yahooo! It works, finally. I bet my problem was Raspi1 all along. I never realized the pinouts in github were for raspi with 40 pins, b+/2/3. Thanks!
-
@ikkeT it should also work for Raspi1, I got one running fine here.
-
OK, then I just screwed up something. Thanks for the info, so I know I can do this also with my old raspi one day.
-
Update: Added support for status leds (RX/TX/ERR), you can enable it in examples_linux/mysGateway.cpp file.
-
Continuing the learning here, new questions... Thanks so far, I've now got the temp/hum/door messages sent and received from sensebender micro to raspi2. The next thing I would like to do is to send the messages as mqtt to the next box hosting some controller.
How to get the mysGateway to send the stuff forward as mqtt? I tried to look into Makefile, MyConfig.h and such, but didn't quite figure out yet how to do that. Any pointers?
So I'd like to have the following: sensebender -> radio -> raspi2 -> some box hosting the controller. Perhaps even outside of home, so routable traffic e.g. to OpenShift.com.
Should I now somehow configure and build mysGateway to send stuff as MQTT, or pipe the traffic somehow to mqtt like mosqitto? How is this normally done if the controller server is not running on the gateway Raspi?
Thanks for the patience, I'm just getting into all this interesting stuff
-
@ikkeT I haven't tried but using nodered should be fairly simple and very flexible. This discussion might be useful: https://forum.mysensors.org/topic/2802/flow-to-turn-serialgateway-into-mqtt-serialgateway/
-
@ikkeT you can build the Raspberry Pi mysGateway as either Serial, Ethernet or MQTT by using appropriate commandline parameters with the configure script. Just do ./configure --help and you'll get a list of all the options available. Once you've chosen your options and run configure then you 'make'. An example of a set of options that will generate an MQTT Gateway is:
./configure --my-debug=enable --my-gateway=mqtt --my-rf24-channel=100 --my-rf24-pa-level=RF24_PA_LOW --my-controller-ip-address=127,0,0,1 --my-port=1883
--my-mqtt-client-id=MyGW2 --my-mqtt-publish-topic-prefix="MyGW2out" --my-mqtt-subscribe-topic-prefix="MyGW2in"In this case my MQTT Broker is Mosquitto and is on the same Raspberry Pi hence the use of 127,0,0,1 for the specified --my-controller-ip-address. Change that as appropriate to your intended setup.
Hope that helps.
-
@marceloaqno I have been trying to build this out by first building the RF24 library using the following:
git clone https://github.com/TMRh20/RF24.git cd RF24 make sudo make install
However, this fails on the
make
command:Makefile:17: Makefile.inc: No such file or directory [Running configure] [SECTION] Detecting arm compilation environment. [OK] arm-linux-gnueabihf-gcc detected. [OK] arm-linux-gnueabihf-g++ detected. [SECTION] Detecting target machine. [OK] machine detected: SoC=BCM2836, Type=RPi2, CPU=armv7l. [SECTION] Detecting DRIVER [OK] DRIVER detected:RPi. [SECTION] Detecting OS. [INFO] OS detected:LINUX. [SECTION] Preparing configuration. [SECTION] Saving configuration. [OK] Finished. arm-linux-gnueabihf-g++ -fPIC -march=armv7-a -mtune=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard -Ofast -Wall -pthread -c RF24.cpp cc1plus: error: bad value (cortex-a7) for -mtune switch Makefile:40: recipe for target 'RF24.o' failed make: *** [RF24.o] Error 1
I am not sure what to do here. Looks like the gcc does not support the cortex-a7? I am trying to run this on my RPi 2 B.
-
@wergeld I'm not sure why you are having this error, perhaps your version of gcc it's old? Did you try to update it?
You can skip the installation of TMRh20/RF24, it is no longer necessary to build RPi port.
-
@marceloaqno said:
@wergeld I'm not sure why you are having this error, perhaps your version of gcc it's old? Did you try to update it?
You can skip the installation of TMRh20/RF24, it is no longer necessary to build RPi port.I have tried to update gcc but apt-get says it is already at latest version. I am upgrading to Jessie now as it has gcc 4.9 (I was running Wheezy with gcc 4.6).
Is there an updated build instruction set? I am planning on using this as a serial gateway with Domoticz on same RPi.
-
@hawk_2050 thanks for the reminder! I recalled it was somehow configurable, but I forgot it was through . /configure options. I'll try after getting pir working also.
-
@wergeld I updated the building instructions:
https://forum.mysensors.org/topic/2759/mysensors-raspberry-port-suggestions/26
-
@marceloaqno said:
@wergeld I updated the building instructions:
https://forum.mysensors.org/topic/2759/mysensors-raspberry-port-suggestions/26Success! Upgraded to Jessie and build worked fine. Now to reconnect my radio to the RPi pins directly to test.
-
@wergeld said:
@marceloaqno said:
@wergeld I updated the building instructions:
https://forum.mysensors.org/topic/2759/mysensors-raspberry-port-suggestions/26Success! Upgraded to Jessie and build worked fine. Now to reconnect my radio to the RPi pins directly to test.
Okay, using an RPi2B upgraded to Jessie from Wheezy I have successfully built and set the mysGateway as a daemon. My configuration was:
./configure --my-gateway=serial --my-serial-is-pty --my-serial-pty=/dev/ttyUSBMySensorsGateway --my-rf24-pa-level=RF24_PA_LOW
This was immediately available in Domoticz under Hardware. I re-added the 2 nodes and away I went!
Full command list:
git clone https://github.com/marceloaqno/MySensors.git cd MySensors ./configure --my-gateway=serial --my-serial-is-pty --my-serial-pty=/dev/ttyUSBMySensorsGateway --my-rf24-pa-level=RF24_PA_LOW make sudo make install sudo mysGateway -b
In Domoticz it lists this gateway as running:
MySensors Gateway USB
Version: 2.0.1-betaSo far very happy with this setup. No wires and no extra arduino needed for serial gateway. Just the NRF+RPi interfacing via:
https://www.openhardware.io/view/100/Raspberry-PI-NRF24l01-hat
-
what am I doing wrong here?
root@raspberrypi:/downloads/MySensors# ./configure --my-gateway=mqtt --my-mqtt-client-id=msgw --my-mqtt-publish-topic-prefix=mspub --my-mqtt-subscribe-topic-prefix=mssub --my-controller-ip-address=10.0.10.4 --my-port=1883 [SECTION] Detecting target machine. [OK] machine detected: SoC=BCM2835, Type=RPi, CPU=armv6l, REV=000d. [OK] init system detected: systemd [SECTION] Saving configuration. [SECTION] Cleaning previous builds. [OK] Finished. root@raspberrypi:/downloads/MySensors# make cc -I. -I./core -I./drivers/Linux -I./drivers/RPi -MMD -c -o drivers/Linux/log.o drivers/Linux/log.c g++ -DMY_RADIO_NRF24 -DMY_GATEWAY_LINUX -DMY_GATEWAY_MQTT_CLIENT -DMY_DEBUG -march=armv6zk -mtune=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard -DLINUX_ARCH_RASPBERRYPI -Ofast -g -Wall -Wextra -DMY_PORT=1883 -DMY_CONTROLLER_IP_ADDRESS=10,0,10,4 -DMY_MQTT_SUBSCRIBE_TOPIC_PREFIX=\"mssub\" -DMY_MQTT_PUBLISH_TOPIC_PREFIX=\"mspub\" -DMY_MQTT_CLIENT_ID=\"msgw\" -I. -I./core -I./drivers/Linux -I./drivers/RPi -MMD -c -o drivers/Linux/noniso.o drivers/Linux/noniso.cpp g++ -DMY_RADIO_NRF24 -DMY_GATEWAY_LINUX -DMY_GATEWAY_MQTT_CLIENT -DMY_DEBUG -march=armv6zk -mtune=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard -DLINUX_ARCH_RASPBERRYPI -Ofast -g -Wall -Wextra -DMY_PORT=1883 -DMY_CONTROLLER_IP_ADDRESS=10,0,10,4 -DMY_MQTT_SUBSCRIBE_TOPIC_PREFIX=\"mssub\" -DMY_MQTT_PUBLISH_TOPIC_PREFIX=\"mspub\" -DMY_MQTT_CLIENT_ID=\"msgw\" -I. -I./core -I./drivers/Linux -I./drivers/RPi -MMD -c -o drivers/Linux/Print.o drivers/Linux/Print.cpp g++ -DMY_RADIO_NRF24 -DMY_GATEWAY_LINUX -DMY_GATEWAY_MQTT_CLIENT -DMY_DEBUG -march=armv6zk -mtune=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard -DLINUX_ARCH_RASPBERRYPI -Ofast -g -Wall -Wextra -DMY_PORT=1883 -DMY_CONTROLLER_IP_ADDRESS=10,0,10,4 -DMY_MQTT_SUBSCRIBE_TOPIC_PREFIX=\"mssub\" -DMY_MQTT_PUBLISH_TOPIC_PREFIX=\"mspub\" -DMY_MQTT_CLIENT_ID=\"msgw\" -I. -I./core -I./drivers/Linux -I./drivers/RPi -MMD -c -o drivers/Linux/EthernetClient.o drivers/Linux/EthernetClient.cpp g++ -DMY_RADIO_NRF24 -DMY_GATEWAY_LINUX -DMY_GATEWAY_MQTT_CLIENT -DMY_DEBUG -march=armv6zk -mtune=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard -DLINUX_ARCH_RASPBERRYPI -Ofast -g -Wall -Wextra -DMY_PORT=1883 -DMY_CONTROLLER_IP_ADDRESS=10,0,10,4 -DMY_MQTT_SUBSCRIBE_TOPIC_PREFIX=\"mssub\" -DMY_MQTT_PUBLISH_TOPIC_PREFIX=\"mspub\" -DMY_MQTT_CLIENT_ID=\"msgw\" -I. -I./core -I./drivers/Linux -I./drivers/RPi -MMD -c -o drivers/Linux/SerialPort.o drivers/Linux/SerialPort.cpp g++ -DMY_RADIO_NRF24 -DMY_GATEWAY_LINUX -DMY_GATEWAY_MQTT_CLIENT -DMY_DEBUG -march=armv6zk -mtune=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard -DLINUX_ARCH_RASPBERRYPI -Ofast -g -Wall -Wextra -DMY_PORT=1883 -DMY_CONTROLLER_IP_ADDRESS=10,0,10,4 -DMY_MQTT_SUBSCRIBE_TOPIC_PREFIX=\"mssub\" -DMY_MQTT_PUBLISH_TOPIC_PREFIX=\"mspub\" -DMY_MQTT_CLIENT_ID=\"msgw\" -I. -I./core -I./drivers/Linux -I./drivers/RPi -MMD -c -o drivers/Linux/Stream.o drivers/Linux/Stream.cpp g++ -DMY_RADIO_NRF24 -DMY_GATEWAY_LINUX -DMY_GATEWAY_MQTT_CLIENT -DMY_DEBUG -march=armv6zk -mtune=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard -DLINUX_ARCH_RASPBERRYPI -Ofast -g -Wall -Wextra -DMY_PORT=1883 -DMY_CONTROLLER_IP_ADDRESS=10,0,10,4 -DMY_MQTT_SUBSCRIBE_TOPIC_PREFIX=\"mssub\" -DMY_MQTT_PUBLISH_TOPIC_PREFIX=\"mspub\" -DMY_MQTT_CLIENT_ID=\"msgw\" -I. -I./core -I./drivers/Linux -I./drivers/RPi -MMD -c -o drivers/Linux/IPAddress.o drivers/Linux/IPAddress.cpp g++ -DMY_RADIO_NRF24 -DMY_GATEWAY_LINUX -DMY_GATEWAY_MQTT_CLIENT -DMY_DEBUG -march=armv6zk -mtune=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard -DLINUX_ARCH_RASPBERRYPI -Ofast -g -Wall -Wextra -DMY_PORT=1883 -DMY_CONTROLLER_IP_ADDRESS=10,0,10,4 -DMY_MQTT_SUBSCRIBE_TOPIC_PREFIX=\"mssub\" -DMY_MQTT_PUBLISH_TOPIC_PREFIX=\"mspub\" -DMY_MQTT_CLIENT_ID=\"msgw\" -I. -I./core -I./drivers/Linux -I./drivers/RPi -MMD -c -o drivers/Linux/compatibility.o drivers/Linux/compatibility.cpp g++ -DMY_RADIO_NRF24 -DMY_GATEWAY_LINUX -DMY_GATEWAY_MQTT_CLIENT -DMY_DEBUG -march=armv6zk -mtune=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard -DLINUX_ARCH_RASPBERRYPI -Ofast -g -Wall -Wextra -DMY_PORT=1883 -DMY_CONTROLLER_IP_ADDRESS=10,0,10,4 -DMY_MQTT_SUBSCRIBE_TOPIC_PREFIX=\"mssub\" -DMY_MQTT_PUBLISH_TOPIC_PREFIX=\"mspub\" -DMY_MQTT_CLIENT_ID=\"msgw\" -I. -I./core -I./drivers/Linux -I./drivers/RPi -MMD -c -o drivers/Linux/EthernetServer.o drivers/Linux/EthernetServer.cpp g++ -DMY_RADIO_NRF24 -DMY_GATEWAY_LINUX -DMY_GATEWAY_MQTT_CLIENT -DMY_DEBUG -march=armv6zk -mtune=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard -DLINUX_ARCH_RASPBERRYPI -Ofast -g -Wall -Wextra -DMY_PORT=1883 -DMY_CONTROLLER_IP_ADDRESS=10,0,10,4 -DMY_MQTT_SUBSCRIBE_TOPIC_PREFIX=\"mssub\" -DMY_MQTT_PUBLISH_TOPIC_PREFIX=\"mspub\" -DMY_MQTT_CLIENT_ID=\"msgw\" -I. -I./core -I./drivers/Linux -I./drivers/RPi -MMD -c -o examples_linux/mysGateway.o examples_linux/mysGateway.cpp In file included from ./MySensors.h:287:0, from examples_linux/mysGateway.cpp:60: ./core/MyTransport.cpp: In function âvoid transportProcessMessage()â: ./core/MyTransport.cpp:535:61: error: no matching function for call to âmin(uint8_t, unsigned int)â const uint8_t msgLength = min(mGetLength(_msg), MAX_PAYLOAD); ^ ./core/MyTransport.cpp:535:61: note: candidates are: In file included from /usr/include/c++/4.9/bits/char_traits.h:39:0, from /usr/include/c++/4.9/ios:40, from /usr/include/c++/4.9/ostream:38, from /usr/include/c++/4.9/iostream:39, from examples_linux/mysGateway.cpp:20: /usr/include/c++/4.9/bits/stl_algobase.h:240:5: note: template<class _Tp, class _Compare> const _Tp& std::min(const _Tp&, const _Tp&, _Compare) min(const _Tp& __a, const _Tp& __b, _Compare __comp) ^ /usr/include/c++/4.9/bits/stl_algobase.h:240:5: note: template argument deduction/substitution failed: In file included from ./MySensors.h:287:0, from examples_linux/mysGateway.cpp:60: ./core/MyTransport.cpp:535:61: note: deduced conflicting types for parameter âconst _Tpâ (âunsigned charâ and âunsigned intâ) const uint8_t msgLength = min(mGetLength(_msg), MAX_PAYLOAD); ^ In file included from /usr/include/c++/4.9/bits/char_traits.h:39:0, from /usr/include/c++/4.9/ios:40, from /usr/include/c++/4.9/ostream:38, from /usr/include/c++/4.9/iostream:39, from examples_linux/mysGateway.cpp:20: /usr/include/c++/4.9/bits/stl_algobase.h:194:5: note: template<class _Tp> const _Tp& std::min(const _Tp&, const _Tp&) min(const _Tp& __a, const _Tp& __b) ^ /usr/include/c++/4.9/bits/stl_algobase.h:194:5: note: template argument deduction/substitution failed: In file included from ./MySensors.h:287:0, from examples_linux/mysGateway.cpp:60: ./core/MyTransport.cpp:535:61: note: deduced conflicting types for parameter âconst _Tpâ (âunsigned charâ and âunsigned intâ) const uint8_t msgLength = min(mGetLength(_msg), MAX_PAYLOAD); ^ ./core/MyTransport.cpp: In function âbool transportSendWrite(uint8_t, MyMessage&)â: ./core/MyTransport.cpp:826:82: error: no matching function for call to âmin(unsigned int, const uint8_t&)â bool result = transportSend(to, &message, min(MAX_MESSAGE_LENGTH, totalMsgLength)); ^ ./core/MyTransport.cpp:826:82: note: candidates are: In file included from /usr/include/c++/4.9/bits/char_traits.h:39:0, from /usr/include/c++/4.9/ios:40, from /usr/include/c++/4.9/ostream:38, from /usr/include/c++/4.9/iostream:39, from examples_linux/mysGateway.cpp:20: /usr/include/c++/4.9/bits/stl_algobase.h:240:5: note: template<class _Tp, class _Compare> const _Tp& std::min(const _Tp&, const _Tp&, _Compare) min(const _Tp& __a, const _Tp& __b, _Compare __comp) ^ /usr/include/c++/4.9/bits/stl_algobase.h:240:5: note: template argument deduction/substitution failed: In file included from ./MySensors.h:287:0, from examples_linux/mysGateway.cpp:60: ./core/MyTransport.cpp:826:82: note: deduced conflicting types for parameter âconst _Tpâ (âunsigned intâ and âuint8_t {aka unsigned char}â) bool result = transportSend(to, &message, min(MAX_MESSAGE_LENGTH, totalMsgLength)); ^ In file included from /usr/include/c++/4.9/bits/char_traits.h:39:0, from /usr/include/c++/4.9/ios:40, from /usr/include/c++/4.9/ostream:38, from /usr/include/c++/4.9/iostream:39, from examples_linux/mysGateway.cpp:20: /usr/include/c++/4.9/bits/stl_algobase.h:194:5: note: template<class _Tp> const _Tp& std::min(const _Tp&, const _Tp&) min(const _Tp& __a, const _Tp& __b) ^ /usr/include/c++/4.9/bits/stl_algobase.h:194:5: note: template argument deduction/substitution failed: In file included from ./MySensors.h:287:0, from examples_linux/mysGateway.cpp:60: ./core/MyTransport.cpp:826:82: note: deduced conflicting types for parameter âconst _Tpâ (âunsigned intâ and âuint8_t {aka unsigned char}â) bool result = transportSend(to, &message, min(MAX_MESSAGE_LENGTH, totalMsgLength)); ^ Makefile:46: recipe for target 'examples_linux/mysGateway.o' failed make: *** [examples_linux/mysGateway.o] Error 1 root@raspberrypi:/downloads/MySensors#
-
-
@marceloaqno said:
Update: Added support for status leds (RX/TX/ERR), you can enable it in examples_linux/mysGateway.cpp file.
// Flash leds on rx/tx/err
//#define MY_DEFAULT_ERR_LED_PIN 12 // Error LED pin
//#define MY_DEFAULT_RX_LED_PIN 16 // Receive LED pin
//#define MY_DEFAULT_TX_LED_PIN 18 // Transmit LED pinWhat do I put there? RPi pin numbers or GPIO numbers?
-
@ericvdb In any type of pin configuration for the RPi, always use the physical pin number.
-
The RPi port was merged into mysensors official repository (thank you to everyone who helped with this process ). For future discussion, please use this this topic.