CustomReadings für das Auslesen vom DHT22 Sensor fehlerhaft

Begonnen von Viktor74, 29 Mai 2021, 15:04:52

Vorheriges Thema - Nächstes Thema

Viktor74

Hallo zusammen,

ich habe einen DHT22 Sensor per 1wire am Raspi 3 auf dem GPIO17 angschlossen und mit der Anleitung (siehe folgender Link) eingebunden.

https://forum.fhem.de/index.php/topic,25413.msg850276.html#msg850276

Jetzt bekomme ich ab und zu Werte mit 0:

2021-05-29_14:26:39 DHT22 temperature: 16.7
2021-05-29_14:26:39 DHT22 humidity: 44
2021-05-29_14:29:09 DHT22 humidity: 43.8
2021-05-29_14:31:40 DHT22 temperature: 0
2021-05-29_14:31:40 DHT22 humidity: 0
2021-05-29_14:34:09 DHT22 temperature: 16.7
2021-05-29_14:34:09 DHT22 humidity: 43.1
2021-05-29_14:36:40 DHT22 temperature: 0
2021-05-29_14:36:40 DHT22 humidity: 0
2021-05-29_14:39:09 DHT22 temperature: 16.7
2021-05-29_14:39:09 DHT22 humidity: 42.5
2021-05-29_14:41:40 DHT22 temperature: 0
2021-05-29_14:41:40 DHT22 humidity: 0
2021-05-29_14:44:09 DHT22 temperature: 16.7
2021-05-29_14:44:09 DHT22 humidity: 42.9
2021-05-29_14:46:40 DHT22 temperature: 0
2021-05-29_14:46:40 DHT22 humidity: 0
2021-05-29_14:49:09 DHT22 temperature: 16.8
2021-05-29_14:49:09 DHT22 humidity: 42.1
2021-05-29_14:51:40 DHT22 temperature: 0
2021-05-29_14:51:40 DHT22 humidity: 0
2021-05-29_14:54:10 DHT22 temperature: 16.8
2021-05-29_14:54:10 DHT22 humidity: 40.6

Ich denke das Problem liegt an den CustomReadings:

Hier die Logfile-Meldung

2021.05.29 14:41:40 1: PERL WARNING: Argument "cat: '/sys/devices/platform/dht11@11/iio:device0/in_humi..." isn't numeric in division (/) at (eval 4850) line 1.
2021.05.29 14:41:40 1: stacktrace:
2021.05.29 14:41:40 1:     main::__ANON__                      called by (eval 4850) (1)
2021.05.29 14:41:40 1:     (eval)                              called by ./FHEM/98_CustomReadings.pm (105)
2021.05.29 14:41:40 1:     main::CustomReadings_Read           called by ./FHEM/98_CustomReadings.pm (44)
2021.05.29 14:41:40 1:     main::CustomReadings_OnTimer        called by fhem.pl (3419)
2021.05.29 14:41:40 1:     main::HandleTimeout                 called by fhem.pl (695)

Hier die List der CustomReadings:

Internals:
   CFGFN     
   FUUID      60ad575e-f33f-0827-405c-ccfd823694894439
   NAME       DHT22
   NR         45
   STATE      OK
   TYPE       CustomReadings
   READINGS:
     2021-05-29 15:01:40   humidity        40.7
     2021-05-29 15:01:40   state           OK
     2021-05-29 15:01:40   temperature     16.9
Attributes:
   event-on-change-reading .*
   interval   150
   readingDefinitions temperature:qx(cat /sys/devices/platform/dht11\@11/iio:device0/in_temp_input 2>%1) / 1000,humidity:qx(cat /sys/devices/platform/dht11\@11/iio:device0/in_humidityrelative_input 2>%1) / 1000

Kann mir vielleicht jemand helfen und erklären warum da diese Fehlermeldung kommt?

Danke im Voraus
Gruß
Viktor

MadMax-FHEM

Bist du sicher, dass in den Dateien IMMER Zahlen stehen!!?

Und: was soll '2>%1' sein?

Also was ich kenne ist: '2>&1'

Und dann evtl. nach /dev/null (wenn man keine Ausgaben will: hier willst/brauchst du sie ja, denke ich ;)  ).

Anmerkung: qx() blockiert.
Gut ein "cat" sollte schnell gehen...
...wollte es nur erwähnt haben.

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Viktor74

#2
Hallo Joachim,

zu deinen Fragen:

Zitat von: MadMax-FHEM am 29 Mai 2021, 15:22:22
Bist du sicher, dass in den Dateien IMMER Zahlen stehen!!?


Tja, ich bin neu hier und ich sehe ja was raus kommt, gerne kann ich mehr Infos liefer, falls das notwendig ist.

Zitat von: MadMax-FHEM am 29 Mai 2021, 15:22:22
Und: was soll '2>%1' sein?

Das hat mich auch irritiert (weil im Vorschlag/Beispiel das & steht), aber & statt % bringt das gleiche - habe ich schon ausprobiert

Zitat von: MadMax-FHEM am 29 Mai 2021, 15:22:22
Und dann evtl. nach /dev/null (wenn man keine Ausgaben will: hier willst/brauchst du sie ja, denke ich ;)  ).

Anmerkung: qx() blockiert.
Gut ein "cat" sollte schnell gehen...
...wollte es nur erwähnt haben.

Wie gebe ich das als Befehl ein?
Gern würde ich die Tipps annehmen, aber ich habe noch nicht so viel Erfahrung.
Bitte gib mir einen Vorschlag

Gruß
Viktor

MadMax-FHEM

#3
Naja ich würde zunächst mal das /1000 weglassen.

Also nativ das loggen was tatsächlich in der Datei steht.
Also nur den "cat-Befehl".


readingDefinitions temperature:qx(cat /sys/devices/platform/dht11\@11/iio:device0/in_temp_input 2>%1),humidity:qx(cat /sys/devices/platform/dht11\@11/iio:device0/in_humidityrelative_input 2>%1)


und evtl. doch mal aus % -> & machen...
...oder ebenfalls ganz weglassen.


readingDefinitions temperature:qx(cat /sys/devices/platform/dht11\@11/iio:device0/in_temp_input 2>&1),humidity:qx(cat /sys/devices/platform/dht11\@11/iio:device0/in_humidityrelative_input 2>&1)


bzw.


readingDefinitions temperature:qx(cat /sys/devices/platform/dht11\@11/iio:device0/in_temp_input),humidity:qx(cat /sys/devices/platform/dht11\@11/iio:device0/in_humidityrelative_input)


Das mal eine Zeitlang laufen lassen und sehen was im Log steht.
Also ob da tatsächlich nur Zahlen stehen bzw. ob halt ab und an auch "0" in den Dateien steht.
EDIT: evtl. steht bei dir ja ab und an in der Datei auch ein Fehler drin, siehe https://forum.fhem.de/index.php/topic,25413.msg855374.html#msg855374 (ist gleich auf der nächsten Seite, nicht gelesen? Bzw. hast du DORT doch genau dieselbe Frage gestellt? Warum doppelt? Gut, ok es kam 2 Tage keine Antwort aber tja: braucht halt Geduld)

Und bitte zukünftig "code-Tags" benutzen, das '#' im "Menü"... :)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Viktor74

Danke Joachim!

Hier der Event monitor:

2021-05-29 19:50:32 CustomReadings DHT22 temperature: 18000
2021-05-29 19:50:32 CustomReadings DHT22 humidity: 39300

Das kommt im text log:

2021-05-29_19:49:32 DHT22 temperature: cat: '/sys/devices/platform/dht11@11/iio:device0/in_temp_input': Input/output error
2021-05-29_19:49:32 DHT22 humidity: cat: '/sys/devices/platform/dht11@11/iio:device0/in_humidityrelative_input': Connection timed out
2021-05-29_19:50:32 DHT22 temperature: 18000
2021-05-29_19:50:32 DHT22 humidity: 39300
2021-05-29_19:52:35 DHT22 temperature: cat: '/sys/devices/platform/dht11@11/iio:device0/in_temp_input': Input/output error
2021-05-29_19:52:35 DHT22 humidity: cat: '/sys/devices/platform/dht11@11/iio:device0/in_humidityrelative_input': Connection timed out

Aber Hey! Es kommt keine "PERL WARNING" mehr.

Gruß
Viktor



MadMax-FHEM

Naja, also: es steht halt manchmal Text in den Dateien des Sensors -> das kann ja nicht durch 1000 geteilt werden ;)
-> isn't numeric

Bitte code-Tags! Danke.

D.h. du musst dafür sorgen, dass nur Zahlen und keine Fehlermeldung mehr in den Dateien stehen...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Viktor74

Hi Joachim,

ja so langsam versteh ich.

wegen Code dachte ich nur das # zu nutzen, wenn es wirklich Programmier Zeugs ist und nicht bei logs oder so - aber gern mach ich das:

2021-05-29_20:09:59 DHT22_Temp temperature: 17500
2021-05-29_20:11:59 DHT22_Temp temperature:
2021-05-29_20:13:59 DHT22_Temp temperature: 17400
2021-05-29_20:14:59 DHT22_Temp temperature:
2021-05-29_20:16:00 DHT22_Temp temperature: 17400
2021-05-29_20:17:01 DHT22_Temp temperature: 17300
2021-05-29_20:18:02 DHT22_Temp temperature:


Ich habe hier nochmal ein Custom Readings angelegt und nur die Temperatur rausholen lassen und siehe da es kommt gar nichts - also keine Zahl.

Das hilft mir zwar im Verständnis zu den Fehlermeldungen, aber ich weis immer noch nicht warum der DHT22 gar keinen Wert liefert??

Trotzdem Danke

Gruß
Viktor

Viktor74

Zitat von: MadMax-FHEM am 29 Mai 2021, 20:07:28
D.h. du musst dafür sorgen, dass nur Zahlen und keine Fehlermeldung mehr in den Dateien stehen...

Hast Du vielleicht eine Idee was ich da manchen kann - also wenn kein Wert geliefert wird?

Gruß
Viktor

MadMax-FHEM

Ja code-Tags auch für Logs etc.: liest sich besser :)

Ich habe jetzt nichts gefunden, dass bei CustomReadings auch Perl geht, dann könnte man ja das Ergebnis prüfen etc.
(nutze Customreadings nicht, wenn mache ich das eher wie der "Kollege" im ersten Post des anderen Threads, also aus dem Script heraus fhem "befüllen"... Weil ein weiterer Vorteil: es blockiert dann nicht)
D.h. du musst eben im Script das die Textdateien füllt dafür sorgen, dass eine Zahl drin steht... ;)

Welches Script nutzt du denn?
Poste das doch mal...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Viktor74

Guten Morgen Joachim,

das mit dem Skript klingt gut, aber wie anfangs erwähnt habe ich einen Lösungsvorschlag ohne Python Skript gewählt, da ich das so einfach wie möglich halten wollte um möglichst wenig Fehlersuche betreiben zu müssen.

Hier nochmals der Komplettvorschlag:

https://forum.fhem.de/index.php/topic,25413.msg850276.html#msg850276

Gruß
Viktor

MadMax-FHEM

Ah, ok.

Dann sehe ich aktuell folgende Wege:

- statt direkt per cat im CustomReading die u.U. "fehlerhaften" "Dateien" auszulesen ein shellscript per cron, welches die Werte überprüft und andere Dateien schreibt, die dann per CustomReadings verarbeitet werden...

- ein Script per cron oder fhem at welches die Werte ausliest und gegebenenfalls "korrigiert" und direkt die Werte nach fhem schreibt, z.B. in einen dummy...

- die "Dateien" per at (statt CustomReadings) auszulesen, Werte gegebenenfalls "korrigieren" und in einen dummy schreibt...

- Variante wie zuvor, nur mittels DOIF...

- doch das Python-Script...

Bei den Varianten ohne DOIF/Python-Script kann ich unterstützen...

Oder mal testen, ob man in CustomReadings auch Perl programmieren kann...

Die Variante mit Shell-Script dachte ich in dem Thread irgendwo entdeckt zu haben?

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Viktor74

Gut Joachim,

ich bin bereit was auszuprobieren, aber ich möchte die laufende Messkette nicht unterbrechen.

Die Daten brauche ich für meine aktuelle Bachelorarbeit und bessere Ergebnisse sind schon gut für mich.

Also, wenn Du einen Vorschlag hast bin ich gern bereit da was zu machen.

Gruß
Viktor

MadMax-FHEM

Naja, am einfachsten ist das mit at und dummy...
...bzw. at und Shellscript...

Ich kann ja dann mal was basteln...

Aber wenn es für die Batchelorarbeit ist, müsstest du dann nicht selbst ran... ;)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Viktor74

#13
Zitat von: MadMax-FHEM am 30 Mai 2021, 12:41:44
Aber wenn es für die Batchelorarbeit ist, müsstest du dann nicht selbst ran... ;)

Ich habe nochmal darüber nachgedacht und möchte nicht den Anschein von unsportlichem Verhalten erwecken. Aus diesem Grund möchte ich nichts gebastelt haben.

Wir bleiben lieber beim Thema "CustomReadings"

Gruß
Viktor

Prof. Dr. Peter Henning

Nun, wir werden sehen, ob das auch in der eidesstattlichen Versicherung der Bachelor Thesis als Hilfe angegeben wird. Da müsste diese Unterstützung nämlich erwähnt werden.

LG

pah