MySensors Raspberry port suggestions
-
@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 -
@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.
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. -
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.
gateway running 8 days:
pi@pi:~$ ls -ld /proc/`pidof mysGateway` dr-xr-xr-x 7 root root 0 Aug 30 22:40 /proc/3935memory 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 -
@b0rmann It should work now. Thank you for reporting this.
@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 1Thanks
-
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,1when 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. -
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. -
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.@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 faultWhat does "Segmentation fault' mean please?
-
@alexsh1 You must be root to run the gateway:
$ sudo mysGatewayIt seems that you are not using the latest version, -h should have shown you the options list.
-
@alexsh1 You must be root to run the gateway:
$ sudo mysGatewayIt 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=1In Domoticz:
2016-09-09 09:32:26.032 TCP: Reconnecting... 2016-09-09 09:32:26.032 MySensors: connected to: 127.0.0.1:5003I 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;PINGStarting 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: ? SetupTypically ? 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. -
@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=1In Domoticz:
2016-09-09 09:32:26.032 TCP: Reconnecting... 2016-09-09 09:32:26.032 MySensors: connected to: 127.0.0.1:5003I 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;PINGStarting 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: ? SetupTypically ? 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 -
@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/ttyMySensorsGatewayFor whatever reason Domoticz did not see ttyMySensorsGateway so I had to create ttyUSB20
-
@marceloaqno OK, this must be the reason. I have tried the serial setup and it worked with a little tweak:
/dev/ttyUSB20 -> /dev/ttyMySensorsGatewayFor 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/ttyUSBMySensorsGatewayBTW @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. -
@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/ttyUSBMySensorsGatewayBTW @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)?
-
@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)?
-
Good to know then, thanks!