high cpu when dzvents is enabled

Easy to use, 100% Lua-based event scripting framework.

Moderator: leecollings

Post Reply
annegerben
Posts: 26
Joined: Wednesday 03 August 2016 12:34
Target OS: Raspberry Pi / ODroid
Domoticz version:
Contact:

high cpu when dzvents is enabled

Post by annegerben »

Version: 4.9700
Platform: rpi
Plugin/Hardware: dzvents

I'm running 4.9700 (stable) on rpi2 but when I have dzvents enabled if have high cpu load.
It's adding about 50% cpu load to the averige, when I disable dzvents the cpu usage drops immediately.
I've added a screen shot where you can see in the yellow square when I've enabled dzvents and temp disabled it.
I'm running 3 simple scripts which when I open a door a turn on the lights or send me a message.

I like dzvents, but the cpu usage is to high it's slowing down my system.
anyone an idea how to fix this issue?
2018-08-06 13_55_57-Domoticz.png
2018-08-06 13_55_57-Domoticz.png (219.7 KiB) Viewed 2736 times
dannybloe
Posts: 1355
Joined: Friday 29 August 2014 11:26
Target OS: Raspberry Pi / ODroid
Domoticz version:
Location: Ermelo
Contact:

Re: high cpu when dzvents is enabled

Post by dannybloe »

Do you have any script defined? If so, can you remove them all or disabled them if you created them in using the built-in editor? Also make sure you don't have dzVents running in debug mode (setting in the GUI).
Creator dzVents - RPi3, loads of zwave devices, esp8266, evohome.
annegerben
Posts: 26
Joined: Wednesday 03 August 2016 12:34
Target OS: Raspberry Pi / ODroid
Domoticz version:
Contact:

Re: high cpu when dzvents is enabled

Post by annegerben »

dannybloe wrote: Monday 06 August 2018 19:17 Do you have any script defined? If so, can you remove them all or disabled them if you created them in using the built-in editor? Also make sure you don't have dzVents running in debug mode (setting in the GUI).
logging is set to "error + minimal execution"

I had three script running and have disabled them now.
cpu usage is now back to +- 12%, I'll add a screenshot tomorrow.

scripts:
Spoiler: show

Code: Select all

return {
	on = {
		devices = {
			['achterdeur sensor'] = { 'between 30 minutes before sunset and 4:00' }
		}
	},
	execute = function(d, achterdeur)
      if (achterdeur.state == 'Open' and d.devices('woonkamer').state == 'Off' and d.devices('keuken').state == 'Off' and d.devices('tafel').state == 'Off') then
         d.devices('woonkamer').switchOn()
         d.devices('keuken').switchOn()
         d.log('achterdeur open, lampen aan omdat er nog niets brand')
      elseif  (achterdeur.state == 'Closed') then
         d.log('achterdeur open, geen lampen aan omdat er al iets brand')
         d.log('2e regel')
      end
   end
}

Code: Select all

return {
	on = {
		devices = {
			['achterdeur sensor'] = { 'on mon,tue,fri' },
			['voordeur sensor'] = { 'on mon,tue,fri' },
			'TAG-Bezoek'
		}
	},
	execute = function(d, deuropen)
	    if  (d.devices('TAG-Bezoek').state == 'Off') then
	        if (d.devices('achterdeur sensor').state  == 'Open' ) then
                d.notify('achterdeur is open', 'achterdeur is open', d.PRIORITY_HIGH, d.SOUND_DEFAULT,'ONEA2003', d.NSS_GOOGLE_CLOUD_MESSAGING)
            elseif (d.devices('achterdeur sensor').state  == 'Closed' ) then
                d.notify('achterdeur is open', 'achterdeur is gesloten', d.PRIORITY_HIGH, d.SOUND_DEFAULT,'ONEA2003', d.NSS_GOOGLE_CLOUD_MESSAGING)
            elseif (d.devices('voordeur sensor').state == 'Open') then
                d.notify('voordeur is open', 'voordeur is open', d.PRIORITY_HIGH, d.SOUND_DEFAULT,'ONEA2003', d.NSS_GOOGLE_CLOUD_MESSAGING)
            elseif (d.devices('voordeur sensor').state  == 'Closed' ) then
                d.notify('voordeur is open', 'voordeur is gesloten', d.PRIORITY_HIGH, d.SOUND_DEFAULT,'ONEA2003', d.NSS_GOOGLE_CLOUD_MESSAGING)
            end
        end
	    
		-- d.log('Device ' .. device.name .. ' was changed', d.LOG_INFO)
	end
}

Code: Select all

return {
	on = {
		devices = {
			['voordeur sensor'] = { 'between 30 minutes before sunset and 6:00' }
		}
	},
	execute = function(d, voordeur)
      if (voordeur.state == 'Open' and d.devices('hal').state == 'Off') then
         d.devices('hal').switchOn()
         d.log('voordeur open, ganglamp aan omdat er nog niets brand')
      elseif  (voordeur.state == 'Closed') then
         d.log('voordeur open, ganglamp niet aan omdat deze al brand')
      end
   end
}
annegerben
Posts: 26
Joined: Wednesday 03 August 2016 12:34
Target OS: Raspberry Pi / ODroid
Domoticz version:
Contact:

Re: high cpu when dzvents is enabled

Post by annegerben »

annegerben wrote: Monday 06 August 2018 22:06
dannybloe wrote: Monday 06 August 2018 19:17 Do you have any script defined? If so, can you remove them all or disabled them if you created them in using the built-in editor? Also make sure you don't have dzVents running in debug mode (setting in the GUI).
logging is set to "error + minimal execution"

I had three script running and have disabled them now.
cpu usage is now back to +- 12%, I'll add a screenshot tomorrow.

scripts:
Spoiler: show

Code: Select all

return {
	on = {
		devices = {
			['achterdeur sensor'] = { 'between 30 minutes before sunset and 4:00' }
		}
	},
	execute = function(d, achterdeur)
      if (achterdeur.state == 'Open' and d.devices('woonkamer').state == 'Off' and d.devices('keuken').state == 'Off' and d.devices('tafel').state == 'Off') then
         d.devices('woonkamer').switchOn()
         d.devices('keuken').switchOn()
         d.log('achterdeur open, lampen aan omdat er nog niets brand')
      elseif  (achterdeur.state == 'Closed') then
         d.log('achterdeur open, geen lampen aan omdat er al iets brand')
         d.log('2e regel')
      end
   end
}

Code: Select all

return {
	on = {
		devices = {
			['achterdeur sensor'] = { 'on mon,tue,fri' },
			['voordeur sensor'] = { 'on mon,tue,fri' },
			'TAG-Bezoek'
		}
	},
	execute = function(d, deuropen)
	    if  (d.devices('TAG-Bezoek').state == 'Off') then
	        if (d.devices('achterdeur sensor').state  == 'Open' ) then
                d.notify('achterdeur is open', 'achterdeur is open', d.PRIORITY_HIGH, d.SOUND_DEFAULT,'ONEA2003', d.NSS_GOOGLE_CLOUD_MESSAGING)
            elseif (d.devices('achterdeur sensor').state  == 'Closed' ) then
                d.notify('achterdeur is open', 'achterdeur is gesloten', d.PRIORITY_HIGH, d.SOUND_DEFAULT,'ONEA2003', d.NSS_GOOGLE_CLOUD_MESSAGING)
            elseif (d.devices('voordeur sensor').state == 'Open') then
                d.notify('voordeur is open', 'voordeur is open', d.PRIORITY_HIGH, d.SOUND_DEFAULT,'ONEA2003', d.NSS_GOOGLE_CLOUD_MESSAGING)
            elseif (d.devices('voordeur sensor').state  == 'Closed' ) then
                d.notify('voordeur is open', 'voordeur is gesloten', d.PRIORITY_HIGH, d.SOUND_DEFAULT,'ONEA2003', d.NSS_GOOGLE_CLOUD_MESSAGING)
            end
        end
	    
		-- d.log('Device ' .. device.name .. ' was changed', d.LOG_INFO)
	end
}

Code: Select all

return {
	on = {
		devices = {
			['voordeur sensor'] = { 'between 30 minutes before sunset and 6:00' }
		}
	},
	execute = function(d, voordeur)
      if (voordeur.state == 'Open' and d.devices('hal').state == 'Off') then
         d.devices('hal').switchOn()
         d.log('voordeur open, ganglamp aan omdat er nog niets brand')
      elseif  (voordeur.state == 'Closed') then
         d.log('voordeur open, ganglamp niet aan omdat deze al brand')
      end
   end
}

todays graph
2018-08-07 08_14_58-Domoticz.png
2018-08-07 08_14_58-Domoticz.png (278.95 KiB) Viewed 2684 times
User avatar
waaren
Posts: 6028
Joined: Tuesday 03 January 2017 14:18
Target OS: Linux
Domoticz version: Beta
Location: Netherlands
Contact:

Re: high cpu when dzvents is enabled

Post by waaren »

annegerben wrote: Tuesday 07 August 2018 8:17
...
logging is set to "error + minimal execution"
Can you please reactivate the scripts and set the loglevel for domoticz one level higher (= add generic info) and look at the log to see if you find anything unusual in there.
(as example: scripts or device-adapters that are triggered very often or dzVents errors)
This might help finding the root cause.
Debian buster, bullseye on RPI-4, Intel NUC.
dz Beta, Z-Wave, RFLink, RFXtrx433e, P1, Youless, Hue, Yeelight, Xiaomi, MQTT
==>> dzVents wiki
annegerben
Posts: 26
Joined: Wednesday 03 August 2016 12:34
Target OS: Raspberry Pi / ODroid
Domoticz version:
Contact:

Re: high cpu when dzvents is enabled

Post by annegerben »

waaren wrote: Tuesday 07 August 2018 9:29
annegerben wrote: Tuesday 07 August 2018 8:17
...
logging is set to "error + minimal execution"
Can you please reactivate the scripts and set the loglevel for domoticz one level higher (= add generic info) and look at the log to see if you find anything unusual in there.
(as example: scripts or device-adapters that are triggered very often or dzVents errors)
This might help finding the root cause.
when I enable on of the scripts cpu load directly high again.

I've updated one of the scripts to report on a dummy switch, but no errors in the logs:

Code: Select all

2018-08-07 10:09:01.993 Status: EventSystem: Script event triggered: SolarInverter
2018-08-07 10:09:39.045 Status: User: AG initiated a switch command (563/TAG-Bezoek/On)
2018-08-07 10:09:40.051 Status: dzVents: Info: Handling events for: "TAG-Bezoek", value: "On"
2018-08-07 10:09:40.052 Status: dzVents: Info: ------ Start internal script: deurgeopend: Device: "TAG-Bezoek (TAG)", Index: 563
2018-08-07 10:09:40.052 Status: dzVents: Info: ------ Finished deurgeopend
2018-08-07 10:09:40.673 Status: EventSystem: Script event triggered: /home/pi/domoticz/dzVents/runtime/dzVents.lua
2018-08-07 10:09:40.703 Status: Notification: TAG-Bezoek On
2018-08-07 10:10:12.677 Status: EventSystem: Script event triggered: SolarInverter
Spoiler: show

Code: Select all

return {
	on = {
		devices = {
			['achterdeur sensor'] = { 'on mon,tue,fri' },
			['voordeur sensor'] = { 'on mon,tue,fri' },
			'TAG-Bezoek'
		}
	},
	execute = function(d, deuropen)
	    if  (d.devices('TAG-Bezoek').state == 'Off') then
	        if (d.devices('achterdeur sensor').state  == 'Open' ) then
                d.notify('achterdeur is open', 'achterdeur is open', d.PRIORITY_HIGH, d.SOUND_DEFAULT,'ONEA2003', d.NSS_GOOGLE_CLOUD_MESSAGING)
            elseif (d.devices('achterdeur sensor').state  == 'Closed' ) then
                d.notify('achterdeur is gesloten', 'achterdeur is gesloten', d.PRIORITY_HIGH, d.SOUND_DEFAULT,'ONEA2003', d.NSS_GOOGLE_CLOUD_MESSAGING)
            elseif (d.devices('voordeur sensor').state == 'Open') then
                d.notify('voordeur is open', 'voordeur is open', d.PRIORITY_HIGH, d.SOUND_DEFAULT,'ONEA2003', d.NSS_GOOGLE_CLOUD_MESSAGING)
            elseif (d.devices('voordeur sensor').state  == 'Closed' ) then
                d.notify('voordeur is gesloten', 'voordeur is gesloten', d.PRIORITY_HIGH, d.SOUND_DEFAULT,'ONEA2003', d.NSS_GOOGLE_CLOUD_MESSAGING)
            end
        end
	    
	    if (d.devices('TAG-Bezoek').state  == 'On' ) then
            d.notify('TAG-Bezoek On', 'TAG-Bezoek On', d.PRIORITY_HIGH, d.SOUND_DEFAULT,'ONEA2003', d.NSS_GOOGLE_CLOUD_MESSAGING)
        elseif (d.devices('TAG-Bezoek').state  == 'Off' ) then
            d.notify('TAG-Bezoek Off', 'TAG-Bezoek Off', d.PRIORITY_HIGH, d.SOUND_DEFAULT,'ONEA2003', d.NSS_GOOGLE_CLOUD_MESSAGING)
		end
		-- d.log('Device ' .. device.name .. ' was changed', d.LOG_INFO)
	end
}
2018-08-07 10_12_42-Window.png
2018-08-07 10_12_42-Window.png (53.55 KiB) Viewed 2666 times
dannybloe
Posts: 1355
Joined: Friday 29 August 2014 11:26
Target OS: Raspberry Pi / ODroid
Domoticz version:
Location: Ermelo
Contact:

Re: high cpu when dzvents is enabled

Post by dannybloe »

How many active devices do you have in your Domoticz instance?
Creator dzVents - RPi3, loads of zwave devices, esp8266, evohome.
annegerben
Posts: 26
Joined: Wednesday 03 August 2016 12:34
Target OS: Raspberry Pi / ODroid
Domoticz version:
Contact:

Re: high cpu when dzvents is enabled

Post by annegerben »

dannybloe wrote: Tuesday 07 August 2018 10:29 How many active devices do you have in your Domoticz instance?
I have a total of 443 devices from which 110 are set to active (used).
dannybloe
Posts: 1355
Joined: Friday 29 August 2014 11:26
Target OS: Raspberry Pi / ODroid
Domoticz version:
Location: Ermelo
Contact:

Re: high cpu when dzvents is enabled

Post by dannybloe »

Ok, that's not excessive. So, you can enable debug logging in dzVents. Then, whenever dzVents gets triggered due to an event, you should see something in Domoticz log. Apart from the events you defined in your on-sections in your three scripts, do you see more events in the log? Note that debug logging can create quite a lot of entries in the log and you may have to inspect the logging using the command-line (start domoticz exec manually from the CLI and watch the out (same as the log)). Maybe there is another device that is generating an enormous amount of events.
Creator dzVents - RPi3, loads of zwave devices, esp8266, evohome.
annegerben
Posts: 26
Joined: Wednesday 03 August 2016 12:34
Target OS: Raspberry Pi / ODroid
Domoticz version:
Contact:

Re: high cpu when dzvents is enabled

Post by annegerben »

I don't see anything strange in the log (see attached).
- I've restarted the domoticz at about 14:29
- enabled 1 dzvents script at 15.01
- trigger a switch starting at 15.06

but with debug running the CPU is near 100%
Attachments
domoticz.7z
(34.73 KiB) Downloaded 52 times
dannybloe
Posts: 1355
Joined: Friday 29 August 2014 11:26
Target OS: Raspberry Pi / ODroid
Domoticz version:
Location: Ermelo
Contact:

Re: high cpu when dzvents is enabled

Post by dannybloe »

Don't see anything weird.
Creator dzVents - RPi3, loads of zwave devices, esp8266, evohome.
annegerben
Posts: 26
Joined: Wednesday 03 August 2016 12:34
Target OS: Raspberry Pi / ODroid
Domoticz version:
Contact:

Re: high cpu when dzvents is enabled

Post by annegerben »

When I disabled Zwave the cpu usage goes back to normal.
This is not a solution of course .. :lol:

other thought: is a rpi 2b sufficient for dzvents?, what is the cpu load on a 3b+
User avatar
Egregius
Posts: 2592
Joined: Thursday 09 April 2015 12:19
Target OS: Linux
Domoticz version: v2024.7
Location: Beitem, BE
Contact:

Re: high cpu when dzvents is enabled

Post by Egregius »

My cpu load is 0.2% :lol:
But, I don't use any of the internal scripting and I run on a Intel NUC :D
annegerben
Posts: 26
Joined: Wednesday 03 August 2016 12:34
Target OS: Raspberry Pi / ODroid
Domoticz version:
Contact:

Re: high cpu when dzvents is enabled

Post by annegerben »

Egregius wrote: Wednesday 08 August 2018 11:46 My cpu load is 0.2% :lol:
But, I don't use any of the internal scripting and I run on a Intel NUC :D
hahaha, sounds like an overkill :D
an intel nuc is a bit more expensive then a rpi
SweetPants

Re: high cpu when dzvents is enabled

Post by SweetPants »

annegerben wrote: Wednesday 08 August 2018 13:20
Egregius wrote: Wednesday 08 August 2018 11:46 My cpu load is 0.2% :lol:
But, I don't use any of the internal scripting and I run on a Intel NUC :D
hahaha, sounds like an overkill :D
an intel nuc is a bit more expensive then a rpi
Yes, but since I use a NUC (more then 3 years ago now) I never had memory, cpu or disk problems anymore. And when compiling from source, it's way faster then a RPi. For me it was the best investment ever.
User avatar
Egregius
Posts: 2592
Joined: Thursday 09 April 2015 12:19
Target OS: Linux
Domoticz version: v2024.7
Location: Beitem, BE
Contact:

Re: high cpu when dzvents is enabled

Post by Egregius »

Might be overkill but you can run a virtualisation platform like EXSI or Proxmox on it and run multiple servers on 1 NUC.
That instantly gives also a great way to make complete system backups. Even if my NUC goes completely down I'm back up and running in one hour.
annegerben
Posts: 26
Joined: Wednesday 03 August 2016 12:34
Target OS: Raspberry Pi / ODroid
Domoticz version:
Contact:

Re: high cpu when dzvents is enabled

Post by annegerben »

Egregius wrote: Wednesday 08 August 2018 14:15 Might be overkill but you can run a virtualisation platform like EXSI or Proxmox on it and run multiple servers on 1 NUC.
That instantly gives also a great way to make complete system backups. Even if my NUC goes completely down I'm back up and running in one hour.
comparing a € 300 nuc to a € 40 pi isn't really fair.
I understand that the nuc is a nice and powerfull device and I also have a synology DS218+ which could run domoticz.
But I like to run domoticz on a dedicated device so I can keep the down time to a minimum and take the other devices offline when I want or need.
Also no down time (running it on a dedicated device) keeps the WAF high ;)

So if spending €40 on a RPI 3b+ will solve my problem that would be acceptable.
But a solution for my current setup would be even better.
User avatar
Egregius
Posts: 2592
Joined: Thursday 09 April 2015 12:19
Target OS: Linux
Domoticz version: v2024.7
Location: Beitem, BE
Contact:

Re: high cpu when dzvents is enabled

Post by Egregius »

Well, the RPi 3B is lot's faster than the RPi2. No doubt about that. I have RPi2, 3 and 3B in the house and the speed difference is quite noticable.
User avatar
waaren
Posts: 6028
Joined: Tuesday 03 January 2017 14:18
Target OS: Linux
Domoticz version: Beta
Location: Netherlands
Contact:

Re: high cpu when dzvents is enabled

Post by waaren »

annegerben wrote: Wednesday 08 August 2018 11:41 When I disabled Zwave the cpu usage goes back to normal.
This is not a solution of course .. :lol:

other thought: is a rpi 2b sufficient for dzvents?, what is the cpu load on a 3b+
Just wondering could it be that the zwave sconfig is set to update the sensors and devices very frequent ? dzVents loads the device-adapters on every update so with many zwave devices and frequent zwave updates this might have impact.
Debian buster, bullseye on RPI-4, Intel NUC.
dz Beta, Z-Wave, RFLink, RFXtrx433e, P1, Youless, Hue, Yeelight, Xiaomi, MQTT
==>> dzVents wiki
annegerben
Posts: 26
Joined: Wednesday 03 August 2016 12:34
Target OS: Raspberry Pi / ODroid
Domoticz version:
Contact:

Re: high cpu when dzvents is enabled

Post by annegerben »

Received a new rpi3b+ yesterday.
cpu load without dzvents is about 1%
cpu load without dzvents is about 5%

so quite a difference
2018-08-10 08_07_44-Window.png
2018-08-10 08_07_44-Window.png (69.31 KiB) Viewed 2488 times
Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest