Navigation

    • Register
    • Login
    • OpenHardware.io
    • Categories
    • Recent
    • Tags
    • Popular
    1. Home
    2. otto001
    3. Best
    • Profile
    • Following
    • Followers
    • Topics
    • Posts
    • Best
    • Groups

    Best posts made by otto001

    • RE: 💬 Building a Raspberry Pi Gateway

      Hi,

      I am running the current version (2.2.0) on a RPi 1.
      I noticed that sometimes the cpu usage of the service is increasing dramatically (around 90% and more) - and then the service stops working.
      As I am not a C-Pro, I wrote a little python-script, which is called every minute by cron and restarts the service, if it uses more than 50% cpu.
      Maybe someone will find it useful:

      # -*- coding: utf-8 -*-
      import psutil, sys, os, datetime
      
      PY3 = sys.version_info[0] == 2
      LOOKFOR = u"mysgw"
      for proc in psutil.process_iter():
          if proc.name() == "mysgw":
              dt = str(datetime.datetime.now()).split('.')[0]
              #print(proc)
              cpu = proc.cpu_percent(interval=1)
              #print(cpu)
              #print(proc.cpu_times())
              if cpu > 50:
                      print(dt + " high CPU-usage! --> restarting service")
                      os.system("/bin/systemctl restart mysgw.service")
              else:
                      if datetime.datetime.now().strftime('%M') == "45":
                              print(dt + " everything OK, cpu: " + str(cpu))
      

      and the crontab-entry (as root):

      * * * * * /home/pi/pstest.sh >> /var/log/mysgw-logger.log
      

      Cheers,
      Pula

      posted in Announcements
      otto001
      otto001
    • RE: 💬 Building a Raspberry Pi Gateway

      @marceloaqno :

      At first, THANKS for your help. CPU usage does not rise anymore.
      But unfortunately no more node READs after the same situation:

      Mar  4 07:00:09 raspiez mysgw: TSF:MSG:READ,14-14-0,s=255,c=3,t=6,pt=1,l=1,sg=0:0
      Mar  4 07:00:09 raspiez mysgw: TSF:MSG:READ,12-12-0,s=255,c=3,t=6,pt=1,l=1,sg=0:0
      Mar  4 07:00:09 raspiez mysgw: GWT:RFC:C=1,MSG=14;255;3;0;6;M
      Mar  4 07:00:09 raspiez mysgw: !TSF:MSG:SEND,0-0-14-14,s=255,c=3,t=6,pt=0,l=1,sg=0,ft=0,st=NACK:M
      Mar  4 07:00:09 raspiez mysgw: TSF:MSG:READ,11-11-0,s=255,c=0,t=18,pt=0,l=3,sg=0:1.5
      Mar  4 07:00:09 raspiez mysgw: GWT:RFC:C=1,MSG=12;255;3;0;6;M
      Mar  4 07:00:09 raspiez mysgw: TSF:MSG:SEND,0-0-12-12,s=255,c=3,t=6,pt=0,l=1,sg=0,ft=0,st=OK:M
      Mar  4 07:00:13 raspiez mysgw: TSM:READY:NWD REQ
      Mar  4 07:00:13 raspiez mysgw: TSF:MSG:SEND,0-0-255-255,s=255,c=3,t=20,pt=0,l=0,sg=0,ft=0,st=OK:
      Mar  4 07:00:13 raspiez mysgw: TSF:SRT:OK
      Mar  4 07:00:13 raspiez mysgw: TSF:SAN:OK
      Mar  4 07:00:37 raspiez mysgw: Ethernet client disconnected.
      Mar  4 07:00:37 raspiez mysgw: New connection from 192.168.1.11
      Mar  4 07:00:37 raspiez mysgw: GWT:TSA:C=0,CONNECTED
      Mar  4 07:00:37 raspiez mysgw: GWT:TSA:C=1,DISCONNECTED
      

      After this point (again after a reconnect from the controller) no more messages from any node PLUS the cpu usage stayed normal (what makes it even worse at this moment, as I would have to create a script which monitors the logfile and restarts the mysgw service in this situation). As soon as the service is restarted, everything is working fine again.

      What happens after this point in the log:

      Mar  4 07:00:37 raspiez mysgw: GWT:RFC:C=0,MSG=0;0;3;0;2;
      Mar  4 07:15:13 raspiez mysgw: TSF:SAN:OK
      Mar  4 07:20:13 raspiez mysgw: TSM:READY:NWD REQ
      Mar  4 07:20:13 raspiez mysgw: TSF:MSG:SEND,0-0-255-255,s=255,c=3,t=20,pt=0,l=0,sg=0,ft=0,st=OK:
      Mar  4 07:30:13 raspiez mysgw: TSF:SRT:OK
      Mar  4 07:30:13 raspiez mysgw: TSF:SAN:OK
      Mar  4 07:30:37 raspiez mysgw: GWT:TSA:C=0,DISCONNECTED
      Mar  4 07:30:37 raspiez mysgw: Ethernet client disconnected.
      Mar  4 07:30:37 raspiez mysgw: New connection from 192.168.1.11
      Mar  4 07:30:37 raspiez mysgw: GWT:TSA:C=0,CONNECTED
      Mar  4 07:30:37 raspiez mysgw: GWT:RFC:C=0,MSG=0;0;3;0;2;
      Mar  4 07:40:13 raspiez mysgw: TSM:READY:NWD REQ
      Mar  4 07:40:13 raspiez mysgw: TSF:MSG:SEND,0-0-255-255,s=255,c=3,t=20,pt=0,l=0,sg=0,ft=0,st=OK:
      Mar  4 07:45:13 raspiez mysgw: TSF:SAN:OK
      Mar  4 08:00:13 raspiez mysgw: TSM:READY:NWD REQ
      Mar  4 08:00:13 raspiez mysgw: TSF:MSG:SEND,0-0-255-255,s=255,c=3,t=20,pt=0,l=0,sg=0,ft=0,st=OK:
      Mar  4 08:00:13 raspiez mysgw: TSF:SRT:OK
      Mar  4 08:00:13 raspiez mysgw: TSF:SAN:OK
      Mar  4 08:00:37 raspiez mysgw: GWT:TSA:C=0,DISCONNECTED
      Mar  4 08:00:37 raspiez mysgw: Ethernet client disconnected.
      Mar  4 08:00:37 raspiez mysgw: New connection from 192.168.1.11
      Mar  4 08:00:37 raspiez mysgw: GWT:TSA:C=0,CONNECTED
      

      and so on....

      It seems that the increasing cpu usage is only a symptom for the real problem.
      As I am using this in production I will dis-apply the patch and use the daemon as before (beacuse using the python script for cpu-usage-monitoring makes the situation somehow controllable for me).
      Maybe you could have an additional eye on this please? Could I help you with further information? Maybe I could add some additional logging somewhere in the code?

      Thanks again and cheers,
      Otto

      posted in Announcements
      otto001
      otto001
    • RE: 💬 Building a Raspberry Pi Gateway

      @marceloaqno : Wow, you are fast! Thanks!
      Just applied the patch and recompiled. I will report in a couple of days while my monitoring-script is still running (and logging)...

      Cheers,
      Otto

      posted in Announcements
      otto001
      otto001
    • RE: 💬 Building a Raspberry Pi Gateway

      @marceloaqno : of course, thanks for the hint!

      I had the following configure:

      ./configure --my-transport=nrf24 --my-rf24-irq-pin=15 --my-gateway=ethernet --my-port=5004
      

      (The high CPU problem also occured before I connected PIN 15 to IRQ without the corresponding config option. I hoped to solve the Problem using IRQ, but this did not help. And I have a second GW with default port 5003 in my network. This is running an ancient version of Raspi GW Software and this is working fine -but slower). I am using current fhem as controller and I have it connecting every 30 minutes to the gateways due to stability issues in the past. There are only about 6 nodes (just motion, humidity & temp and lux) connected to this gateway.

      In addition to that I changed the default channel in MyConfig.h (because I have two different MySensor networks):

      #ifndef MY_RF24_CHANNEL
      #define MY_RF24_CHANNEL (82)
      #endif
      

      I am pretty sure, that this is not important, but I also set up rsyslog to write gw logs to an own file instead of syslog....

      Maybe this helps.

      Cheers,
      Otto

      posted in Announcements
      otto001
      otto001