93_DbLog.pm - Ergänzung der FBDECT (Trennung value/unit)

Begonnen von jc, 19 Januar 2014, 12:43:09

Vorheriges Thema - Nächstes Thema

jc

Hallo,

anbei ein kurzer Patch, damit in der Datenbank auch für das FBDECT Device die Felder Value und Unit passend gefüllt werden. Wäre schön wenn das noch jemand testen und ggf. mit in 93_DbLog.pm übernehmen könnte.
(Aufpassen muss dann natürlich jeder, der den Werte heute erst in der Definition im gplot File trennt ...)


--- 93_DbLog.pm 2014-01-19 12:29:46.634855787 +0100
+++ 93_DbLog.pm.CHANGED 2014-01-19 12:28:20.067574173 +0100
@@ -159,6 +159,14 @@
       }
   }

+  # FBDECT
+  elsif (($type eq "FBDECT")) {
+    if ( $value=~/([\.\d]+)\s([a-z])/i ) {
+     $value = $1;
+     $unit  = $2;
+    }
+  }
+
   # MAX
   elsif(($type eq "MAX")) {
     $unit= "°C" if(lc($reading) =~ m/temp/);


Vielleicht sollte man das ganze noch etwas generischer lösen, statt wie heute jedes Device einzeln zu behandeln oder habe ich da was missverstanden?!

Gruß
Jan

Tobias

Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

Markus M.

Funktioniert, bei energy macht er aus Wh jedoch anscheinend W.
Aktuell weder Smarthome noch FHEM vorhanden

Tobias

Zitat von: Markus M. am 26 Januar 2014, 22:15:35
Funktioniert, bei energy macht er aus Wh jedoch anscheinend W.
Ersetze mal bitte im Modul die 3Zeile von oben durch folgendes:
if ( $value=~/([\.\d]+)\s([a-z]+)/i ) {
Funktioniert es jetzt?
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

jc

Da hab ich wohl nicht genau genug hingeschaut, die RegEx trifft nur einen Buchstaben nach dem Whitespace richtig. Das Plus nach der Buchstabengruppe sollte dann solange zuschlagen bis kein Buchstabe mehr kommt. Eventuell sollten noch die Anker für Anfang und Ende des Strings mit rein, also:


if ( $value=~/^([\.\d]+)\s([a-z]+)$/i ) {


Dann hätte die RegEx im Zweifel gar nicht gegriffen.

betateilchen

Bei mir liefert 93_DbLog seit dem heutigen Update keine Daten mehr fürs Plotten. Wenn ich die Version davor einspiele, funktioniert alles wie gehabt.

Hat das irgendwas mit Euren Basteleien hier zu tun?
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

jc

Hallo Betateilchen,

mit dieser Bastelei im speziellen kann es meiner Meinung nach nichts zu tun haben, wenn ich mir die aktuelle SVN Version und ihren Vorgänger mal anschaue, dann haben aber noch wesentlich mehr Änderungen am Modul stattgefunden ;-)

Um zumindest meinen marginalen Patch als Fehlerquelle auszuschließen, kannst du ihn ja mal auf die zuletzt funktionierende Version (hab den Diff auf Version vom 2014-01-19) anwenden (ggf. das Plus in der RegEx noch ergänzen).

Gruß
Jan

betateilchen

keine Sorge, hat nix mit Deinem Patch zu tun ;)

Zum DbLog-Problem seit dem Update generell gibts ja schon einen anderen Thread, ich bin nicht der Einzige, der es bemerkt hat.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!