[gelöst]FHEMWEB viele PIDs in HTOP nach Aufruf eines DOIF-Cards

Begonnen von Bartimaus, 21 März 2022, 11:21:43

Vorheriges Thema - Nächstes Thema

Bartimaus

Du hast Recht, DOIF-Card + SVG-Plot in einem Raum verträgt sich nicht. Es bleibt bei einem FHEM-Prozess/PID wenn dies getrennt in den Räumen vorhanden ist.

Danke Euch beiden !
LG
B.


FHEM@Intel-J4105@Debian-LXC, CUL1101,FS20,IT,DS18B20,DS2413(Heizungslogger),DS2423(Stromlogger)Homematic,HM-LAN,ZWave,MiniCULs,Shelly

Damian

Zitat von: Bartimaus am 22 März 2022, 21:56:05
Du hast Recht, DOIF-Card + SVG-Plot in einem Raum verträgt sich nicht. Es bleibt bei einem FHEM-Prozess/PID wenn dies getrennt in den Räumen vorhanden ist.

Danke Euch beiden !

Dennoch bleibt die Frage. Warum nicht?
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

rudolfkoenig

Kann mir jemand was zum Nachstellen bauen?
Die SVG-Plots kriege ich schon selber hin, aber mit den Cards brauche ich Hilfe.

Damian

Zitat von: rudolfkoenig am 22 März 2022, 22:03:26
Kann mir jemand was zum Nachstellen bauen?
Die SVG-Plots kriege ich schon selber hin, aber mit den Cards brauche ich Hilfe.

Bartimaus kann ja seine Definition mit den cards posten, die angegebenen Readings kann man durch Readings eines Dummys ersetzen.

Die Frage stellt sich, ob es mit den geloggten Datenmengen zusammenhängt, allerdings wird der Speicherplatz für die benötigten Arrays bereits vorher schon im Device angelegt.

Entweder ist es ein Timingproblem, weil 40 cards beim Aufbau etwas Zeit brauchen oder es hat was mit den HTML-SVG-Elementen, die beide Module benutzen. Ich gehe davon aus, dass die zusätzlichen FHEM-PIDs durch den Fork-Mechanismus der SVG-Plots entstehen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Bartimaus

Moin,

hier ist mal das fetteste DOIF-Card:

{package ui_Table}
card([1wire_Strom_Gesamt:E-Power:col48],"aktueller Strom,fill:darkorange","power","0.00","10.00",120,0,"kW",undef,"2")|
card([1wire_Strom_Gesamt:Hz-Power:col48],"Strom_Heizung,fill:darkorange","power","0.00","0.35",120,0,"kW",undef,"2")|
card([1wire_Strom_Gesamt:E-Energy:col48],"Tagesstrom,fill:darkorange","power",0.00,25.00,120,0,"kWh",undef,2)|
card([Shelly.DachbodenPV:power_1:col48],"Balkonkraftwerk,fill:darkorange","sani_solar",0.00,1000,0,90,"W",undef,0)|
card([powerday:TagesErtrag:col1w],"TagesErtrag PV","sani_solar",0,6,0,90,"kWh",undef,3)
card([Shelly.DachbodenPV:SunAlt:col24],"Einstrahlwinkel","sani_solar",-30,90,0,120,"Grad",undef,0)|
card([Shelly.DachbodenPV:SunAz:col24],"Einstrahl-Richtung","sani_solar",0,360,0,120,"Grad",undef,0)|
card([Zwave.KinoHifi:power:col48],"KinoHifi,fill:darkorange","power","0.00","250",120,0,"W",undef,0)|
card([Tasmota.Koogeek2:ENERGY_Power:col48],"HifiWz,fill:darkorange","power","0.00","100",120,0,"W",undef,0)|
card([MQTT2_DVES_462F4B:ENERGY_Power:col48],"PS5,fill:darkorange","power",0.00,350,90,0,"W",undef,0)
card([MQTT2_DVES_4519BA:ENERGY_Power:col48],"RPi4DNS,fill:darkorange","power","0.00","350",120,0,"W",undef,"2")|
card([MQTT2_shellyplug_s_F02BB3:relay_0_power:col48],"KellerPC,fill:darkorange","power","0.00","150",120,0,"W",undef,0)|
card([MQTT2_DVES_45B635:ENERGY_Power:col48],"WzTV,fill:darkorange","power","0.00","250",120,0,"W",undef,0)|
card([Strom.Dachboden:Dachboden:col48],"Ubiquiti,fill:darkorange","power","0.00","100",120,0,"W",undef,"2")|
card([Shelly.DachbodenPV:power_0:col48],"RPi4-FHEM,fill:darkorange","power","0.00","15",120,0,"W",undef,"2")
card([Tasmota.Trockner:ENERGY_Power:col48],"Trockner,fill:darkorange","power","0.00","3600",90,0,"W",undef,0)|
card([Tasmota.Koogeek4:ENERGY_Power:col48],"Spülmaschine,fill:darkorange","power","0.00","3500",120,0,"W",undef,0)|
card([Waschmaschine:ENERGY_Power:col48],"Waschmaschine,fill:darkorange","power","0.00","2800",120,0,"W",undef,0)|
card([Tasmota.Oelradiator:ENERGY_Power:col48],"Ölradiator,fill:darkorange","power",0.00,3600,120,0,"W",undef,0)|
card([Licht.SaunaRuheRaum:power:col48],"Luftentfeuchter,fill:darkorange","power","0.00","260",120,0,"W",undef,0)
card([Licht.Stehlampe:power:col48],"Licht.StehlampeWz,fill:darkorange","power","0.00","50",120,0,"W",undef,2)|
card([Licht.TV:power:col48],"Licht.TV,fill:darkorange","power","0.00","15",120,0,"W",undef,2)|
card([Licht.Kino:power:col48],"Licht.Kino,fill:darkorange","power","0.00","150",120,0,"W",undef,2)|
card([Licht.Kueche:power:col48],"Licht.Kueche,fill:darkorange","power","0.00","50",120,0,"W",undef,"2")|
card([Licht.Willi:power:col48],"Licht.Willi,fill:darkorange","power","0.00","50",120,0,"W",undef,"2")
card([Licht.Wilma:power:col48],"Licht.Wilma,fill:darkorange","power","0.00","50",120,0,"W",undef,"2")|
card([Licht.Flur:power:col48],"Licht.Flur,fill:darkorange","power","0.00","25",120,0,"W",undef,"2")|
card([Licht.Gaeste:power:col48],"Licht.Gaestezimmer,fill:darkorange","power","0.00","50",120,0,"W",undef,"2")|
card([Licht.Treppe:power:col48],"Licht.Treppe,fill:darkorange","power","0.00","50",120,0,"W",undef,"2")|
card([Licht.Gartenhaus:power:col48],"Licht.Gartenhaus,fill:darkorange","power","0.00","25",120,0,"W",undef,"2")
card([Licht.Terasse:relay_0_power:col48],"Licht.Terasse,fill:darkorange","power","0.00","40",120,0,"W",undef,"2")|
card([Licht.Terasse2:relay_1_power:col48],"Licht.Terasse2,fill:darkorange","power","0.00","40",120,0,"W",undef,"2")|
card([Licht.Stehlampe.Gaeste:power:col48],"Licht.StehlampeGaeste,fill:darkorange","power","0.00","25",120,0,"W",undef,"2")|
card([Zwave_Plug1:power:col48],"PC1,fill:darkorange","power","0.00","350",120,0,"W",undef,"2")|
card([MQTT2_DVES_657752:ENERGY_Power:col48],"XMasLicht,fill:darkorange","power","0.00","50",90,0,"W",undef,0)
card([MQTT2_DVES_657752:ENERGY_Today:col48],"XMas,fill:darkorange","power","0.00","5",90,0,"kWh",undef,0)|
card([sysmon:cpu_temp:col48],"RPi4-Temp,fill:darkorange","temp_inside","15.00","85",90,0,"°C",undef,0)|
card([MQTT2_shellyplug_s_BBA348:relay_0_power:col48],"PCHerbert,fill:darkorange","power","0.00","150",120,0,"W",undef,0)|
card([MQTT2_shellyplug_s_1C121B:relay_0_power:col48],"MediaServer,fill:darkorange","power","0.00","150",120,0,"W",undef,0)|
card([Tasmota.Frei_1.1:ENERGY_Power:col1w],"SolarThermie,fill:darkorange","power","0.00","40",120,0,"W",undef,0)
card([Shelly.GartenhausPV:power:col96],"Gartenkraftwerk,fill:darkorange","sani_solar",0.00,600,0,90,"W",undef,0)|
card([powerday:TagesErtrag2:col1w],"GartenPVTagesErtrag","sani_solar",0,6,0,90,"kWh",undef,3)|
card([Shelly.DachbodenPV:GesamtPower:col96],"GesamtPowerPV,fill:darkorange","sani_solar",0.00,1250,0,90,"W",undef,0)|
card([powerday:GesamtErtrag:col1w],"GesamtTagesErtragPV","sani_solar",0,6,0,90,"kWh",undef,3)|
LG
B.


FHEM@Intel-J4105@Debian-LXC, CUL1101,FS20,IT,DS18B20,DS2413(Heizungslogger),DS2423(Stromlogger)Homematic,HM-LAN,ZWave,MiniCULs,Shelly

rudolfkoenig

Zitathier ist mal das fetteste DOIF-Card:
Schaut maechtig aus, ich befuerchte aber, dass ich nicht zum Ziel komme, wenn ich das in fhem.cfg so reinkopiere.
Kann mir bitte jemand den Rest der Definition auch noch zeigen?

Damian

#21
Ich habe es von Hand editiert, daher muss man es über den Editor kopieren. Davor müsstest du dir einen Dummy d_card mit Readings test1 bis test44 mit irgendwelchen Zahlen generieren.

define di_card_test DOIF
attr di_card_test uiTable {package ui_Table}
card([d_card:test1:col48],"aktueller Strom,fill:darkorange","power","0.00","10.00",120,0,"kW",undef,"2")|
card([d_card:test2:col48],"Strom_Heizung,fill:darkorange","power","0.00","0.35",120,0,"kW",undef,"2")|
card([d_card:test3:col48],"Tagesstrom,fill:darkorange","power",0.00,25.00,120,0,"kWh",undef,2)|
card([d_card:test4:col48],"Balkonkraftwerk,fill:darkorange","sani_solar",0.00,1000,0,90,"W",undef,0)|
card([d_card:test5:col1w],"TagesErtrag PV","sani_solar",0,6,0,90,"kWh",undef,3)
card([d_card:test6:col24],"Einstrahlwinkel","sani_solar",-30,90,0,120,"Grad",undef,0)|
card([d_card:test7:col24],"Einstrahl-Richtung","sani_solar",0,360,0,120,"Grad",undef,0)|
card([d_card:test8:col48],"KinoHifi,fill:darkorange","power","0.00","250",120,0,"W",undef,0)|
card([d_card:test9:col48],"HifiWz,fill:darkorange","power","0.00","100",120,0,"W",undef,0)|
card([d_card:test10:col48],"PS5,fill:darkorange","power",0.00,350,90,0,"W",undef,0)
card([d_card:test11:col48],"RPi4DNS,fill:darkorange","power","0.00","350",120,0,"W",undef,"2")|
card([d_card:test12:col48],"KellerPC,fill:darkorange","power","0.00","150",120,0,"W",undef,0)|
card([d_card:test13:col48],"WzTV,fill:darkorange","power","0.00","250",120,0,"W",undef,0)|
card([d_card:test14:col48],"Ubiquiti,fill:darkorange","power","0.00","100",120,0,"W",undef,"2")|
card([d_card:test15:col48],"RPi4-FHEM,fill:darkorange","power","0.00","15",120,0,"W",undef,"2")
card([d_card:test16:col48],"Trockner,fill:darkorange","power","0.00","3600",90,0,"W",undef,0)|
card([d_card:test17:col48],"Spülmaschine,fill:darkorange","power","0.00","3500",120,0,"W",undef,0)|
card([d_card:test18:col48],"Waschmaschine,fill:darkorange","power","0.00","2800",120,0,"W",undef,0)|
card([d_card:test19:col48],"Ölradiator,fill:darkorange","power",0.00,3600,120,0,"W",undef,0)|
card([d_card:test20:col48],"Luftentfeuchter,fill:darkorange","power","0.00","260",120,0,"W",undef,0)
card([d_card:test21:col48],"Licht.StehlampeWz,fill:darkorange","power","0.00","50",120,0,"W",undef,2)|
card([d_card:test22:col48],"Licht.TV,fill:darkorange","power","0.00","15",120,0,"W",undef,2)|
card([d_card:test23:col48],"Licht.Kino,fill:darkorange","power","0.00","150",120,0,"W",undef,2)|
card([d_card:test24:col48],"Licht.Kueche,fill:darkorange","power","0.00","50",120,0,"W",undef,"2")|
card([d_card:test25:col48],"Licht.Willi,fill:darkorange","power","0.00","50",120,0,"W",undef,"2")
card([d_card:test26:col48],"Licht.Wilma,fill:darkorange","power","0.00","50",120,0,"W",undef,"2")|
card([d_card:test27:col48],"Licht.Flur,fill:darkorange","power","0.00","25",120,0,"W",undef,"2")|
card([d_card:test28:col48],"Licht.Gaestezimmer,fill:darkorange","power","0.00","50",120,0,"W",undef,"2")|
card([d_card:test29:col48],"Licht.Treppe,fill:darkorange","power","0.00","50",120,0,"W",undef,"2")|
card([d_card:test30:col48],"Licht.Gartenhaus,fill:darkorange","power","0.00","25",120,0,"W",undef,"2")
card([d_card:test31:col48],"Licht.Terasse,fill:darkorange","power","0.00","40",120,0,"W",undef,"2")|
card([d_card:test32:col48],"Licht.Terasse2,fill:darkorange","power","0.00","40",120,0,"W",undef,"2")|
card([d_card:test33:col48],"Licht.StehlampeGaeste,fill:darkorange","power","0.00","25",120,0,"W",undef,"2")|
card([d_card:test34:col48],"PC1,fill:darkorange","power","0.00","350",120,0,"W",undef,"2")|
card([d_card:test35:col48],"XMasLicht,fill:darkorange","power","0.00","50",90,0,"W",undef,0)
card([d_card:test36:col48],"XMas,fill:darkorange","power","0.00","5",90,0,"kWh",undef,0)|
card([d_card:test37:col48],"RPi4-Temp,fill:darkorange","temp_inside","15.00","85",90,0,"°C",undef,0)|
card([d_card:test38:col48],"PCHerbert,fill:darkorange","power","0.00","150",120,0,"W",undef,0)|
card([d_card:test39:col48],"MediaServer,fill:darkorange","power","0.00","150",120,0,"W",undef,0)|
card([d_card:test40:col1w],"SolarThermie,fill:darkorange","power","0.00","40",120,0,"W",undef,0)
card([d_card:test41:col96],"Gartenkraftwerk,fill:darkorange","sani_solar",0.00,600,0,90,"W",undef,0)|
card([d_card:test42:col1w],"GartenPVTagesErtrag","sani_solar",0,6,0,90,"kWh",undef,3)|
card([d_card:test43:col96],"GesamtPowerPV,fill:darkorange","sani_solar",0.00,1250,0,90,"W",undef,0)|
card([d_card:test44:col1w],"GesamtTagesErtragPV","sani_solar",0,6,0,90,"kWh",undef,3)


Edit: Tippfehler korrigiert
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Bartimaus

LG
B.


FHEM@Intel-J4105@Debian-LXC, CUL1101,FS20,IT,DS18B20,DS2413(Heizungslogger),DS2423(Stromlogger)Homematic,HM-LAN,ZWave,MiniCULs,Shelly

rudolfkoenig

Wenn ich die Cards anschaue (noch ohne zusaetzliche SVGs), dann verbraucht der Browser etwa ein CPU, laut Browser-Task-Manager 2/3 im GPU-Prozess und 1/3 im JavaScript.

@Damian: hast Du eine Ahnung, wo das herkommt?
Ich bin nach 10 Minuten Suche nicht fuendig geworden, und ich dachte, ich frag mal nach :)

Damian

Zitat von: rudolfkoenig am 23 März 2022, 13:00:35
Wenn ich die Cards anschaue (noch ohne zusaetzliche SVGs), dann verbraucht der Browser etwa ein CPU, laut Browser-Task-Manager 2/3 im GPU-Prozess und 1/3 im JavaScript.

@Damian: hast Du eine Ahnung, wo das herkommt?
Ich bin nach 10 Minuten Suche nicht fuendig geworden, und ich dachte, ich frag mal nach :)

Ja, das ist das Blinken des Punktes des aktuellen Wertes in der Grafik. Bei 44 cards muss wohl selbst der Browser etwas tun. Ich habe schon mal überlegt, das Blinken als Option zu definieren.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

rudolfkoenig

Ach, <animate>, haette ich denken koennen. Ich vermeide sie zu verwenden, selbst ein animiertes SVG-Element beschaeftigt meine CPU zu 100%. 44 animierte Kreise benoetigen 1.5 CPUs. Immerhin ist Chrome gescheit genug die CPU in Ruhe zu lassen, wenn die Seite nicht sichtbar ist. Kann auch OS-abhaengig sein, Chrome meidet die GPU unter Linux.

Die schlechte Nachricht: ich kann das eigentliche Problem nicht reproduzieren: die 44 cards und die 4 SVGs bauen sich beim Reload in gefuehlt 0.1s auf, danach ist die CPU still (animate habe ich auskommentiert :) ), ich sehe nur einen FHEM-Prozess, und der braucht 0% CPU.

@Boze Geest:
- ist das Problem ohne Cards, nur mit SVGs in einem FHEM-Raum, auch vorhanden?
- gibt es Unterschiede, wenn man einen anderen Browser verwendet? Apropos: welchen Browser verwedest Du?

Bartimaus

#26
Also ich verwende Chrome@Windows10+11.

Ich habe einen separaten Raum für SVG-Plots. Dort liegen 23 Plots aus meinen 1w-Sensoren. Öffne ich diesen Raum, schnellen die FHEM-Pids auf 24 Stück hoch, die sich bis auf 4 Prozesse nach ca. 20s wieder abbauen, der Rest dauert dann auch nochmal ca. 5s.

Gerade mal getestet mit MS-Edge, gleiches Verhalten.
Getestet mit plotEmbed=1 oder 2

LG
B.


FHEM@Intel-J4105@Debian-LXC, CUL1101,FS20,IT,DS18B20,DS2413(Heizungslogger),DS2423(Stromlogger)Homematic,HM-LAN,ZWave,MiniCULs,Shelly

rudolfkoenig

Verstehe ich richtig: nach eine Weile sind keine FHEM-Prozesse mehr da, und eine Endlosschliefe ist auch nicht zu beobachten, d.h. das urspruengliche Problem ist nicht aufgetreten.

Die 23 zusaetzlichen Prozesse sind merkwuerdig: bei meinem Setup mit 12 SVGs auf einer Seite / Jahresansicht werden nie mehr als 6 Prozesse gestartet, egal ob der Browser unter Linux oder Windows laeuft (Chrome und Firefox). Die Begrenzung ist hier nicht auf der FHEM Seite, mit zwei Browser sehe ich bis zu 12 parallele Prozesse.

Bartimaus

Eine Endlosschleife gab es nie. Alle FHEM-Prozesse wurden sukzessive auch wieder abgebaut. Bis auf einen natürlich.

Wenn ich die 23 SVG-Plots aufrufe, dauert es eine Zeitlang bis aus den Logdateien alle Werte ausgelesen wurden, um diese grafisch aufzubereiten. Sind alle Plots vollständig, bauen sich die zusätzlichen FHEM-Prozesse wieder ab. Ich dachte dies ist das sogenanten "Forken", also Multitasking bei den Plots.

Was ich darüber hinaus beobachtet habe, ist, das dieser Prozess umso länger dauert, je länger FHEM seit letztem Neustart läuft. Nach einem FHEM-Neustart, werden viel weniger FHEM-Prozesse aufgebaut, und die sind auch schneller wieder abgebaut.  ::)
LG
B.


FHEM@Intel-J4105@Debian-LXC, CUL1101,FS20,IT,DS18B20,DS2413(Heizungslogger),DS2423(Stromlogger)Homematic,HM-LAN,ZWave,MiniCULs,Shelly

Damian

Wie hoch ist dein Speicherverbrauch, wenn du den Raum nicht aufrufst?

Also 2.7 GB Speichernutzung ist für einen raspi schon ne ganze Menge. Mein raspi 4 mit 4 GB mit einem umfangreichen FHEM-System hat einen Speicherverbrauch von ca. 270 MB.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF