FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: JWRu am 27 September 2023, 18:10:07

Titel: [gelöst] Problem mit ReadingsNum und führender Null
Beitrag von: JWRu am 27 September 2023, 18:10:07
Ich habe ein Problem mit einer führenden Null in einem Reading. Das Reading "raw" hat beispielsweise den Wert "0672.9840".
ReadingsNum (<device>, "raw", -1) liefert nicht "672.9840" wie erwartet, sondern "-1".
Titel: Aw: Problem mit ReadingsNum und führender Null
Beitrag von: MadMax-FHEM am 27 September 2023, 18:13:24
Post doch ein list.

Heißt das Reading tatsächlich raw? Nicht irgendwo ein "verstecktes Leerzeichen" o.ä.?

Weil es sieht verdammt danach aus, als würde beim Auslesen etwas nicht funktionieren und dann der "Ersatzwert" (-1) genommen werden.
Schon mal einen anderen "Ersatzwert" probiert?
Kommt dann auch dieser?
-> Auslesen geht schief...

EDIT: eben mit einem dummy getestet -> geht. Also es kommt der Zahlenwert 0672.9840 zurück (wie erwartet/gedacht)...

Gruß, Joachim
Titel: Aw: Problem mit ReadingsNum und führender Null
Beitrag von: JWRu am 27 September 2023, 18:17:56
Hier ist ein Ausschnitt aus dem List:
   READINGS:
     2023-09-27 18:13:17   CPUtemp         50
     2023-09-23 22:53:19   IODev           myMQTT_Server
     2023-09-25 16:33:25   IP              192.168.178.102
     2023-09-25 16:33:25   MAC             A8:42:E3:55:69:84
     2023-09-27 18:13:17   changeabsolut   0.0000
     2023-09-27 18:13:17   connection      connected
     2023-09-27 18:13:17   error           no error
     2023-09-27 18:13:17   freeMem         767123
     2023-09-25 16:33:25   hostname        ESP-08
     2023-09-25 16:33:25   interval        5.0
     2023-09-23 16:58:38   link            <html><a href='http://192.168.178.102'>Sensor</a></html>
     2023-09-27 18:13:17   pre             672.9840
     2023-09-27 18:13:17   rate            0.000000
     2023-09-27 18:13:17   rate_per_digitalization_round 0.0000
     2023-09-27 18:13:17   rate_per_time_unit 0.000000
     2023-09-27 18:13:17   raw             0672.9840
     2023-09-27 18:13:17   status          Flow finished
     2023-09-03 15:45:16   subscriptions   SmartHome/Sensors/WaterMeter/ctrl/flow_start SmartHome/Sensors/WaterMeter/ctrl/set_prevalue
     2023-09-27 18:13:17   timestamp       2023-09-27T18:12:44+0200
     2023-09-27 18:13:17   uptime          178856
     2023-09-27 18:13:17   value           672.9840
     2023-09-27 18:13:17   wifiRSSI        -78

Wenn ich einen anderen Ersatzwert nehme, kommt dieser.
Titel: Aw: Problem mit ReadingsNum und führender Null
Beitrag von: MadMax-FHEM am 27 September 2023, 18:19:24
Gut kein vollständiges list...

Wie lautet dein Aufruf und bitte nicht "mystifizieren", sondern poste doch den echten Aufruf...

Zitat von: JWRu am 27 September 2023, 18:17:56Wenn ich einen anderen Ersatzwert nehme, kommt dieser.
Deutet ja wie geschrieben darauf hin, dass beim Auslesen etwas nicht passt...

Gruß, Joachim
Titel: Aw: Problem mit ReadingsNum und führender Null
Beitrag von: JWRu am 27 September 2023, 18:28:17
Habe Mist gebaut beim Namen - es kommt tatsächlich "0672.9840" zurück.
Das wird aber anscheinend von Perl (trotz "ReadingsNum" statt "ReadingsVal") nicht als Zahl erkannt.
(0672.9840  -  672.9839) liefert z.B. 4429167.0161
Titel: Aw: Problem mit ReadingsNum und führender Null
Beitrag von: betateilchen am 27 September 2023, 19:26:55
Zitat von: JWRu am 27 September 2023, 18:28:17Das wird aber anscheinend von Perl (trotz "ReadingsNum" statt "ReadingsVal") nicht als Zahl erkannt.
(0672.9840  -  672.9839) liefert z.B. 4429167.0161

Das hat nix mit ReadingsNum() oder ReadingsVal() zu tun.

Perl erkennt das sehr wohl als "Zahl", aber nicht als Zahl mit der Basis 10, sondern als Oktalzahl mit der Basis 8. Und das wird genau daran erkannt, dass die Zahl mit einer 0 beginnt.

Titel: Aw: Problem mit ReadingsNum und führender Null
Beitrag von: JWRu am 27 September 2023, 19:30:51
Das habe ich auch gerade herausgefunden.
Das heißt wohl, dass ich ReadingsVal verwenden und anschließend die führende Null entfernen muss.
Titel: Aw: Problem mit ReadingsNum und führender Null
Beitrag von: betateilchen am 27 September 2023, 19:37:22
{my $v = ReadingsVal("bla","blub","0672.9840");; $v=~s/^0//;; return $v}
Titel: Aw: [gelöst] Problem mit ReadingsNum und führender Null
Beitrag von: JWRu am 27 September 2023, 19:47:30
Zitat{my $v = ReadingsVal("bla","blub","0672.9840");; $v=~s/^0//;; return $v}
funktioniert
Titel: Aw: [gelöst] Problem mit ReadingsNum und führender Null
Beitrag von: betateilchen am 27 September 2023, 19:49:54
Zitat von: JWRu am 27 September 2023, 19:47:30funktioniert

Natürlich  8)

https://forum.fhem.de/index.php?topic=135120.0
Titel: Aw: [gelöst] Problem mit ReadingsNum und führender Null
Beitrag von: JWRu am 27 September 2023, 20:11:00
Wieder mal ein Grund, warum ich mich für Perl nie richtig begeistern werde.
Ich mag Sprachen mit expliziten cast-Operatoren - da kann man viel besser kontrollieren was passiert.
Titel: Aw: [gelöst] Problem mit ReadingsNum und führender Null
Beitrag von: betateilchen am 27 September 2023, 20:32:26
Dass Zahlen mit 0 am Anfang als Oktalzahlen betrachtet werden, ist aber nicht nur in perl so.
Titel: Aw: [gelöst] Problem mit ReadingsNum und führender Null
Beitrag von: JWRu am 27 September 2023, 20:47:45
Das ist richtig - man kann aber mit entsprechenden Operatoren die Umwandlung String -> Zahl besser kontrollieren.
Titel: Aw: [gelöst] Problem mit ReadingsNum und führender Null
Beitrag von: fz55 am 27 September 2023, 23:43:51
Hast du einen besonderen Grund das Reading raw zu verwenden? Wenn du hier Daten von 'Digitizer - AI on the edge - watermeter' verarbeitest, steht im Reading value der numerische Wert des Wasserzahlers nach der Umwandlung von analog nach digital.
Titel: Aw: [gelöst] Problem mit ReadingsNum und führender Null
Beitrag von: JWRu am 28 September 2023, 07:55:46
ZitatHast du einen besonderen Grund das Reading raw zu verwenden?
Ich benutze das im Fehlerfall - dann wird "value" nicht gefüllt.
Es ist die Wasseruhr. Der analoge Bereich funktioniert prima - der digitale macht manchmal noch Probleme.
Ich werte im Fehlerfall die Differenz zwischen "pre" und "raw" aus. Wenn diese zu groß ist, erhalte ich eine Nachricht.
Titel: Aw: [gelöst] Problem mit ReadingsNum und führender Null
Beitrag von: fz55 am 28 September 2023, 13:10:24
Ich hatte auch Probleme mit dem digitalen Bereich, da meine Wasseruhr sehr spät und dann auch noch relativ langsam auf den nächst höheren Wert umschaltet. Seit ich die digitale Erkennung auf dig-class11_1600_s2.tflite umgestellt habe, funktioniert es aber recht gut.
Titel: Aw: [gelöst] Problem mit ReadingsNum und führender Null
Beitrag von: JWRu am 28 September 2023, 14:29:46
Ich benutze jetzt dig-class100-0165_s2_q.tflite - hatte seitdem auch noch keinen Fehler.
Titel: Aw: [gelöst] Problem mit ReadingsNum und führender Null
Beitrag von: betateilchen am 28 September 2023, 19:20:47
Zitat von: JWRu am 27 September 2023, 19:30:51Das heißt wohl, dass ich ReadingsVal verwenden und anschließend die führende Null entfernen muss.

Ab dem morgigen Update sollte sich Deine Aufgabe auch mit ReadingsNum() ohne weitere Klimmzüge lösen lassen.