hohe CPU-Last durch Stromzähler, der dauernd Daten pusht

Begonnen von willybauss, 18 Februar 2016, 10:03:12

Vorheriges Thema - Nächstes Thema

limats

Hallo,

mit dem Modul SMLUSB hatte ich ein ähnliches Problem: mein über den Volkszähler-Sensor angeschlossene Stromzähler treibt die Last stark nach oben.
Ich konnte das Problem bei mir durch einen sehr kleinen Eingriff entschärfen: die USB-Anbindung der FHEM Module kennt 2 Mechanismen. Unter Linux wird mit Interrupts gearbeitet während unter Windows gepollt wird. Ich hab das Modul bei mir nun auf den Polling-Mechanismus umgestellt, obwohl mein System unter Linux läuft.
Seitdem ist die CPU-Last wieder viel niedriger.
Vielleicht hilft das bei dir ja auch...

Gruß
Leo
Fhem auf BBB:
HM-CFG-USB für div. HM-Sensoren, CUL+WMBUS für EnergyCam, Nanocul für IT, Arduino Mega 2560 als 1-wire-Gateway und für div. digitale Ein-/Ausgänge, Volkszähler-USB-IR-Lesekopf mit SMLUSB, Solarsteuerung über VBUS

majorshark

Könntest Du bitte genauer Dokumentieren was Du am SMLUSB Modul geändert hast.
Grüße aus Dewitz

VM auf Synology DS718+ mit FHEM 5.9 auf Debian 9.5/32-Bit (stretch)
Nächster Leipziger Stammtisch:

limats

Hallo,

im Anhang meine modifizierte Variante des SMLUSB Moduls.

Soweit ich mich erinnern kann, sind die einzige 3 relevanten geänderten Zeilen folgende aus der Methode SMLUSB_DoInit:
delete $hash->{FD};
delete($selectlist{"$name.$dev"});
$readyfnlist{"$name.$dev"} = $hash;


Gruß
Leo
Fhem auf BBB:
HM-CFG-USB für div. HM-Sensoren, CUL+WMBUS für EnergyCam, Nanocul für IT, Arduino Mega 2560 als 1-wire-Gateway und für div. digitale Ein-/Ausgänge, Volkszähler-USB-IR-Lesekopf mit SMLUSB, Solarsteuerung über VBUS

willybauss

FHEM auf Raspberry Pi B und 2B; THZ (THZ-303SOL), CUL_HM, TCM-EnOcean, SamsungTV, JSONMETER, SYSMON, OBIS, STATISTICS

majorshark

#19
Danke. Spiel ich gleich mal ein.

Edit:
Funktioniert perfekt. Ich dachte erst FHEM läuft gar micht mehr weil es im 'top' nicht mehr oben aufgefürt war.
Grüße aus Dewitz

VM auf Synology DS718+ mit FHEM 5.9 auf Debian 9.5/32-Bit (stretch)
Nächster Leipziger Stammtisch:

willybauss

Bei mir ebenfalls. Habe jetzt einfach mal Init() und Undef() nahezu 1:1 ins OBIS-Modul übernommen. Ergebnis genau wie bei majorshark: CPU-Last von perl kaum noch erkennbar: 0,7 ... 1%; vorher 6 ... 10%.


DAAAAAANKE!


Habe den Fix jetzt mal an den OBIS-Autor weitergegeben in der Hoffnung, dass er es implementiert.
FHEM auf Raspberry Pi B und 2B; THZ (THZ-303SOL), CUL_HM, TCM-EnOcean, SamsungTV, JSONMETER, SYSMON, OBIS, STATISTICS

rudolfkoenig

Nur als Info: ihr habt damit von "Sofortbenachrichtigung via select()" auf "Pollen alle 5 Sekunden" umgestellt. Das Intervall ist kuerzer, wenn andere select()-Verbindungen (USB/TCP/etc) gerade Daten schicken.

matzefisi

Hi limats,

vielen Dank, ich werde den Tip gleich nächste Woche in mein Modul aufnehmen.

MfG
Matzefisi

willybauss

Auch von mir  nochmal ein Nachtrag:
der Autor hat das OBIS-Modul inzwischen genauso upgedatet wie von limats vorgeschlagen. Bei mir läuft das neue Modul seit einigen Tagen fehlerfrei im Test. Ich gehe davon aus, dass er es demnächst einchecken wird, falls nicht bereits geschehen.
FHEM auf Raspberry Pi B und 2B; THZ (THZ-303SOL), CUL_HM, TCM-EnOcean, SamsungTV, JSONMETER, SYSMON, OBIS, STATISTICS

Icinger

Beim OBIS ist das optional........Eingechekt wird heute abend, sobald ich meinen Entwickler-Laptop wieder habe ^^
Verwende deine Zeit nicht mit Erklärungen. Die Menschen hören (lesen) nur, was sie hören (lesen) wollen. (c) Paulo Coelho

willybauss

Zitat von: Icinger am 28 Februar 2016, 14:38:05
Beim OBIS ist das optional.......


Könntest Du bitte erklären, weshalb man beide Modi alternativ verwenden muss? Ich habe Rudolfs Erklärung nicht so recht verstanden, war mir zu kurz.
FHEM auf Raspberry Pi B und 2B; THZ (THZ-303SOL), CUL_HM, TCM-EnOcean, SamsungTV, JSONMETER, SYSMON, OBIS, STATISTICS

Icinger

Nicht MUSS....Du kannst entweder/oder verwenden.

Im Normalfall wird das Modul in dem Moment über neue Daten an der Schnittstelle informiert, in dem die tatsächlich ankommen. -> Sofortbenachrichtigung -> quasi Echtzeit

Beim Pollen schaut FHEM nur ca. alle 5 Sekunden, ob Daten anliegen, und informiert dann das Modul.
Somit kannst du also auch mal 5 Sekunden alte Daten haben, weil die zB ein paar Milisekunden nach dem letzten Poll angekommen sind.

Hoffe, das is so verständlich?
Verwende deine Zeit nicht mit Erklärungen. Die Menschen hören (lesen) nur, was sie hören (lesen) wollen. (c) Paulo Coelho

willybauss

Zitat von: Icinger am 28 Februar 2016, 18:55:57
Nicht MUSS....Du kannst entweder/oder verwenden.


Ja, klar. Meine Frage war an dieser Stelle blöd formuliert.


So habe ich es nun verstanden, danke. Das ist für mich aber gar kein Problem, da ich ja ohnehin nur alle 60 Sekunden einen Wert haben möchte. Deshalb würde für mich sogar ein pollen alle 60 Sekunden ausreichen. Aber da das offenbar keine Auswirkungen mehr auf die CPU-Last haben würde ist es mir grade wurscht, ob alle 5 oder 60 Sekunden gepollt wird.
FHEM auf Raspberry Pi B und 2B; THZ (THZ-303SOL), CUL_HM, TCM-EnOcean, SamsungTV, JSONMETER, SYSMON, OBIS, STATISTICS

matzefisi

So, im SMLUSB Modul ist der optionale pollingMode nun auch hinterlegt. Vielen Dank an Euch für den Tip und an Icinger für die Vorarbeit im OBIS Modul :)

wthiess

Hallo!

Kann mir jemand hier Beantworten wie ich mit z.B. event-on-change-reading und einen Parameter Werte "größer als" extrem Ausreißer verwerfen kann.
Habe die Frage in anderer Form schon im Forum gestellt. Leider keine Antwort.
Leider liefern manche Sensoren manchmal extreme Werte, die z.B. bei Heizungssteuerung fatal sind, und im Plott nicht schön aussehen.
2016-05-09_17:38:18 DS2 T: 16.187
2016-05-09_17:38:19 DS3 T: 21.125
2016-05-09_17:43:21 DS1 T: 127.687
2016-05-09_17:43:25 DS2 T: 16.187
2016-05-09_17:43:26 DS3 T: 21.187
2016-05-09_17:48:25 DS1 T: 17.75
2016-05-09_17:48:29 DS2 T: 16.187
2016-05-09_17:48:30 DS3 T: 21.187
2016-05-09_17:53:30 DS1 T: 17.687
2016-05-09_17:53:33 DS2 T: 16.187
2016-05-09_17:53:34 DS3 T: 21.062
2016-05-09_17:58:34 DS1 T: 127.687
2016-05-09_17:58:38 DS2 T: 16.187
2016-05-09_17:58:38 DS3 T: 21
2016-05-09_18:03:38 DS1 T: 127.687
2016-05-09_18:03:42 DS2 T: 16.187

lg
Wolfgang
Raspberry Pi 3; 8xRelais; Aptodec Nano V3.0 Pro; FS1000a; RF-5V; Hama TS33C; 3x Brennerstuhl FunkSteckdosen; 9x Dooya funk Rollo; KWL Systemair VR400; Thermokon Modbusthermostat; diverse China Modbus Thermostate; 1-wire Bus; Telegram; QuickFhem; FhemNative; Firmata; Alexa ......