FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: kl_ha am 24 August 2019, 17:12:21

Titel: zwei Internal Werte abrufen
Beitrag von: kl_ha am 24 August 2019, 17:12:21
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
Titel: Antw:zwei Internal Werte abrufen
Beitrag von: Wzut am 24 August 2019, 17:21:56

{InternalVal('MyInfoBot', 'sentMsgText','')." ".InternalVal('MyInfoBot', 'sentMsgId',0)}

Titel: Antw:zwei Internal Werte abrufen
Beitrag von: kl_ha am 24 August 2019, 17:36:05
Funktioniert leider nicht. Bekomme eine 0 zurück.
Titel: Antw:zwei Internal Werte abrufen
Beitrag von: kl_ha am 24 August 2019, 22:43:21
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?



Titel: Antw:zwei Internal Werte abrufen
Beitrag von: Wzut am 25 August 2019, 07:31:24
warum die Interals und nicht die Readings ?
Msg raus -> notify auf das reading sentMsgId -> Rest machen
Titel: Antw:zwei Internal Werte abrufen
Beitrag von: kl_ha am 25 August 2019, 11:45:53
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
Titel: Antw:zwei Internal Werte abrufen
Beitrag von: Wzut am 25 August 2019, 12:47:39
Zitat von: Wzut am 25 August 2019, 07:31:24
notify
wo steht da was von watchdog ?
Titel: Antw:zwei Internal Werte abrufen
Beitrag von: kl_ha am 25 August 2019, 14:08:12
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.
Titel: Antw:zwei Internal Werte abrufen
Beitrag von: Wzut am 25 August 2019, 15:04:40
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
Titel: Antw:zwei Internal Werte abrufen
Beitrag von: kl_ha am 25 August 2019, 15:39:31
Woher sollte notify wissen das die sentMsgId aktuell ist?
Titel: Antw:zwei Internal Werte abrufen
Beitrag von: kl_ha am 25 August 2019, 15:40:45
b.z.w was könnte man tun wenn sie nicht aktuell ist?
Titel: Antw:zwei Internal Werte abrufen
Beitrag von: MadMax-FHEM am 25 August 2019, 15:56:29
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