1wire auf Raspberry direkt auf GPIO4 mit w1-gpio-Modul

Begonnen von Punkt, 15 Februar 2013, 22:51:04

Vorheriges Thema - Nächstes Thema

KölnSolar

ZitatJa...manchmal fange ich auch an zu zweifeln. Ich habe vielleicht auch einfach ein bisschen mehr als der Durchschnittsuser auf dem Raspi laufen
Lass mal die Zweifel. Ich hab just heute im Log gesehen, dass ich auch ab und an Perl warnings aus Zeile 211 bekomme. ::) Komischerweise, wo ich in einem anderen Modul(auch blockingCall) einige Perl warnings bekommen habe. Irgendwie drängt sich der Verdacht auf, dass es entweder die Anzahl der blockingCalls(davor wird ja bei Verwendung von BlockinCall gewarnt) ist oder die hohe Systemlast.

Was läuft denn bei Dir noch so mit häufigen BlockingCalls ?
Hattest Du nicht auch freezes gemeldet ?

Ich hab mal den Fehler abgefangen. Dann kommt wenigstens(hoffentlich) keine perl warning mehr. Dafür aber ein "erwünschter" Log-Eintrag zum Fehler. Außerdem wird der Fehler nun auch als solcher gezählt und ein neues reading "failreason" angelegt. Vielleicht bekommen wir über Statistik ein Gefühl, warum das passiert. Sobald bei mir mal ein Fehler auftaucht, attache ich hier die Version.

Grüße Markus
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

bismosa

Hallo!

ZitatWas läuft denn bei Dir noch so mit häufigen BlockingCalls ?
Hattest Du nicht auch freezes gemeldet ?
Hauptfreeze ist bei mir das GPIO4. Das ist zumindest sehr auffällig. Deswegen möchte ich das auch nach Möglichkeit beseitigen.  :)
Es läuft halt recht viel...was da jetzt im Blocking-Call läuft...keine Ahnung.

Nur mal so als Idee:
Es werden alle Sensoren gleichzeitig abgefragt (und nicht mehr nacheinander). Vielleicht muss man eine zeitliche Verzögerung einbauen, damit für den BUS genug Zeit ist um alle Sensoren abzufragen.?
Ich probier das nachher mal aus, ob sich dann etwas ändert.

Gruß
Bismosa
1x nanoCUL 433MHz (SlowRF Intertechno) für Fenstersensoren
1x nanoCUL 868Mhz für MAX (9x HT 1xWT)
1x ZigBee CUL
Weiteres: Squeezebox server, Kindle Display, ESP8266, Löterfahrung, ...

KölnSolar

ZitatEs werden alle Sensoren gleichzeitig abgefragt (und nicht mehr nacheinander).
Neinnein. Da hat sich nichts geändert. Jedes device hat sein eigenes polling interval. Wenn Du das Attribut nicht setzt, ist der Standard 60.

Ich häng jetzt mal die Testversion an, da sie bei mir seit ein einem halben Tag läuft u. ich Logmeldungen des neuen features bekam, das daran liegt, dass ein Sensor gar nicht angeschlossen ist. und tatsächlich einmal einen read failure. Der open/read Fehler erscheint im Log u. als reading. Der failure counter wird hochgezählt. Scheint also ganz hilfreich.  ;)

Grüße Markus
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

bismosa

Hallo!

ZitatNeinnein. Da hat sich nichts geändert.
Doch ich glaube schon. Wenn ich das richtig verstanden habe funktioniert das in etwa so: (Sorry...eigentlich habe ich keine Ahnung)
Beim starten von FHEM werden alle Definitionen geladen und die Timer zum aktualisieren gesetzt. Vermutlich alle innerhalb einer Sekunde.
Also kommt es beim Polling zu einer Überschneidung.

Durch das lesen des Files wird der eigentliche Sensor abgefragt. Daher auch die Verzögerung.
Alter weg:
Sensor1 wird abgefragt...dies dauert 1-2sek. (Fhem blockiert)...wert wird übernommen
Sensor2 wird abgefragt...dies dauert 1-2sek. (Fhem blockiert)...wert wird übernommen
Neuer weg:
Jeder Sensor wird in einem eigenem "Thread/Prozess" (Sorry, ich programmiere hauptsächlich in Windows) abgefragt. Es kommt nicht zum blocking von FHEM, also werden ggf. mehrere Sensoren zur gleichen Zeit abgefragt.

Siehe auch mein vereinfachtes Beispiel. Frage ich alle nacheinander non-Blocking ab, erhalte ich eine Antwort innerhalb von 2-3sek für alle. Bei einer blockierenden Abfrage dauert es 7sek. bis alle Werte verfügbar sind.

Ich habe mal einen Test in einem Bash-Script gemacht:

cat /sys/bus/w1/devices/28-01143b91f4aa/w1_slave &
cat /sys/bus/w1/devices/28-01143b98f5aa/w1_slave &
cat /sys/bus/w1/devices/28-01143beb36aa/w1_slave &
cat /sys/bus/w1/devices/28-01143bf065aa/w1_slave &
cat /sys/bus/w1/devices/28-041636495aff/w1_slave &
cat /sys/bus/w1/devices/28-01143b97ecaa/w1_slave &
cat /sys/bus/w1/devices/28-01143bb82baa/w1_slave &
cat /sys/bus/w1/devices/28-01143beb9aaa/w1_slave &
cat /sys/bus/w1/devices/28-0316363035ff/w1_slave &
cat /sys/bus/w1/devices/28-0416367be4ff/w1_slave &

So werden bei mir alle Sensoren gleichzeitig/Parallel abgefragt. Und auch hier passiert es, dass einzelne Sensoren nichts melden.
Frage ich die nacheinander ab (ohne "&"), gibt es das Problem nicht.

Ich könnte auch das einfach von FHEM abkoppeln mit einem Bash-Script...das nutze ich bei i2c mit meinen Analogen Sensoren auch. Aber ich bin auch an einer Lösung hier interessiert  ;)

Modul teste ich später. Schaffe das gerade zeitlich nicht  :)

Gruß
Bismosa
1x nanoCUL 433MHz (SlowRF Intertechno) für Fenstersensoren
1x nanoCUL 868Mhz für MAX (9x HT 1xWT)
1x ZigBee CUL
Weiteres: Squeezebox server, Kindle Display, ESP8266, Löterfahrung, ...

KölnSolar

ZitatDoch ich glaube schon. Wenn ich das richtig verstanden habe funktioniert das in etwa so: (Sorry...eigentlich habe ich keine Ahnung)
Beim starten von FHEM werden alle Definitionen geladen und die Timer zum aktualisieren gesetzt. Vermutlich alle innerhalb einer Sekunde.
Also kommt es beim Polling zu einer Überschneidung.
Da hast Du recht. Und vielleicht ist das der Grund, warum ich keine Probleme habe. Ich hab ja unterschiedliche Intervalle gesetzt.

Ich hab mal etwas umgebaut. Dadurch müsste sich das über die Zeit entzerren, weil der timer durch Systemverzögerungen sich immer mehr auseinanderschieben müsste.

Was mir beim Studium des Codes auch noch in den Sinn gekommen ist: rein theoretisch könnte es passieren, dass der letzte Call gerade läuft und nun der neue Call(60s später) erst einmal prüft, ob es den letzten noch gibt. Wenn ja, wird der letzte gekilled.

Schauen wir mal.

Markus
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

Wernieman

Eigentlich müstest Du eine Pipeline haben. Also praktisch ein Device, was alle Calls abarbeitet, aber eben "nacheinander". Diese Pipeline wird durch die Timer befüllt. Wenn leer = Sofortige Abarbeitung. Wenn schon was "drinsteht" eben später ... so das wirklich nur eine Abfrage zur zeit laufen kann ..,.
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

KölnSolar

Ab FHEM Revision 11917 lassen sich die maximal parallel laufenden BlockingCalls durch das globale Attribut blockingCallMax begrenzen (Standardwert: unbegrenzt). Sofern die maximale parallele Anzahl an BlockingCalls erreicht ist, werden weitere Calls in eine Warteschlange eingereiht und ausgeführt, sobald laufende Calls beendet werden.Wäre dann die Lösung.
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

Wernieman

Damit blockst Du aber docha lle BlockingCalls ... d.h. wenn Du zusätzlich ein anderes Modul damit verwendest ...
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

bismosa

Hallo!

Erstmal: DANKE, das ihr euch mit meinem Problem beschäftigt!

ZitatIch hab mal etwas umgebaut. Dadurch müsste sich das über die Zeit entzerren, weil der timer durch Systemverzögerungen sich immer mehr auseinanderschieben müsste.
Habe ich ausprobiert. Tatsächlich verschiebt sich die Ausführung...aber das Problem bleibt bei mir bestehen. So sieht es dann in der Log-Datei aus:
2021.01.14 18:08:56 2: GPIO4: GPIO4_DS18B20_Bad_oben of family 28 and id 01143bb82baa with failure read_failure
2021.01.14 18:08:56 2: GPIO4: GPIO4_DS18B20_Dachboden of family 28 and id 01143b91f4aa with failure read_failure
2021.01.14 18:11:02 2: GPIO4: GPIO4_DS18B20_Dachboden of family 28 and id 01143b91f4aa with failure read_failure
2021.01.14 18:12:04 2: GPIO4: GPIO4_DS18B20_Dachboden of family 28 and id 01143b91f4aa with failure read_failure
2021.01.14 18:15:07 2: GPIO4: GPIO4_DS18B20_Dachboden of family 28 and id 01143b91f4aa with failure read_failure
2021.01.14 18:21:14 2: GPIO4: GPIO4_DS18B20_Dachboden of family 28 and id 01143b91f4aa with failure read_failure
2021.01.14 18:28:22 2: GPIO4: GPIO4_DS18B20_Dachboden of family 28 and id 01143b91f4aa with failure read_failure
2021.01.14 18:30:25 2: GPIO4: GPIO4_DS18B20_Dachboden of family 28 and id 01143b91f4aa with failure read_failure
2021.01.14 18:42:40 2: GPIO4: GPIO4_DS18B20_Dachboden of family 28 and id 01143b91f4aa with failure read_failure
2021.01.14 18:49:48 2: GPIO4: GPIO4_DS18B20_Dachboden of family 28 and id 01143b91f4aa with failure read_failure
2021.01.14 18:51:50 2: GPIO4: GPIO4_DS18B20_Dachboden of family 28 and id 01143b91f4aa with failure read_failure
2021.01.14 18:52:51 2: GPIO4: GPIO4_DS18B20_Dachboden of family 28 and id 01143b91f4aa with failure read_failure
2021.01.14 19:30:36 2: GPIO4: GPIO4_DS18B20_Dachboden of family 28 and id 01143b91f4aa with failure read_failure
2021.01.14 19:31:37 2: GPIO4: GPIO4_DS18B20_Dachboden of family 28 and id 01143b91f4aa with failure read_failure
2021.01.14 19:36:44 2: GPIO4: GPIO4_DS18B20_Dachboden of family 28 and id 01143b91f4aa with failure read_failure
2021.01.14 19:42:51 2: GPIO4: GPIO4_DS18B20_Dachboden of family 28 and id 01143b91f4aa with failure read_failure
2021.01.14 19:45:54 2: GPIO4: GPIO4_DS18B20_Dachboden of family 28 and id 01143b91f4aa with failure read_failure
2021.01.14 19:47:56 2: GPIO4: GPIO4_DS18B20_Dachboden of family 28 and id 01143b91f4aa with failure read_failure
2021.01.14 19:48:58 2: GPIO4: GPIO4_DS18B20_Dachboden of family 28 and id 01143b91f4aa with failure read_failure
2021.01.14 19:49:59 2: GPIO4: GPIO4_DS18B20_Dachboden of family 28 and id 01143b91f4aa with failure read_failure
2021.01.14 19:51:00 2: GPIO4: GPIO4_DS18B20_Dachboden of family 28 and id 01143b91f4aa with failure read_failure
2021.01.14 19:55:05 2: GPIO4: GPIO4_DS18B20_Dachboden of family 28 and id 01143b91f4aa with failure read_failure
2021.01.14 19:56:06 2: GPIO4: GPIO4_DS18B20_Dachboden of family 28 and id 01143b91f4aa with failure read_failure
2021.01.14 19:59:16 2: GPIO4: GPIO4_DS18B20_Dachboden of family 28 and id 01143b91f4aa with failure read_failure
2021.01.14 20:05:23 2: GPIO4: GPIO4_DS18B20_Dachboden of family 28 and id 01143b91f4aa with failure read_failure
2021.01.14 20:06:24 2: GPIO4: GPIO4_DS18B20_Dachboden of family 28 and id 01143b91f4aa with failure read_failure
2021.01.14 20:07:25 2: GPIO4: GPIO4_DS18B20_Dachboden of family 28 and id 01143b91f4aa with failure read_failure
2021.01.14 20:11:30 2: GPIO4: GPIO4_DS18B20_Dachboden of family 28 and id 01143b91f4aa with failure read_failure
2021.01.14 20:12:31 2: GPIO4: GPIO4_DS18B20_Dachboden of family 28 and id 01143b91f4aa with failure read_failure
2021.01.14 20:16:36 2: GPIO4: GPIO4_DS18B20_Dachboden of family 28 and id 01143b91f4aa with failure read_failure
2021.01.14 20:17:42 2: GPIO4: GPIO4_DS18B20_Bad_oben of family 28 and id 01143bb82baa with failure read_failure
2021.01.14 20:17:43 2: GPIO4: GPIO4_DS18B20_Drempel_Bad of family 28 and id 01143beb36aa with failure read_failure
2021.01.14 20:17:43 2: GPIO4: GPIO4_DS18B20_Tamara of family 28 and id 01143b98f5aa with failure read_failure
2021.01.14 20:18:43 2: GPIO4: GPIO4_DS18B20_Bad_oben of family 28 and id 01143bb82baa with failure read_failure
2021.01.14 20:19:45 2: GPIO4: GPIO4_DS18B20_Drempel_Bad of family 28 and id 01143beb36aa with failure read_failure
2021.01.14 20:21:49 2: GPIO4: GPIO4_DS18B20_Tamara of family 28 and id 01143b98f5aa with failure read_failure
2021.01.14 20:21:50 2: GPIO4: GPIO4_DS18B20_Dachboden of family 28 and id 01143b91f4aa with failure read_failure
2021.01.14 20:22:51 2: GPIO4: GPIO4_DS18B20_Tamara of family 28 and id 01143b98f5aa with failure read_failure
2021.01.14 20:22:51 2: GPIO4: GPIO4_DS18B20_Dachboden of family 28 and id 01143b91f4aa with failure read_failure
2021.01.14 20:23:52 2: GPIO4: GPIO4_DS18B20_Tamara of family 28 and id 01143b98f5aa with failure read_failure
2021.01.14 20:23:52 2: GPIO4: GPIO4_DS18B20_Dachboden of family 28 and id 01143b91f4aa with failure read_failure
2021.01.14 20:24:53 2: GPIO4: GPIO4_DS18B20_Tamara of family 28 and id 01143b98f5aa with failure read_failure
2021.01.14 20:25:54 2: GPIO4: GPIO4_DS18B20_Drempel_Bad of family 28 and id 01143beb36aa with failure read_failure
2021.01.14 20:25:54 2: GPIO4: GPIO4_DS18B20_Tamara of family 28 and id 01143b98f5aa with failure read_failure
2021.01.14 20:26:55 2: GPIO4: GPIO4_DS18B20_Tamara of family 28 and id 01143b98f5aa with failure read_failure
2021.01.14 20:26:56 2: GPIO4: GPIO4_DS18B20_Dachboden of family 28 and id 01143b91f4aa with failure read_failure
2021.01.14 20:27:57 2: GPIO4: GPIO4_DS18B20_Tamara of family 28 and id 01143b98f5aa with failure read_failure
2021.01.14 20:27:57 2: GPIO4: GPIO4_DS18B20_Dachboden of family 28 and id 01143b91f4aa with failure read_failure
2021.01.14 20:28:58 2: GPIO4: GPIO4_DS18B20_Tamara of family 28 and id 01143b98f5aa with failure read_failure
2021.01.14 20:28:58 2: GPIO4: GPIO4_DS18B20_Dachboden of family 28 and id 01143b91f4aa with failure read_failure
2021.01.14 20:29:59 2: GPIO4: GPIO4_DS18B20_Tamara of family 28 and id 01143b98f5aa with failure read_failure
2021.01.14 20:29:59 2: GPIO4: GPIO4_DS18B20_Dachboden of family 28 and id 01143b91f4aa with failure read_failure
2021.01.14 20:31:01 2: GPIO4: GPIO4_DS18B20_Tamara of family 28 and id 01143b98f5aa with failure read_failure
2021.01.14 20:31:01 2: GPIO4: GPIO4_DS18B20_Dachboden of family 28 and id 01143b91f4aa with failure read_failure
2021.01.14 20:32:02 2: GPIO4: GPIO4_DS18B20_Tamara of family 28 and id 01143b98f5aa with failure read_failure
2021.01.14 20:32:02 2: GPIO4: GPIO4_DS18B20_Dachboden of family 28 and id 01143b91f4aa with failure read_failure
2021.01.14 20:33:03 2: GPIO4: GPIO4_DS18B20_Dachboden of family 28 and id 01143b91f4aa with failure read_failure
2021.01.14 20:34:04 2: GPIO4: GPIO4_DS18B20_Dachboden of family 28 and id 01143b91f4aa with failure read_failure
2021.01.14 20:35:05 2: GPIO4: GPIO4_DS18B20_Dachboden of family 28 and id 01143b91f4aa with failure read_failure
2021.01.14 20:36:07 2: GPIO4: GPIO4_DS18B20_Dachboden of family 28 and id 01143b91f4aa with failure read_failure
2021.01.14 20:37:08 2: GPIO4: GPIO4_DS18B20_Dachboden of family 28 and id 01143b91f4aa with failure read_failure
2021.01.14 20:38:09 2: GPIO4: GPIO4_DS18B20_Dachboden of family 28 and id 01143b91f4aa with failure read_failure
2021.01.14 20:39:10 2: GPIO4: GPIO4_DS18B20_Dachboden of family 28 and id 01143b91f4aa with failure read_failure
2021.01.14 20:42:14 2: GPIO4: GPIO4_DS18B20_Dachboden of family 28 and id 01143b91f4aa with failure read_failure
2021.01.14 20:43:15 2: GPIO4: GPIO4_DS18B20_Dachboden of family 28 and id 01143b91f4aa with failure read_failure
2021.01.14 20:44:17 2: GPIO4: GPIO4_DS18B20_Dachboden of family 28 and id 01143b91f4aa with failure read_failure

Erstaunlich oft der Dachboden. Ob hier vielleicht ein defekter Sensor ist? Oder das Kabel zu lang ist?

Ich habe parallel versucht das Modul umzustricken, das nur ein Aufruf gleichzeitig erfolgt. Leider sind meine Perl-Kentnisse nicht so gut...ich vermute ich habe beim DeviceSpec noch einen Wurm drin.
Ich setze ein Internal kurz vor Aufruf des BlockingCall:
$hash->{RUNSTATE}="running";
$hash->{helper}{RUNNING_PID} = BlockingCall("GPIO4_Poll", $hash,"GPIO4_GetfinishFn");

In "sub GPIO4_Poll($) {"

my $return_array = "$hash->{NAME}|$family|$id";
Log 6, "GPIO4: GPIO4_Poll($hash->{NAME})";
my @devicesRun = devspec2array("TYPE=GPIO4 Filter=RUNSTATE=running");
while(scalar(@devicesRun) !=0){
Log 6, "GPIO4: Wait for other to finish ".join( '-', @devicesRun);
sleep 1;
@devicesRun = devspec2array("TYPE=GPIO4 Filter=RUNSTATE=running");
}

Und in "sub GPIO4_GetfinishFn($) {"

my @return_array = split("\\|",$string);
my $hash = $defs{$return_array[0]};
$hash->{RUNSTATE}="ready";


Das wäre (nach Korrektur) vielleicht ein Weg, um immer nur ein Device zur gleichen Zeit abzufragen. Wird eins gerade abgefragt, wird so lange gewartet, bis dies fertig ist.

ZitatAb FHEM Revision 11917 lassen sich die maximal parallel laufenden BlockingCalls durch das globale Attribut blockingCallMax begrenzen
ZitatDamit blockst Du aber docha lle BlockingCalls ... d.h. wenn Du zusätzlich ein anderes Modul damit verwendest ...
Das hatte ich gestern auch noch entdeckt. Bei mir läuft gerade der erste Versuch mit  blockingCallMax = 1 (Seit 30Min mit bisher nur einem Log-Eintrag)
Es werden keine Calls geblockt. Diese werden nur nacheinander ausgeführt (Warteschlange).

Also könnte tatsächlich ein warten auf laufende Abfragen abhilfe schaffen. Mal schauen, ob ich heute Nachmittag den Fehler noch finde  :)

Gruß
Bismosa
1x nanoCUL 433MHz (SlowRF Intertechno) für Fenstersensoren
1x nanoCUL 868Mhz für MAX (9x HT 1xWT)
1x ZigBee CUL
Weiteres: Squeezebox server, Kindle Display, ESP8266, Löterfahrung, ...

KölnSolar

ZitatDamit blockst Du aber docha lle BlockingCalls ... d.h. wenn Du zusätzlich ein anderes Modul damit verwendest ...
Das stimmt. Aber besser es dauert ein wenig, als dass es zu Fehlern führt. Anwendungen mit BlockingCall dürften selten zeitkritisch sein. Und wir haben es hier mit einem Einzelfall zu tun, den es erst einmal nur "zu verstehen" gilt.
ZitatErstaunlich oft der Dachboden. Ob hier vielleicht ein defekter Sensor ist? Oder das Kabel zu lang ist?
Alles möglich. Vielleicht braucht der länger beim messen ?  :-\ Wie ich schon sagte, mit der neuen Version bekommen wir etwas mehr Statistik. Möglicherweise ergibt sich daraus ja eine Erkenntnis(bei mir ist mal wieder seit 24h völlige Ruhe)
ZitatDas wäre (nach Korrektur) vielleicht ein Weg, um immer nur ein Device zur gleichen Zeit abzufragen. Wird eins gerade abgefragt, wird so lange gewartet, bis dies fertig ist.
Nicht wirklich. Das sleep konterkarriert ja das BlockingCall. Da scheint mir BlockingCallMax die bessere Variante(sofern es nicht auch blockierend funktioniert). Zumindest um einfach das Problem zu analysieren.
ZitatErstaunlich oft der Dachboden
Vermutlich doch ein relativ unwichtiger Wert. Setz den doch mal auf pollinginterval 301.  ;)

Vielleicht nochmal zum Vergleich mein System: 12 Sensoren, davon die meisten mit standardpollingintervall, 2-3 mit mittlerem Intervall und einer mit nur 5s. Um die events einzudämmen alle mit "event-on-change-reading temperature:x" u. x=angemessener Wert . Auf einem Rpi3 der als lokaler DNS mit pi-hole fungiert. Mehr läuft da nicht drauf.

Grüße Markus



RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

bismosa

Hallo!

Ich bin etwas weiter...aber der Lösung leider nicht wirklich näher gekommen.

Mit
blockingCallMax = 1
Gab es weiterhin (aber nur extrem wenige) Lesefehler. (Insgesamt 4x nach mehreren Stunden).
Allerdings gab es bei jedem Neustart Fehler.

Ich habe es dann mit meiner Modulinternen Lösung weiter probiert. Siehe Anhang.
Dies läuft ja auch vollständig Non-Blocking, da während des Blocking-Call gewartet wird. Mein Log sieht nach einem Neustart dann recht witzig aus (Hatte das noch auf Verbose 1):

2021.01.15 19:40:18 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Werkstatt
2021.01.15 19:40:18 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Netzteil-GPIO4_DS18B20_Werkstatt
2021.01.15 19:40:19 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Kaltwasser-GPIO4_DS18B20_Netzteil-GPIO4_DS18B20_Werkstatt
2021.01.15 19:40:19 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Drempel_Bad-GPIO4_DS18B20_Kaltwasser-GPIO4_DS18B20_Netzteil-GPIO4_DS18B20_Werkstatt
2021.01.15 19:40:20 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Drempel_Bad-GPIO4_DS18B20_Kaltwasser-GPIO4_DS18B20_Netzteil-GPIO4_DS18B20_Tamara-GPIO4_DS18B20_Werkstatt
2021.01.15 19:40:20 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Bad_oben-GPIO4_DS18B20_Drempel_Bad-GPIO4_DS18B20_Kaltwasser-GPIO4_DS18B20_Netzteil-GPIO4_DS18B20_Tamara
2021.01.15 19:40:22 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Bad_oben-GPIO4_DS18B20_Drempel_Bad-GPIO4_DS18B20_Spielzimmer-GPIO4_DS18B20_Tamara
2021.01.15 19:40:22 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Bad_oben-GPIO4_DS18B20_Dachboden-GPIO4_DS18B20_Spielzimmer-GPIO4_DS18B20_Tamara
2021.01.15 19:40:22 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Bad_oben-GPIO4_DS18B20_Dachboden-GPIO4_DS18B20_Drempel_Strasse-GPIO4_DS18B20_Spielzimmer-GPIO4_DS18B20_Tamara
2021.01.15 19:40:22 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Bad_oben-GPIO4_DS18B20_Dachboden-GPIO4_DS18B20_Drempel_Strasse-GPIO4_DS18B20_Spielzimmer-GPIO4_DS18B20_Tamara-GPIO4_DS18B20_Thekla
2021.01.15 19:40:24 2: GPIO4: GPIO4_DS18B20_Dachboden of family 28 and id 01143b91f4aa with failure read_failure
2021.01.15 19:41:21 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Werkstatt
2021.01.15 19:41:21 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Netzteil-GPIO4_DS18B20_Werkstatt
2021.01.15 19:41:22 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Kaltwasser-GPIO4_DS18B20_Netzteil-GPIO4_DS18B20_Werkstatt
2021.01.15 19:41:22 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Drempel_Bad-GPIO4_DS18B20_Kaltwasser-GPIO4_DS18B20_Netzteil-GPIO4_DS18B20_Werkstatt
2021.01.15 19:41:23 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Drempel_Bad-GPIO4_DS18B20_Kaltwasser-GPIO4_DS18B20_Netzteil-GPIO4_DS18B20_Tamara-GPIO4_DS18B20_Werkstatt
2021.01.15 19:41:23 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Bad_oben-GPIO4_DS18B20_Drempel_Bad-GPIO4_DS18B20_Kaltwasser-GPIO4_DS18B20_Netzteil-GPIO4_DS18B20_Tamara
2021.01.15 19:41:24 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Bad_oben-GPIO4_DS18B20_Dachboden-GPIO4_DS18B20_Drempel_Bad-GPIO4_DS18B20_Kaltwasser-GPIO4_DS18B20_Tamara
2021.01.15 19:41:24 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Bad_oben-GPIO4_DS18B20_Dachboden-GPIO4_DS18B20_Drempel_Bad-GPIO4_DS18B20_Spielzimmer-GPIO4_DS18B20_Tamara
2021.01.15 19:41:25 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Bad_oben-GPIO4_DS18B20_Dachboden-GPIO4_DS18B20_Drempel_Strasse-GPIO4_DS18B20_Spielzimmer-GPIO4_DS18B20_Tamara
2021.01.15 19:41:26 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Bad_oben-GPIO4_DS18B20_Dachboden-GPIO4_DS18B20_Drempel_Strasse-GPIO4_DS18B20_Spielzimmer-GPIO4_DS18B20_Thekla
2021.01.15 19:41:27 2: GPIO4: GPIO4_DS18B20_Dachboden of family 28 and id 01143b91f4aa with failure read_failure
2021.01.15 19:42:23 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Werkstatt
2021.01.15 19:42:24 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Netzteil-GPIO4_DS18B20_Werkstatt
2021.01.15 19:42:25 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Kaltwasser-GPIO4_DS18B20_Netzteil-GPIO4_DS18B20_Werkstatt
2021.01.15 19:42:25 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Drempel_Bad-GPIO4_DS18B20_Kaltwasser-GPIO4_DS18B20_Netzteil-GPIO4_DS18B20_Werkstatt
2021.01.15 19:42:26 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Drempel_Bad-GPIO4_DS18B20_Kaltwasser-GPIO4_DS18B20_Netzteil-GPIO4_DS18B20_Tamara-GPIO4_DS18B20_Werkstatt
2021.01.15 19:42:26 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Bad_oben-GPIO4_DS18B20_Drempel_Bad-GPIO4_DS18B20_Kaltwasser-GPIO4_DS18B20_Netzteil-GPIO4_DS18B20_Tamara
2021.01.15 19:42:27 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Bad_oben-GPIO4_DS18B20_Dachboden-GPIO4_DS18B20_Drempel_Bad-GPIO4_DS18B20_Kaltwasser-GPIO4_DS18B20_Tamara
2021.01.15 19:42:28 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Bad_oben-GPIO4_DS18B20_Dachboden-GPIO4_DS18B20_Drempel_Bad-GPIO4_DS18B20_Spielzimmer-GPIO4_DS18B20_Tamara
2021.01.15 19:42:28 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Bad_oben-GPIO4_DS18B20_Dachboden-GPIO4_DS18B20_Drempel_Strasse-GPIO4_DS18B20_Spielzimmer-GPIO4_DS18B20_Tamara
2021.01.15 19:42:28 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Bad_oben-GPIO4_DS18B20_Dachboden-GPIO4_DS18B20_Drempel_Strasse-GPIO4_DS18B20_Spielzimmer-GPIO4_DS18B20_Thekla
2021.01.15 19:42:30 2: GPIO4: GPIO4_DS18B20_Dachboden of family 28 and id 01143b91f4aa with failure read_failure
2021.01.15 19:43:26 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Werkstatt
2021.01.15 19:43:27 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Netzteil-GPIO4_DS18B20_Werkstatt
2021.01.15 19:43:28 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Kaltwasser-GPIO4_DS18B20_Netzteil-GPIO4_DS18B20_Werkstatt
2021.01.15 19:43:28 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Drempel_Bad-GPIO4_DS18B20_Kaltwasser-GPIO4_DS18B20_Netzteil-GPIO4_DS18B20_Werkstatt
2021.01.15 19:43:29 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Drempel_Bad-GPIO4_DS18B20_Kaltwasser-GPIO4_DS18B20_Netzteil-GPIO4_DS18B20_Tamara-GPIO4_DS18B20_Werkstatt
2021.01.15 19:43:29 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Bad_oben-GPIO4_DS18B20_Drempel_Bad-GPIO4_DS18B20_Kaltwasser-GPIO4_DS18B20_Netzteil-GPIO4_DS18B20_Tamara
2021.01.15 19:43:30 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Bad_oben-GPIO4_DS18B20_Dachboden-GPIO4_DS18B20_Drempel_Bad-GPIO4_DS18B20_Tamara
2021.01.15 19:43:31 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Bad_oben-GPIO4_DS18B20_Dachboden-GPIO4_DS18B20_Spielzimmer
2021.01.15 19:43:31 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Dachboden-GPIO4_DS18B20_Drempel_Strasse-GPIO4_DS18B20_Spielzimmer
2021.01.15 19:43:32 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Dachboden-GPIO4_DS18B20_Drempel_Strasse-GPIO4_DS18B20_Spielzimmer-GPIO4_DS18B20_Thekla
2021.01.15 19:43:32 2: GPIO4: GPIO4_DS18B20_Dachboden of family 28 and id 01143b91f4aa with failure read_failure
2021.01.15 19:44:29 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Werkstatt
2021.01.15 19:44:29 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Netzteil-GPIO4_DS18B20_Werkstatt
2021.01.15 19:44:30 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Kaltwasser-GPIO4_DS18B20_Netzteil-GPIO4_DS18B20_Werkstatt
2021.01.15 19:44:31 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Drempel_Bad-GPIO4_DS18B20_Kaltwasser-GPIO4_DS18B20_Netzteil-GPIO4_DS18B20_Werkstatt
2021.01.15 19:44:31 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Drempel_Bad-GPIO4_DS18B20_Kaltwasser-GPIO4_DS18B20_Netzteil-GPIO4_DS18B20_Tamara-GPIO4_DS18B20_Werkstatt
2021.01.15 19:44:31 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Bad_oben-GPIO4_DS18B20_Drempel_Bad-GPIO4_DS18B20_Kaltwasser-GPIO4_DS18B20_Netzteil-GPIO4_DS18B20_Tamara
2021.01.15 19:44:33 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Bad_oben-GPIO4_DS18B20_Dachboden-GPIO4_DS18B20_Drempel_Bad-GPIO4_DS18B20_Tamara
2021.01.15 19:44:34 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Dachboden-GPIO4_DS18B20_Spielzimmer
2021.01.15 19:44:34 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Dachboden-GPIO4_DS18B20_Drempel_Strasse-GPIO4_DS18B20_Spielzimmer
2021.01.15 19:44:34 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Dachboden-GPIO4_DS18B20_Drempel_Strasse-GPIO4_DS18B20_Spielzimmer-GPIO4_DS18B20_Thekla
2021.01.15 19:45:31 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Werkstatt
2021.01.15 19:45:32 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Netzteil-GPIO4_DS18B20_Werkstatt
2021.01.15 19:45:32 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Kaltwasser-GPIO4_DS18B20_Netzteil-GPIO4_DS18B20_Werkstatt
2021.01.15 19:45:33 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Drempel_Bad-GPIO4_DS18B20_Kaltwasser-GPIO4_DS18B20_Netzteil-GPIO4_DS18B20_Werkstatt
2021.01.15 19:45:33 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Drempel_Bad-GPIO4_DS18B20_Kaltwasser-GPIO4_DS18B20_Netzteil-GPIO4_DS18B20_Tamara-GPIO4_DS18B20_Werkstatt
2021.01.15 19:45:33 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Bad_oben-GPIO4_DS18B20_Drempel_Bad-GPIO4_DS18B20_Kaltwasser-GPIO4_DS18B20_Netzteil-GPIO4_DS18B20_Tamara
2021.01.15 19:45:35 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Bad_oben-GPIO4_DS18B20_Dachboden-GPIO4_DS18B20_Drempel_Bad-GPIO4_DS18B20_Tamara
2021.01.15 19:45:36 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Dachboden-GPIO4_DS18B20_Drempel_Strasse
2021.01.15 19:45:36 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Dachboden-GPIO4_DS18B20_Drempel_Strasse-GPIO4_DS18B20_Spielzimmer
2021.01.15 19:45:36 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Dachboden-GPIO4_DS18B20_Drempel_Strasse-GPIO4_DS18B20_Spielzimmer-GPIO4_DS18B20_Thekla
2021.01.15 19:45:37 2: GPIO4: GPIO4_DS18B20_Dachboden of family 28 and id 01143b91f4aa with failure read_failure
2021.01.15 19:46:33 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Werkstatt
2021.01.15 19:46:34 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Netzteil-GPIO4_DS18B20_Werkstatt
2021.01.15 19:46:34 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Kaltwasser-GPIO4_DS18B20_Netzteil-GPIO4_DS18B20_Werkstatt
2021.01.15 19:46:35 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Drempel_Bad-GPIO4_DS18B20_Kaltwasser-GPIO4_DS18B20_Netzteil-GPIO4_DS18B20_Werkstatt
2021.01.15 19:46:35 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Drempel_Bad-GPIO4_DS18B20_Kaltwasser-GPIO4_DS18B20_Netzteil-GPIO4_DS18B20_Tamara-GPIO4_DS18B20_Werkstatt
2021.01.15 19:46:36 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Bad_oben-GPIO4_DS18B20_Drempel_Bad-GPIO4_DS18B20_Kaltwasser-GPIO4_DS18B20_Netzteil-GPIO4_DS18B20_Tamara
2021.01.15 19:46:37 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Bad_oben-GPIO4_DS18B20_Dachboden-GPIO4_DS18B20_Tamara
2021.01.15 19:46:38 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Dachboden-GPIO4_DS18B20_Drempel_Strasse
2021.01.15 19:46:38 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Dachboden-GPIO4_DS18B20_Drempel_Strasse-GPIO4_DS18B20_Spielzimmer
2021.01.15 19:46:38 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Dachboden-GPIO4_DS18B20_Drempel_Strasse-GPIO4_DS18B20_Spielzimmer-GPIO4_DS18B20_Thekla
2021.01.15 19:47:35 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Werkstatt
2021.01.15 19:47:36 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Netzteil-GPIO4_DS18B20_Werkstatt
2021.01.15 19:47:36 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Kaltwasser-GPIO4_DS18B20_Netzteil-GPIO4_DS18B20_Werkstatt
2021.01.15 19:47:37 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Drempel_Bad-GPIO4_DS18B20_Kaltwasser-GPIO4_DS18B20_Netzteil-GPIO4_DS18B20_Werkstatt
2021.01.15 19:47:37 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Drempel_Bad-GPIO4_DS18B20_Kaltwasser-GPIO4_DS18B20_Netzteil-GPIO4_DS18B20_Tamara-GPIO4_DS18B20_Werkstatt
2021.01.15 19:47:38 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Bad_oben-GPIO4_DS18B20_Drempel_Bad-GPIO4_DS18B20_Kaltwasser-GPIO4_DS18B20_Netzteil-GPIO4_DS18B20_Tamara
2021.01.15 19:47:39 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Bad_oben-GPIO4_DS18B20_Dachboden-GPIO4_DS18B20_Tamara
2021.01.15 19:47:40 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Bad_oben-GPIO4_DS18B20_Dachboden-GPIO4_DS18B20_Drempel_Strasse
2021.01.15 19:47:41 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Dachboden-GPIO4_DS18B20_Drempel_Strasse-GPIO4_DS18B20_Spielzimmer
2021.01.15 19:47:41 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Dachboden-GPIO4_DS18B20_Drempel_Strasse-GPIO4_DS18B20_Spielzimmer-GPIO4_DS18B20_Thekla
2021.01.15 19:48:37 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Werkstatt
2021.01.15 19:48:38 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Netzteil-GPIO4_DS18B20_Werkstatt
2021.01.15 19:48:39 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Kaltwasser-GPIO4_DS18B20_Netzteil-GPIO4_DS18B20_Werkstatt
2021.01.15 19:48:39 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Drempel_Bad-GPIO4_DS18B20_Kaltwasser-GPIO4_DS18B20_Netzteil-GPIO4_DS18B20_Werkstatt
2021.01.15 19:48:39 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Drempel_Bad-GPIO4_DS18B20_Kaltwasser-GPIO4_DS18B20_Netzteil-GPIO4_DS18B20_Tamara-GPIO4_DS18B20_Werkstatt
2021.01.15 19:48:40 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Bad_oben-GPIO4_DS18B20_Drempel_Bad-GPIO4_DS18B20_Kaltwasser-GPIO4_DS18B20_Tamara
2021.01.15 19:48:42 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Bad_oben-GPIO4_DS18B20_Dachboden
2021.01.15 19:48:43 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Dachboden-GPIO4_DS18B20_Drempel_Strasse
2021.01.15 19:48:43 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Dachboden-GPIO4_DS18B20_Drempel_Strasse-GPIO4_DS18B20_Spielzimmer
2021.01.15 19:48:44 1: GPIO4: Wait for other to finish GPIO4_DS18B20_Dachboden-GPIO4_DS18B20_Drempel_Strasse-GPIO4_DS18B20_Spielzimmer-GPIO4_DS18B20_Thekla

Aber auch hier gibt es Lesefehler. Auch beim starten von FHEM.
Schade, das bringt uns nicht wirklich voran.

Beim Schreiben habe ich gerade eine Idee...ohne es jetzt weiter geprüft zu haben...
Wie wird die Genauigkeit (Anzahl der Kommastellen) gesetzt? Läuft diese Version mit einer "höheren Genauigkeit"? Ich hatte mal gelesen, das je genauer, desto länger dauert die Datenübertrgaung...
Zitat
Erstaunlich oft der Dachboden
Vermutlich doch ein relativ unwichtiger Wert. Setz den doch mal auf pollinginterval 301.  ;)
Könnte ich machen. Insgesamt brauche ich eh nicht so viele Werte...solange wir testen, werde ich alle erstmal beim Standard belassen.
Ich habe neue Sensoren geordert und werde dann als erstes den auf dem Dachboden tauschen...aber das dauert noch ein paar Tage (bei den Temperaturen vielleicht auch noch etwas länger  ;) )

ZitatMehr läuft da nicht drauf.
Hmmm...ich wüsste jetzt gar nicht, wo ich anfangen soll...die meisten GPIO sind belegt (als GPIO, I2C, 1wire...), 2 HDDs (u.a. für Musik und Backups), Logitech Media Server, FileServer, 433MHz CUL, 868MHz Cul (MAX), Zigbee CUL, >120 DOIFs, >300 FileLog, 113 SVG....
Also mein System wird gut genutzt  ;)

Gruß
Bismosa
1x nanoCUL 433MHz (SlowRF Intertechno) für Fenstersensoren
1x nanoCUL 868Mhz für MAX (9x HT 1xWT)
1x ZigBee CUL
Weiteres: Squeezebox server, Kindle Display, ESP8266, Löterfahrung, ...

KölnSolar

ZitatAlso mein System wird gut genutzt  ;)
Ich denke das ist das Problem. Wie sieht denn bei Dir top aus ?(also ich will es nicht sehen  ;D)

ZitatDies läuft ja auch vollständig Non-Blocking, da während des Blocking-Call gewartet wird.
Stimmt. Aber dann müsstest Du ne Menge fork-Prozesse haben.

ZitatGab es weiterhin (aber nur extrem wenige) Lesefehler. (Insgesamt 4x nach mehreren Stunden).
Na wer sagts denn.  ;D Ich vermute dann mal, dass das Problem entsteht, wenn zu viele Prozesse parallel laufen. Vielleicht hat der Prozess des w1-busmasters ja ein Problem damit und killt seine eigene Messung ? :-\ Da könnte vielleicht wirklich die Genauigkeit helfen.

ZitatWie wird die Genauigkeit (Anzahl der Kommastellen) gesetzt? Läuft diese Version mit einer "höheren Genauigkeit"? Ich hatte mal gelesen, das je genauer, desto länger dauert die Datenübertrgaung...
Korrekt. Je genauer, desto länger( > 1s). Grundsätzlich sind die "Dinger" auf höchster Genauigkeit im Auslieferungszustand. Daher hab ich das set precision eingeführt. 9(bit) niedrigste(schnellste) - 12(bit) höchste(langsamste) Genauigkeit(Geschwindigkeit). So geht's.
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

bismosa

#57
Hallo!

Zitatie sieht denn bei Dir top aus ?
Ich würde behaupten alles im grünen Bereich. Nur FHEM ist manchmal bei 100% CPU (vermutlich während es auch blockiert)

ZitatStimmt. Aber dann müsstest Du ne Menge fork-Prozesse haben.
ZitatNa wer sagts denn.  ;D Ich vermute dann mal, dass das Problem entsteht, wenn zu viele Prozesse parallel laufen. Vielleicht hat der Prozess des w1-busmasters ja ein Problem damit und killt seine eigene Messung ? :-\ Da könnte vielleicht wirklich die Genauigkeit helfen.
Ja. Jetzt verstehe ich warum meine Idee da nicht so gut ist! Vermutlich gibt es deswegen dann auch die noch häufigen Fehler.

Das hat mich nun aber auf eine andere Idee gebracht. Warum nicht vor dem Start des Blocking-Call prüfen, ob andere gerade ausgelesen werden und den Timer neu setzen? Dann entfallen die Fork-Prozesse und FHEM sollte auch nicht blockieren.

Neue Version ist im Anhang. die läuft jetzt bei mir testweise.
Bisher ist nur 1x ein Fahler aufgetaucht direkt beim starten von FHEM. Das wäre für mich zu vernachlässigen.

Gruß
Bismosa

[edit]
Ich habe nun auch mal den Freezemon wieder aktiviert. Vorher konnte ich mich vor Einträgen kaum retten...nun keine Freezes mehr in GPIO4 (bitte das Datum beachten):

1 - 2020-11-30: s:17:16:05 e:17:16:06 f:1.304 d:tmr-GPIO4_DeviceUpdateLoop(GPIO4_DS18B20_Drempel_Strasse) tmr-SB_SERVER_tcb_SendAlarmPlaylists(LMS) tmr-SB_SERVER_tcb_SendSyncMasters(LMS) tmr-DOIF_TimerTrigger(di_Fenster_Liste) tmr-DOIF_TimerTri...
1 - 2020-11-30: s:17:20:50 e:17:20:51 f:1.972 d:no bad guy found :-(
1 - 2020-11-30: s:17:20:53 e:17:20:55 f:2.452 d:tmr-sleep_WakeUpFn(N/A) tmr-sleep_WakeUpFn(N/A) tmr-sleep_WakeUpFn(N/A) tmr-sleep_WakeUpFn(N/A) tmr-sleep_WakeUpFn(N/A) tmr-sleep_WakeUpFn(N/A) tmr-sleep_WakeUpFn(N/A) tmr-DOIF_SleepTrigger(di_Fen...
1 - 2020-11-30: s:17:20:57 e:17:20:58 f:1.304 d:tmr-sleep_WakeUpFn(N/A)
1 - 2020-11-30: s:17:20:59 e:17:21:00 f:1.793 d:tmr-sleep_WakeUpFn(N/A) tmr-sleep_WakeUpFn(N/A) tmr-sleep_WakeUpFn(N/A) tmr-sleep_WakeUpFn(N/A) tmr-sleep_WakeUpFn(N/A) tmr-sleep_WakeUpFn(N/A) tmr-sleep_WakeUpFn(N/A) tmr-sleep_WakeUpFn(N/A)
1 - 2020-11-30: s:17:21:02 e:17:21:03 f:1.017 d:tmr-GPIO4_DeviceUpdateLoop(GPIO4_DS18B20_Dachboden)
1 - 2020-11-30: s:17:21:04 e:17:21:06 f:2.393 d:tmr-MQTT2_SERVER_keepaliveChecker(MQTT2_FHEM_Server) tmr-sleep_WakeUpFn(N/A) tmr-sleep_WakeUpFn(N/A) tmr-sleep_WakeUpFn(N/A) tmr-sleep_WakeUpFn(N/A) tmr-sleep_WakeUpFn(N/A) tmr-sleep_WakeUpFn(N/A)...
1 - 2020-11-30: s:17:21:07 e:17:21:10 f:3.697 d:tmr-GPIO4_DeviceUpdateLoop(GPIO4_DS18B20_Drempel_Bad) tmr-DOIF_TimerTrigger(di_Fenster_Liste) tmr-DOIF_TimerTrigger(di_Fenster_Liste_ALT_CPULAST) tmr-sleep_WakeUpFn(N/A) tmr-sleep_WakeUpFn(N/A) tm...
1 - 2020-11-30: s:17:21:11 e:17:21:14 f:3.416 d:tmr-at_Exec(at_HeizungGPIO_Test) tmr-sleep_WakeUpFn(N/A) tmr-GPIO4_DeviceUpdateLoop(GPIO4_DS18B20_Bad_oben) tmr-GPIO4_DeviceUpdateLoop(GPIO4_DS18B20_Drempel_Strasse) tmr-sleep_WakeUpFn(N/A) tmr-sl...
1 - 2020-11-30: s:17:21:26 e:17:21:27 f:1.305 d:tmr-sleep_WakeUpFn(N/A) tmr-sleep_WakeUpFn(N/A) tmr-sleep_WakeUpFn(N/A) tmr-sleep_WakeUpFn(N/A) tmr-sleep_WakeUpFn(N/A) tmr-sleep_WakeUpFn(N/A) tmr-sleep_WakeUpFn(N/A) tmr-sleep_WakeUpFn(N/A)
1 - 2020-11-30: s:17:21:28 e:17:21:29 f:1.669 d:tmr-sleep_WakeUpFn(N/A) tmr-sleep_WakeUpFn(N/A) tmr-sleep_WakeUpFn(N/A) tmr-sleep_WakeUpFn(N/A) tmr-sleep_WakeUpFn(N/A) tmr-sleep_WakeUpFn(N/A) tmr-sleep_WakeUpFn(N/A) tmr-sleep_WakeUpFn(N/A) tmr-...
1 - 2020-11-30: s:17:21:40 e:17:21:42 f:2.359 d:no bad guy found :-(
1 - 2020-11-30: s:17:21:43 e:17:21:44 f:1.887 d:tmr-sleep_WakeUpFn(N/A) tmr-sleep_WakeUpFn(N/A) tmr-sleep_WakeUpFn(N/A) tmr-sleep_WakeUpFn(N/A) tmr-sleep_WakeUpFn(N/A) tmr-sleep_WakeUpFn(N/A) tmr-sleep_WakeUpFn(N/A)
1 - 2020-11-30: s:17:21:55 e:17:21:56 f:1.644 d:tmr-MQTT2_SERVER_keepaliveChecker(MQTT2_FHEM_Server)
1 - 2020-11-30: s:17:22:13 e:17:22:14 f:1.081 d:tmr-GPIO4_DeviceUpdateLoop(GPIO4_DS18B20_Drempel_Strasse)
1 - 2020-11-30: s:17:22:21 e:17:22:22 f:1.476 d:tmr-sleep_WakeUpFn(N/A) tmr-sleep_WakeUpFn(N/A) tmr-sleep_WakeUpFn(N/A) tmr-sleep_WakeUpFn(N/A) tmr-sleep_WakeUpFn(N/A) tmr-sleep_WakeUpFn(N/A) tmr-sleep_WakeUpFn(N/A) tmr-MQTT::Timer(mqtt) tmr-Sa...
1 - 2020-11-30: s:17:22:23 e:17:22:25 f:2.121 d:tmr-sleep_WakeUpFn(N/A) tmr-sleep_WakeUpFn(N/A) tmr-sleep_WakeUpFn(N/A) tmr-sleep_WakeUpFn(N/A) tmr-sleep_WakeUpFn(N/A) tmr-sleep_WakeUpFn(N/A) tmr-sleep_WakeUpFn(N/A)
1 - 2020-11-30: s:17:22:30 e:17:22:31 f:1.93 d:tmr-CODE(0x40a70d0)(SIGNALduino_KeepAlive)
1 - 2020-11-30: s:17:22:32 e:17:22:34 f:2.3 d:tmr-sleep_WakeUpFn(N/A) tmr-sleep_WakeUpFn(N/A) tmr-sleep_WakeUpFn(N/A) tmr-sleep_WakeUpFn(N/A) tmr-sleep_WakeUpFn(N/A) tmr-sleep_WakeUpFn(N/A) tmr-sleep_WakeUpFn(N/A)
1 - 2021-01-16: s:12:34:03 e:12:34:05 f:2.393 d:no bad guy found :-(

[/edit]
1x nanoCUL 433MHz (SlowRF Intertechno) für Fenstersensoren
1x nanoCUL 868Mhz für MAX (9x HT 1xWT)
1x ZigBee CUL
Weiteres: Squeezebox server, Kindle Display, ESP8266, Löterfahrung, ...

Wernieman

Da hast Du natürlich auch Recht, anstatt "Warteschlange" kann man den Timer neu setzen....
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

KölnSolar

ZitatWarum nicht vor dem Start des Blocking-Call prüfen, ob andere gerade ausgelesen werden und den Timer neu setzen?
Individuell geht das natürlich. Grundsätzlich im Modul aber nicht. Ich hab ja nicht umsonst einen Sensor, den ich alle 5s abgefragt haben will. ;) Wär blöd, wenn der immer wieder verschoben wird.

ZitatNur FHEM ist manchmal bei 100% CPU (vermutlich während es auch blockiert)
Aber GPIO4 kann es ja nicht sein. Was blockiert denn da ?
ZitatIch habe nun auch mal den Freezemon wieder aktiviert.
Da fällt mir aber doch mehr "tmr-sleep_WakeUpFn(N/A)" ins Auge. Was ist das, dass das so häufig aufgerufen wird ?
Grüße Markus
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt