FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: mhelgers am 10 Juli 2018, 10:56:22

Titel: Wie kann ich über die Kommandozeile Werte auslesen?
Beitrag von: mhelgers am 10 Juli 2018, 10:56:22
Hallo zusammen,

ich möchte gerne eine Aktion ausführen wenn ein Temperaturwert überschritten wird

define test123 DOIF ([09:00-18:00] and  [MQTT_Wohn: messured-temp] > 24) (set KU_Kuechenlampe on)


da ich n nicht weiss ob ['MQTT_Wohn: messured-temp]'  richtig ist stelle ich mir die Frage wie man solche Werte auslesen kann.

Daher die Frage: Wie kann ich über die Kommandozeile den Temperaturwert des MQTT Devices auslesen?
als Ergebnis soll kommen messured-temp: 24.1


hier der List Output zum MQTT Device
Internals:
   IODev      Mosquitto
   NAME       MQTT_Wohn
   NR         786
   STATE      Temperatur: 25.1 Grad Feuchte: 55.0
   TYPE       MQTT_DEVICE
   Helper:
     DBLOG:
       humidity:
         DBLogging:
           TIME       1531212366.97918
           VALUE      55.00
       messured-temp:
         DBLogging:
           TIME       1531212366.70261
           VALUE      25.10
       transmission-state:
         DBLogging:
           TIME       1531212366.848
           VALUE      incoming publish received
   READINGS:
     2017-05-04 09:04:29   Humy            41.80
     2018-07-10 10:46:06   humidity        55.00
     2018-07-10 10:46:06   messured-temp   25.10
     2018-07-10 10:46:06   transmission-state incoming publish received
   message_ids:
   sets:
   subscribe:
     /Thermometer/DHT22/Luftfeuchte
     /Thermometer/DHT22/Temperatur
   subscribeExpr:
     ^\/Thermometer\/DHT22\/Luftfeuchte$
     ^\/Thermometer\/DHT22\/Temperatur$
   subscribeReadings:
     /Thermometer/DHT22/Luftfeuchte:
       cmd       
       name       humidity
     /Thermometer/DHT22/Temperatur:
       cmd       
       name       messured-temp
Attributes:
   DbLogInclude 1
   IODev      Mosquitto
   alias      Wohnzimmer T
   icon       temperature_humidity
   mqttName   Temperatur
   mqttRoom   Wohnzimmer
   room       Favourites,MQTT
   stateFormat {sprintf("Temperatur: %.1f Grad Feuchte: %.1f ", ReadingsVal($name,"messured-temp",0), ReadingsVal($name,"humidity",0))}
   subscribeReading_humidity /Thermometer/DHT22/Luftfeuchte
   subscribeReading_messured-temp /Thermometer/DHT22/Temperatur
Titel: Antw:Wie kann ich über die Kommandozeile Werte auslesen?
Beitrag von: Ellert am 10 Juli 2018, 11:00:33
{"measured-temp:".ReadingsVal("MQTT_Wohn","measured-temp","error")} siehe https://fhem.de/commandref_DE.html#perl

Und falls Du DOIFtools verwendest, sollte Probably associated with als PopUp angezeigt werden können siehe https://wiki.fhem.de/wiki/DOIFtools#Beispiel_Lookup-Fenster
Titel: Antw:Wie kann ich über die Kommandozeile Werte auslesen?
Beitrag von: helmut am 10 Juli 2018, 11:16:30
Ich wuerde es auch als "measured-temp" schreiben, aber hast Du gesehen, dass er im Listing tatsaechlich ein READING
"2018-07-10 10:46:06   messured-temp   25.10" stehen hat?

Gruss Helmut
Titel: Antw:Wie kann ich über die Kommandozeile Werte auslesen?
Beitrag von: Ellert am 10 Juli 2018, 11:23:34
So genau habe ich es mir nicht angesehen, scheint ein Fall für die Vereinheitlichungsinitiative zu sein.
Titel: Antw:Wie kann ich über die Kommandozeile Werte auslesen?
Beitrag von: CoolTux am 10 Juli 2018, 11:34:00
Zitat von: Ellert am 10 Juli 2018, 11:23:34
So genau habe ich es mir nicht angesehen, scheint ein Fall für die Vereinheitlichungsinitiative zu sein.


Das hat damit gar nichts zu tun.
messured ist ein schreibfehler. measured ist richtig.
Titel: Antw:Wie kann ich über die Kommandozeile Werte auslesen?
Beitrag von: Ellert am 10 Juli 2018, 11:37:24
Ach so  ;)
Titel: Antw:Wie kann ich über die Kommandozeile Werte auslesen?
Beitrag von: mhelgers am 10 Juli 2018, 12:56:59
Danke für eure schnellen Antworten.
Es muss übrigens tatsächlich 'messured-temp' heißen - das ist kein Schreibfehler!

Wenn ich in die Kommandozeile
{ReadingsVal("MQTT_Wohn","messured-temp","error")}
erhalte ich den Aktuellen Wert


müsste die Bedingung dann so aussehen?

define test123 DOIF ([09:00-18:00] and  {ReadingsVal("MQTT_Wohn","messured-temp","error")}  > 24) (set KU_Kuechenlampe on)
Titel: Antw:Wie kann ich über die Kommandozeile Werte auslesen?
Beitrag von: Otto123 am 10 Juli 2018, 13:01:21
define test123 DOIF ([09:00-18:00] and  [MQTT_Wohn:messured-temp]  > 24) (set KU_Kuechenlampe on)Im DOIF / Set magic Style sollte auch gehen.
:D

Nur [MQTT_Wohn: messured-temp] war ein leeres zu viel. Aber Deine eigentliche Frage ist mit {ReadingsVal("MQTT_Wohn","messured-temp","error")} beantwortet.

Gruß Otto
Titel: Antw:Wie kann ich über die Kommandozeile Werte auslesen?
Beitrag von: helmut am 10 Juli 2018, 13:39:19
Zitat von: mhelgers am 10 Juli 2018, 12:56:59
Es muss übrigens tatsächlich 'messured-temp' heißen - das ist kein Schreibfehler!
Rein interessehalber, bitte klaer mich ueber die Bedeutung des Wortes auf. Auch die Befragung des Gockels brachte mir keine neuen Erkenntisse ;-)

Gruss Helmut
Titel: Antw:Wie kann ich über die Kommandozeile Werte auslesen?
Beitrag von: CoolTux am 10 Juli 2018, 13:58:05
Zitat von: helmut am 10 Juli 2018, 13:39:19
Rein interessehalber, bitte klaer mich ueber die Bedeutung des Wortes auf. Auch die Befragung des Gockels brachte mir keine neuen Erkenntisse ;-)

Gruss Helmut

Naja wie auch, das Wort gibt es im englischen Sprachgebrauch auch gar nicht  ;D