CustomReadings für das Auslesen vom DHT22 Sensor fehlerhaft

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

Vorheriges Thema - Nächstes Thema

Viktor74

#15
Zitat von: Prof. Dr. Peter Henning am 30 Mai 2021, 20:50:33
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

Also ich habe schon Messdaten und dafür musste niemand etwas basteln! Damit das so bleibt nehme ich lieber keine fremde Hilfe an.
Vielen Dank für den Hinweis.

Falls es zum eigentlichen Thema etwas neues gibt, bin ich ganz Ohr.

Ich wünsche einen guten Tag

MadMax-FHEM

#16
Zitat von: Prof. Dr. Peter Henning am 30 Mai 2021, 20:50:33
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

:) Toll!

Aber ja: stimmt...

Dann hier auch ein Hilfeversuch:

du brauchst einen dummy (statt dem CustomReading-Device), hier als "RawDef" (wichtig auch die setreadings, damit die Readings schon mal da sind ODER es muss der erste Versuch eine gültige Zahl liefern ;)  ):


defmod dmHumTemp dummy

setstate dmHumTemp 2021-05-30 20:58:58 humidity 28
setstate dmHumTemp 2021-05-30 20:58:58 temperature 16


dann eben ein at was das Script zyklisch aufruft (ähnlich des Intervalls des CustomReading), ebenfalls als "RawDef":


defmod atHumTemp at *00:00:30 "/opt/fhem/readout.sh"


Alternativ geht auch ein cron auf Systemebene...

Und dann nat. das Bash-Script (/opt/fhem/readout.sh):


#!/bin/bash

Temp=$(cat /sys/devices/platform/dht11\@11/iio:device0/in_temp_input  2>/dev/null)
Humidity=$(cat /sys/devices/platform/dht11\@11/iio:device0/in_humidityrelative_input  2>/dev/null)
dummy="dmHumTemp"

# check if number or text
if [ -n "$Temp" ] && [ "$Temp" -eq "$Temp" ] 2>/dev/null; then
# number -> write into dummy
  Temp=$(($Temp/1000))
  /usr/bin/perl /opt/fhem/fhem.pl 7072 "setreading $dummy temperature $Temp"
else
# nan -> read last value from dummy and (re)write in order to get an event
  Temp=$(/usr/bin/perl /opt/fhem/fhem.pl 7072 "{ReadingsVal('${dummy}','temperature','error')}")
  /usr/bin/perl /opt/fhem/fhem.pl 7072 "setreading $dummy temperature $Temp"
fi

# check if number or text
if [ -n "$Humidity" ] && [ "$Humidity" -eq "$Humidity" ] 2>/dev/null; then
# number -> write into dummy
  Humidity=$(($Humidity/1000))
  echo $Humidity
  /usr/bin/perl /opt/fhem/fhem.pl 7072 "setreading $dummy humidity $Humidity"
else
# nan -> read last value from dummy and (re)write in order to get an event
  Humidity=$(/usr/bin/perl /opt/fhem/fhem.pl 7072 "{ReadingsVal('${dummy}','humidity','error')}")
  /usr/bin/perl /opt/fhem/fhem.pl 7072 "setreading $dummy humidity $Humidity"
fi


(ich hab's mal "angetestet", also mit selbst erstellten Textdateien, mal mit Zahl mal mit Text drin, kann aber nat. die Funktionalität nicht garantieren... ;)  Ist aber doch ähnlich dem was in dem anderen Thread schon vorgestellt wurde? EDIT: https://forum.fhem.de/index.php/topic,25413.msg919580.html#msg919580 gut dort als Python hier als Bash)

Wichtig: das Bash Script muss nat. so sein, dass es fhem ausführen kann/darf.
Also irgendwo wo fhem Zugriff hat, z.B. /opt/fhem
Und auch Berechtigung, also z.B. sudo chown fhem: /opt/fhem/readout.sh

EDIT: wichtig auch -> du brauchst nat. ein telnet-Device... ;)

Statt Auslesen per ReadingsVal mit Angabe von "error" kannst du auch ReadingsNum nehmen (eigentlich besser aber ein Fehler ist so schwerer zu erkennen)...

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

Also jetzt bin ich etwas verwirrt, gestern hat es sich so angehört als ob mir hier ins Gewissen geredet wird, weil ich dabei bin etwas zu fordern bzw. zuzulassen was falsch wäre.

Ich war mir nicht sicher ob das Spaß ist, aber nach dem ich hier von Prof. Dr. Peter Henning angezählt wurde verging mir das lächeln.

Keine Ahnung was das hier wird, aber für Prof. Dr. Peter Henning möchte ich sagen, dass ich diesen Hilfeversuch von Joachim erst ausprobieren werde, wenn ich schon Bachelor bin.

Hier nochmal was ich Gestern schon dazu geschrieben habe:
ZitatZitat von: Prof. Dr. Peter Henning am Gestern um 20:50:33
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

Also ich habe schon Messdaten und dafür musste niemand etwas basteln! Damit das so bleibt nehme ich lieber keine fremde Hilfe an.
Vielen Dank für den Hinweis.

Falls es zum eigentlichen Thema etwas neues gibt, bin ich ganz Ohr.

Ich wünsche einen guten Tag