Ich lese ein Strahlenmessgerät mit fakelog aus.
Jetzt möchte ich die Messwerte auslesen für die Tablet UI und zum Zweck der Benachrichtigung auswerten.
Mit "get GammaScoutFLog - - 2017-09-01 2017-09-02" kann ich die Werte anzeigen
Mit "{ ReadingsVal("GammaScoutFLog","state","0") }" bekomme ich nur aktiv.
Ich benötige den letzten Wert in dem Logfile
2017-09-02_19:30:00 2017-09-02_20:00:00 736 1800 24.5 0.409
2017-09-02_20:00:00 2017-09-02_20:30:00 702 1800 23.4 0.390
2017-09-02_20:30:00 2017-09-02_21:00:00 778 1800 25.9 0.432
2017-09-02_21:00:00 2017-09-02_21:30:00 734 1800 24.5 0.408
2017-09-02_21:30:00 2017-09-02_22:00:00 715 1800 23.8 0.397
2017-09-02_22:00:00 2017-09-02_22:30:00 836 1800 27.9 0.464
2017-09-02_22:30:00 2017-09-02_23:00:00 756 1800 25.2 0.420
2017-09-02_23:00:00 2017-09-02_23:30:00 751 1800 25.0 0.417
2017-09-02_23:30:00 2017-09-03_00:00:00 737 1800 24.6 0.409
2017-09-03_00:00:00 2017-09-03_00:30:00 779 1800 26.0 0.433
2017-09-03_00:30:00 2017-09-03_01:00:00 783 1800 26.1 0.435
2017-09-03_01:00:00 2017-09-03_01:30:00 777 1800 25.9 0.432
2017-09-03_01:30:00 2017-09-03_02:00:00 796 1800 26.5 0.442
2017-09-03_02:00:00 2017-09-03_02:30:00 804 1800 26.8 0.447
2017-09-03_02:30:00 2017-09-03_03:00:00 726 1800 24.2 0.403
2017-09-03_03:00:00 2017-09-03_03:30:00 779 1800 26.0 0.433
2017-09-03_03:30:00 2017-09-03_04:00:00 739 1800 24.6 0.411
2017-09-03_04:00:00 2017-09-03_04:30:00 830 1800 27.7 0.461
2017-09-03_04:30:00 2017-09-03_05:00:00 799 1800 26.6 0.444
2017-09-03_05:00:00 2017-09-03_05:30:00 751 1800 25.0 0.417
2017-09-03_05:30:00 2017-09-03_06:00:00 769 1800 25.6 0.427
2017-09-03_06:00:00 2017-09-03_06:30:00 790 1800 26.3 0.439
2017-09-03_06:30:00 2017-09-03_07:00:00 782 1800 26.1 0.434
2017-09-03_07:00:00 2017-09-03_07:30:00 747 1800 24.9 0.415
2017-09-03_07:30:00 2017-09-03_08:00:00 803 1800 26.8 0.446
2017-09-03_08:00:00 2017-09-03_08:30:00 744 1800 24.8 0.413
2017-09-03_08:30:00 2017-09-03_09:00:00 741 1800 24.7 0.412
2017-09-03_09:00:00 2017-09-03_09:30:00 715 1800 23.8 0.397
2017-09-03_09:30:00 2017-09-03_10:00:00 771 1800 25.7 0.428
2017-09-03_10:00:00 2017-09-03_10:30:00 786 1800 26.2 0.437
2017-09-03_10:30:00 2017-09-03_11:00:00 767 1800 25.6 0.426
2017-09-03_11:00:00 2017-09-03_11:30:00 748 1800 24.9 0.416
2017-09-03_11:30:00 2017-09-03_12:00:00 764 1800 25.5 0.424
2017-09-03_12:00:00 2017-09-03_12:30:00 761 1800 25.4 0.423
2017-09-03_12:30:00 2017-09-03_13:00:00 744 1800 24.8 0.413
2017-09-03_13:00:00 2017-09-03_13:30:00 729 1800 24.3 0.405
2017-09-03_13:30:00 2017-09-03_14:00:00 807 1800 26.9 0.448
2017-09-03_14:00:00 2017-09-03_14:30:00 761 1800 25.4 0.423
2017-09-03_14:30:00 2017-09-03_15:00:00 782 1800 26.1 0.434
2017-09-03_15:00:00 2017-09-03_15:30:00 760 1800 25.3 0.422
2017-09-03_15:30:00 2017-09-03_16:00:00 723 1800 24.1 0.402
2017-09-03_16:00:00 2017-09-03_16:30:00 762 1800 25.4 0.423
2017-09-03_16:30:00 2017-09-03_17:00:00 781 1800 26.0 0.434
2017-09-03_17:00:00 2017-09-03_17:30:00 767 1800 25.6 0.426
2017-09-03_17:30:00 2017-09-03_18:00:00 816 1800 27.2 0.453
2017-09-03_18:00:00 2017-09-03_18:30:00 805 1800 26.8 0.447
2017-09-03_18:30:00 2017-09-03_19:00:00 743 1800 24.8 0.413
2017-09-03_19:00:00 2017-09-03_19:30:00 724 1800 24.1 0.402
2017-09-03_19:30:00 2017-09-03_20:00:00 815 1800 27.2 0.453
2017-09-03_20:00:00 2017-09-03_20:30:00 759 1800 25.3 0.422
2017-09-03_20:30:00 2017-09-03_21:00:00 740 1800 24.7 0.411
2017-09-03_21:00:00 2017-09-03_21:30:00 786 1800 26.2 0.437
Wäre es nicht einfacher (und prinzipiell mehr in der Fhem-Logik), das Gerät direkt ein dummy o.ä. setzen zu lassen, und dieses Dummy von FHEM loggen zu lassen, statt eine Log zu schreiben und auszulesen? Das Problem mit deiner Logik ist, dass die Änderung eines Wertes kein Event generiert. Wie wirst Du dann in Fhem die Aktualisierung steuern, falls Du es schafst den letzten Wert auzulesen? Mit einem AT ?
Evtl. könntest Du dein get mittels einer perl Funktion anpassen, damit er nur die letzte halbe Stunde abfragt. Aber nicht schön... siehe oben.
Leider gibt es keine Möglichkeit den GammaScout anzubinden.
https://www.gamma-scout.com/DE/Home.php (https://www.gamma-scout.com/DE/Home.php)
Ich habe es mal hin bekommen ein Logfile zu schreiben, und mir das in FHEM Anzeigen zu lassen.
Ja es ist nicht schön, es müsste dann wohl mit AT und GET gelöst werden, aber wie bringe ich es hin das mit GET nur den letzten Wert 0.xxx übergibt ohne Uhrzeit und Datum?
Hi Edi77,
vielleicht hilft Dir diese Diskussion in den letzten Tagen. Das war eigentlich das gleiche Problem
-> https://forum.fhem.de/index.php/topic,64627.msg678581.html#msg678581
Gruß Otto
Teilweise funktioniert es schon.
Ich bekomme jetzt schon mal die letzte Zeile, aber das mit dem letzten Wert klappt noch nicht
define GammascoutWert dummy
attr GammascoutWert room GammaScout
attr GammascoutWert userReadings Wert1 { return (split(" ",ReadingsVal("GammascoutWert", "state", 0)))[6]}
define GammascoutWert_at at +*00:05:00 { my @content = FileRead({FileName => "log/gammascout-2016.log", ForceType => "file"});; $content[-1] =~ s/\;;/,/g;; fhem "set GammascoutWert $content[-1]"}
nicht blind kopieren sondern verstehendes Lesen ist gefragt.
Den Part $content[-1] =~ s/\;;/,/g;; brauchst Du nicht, Du musst kein ; gegen ein Komma tauschen.
Du musst die letzte Zeile an den Leerzeichen aufteilen. So ähnlich wie hier
-> http://www.hidemail.de/blog/split-in-perl.shtml
Gruß Otto
Hat funktioniert
DANKE
define GammascoutWert dummy
attr GammascoutWert room GammaScout
attr GammascoutWert userReadings Wert { return (split(/ /,ReadingsVal("GammascoutWert", "state", 0)))[5]}
define GammascoutWert_at at +*00:05:00 { my @content = FileRead({FileName => "log/gammascout-2016.log", ForceType => "file"});; $content[-1] =~ s/\;;/,/g;; fhem "set GammascoutWert $content[-1]"}