Nur ein Kanal eines Sensor auslesen

Begonnen von Barnie1989, 11 Juni 2017, 10:55:41

Vorheriges Thema - Nächstes Thema

Barnie1989

Hallo zusammen,

leider habe ich nichts im Netzt dazu gefunden und meine Versuche laufen nur teilweise. Ich hoffe, als Anfänger hier richtig zu sein.

Folgendes Scenario: Ich empfange an meinem Cul einen Temp/Hum Sensor aus der Nachbarschaft. Das stört mich nicht weiter. Habe ihn ein einem Raum Fremde Sensoren angelegt.

Device: Prologue_145

Die Readings sehen so aus:

battery          ok 2017-05-31 13:35:07
channel         0 2017-06-11 06:21:28
humidity        34 2017-06-11 06:20:49
mode             normal 2017-01-09 13:49:46
state              T: 22.1 2017-06-11 10:42:03
temperature   22.1 2017-06-11 10:42:03

Seit ein paar Tagen habe ich im Pool der Kids einen Pool-Thermometer.

der wird ebenfalls als Prologue_145 erkannt, sendet aber auf Kanal 1

Somit sehen die Readings nahezu identisch aus nur anhand des channels kann ich die Temperaturen unterscheiden:


battery          ok 2017-05-31 13:35:07
channel         1 2017-06-11 06:21:28
humidity        34 2017-06-11 06:20:49
mode             normal 2017-01-09 13:49:46
state              T: 22.1 2017-06-11 10:42:03
temperature   22.1 2017-06-11 10:42:03

Ich habe nun ein Notify auf den Kanal gemacht. Das funktioniert auch gut, solange der fremde Sensor sendet. Leider schneit der aber ab und zu aus zu sein und ich bekomme dann das Notify nicht mehr getriggert.

define n_Pooltemp notify Prologue_145:channel:.1 { fhem("set log_Pooltemperatur ".ReadingsVal('Prologue_145','temperature',''));; my $d= ReadingsVal("log_Pooltemperatur","state",0);; fhem("setreading log_Pooltemperatur temperature $d")}

Wie kann ich die Werte nutzen, die über Kanal 1 kommen.

Es ist in FHEM nur ein Device!

Danke schon jetzt für eure Unterstützung

RUDI

FHEM auf Raspberry
DB Logging FHEM Server auf Synology NAS
nanoCUL 866MHz für HM Schalter
nanoCUL 433MHz für Aussen Temp und 9 Baumarktsteckdosen
2 MAX Cubes - 15 Thermostate/20 Fensterkontakte/2Wandthermostate

Barnie1989

FHEM auf Raspberry
DB Logging FHEM Server auf Synology NAS
nanoCUL 866MHz für HM Schalter
nanoCUL 433MHz für Aussen Temp und 9 Baumarktsteckdosen
2 MAX Cubes - 15 Thermostate/20 Fensterkontakte/2Wandthermostate

Amenophis86

Hey Barnie1989,
Bitte keine Device Bilder, sondern ein List des Device. Weiterhin kannst du über den EventMonitor gehen und mit dessen Hilfe dir die passende RegEx abfrage für ein Notify ausgeben lassen: https://wiki.fhem.de/wiki/Event_monitor
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

Barnie1989

#3
OK, hier der List:

Internals:
   CFGFN      /opt/fhem/FHEM/00_include_fremde_sensoren.cfg
   CODE       CUL_TCM97001_145
   CUL_433_MSGCNT 1810
   CUL_433_RAWMSG s91810E9008EF;  576: 8624
   CUL_433_TIME 2017-06-11 12:12:09
   DEF        CUL_TCM97001_145
   LASTInputDev CUL_433
   MSGCNT     1810
   NAME       Prologue_145
   NR         1025
   RSSI       -82.5
   STATE      T: 23.3
   TYPE       CUL_TCM97001
   lastH      0
   lastT      1497175929
   Readings:
     2017-05-31 13:35:07   battery         ok
     2017-06-11 12:04:12   channel         1
     2017-06-11 12:04:09   humidity        34
     2017-01-09 13:49:46   mode            normal
     2017-06-11 12:12:09   state           T: 23.3
     2017-06-11 12:12:09   temperature     23.3
Attributes:
   event-min-interval .*:300
   event-on-change-reading .*
   model      Prologue
   room       FremdeSensoren

Leider stehe ich immer noch auf dem schlauch, wie ich das temperature auslesen kann, wenn der cannel auf 1 ist. Ist er auf 0, dann ignorieren..

eben hat der Nachbar mal wieder gesendet... :)

Internals:
   CFGFN      /opt/fhem/FHEM/00_include_fremde_sensoren.cfg
   CODE       CUL_TCM97001_145
   CUL_433_MSGCNT 10
   CUL_433_RAWMSG s91000E3238DC;  448: 9152
   CUL_433_TIME 2017-06-11 12:36:39
   DEF        CUL_TCM97001_145
   LASTInputDev CUL_433
   MSGCNT     10
   NAME       Prologue_145
   NR         1025
   RSSI       -92
   STATE      T: 22.7 H: 35
   TYPE       CUL_TCM97001
   lastH      0
   lastT      1497177399
   Readings:
     2017-05-31 13:35:07   battery         ok
     2017-06-11 12:36:39   channel         0
     2017-06-11 12:36:39   humidity        35
     2017-01-09 13:49:46   mode            normal
     2017-06-11 12:36:39   state           T: 22.7 H: 35
     2017-06-11 12:36:39   temperature     22.7
Attributes:
   event-min-interval .*:300
   event-on-change-reading .*
   model      Prologue
   room       FremdeSensoren


Das will ich ignorieren
FHEM auf Raspberry
DB Logging FHEM Server auf Synology NAS
nanoCUL 866MHz für HM Schalter
nanoCUL 433MHz für Aussen Temp und 9 Baumarktsteckdosen
2 MAX Cubes - 15 Thermostate/20 Fensterkontakte/2Wandthermostate

Amenophis86

Warum hast du im notify vor der 1 noch einen . stehen?

Bin mit regex und Notify nicht so fit, bei Ei em doif könntest du mit [<device>:channel] == 1 arbeiten.
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

Barnie1989

Zitat von: Amenophis86 am 11 Juni 2017, 14:14:44
Warum hast du im notify vor der 1 noch einen . stehen?

Bin mit regex und Notify nicht so fit, bei Ei em doif könntest du mit [<device>:channel] == 1 arbeiten.


Das Notify greift so, aber wen der Nachbarsensor nicht zwischendurch auf Kanal 0 was sendet, wird das Notify nur einmal beim Wechsel von 0 auf 1 ausgelöst.

ich möchte eigentlich auf die Temp triggern, aber nur wenn bei Kanal 1 drin steht
FHEM auf Raspberry
DB Logging FHEM Server auf Synology NAS
nanoCUL 866MHz für HM Schalter
nanoCUL 433MHz für Aussen Temp und 9 Baumarktsteckdosen
2 MAX Cubes - 15 Thermostate/20 Fensterkontakte/2Wandthermostate

Amenophis86

Ich frage mal anders, was genau au willst du machen. Für was willst du welchen Wert angreifen und was damit machen?
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

Barnie1989

das mit dem Notify macht folgendes:

Sobald sich das Reading cannel auf 1 ändert, dann wird das Reading Temperature in ein Dummy geschrieben. Dieser Dummy wird in der Datenbank geloggt und eine Grafik erzeugt.

Solange beide Sensoren (Kanal 0 und Kanal 1) senden funktioniert mein Konstrukt auch super. Nur passiert es ab und zu, dass der Senor (irgendwo in der Nachbarschaft Kanal 0) nicht mehr sendet. Somit kommen nur noch Werte mit dem Reading Kanal 1 an. Da sich der Kanal nicht mehr ändert, greift auch der Notify (Wechsel auf 1) nicht mehr und die Tempwerte werden nicht mehr in den Dummy und somit nicht in die Datenbank geschrieben.

Ich suche einen anderen Weg, der die Temperatrur ausliest, wenn in dem Reading cannel 1 steht und in den Dummy schreibt.
FHEM auf Raspberry
DB Logging FHEM Server auf Synology NAS
nanoCUL 866MHz für HM Schalter
nanoCUL 433MHz für Aussen Temp und 9 Baumarktsteckdosen
2 MAX Cubes - 15 Thermostate/20 Fensterkontakte/2Wandthermostate

Amenophis86

Works as designed.

Also normal musst du ja auch nur eine Änderung Loggen, bis dahin ist der Wert ja gleich. Willst du mehr Loggen, dh auch, wenn der Wert sich nicht ändert, dann kannst du zum Beispiel mit http://fhem.de/commandref_DE.html#event-min-interval arbeiten.
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

Barnie1989

Zitat von: Amenophis86 am 11 Juni 2017, 18:07:48
Works as designed.

Also normal musst du ja auch nur eine Änderung Loggen, bis dahin ist der Wert ja gleich. Willst du mehr Loggen, dh auch, wenn der Wert sich nicht ändert, dann kannst du zum Beispiel mit http://fhem.de/commandref_DE.html#event-min-interval arbeiten.

das ist schon klar, nur dann erwische ich evt werte aus Kanal 0
FHEM auf Raspberry
DB Logging FHEM Server auf Synology NAS
nanoCUL 866MHz für HM Schalter
nanoCUL 433MHz für Aussen Temp und 9 Baumarktsteckdosen
2 MAX Cubes - 15 Thermostate/20 Fensterkontakte/2Wandthermostate

Amenophis86

Dann musst du andersherum das notify aufbauen. Setz es auf Temp und bau eine if Abfrage ein, die den Kanal testet und davon abhängig den Wert loggt, oder nicht.
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

Barnie1989

genau do wollte ich hin :) nur muss ich mich mal einlesen... Vielleicht gibt es ja noch einen anderen Weg so ein Multichannel Device sauber zu loggen... Evt. kommt ja der Kanal 2 noch dazu :)
FHEM auf Raspberry
DB Logging FHEM Server auf Synology NAS
nanoCUL 866MHz für HM Schalter
nanoCUL 433MHz für Aussen Temp und 9 Baumarktsteckdosen
2 MAX Cubes - 15 Thermostate/20 Fensterkontakte/2Wandthermostate

Amenophis86

Hier mal ein Tipp:

define n_Pooltemp notify Prologue_145:temp.* { if (...

Wie gesagt, alternativ auch mit DOIF möglich, aber Geschmackssache.
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...