Moin
Möchte gerne zwei Internalwerte abrufen, leider wird nur der zweite Internalwert zurückgegeben.
Ich gebe folgenden Code in die Kommandozeile ein:
{InternalVal('MyInfoBot', 'sentMsgText','');;InternalVal('MyInfoBot', 'sentMsgId',0)}
Kann mir da jemand auf die Sprünge helfen?
Gruß
Klaus
{InternalVal('MyInfoBot', 'sentMsgText','')." ".InternalVal('MyInfoBot', 'sentMsgId',0)}
Funktioniert leider nicht. Bekomme eine 0 zurück.
Das funktioniert(Verkettung Strings).
Jetzt habe ich noch eine Frage.
{json_append_message(InternalVal('MyInfoBot', 'sentMsgId',0),InternalVal('MyInfoBot','sentMsgText',''));;fhem('set MyinfoBot message Tasse fehlt')}
So funktioniert es, aber eigentlich möchte ich es so starten
{fhem('set MyinfoBot message Tasse fehlt');;json_append_message(InternalVal('MyInfoBot', 'sentMsgId',0),InternalVal('MyInfoBot','sentMsgText',''))}
Heisst erst die Message verschicken und dann die sentMsgId auslesen.
Sieht so aud das Tlegram erst nach einer gewissen Zeit die sentMsgId bereit stellt.
Ist es möglich nach dem verschicken der Nachricht eine kleine Verzögerung einzubauen , solange bis Telegramm die sentMsgId bereitstellt?
warum die Interals und nicht die Readings ?
Msg raus -> notify auf das reading sentMsgId -> Rest machen
Danke es funktioniert mit ReadingsVal und InternalVal
Bekomme da ganze define noch nicht zu laufen
define wd_Kue_Window watchdog HM_5BD3CD:open 00:15:00 HM_5BD3CD:closed {fhem("set MyInfoBot message Kuechenfenster schliessen");;json_append_message(ReadingsVal('MyInfoBot','sentMsgId',0),InternalVal('MyInfoBot','sentMsgText','fail'))};; trigger wd_Kue_Window .
Bekomme die Meldung
Unknown command {fhem("set, try help.
Unknown command
zurück
Weil ich gerne watchdog verwenden möchte.
Es liegt wahrscheinlich an der Syntax. Denn wenn ich jeder der Funktion einzeln benutze funktioniert es.
define wd_Kue_Window watchdog HM_5BD3CD:open 00:01:00 HM_5BD3CD:closed {json_append_message(ReadingsVal('MyInfoBot','sentMsgId',0),InternalVal('MyInfoBot','sentMsgText','fail'))};; trigger wd_Kue_Window .
Jetzt habe ich herausgefunden wie es funktionieren könnte.
define wd_Kue_Window watchdog HM_5BD3CD:open 00:15:00 HM_5BD3CD:closed {fhem("set MyInfoBot message Kuechenfenster schliessen");;json_append_message(ReadingsVal('MyInfoBot','sentMsgId',0),InternalVal('MyInfoBot','sentMsgText','fail'));; fhem ("trigger wd_Kue_Window .");;}
Hier ist das Problem das Telegramm wahrscheinlich die sentMsgId zu spät updatet. Ich bekomme die vorherige sentMsgId.
Eine Idee wäre erst Funtion wenn sich die sentMsgId geändert hat.
Zitat von: kl_ha am 25 August 2019, 14:08:12
Eine Idee wäre erst Funtion wenn sich die sentMsgId geändert hat.
und stell dir vor das wurde sogar schon erfunden .... wie war doch gleich der Name .... ? achja notify
Woher sollte notify wissen das die sentMsgId aktuell ist?
b.z.w was könnte man tun wenn sie nicht aktuell ist?
Notify reagiert auf einen Evenz, z.B. sentMsgId hat sich geändert...
fhem ist eigentlich Event-basiert...
...auf Events kann man reagieren: notify, watchdog, DOIF, ...
Dazu halt mal die Einsteigerdoku lesen und auch Links die gepostet werden...
Oder auch einfach mal den Eventmonitor aufmachen und sehen was da so alles passiert auf das man reagieren könnte...
Gruß, Joachim