FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: smurphy am 03 Oktober 2018, 17:02:39

Titel: Gleichheitszeichen aus Reading entfernen
Beitrag von: smurphy am 03 Oktober 2018, 17:02:39
Hallo Liebe Gemeinde,

ich hoffe, meine Frage so zu stellen, wie es sich gehört. Ich habe natürlich vorher auch die Suchfunktion benutzt, jedoch konnte ich keine Lösungsansätze für mich adaptieren.

Was ich gemacht habe:
Ich habe ein Temperatur/Luftfeichtigskeits-Sensor von Xiaomi über das Modul XiaomiBTLESens eingebunden.

define xiaomi1 XiaomiBTLESens xx:xx:xx:d8:ae:ef

Ich erhalte folgende Readings:
Readings
batteryPercent
76
batteryState
ok
firmware
00.00.66
humidity
=7.6
state
T: 14.9 H: =7.4
temperature
14.9

Leider komme ich mit = bei der Luftfeuchtigkeit nicht klar. die Graphen funktionieren damit einfach nicht und die dewpoint Berechnung auch nicht.

Im Logfile erscheint folgende Fehlermeldung:
2018.10.03 16:22:06 1: Error dewpoint: humidity invalid: 0
2018.10.03 16:25:46 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at (eval 113) line 1.
2018.10.03 16:25:46 3: eval: { "Xiaomi Humidity Min $data{min2}, Max $data{max2}, Last $data{currval2}, Taupunkt $data{currval3}" }

Komischerweise scheinen beim Neustart des Raspberry die ersten Werte ohne das blöde = übermittelt zu werden.
Siehe Logfile:

2018-10-03_16:26:03 xiaomi1 batteryPercent: 76
2018-10-03_16:26:03 xiaomi1 T: 0 H: 0
2018-10-03_16:26:03 xiaomi1 write sensor data
2018-10-03_16:26:13 xiaomi1 T: 15.1 H: 47.7 D: 4.1
2018-10-03_16:28:16 xiaomi1 write sensor data
2018-10-03_16:28:29 xiaomi1 T: 15.0 H: 11.9 D: -14.3
2018-10-03_16:31:14 xiaomi1 write sensor data
2018-10-03_16:31:24 xiaomi1 T: 14.9 H: =9.4
2018-10-03_16:37:00 xiaomi1 write sensor data
2018-10-03_16:37:10 xiaomi1 T: 15.0 H: =8.0
2018-10-03_16:41:55 xiaomi1 write sensor data


Kann mir jemand helfen?
Vielen Dank und Gruß
Titel: Antw:Gleichheitszeichen aus Reading entfernen
Beitrag von: CoolTux am 03 Oktober 2018, 17:19:56
userReadings und ReadingsNum verwenden.


Aber irgendwas kann da eh nicht stimmen oder ist das echt so trocken bei Dir?
Titel: Antw:Gleichheitszeichen aus Reading entfernen
Beitrag von: LuckyDay am 03 Oktober 2018, 17:23:29
2018-10-03_16:26:13 xiaomi1 T: 15.1 H: 47.7 D: 4.1
2018-10-03_16:28:16 xiaomi1 write sensor data
2018-10-03_16:28:29 xiaomi1 T: 15.0 H: 11.9 D: -14.


Ich behaupte mal , dass du eh ein anderes Problem noch hast,
es ist ziemlich unwarscheinlich, das innerhalb von 3 minuten der Hum von 47.7 auf 11.9 fällt
Titel: Antw:Gleichheitszeichen aus Reading entfernen
Beitrag von: smurphy am 03 Oktober 2018, 17:30:22
Das mit der Hum passt schon. Ich habe eine Trockenbox, in der ich Filament für meinen 3D Drucker aufbewahre.

Wie könnte ich das mit userreadingslösen?

Danke schonmal!!!
Titel: Antw:Gleichheitszeichen aus Reading entfernen
Beitrag von: JensS am 03 Oktober 2018, 17:47:28
Zuerst würde ich mal den Modulautor fragen, ob das = sein muss.
Als Zwischenlösung kannst du dir ein Userreading anlegen und dabei das = entfernen:attr xiaomi1 userReadings Luftfeuchte { my $luft = ReadingsVal("xiaomi1","humidity",0);$luft=~s/=//;$luft;}Gruß Jens
Titel: Antw:Gleichheitszeichen aus Reading entfernen
Beitrag von: CoolTux am 03 Oktober 2018, 19:00:06
Zitat von: dirigent am 03 Oktober 2018, 17:47:28
Zuerst würde ich mal den Modulautor fragen, ob das = sein muss.
Als Zwischenlösung kannst du dir ein Userreading anlegen und dabei das = entfernen:attr xiaomi1 userReadings Luftfeuchte { my $luft = ReadingsVal("xiaomi1","humidity",0);$luft=~s/=//;$luft;}Gruß Jens

Viel zu kompliziert.


attr xiaomi1 userReadings Luftfeuchte:humidity:.* { ReadingsNum($name,"humidity",0) }
Titel: Antw:Gleichheitszeichen aus Reading entfernen
Beitrag von: smurphy am 03 Oktober 2018, 20:42:17
Vielen Dank schonmal, dass Ihr euch mit meinen Problemchen befasst.

Ich habe zuerst Userreading so angelegt wie von cooltux vorgeschlagen. Dies hat leider nicht dazu geführt, dass ein neues Readings angelegt wird. Liegt eventuell ein Syntax Fehler vor? Ich habe copy&paste gemacht.

Danach habe ich die Lösung von Jens versucht und das hat geklappt.

Ich kenne zwar noch nicht die Ursache für das Gleichzeitszeichen, aber das Problem ist gelöst.

Vielen vielen Dank Männer!!

@Cooltux, wenn du den Fehler in deiner Syntax ausmachen kannst, würde ich das gerne noch ausprobieren.

Gruß


Titel: Antw:Gleichheitszeichen aus Reading entfernen
Beitrag von: CoolTux am 03 Oktober 2018, 20:55:45
Internals:
   CFGFN     
   NAME       testDummy
   NR         59
   STATE      ???
   TYPE       dummy
   READINGS:
     2018-10-03 20:53:15   Luftfeuchte     45
     2018-10-03 20:53:15   humidity        =45
Attributes:
   readingList humidity
   setList    humidity
   userReadings Luftfeuchte:humidity:.* { ReadingsNum($name,"humidity",0) }


Bei mir geht es als Test. Eventuell kam kein Event für humidity weil sich der Wert nicht verändert hat. Da muss man Geduld haben oder das Teil mal eben woanders hinlegen. Badezimmer beim duschen oder so.
Titel: Antw:Gleichheitszeichen aus Reading entfernen
Beitrag von: smurphy am 03 Oktober 2018, 20:59:55
Das wird es gewesen sein!!

Vielen Dank!!

Ich werde mich jetzt mal schauen, dass ich mir eine e-mail notfification bastle, wenn die Luftfeuchtigkeit über 30% steigt. Dann ist mein Silicat gesättigt. Der E-Mail Versand über eine Funktion klappt schonmal.
Titel: Antw:Gleichheitszeichen aus Reading entfernen
Beitrag von: CoolTux am 03 Oktober 2018, 23:19:00
Mache ich mit einem userReadings bei mir.


batteryState:batteryPercent:.* { if( ReadingsVal($name,'batteryPercent',0) < 30) {'low'} elsif( ReadingsVal($name,'batteryPercent',0) > 98) {'ok'} }


Als Beispiel gedacht. Und dann ein Notify was auf low oder ok triggert. Sollte bei dir dann besser high und low heißen und du triggerst auf high.