Hallo, ich habe folgendes DOIF mit dem ich über den Versand der Nachricht "Heizung Status" über Telegram an meinen ChatBot in FHEM meine Heizungswerte abfrage:
Internals:
CFGFN
DEF ([ChatBot:msgText] eq "Heizung Status") (set ChatBot message @... Betriebsart: [Gastherme:Betriebsart] \nAußentemp: [Gastherme:Aussentemperatur] \nTempPufferUnten: [temp.Puffer_Unten:temperature] \nRaumSollTemp: [Gastherme:Raumtemperatur_Soll] \nInternePumpe: [Gastherme:Umwaelzpumpe_intern_Status] \nExternePumpe: [Gastherme:Umwaelzpumpe_HK1_M2_Status] \nThermostatBad: [kr_bad.Thermostat_Clima:state] \nThermostatHobby: [kr_hobby.Thermostat_Clima:state])
DOELSE ()
MODEL FHEM
NAME TelegrammMsg00
NR 9919
NTFY_ORDER 50-TelegrammMsg00
STATE cmd_1
TYPE DOIF
READINGS:
2018-06-26 21:50:43 Device ChatBot
2018-06-26 21:50:43 cmd 1
2018-06-26 21:50:43 cmd_event ChatBot
2018-06-26 21:50:43 cmd_nr 1
2018-06-26 21:50:43 e_ChatBot_msgText Heizung Status
2018-06-26 21:50:24 mode enabled
2018-06-26 21:50:43 state cmd_1
Regex:
condition:
0 ReadingValDoIf($hash,'ChatBot','msgText') eq "Heizung Status"
devices:
0 ChatBot
all ChatBot
do:
0:
0 set ChatBot message @... Betriebsart: [Gastherme:Betriebsart] \nAußentemp: [Gastherme:Aussentemperatur] \nTempPufferUnten: [temp.Puffer_Unten:temperature] \nRaumSollTemp: [Gastherme:Raumtemperatur_Soll] \nInternePumpe: [Gastherme:Umwaelzpumpe_intern_Status] \nExternePumpe: [Gastherme:Umwaelzpumpe_HK1_M2_Status] \nThermostatBad: [kr_bad.Thermostat_Clima:state] \nThermostatHobby: [kr_hobby.Thermostat_Clima:state]
1:
0
helper:
DOIF_Readings_events
DOIF_eventas
event message @... Brenner der Gastherme wurde gestartet
globalinit 1
last_timer 0
sleeptimer -1
timerdev ChatBot
timerevent message @... Brenner der Gastherme wurde gestartet
triggerDev ChatBot
timerevents:
message @... Brenner der Gastherme wurde gestartet
timereventsState:
message @... Brenner der Gastherme wurde gestartet
triggerEvents:
message @... Brenner der Gastherme wurde gestartet
triggerEventsState:
message @... Brenner der Gastherme wurde gestartet
internals:
itimer:
readings:
0 ChatBot:msgText
all ChatBot:msgText
trigger:
uiState:
uiTable:
Attributes:
do always
room 98_Chats
Wenn ich nun irgendeinen Befehl mir aus der Kommandozeile sende wie z.B.
set ChatBot message @... Brenner der Gastherme wurde gestartet
dann wird immer der obere DOIF getriggert. Was ist der Grund?
Hi,
ich vermute folgendes:
Dein ChatBot hat ein Reading msgText das enthält den Text "Heizung Status"
Dein DOIF wird getriggert wenn das Gerät ChatBot getriggert wird, egal mit was.
Das das Reading den erforderlichen Wert enthält (Dein Beispiel setzt ja den Status und nicht das Reading) ist die Abfrage war und - bums.
Du solltest den Trigger des DOIF auf Event ändern.
Öffnest Du den Eventmonitor, setzt dieses Befehl in einem anderen Browserfenster ab, markierst den Event und lässt Dein DOIF modifizieren.
setreading ChatBot msgText "Heizung Status")
https://wiki.fhem.de/wiki/Event_monitor
Gruß Otto
Hallo Otto, danke für die schnelle Antwort und für die Erklärung. Langsam kommt Licht ins Dunkel aber nur ein Kleines ;)
Also wenn ich den setreading-Befehl abgebe taucht im Event folgendes auf :
2018-06-26 23:26:30 DOIF TelegrammMsg00 cmd_nr: 1
2018-06-26 23:26:30 DOIF TelegrammMsg00 cmd: 1
2018-06-26 23:26:30 DOIF TelegrammMsg00 cmd_event: ChatBot
2018-06-26 23:26:30 DOIF TelegrammMsg00 cmd_1
2018-06-26 23:26:30 TelegramBot ChatBot msgText: Heizung Status
Ich verstehe nur noch nicht wie ich mein DOIF jetzt umbauen muss...
Moin,
diese Events sind sekundär. Die Events für den setreading Befehl am Chatbot sind die einzig interessanten!
Ich vermute der Event sieht so aus
... ChatBot msgText: Heizung Status
ergo musst Du den trigger für Dein DOIF so setzen
([ChatBot:"msgText: Heizung Status"])
Er triggert dann auf diesen Inhalt in einem Event für das Gerät ChatBot.
Aber wie gesagt, lies Dir die Beschreibung zum Eventmonitor durch, wähle den richtigen Event aus und lass es machen! Oder probiere das Konstrukt von mir. Und lies Dir die Commandref zu DOIF und die Auslösung durch Events (https://commandref.fhem.de/commandref_DE.html#DOIF_Ereignissteuerung_ueber_Auswertung_von_Events) durch.
Gruß Otto
Hallo Otto,
jetzt habe ich es endgültig verstanden!!! Und jetzt funktioniert es auch genau so wie es soll!
Vielen Dank für deine schnelle und kompetente Hilfe!!! ;)
Beste Grüße
z0lt1