Seite 1 von 1

Deutsche Bahn Binding - Regel

Verfasst: 25. Nov 2023 15:57
von filmgucker2
Hallo mal wieder,

ich habe mal wieder Probleme mit der Logik :D ...
Das Binding liefert zu Zugabfahrten 2 Werte:
Die geplante Abfahrtszeit und die geänderte Abfahrtszeit.
Mich interessiert natürlich nur die wahre Abfahrtszeit. Die soll angezeigt werden.
Wenn der Zug pünktlich ist, liefert die Bahn nur die geplante Abfahrtszeit. Das Item geänderte Abfahrtszeit
zeigt "NULL" an. Bei Unpünktlichkeit ist das natürlich nicht so. Wie könnte eine Regel aussehen, die beim
Auslöser "Zugabfahrtgeplante Zeit changed", die wahre Abfahrtszeit in einem anderen item anzeigt?
Wenn ich in der Regel abprüfe, ob das item "GeänderteZeit" den Inhalt NULL hat sagt das Log
Command 'NULL' cannot be parsed for item ...

Gibt es eine elegante Lösung?

Viele Grüße!

Re: Deutsche Bahn Binding - Regel

Verfasst: 25. Nov 2023 16:25
von nw378
Nimm ein drittes Zeit-Item, dem du die geplante Abfahrzeit zuweist, aber nur wenn die geänderte Abfahrzeit gleich NULL ist.
Andernfalls eben die geänderte Abfahrt.

Wenn der Inhalt NULL ist, sollte das gehen. Evtl. hast du nicht .state abgefragt...?

So inetwa:

Code: Alles auswählen

rule "Anzeigeitem für Abfahrt"
when 
    Item geplante_Abfahrt changed or
    Item geaenderte_Abfahrt changed
then
    if (geaenderte_Abfahrt.state == NULL)
      Abfahrt_Anzeige.postUpdate(geplante_Abfahrt.state)
    else
      Abfahrt_Anzeige.postUpdate(geaenderte_Abfahrt.state)  
end      

Re: Deutsche Bahn Binding - Regel

Verfasst: 25. Nov 2023 17:05
von filmgucker2
Danke für die schnelle Antwort. Ich versuche die Regel in der UI hinzukriegen, und da scheitere ich an dem if...else

Re: Deutsche Bahn Binding - Regel

Verfasst: 25. Nov 2023 18:58
von udo1toni
Du musst hier mindestens mit Blockly arbeiten, oder eben auf ein Script ausweichen. Geht aber ohne Probleme auch ausschließlich über die UI, nur halt nicht mit einer simplen when - then - but only if - Variante, da hier keine bedingten Verzweigungen zur Verfügung stehen.

Re: Deutsche Bahn Binding - Regel

Verfasst: 25. Nov 2023 19:36
von filmgucker2
ok, für Dich sicher ohne Probleme...Geht es eigentlich noch nur mit den old fashioned Text rules bei OH4?

Re: Deutsche Bahn Binding - Regel

Verfasst: 25. Nov 2023 20:14
von udo1toni
Ja sicher, die kannst Du genauso verwenden (ich nutze ausschließlich die DSL Rules über Textkonfiguration, ich bin schon seit OH1.0 dabei, warum sollte ich ohne Not umsteigen?)

Re: Deutsche Bahn Binding - Regel

Verfasst: 25. Nov 2023 21:05
von Harka
nicht jammern. Udo hat doch auf Blockly verwiesen.
ForumAbfahrt.png
oder als DSL-Rule mit den beiden oben genannten Triggern

Code: Alles auswählen

if (geaenderte_Abfahrt.state == NULL)
    Abfahrt_Anzeige.postUpdate(geplante_Abfahrt.state)
  else
    Abfahrt_Anzeige.postUpdate(geaenderte_Abfahrt.state) 
oder in einem Label-Item im Feld "Label - Display this text (or expression result) instead of the item's state"

Code: Alles auswählen

=items.geaenderte_Abfahrt.state == 'NULL' ? items.geplante_Abfahrt.state : items.geaenderte_Abfahrt.state
oder eine Gruppe mit DateTime und LATEST sollte auch gehen.

Re: Deutsche Bahn Binding - Regel

Verfasst: 26. Nov 2023 13:06
von filmgucker2
Wunderbar! Vielen, vielen Dank. Nicht nur für die Logik, sondern auch für den Einstieg in Blockly.
Macht richtig Spaß!