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
{"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
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
So genau habe ich es mir nicht angesehen, scheint ein Fall für die Vereinheitlichungsinitiative zu sein.
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.
Ach so ;)
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)
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
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
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