mein Problem ist, was ich tun kann, wenn ich über die HTTP-API eine Schnittstelle abfrage, die JSON-Daten zurückgibt, jedoch nicht immer alle Schlüssel vorhanden sind. Ich möchte eine Aktion auslösen, wenn ein bestimmter Schlüssel fehlt.
Konkretes Beispiel: Ich möchte die NINA API abfragen und eine aktive Warnung in der Visualisierung anzeigen. Wenn eine Warnung aufgehoben wird, könnte es eine Entwarnung geben, die jedoch ebenfalls aus dem JSON verschwindet. Stattdessen wird nur noch ein leeres Array von der API zurückgegeben. Wie kann ich anzeigen, dass es keine Warnung mehr gibt, anstatt dass der letzte Text bestehen bleibt?
Meine Lösung ist, dass die Logik mit zwei Eingängen mit der HTTP-API verbunden wird, einen der die optionale Warnmeldung enthält und einer der immer aufgerufen wird wenn die Abfrage ausgeführt wurde. Beide Eingänge Triggern die Logik und es wird überprüft welcher Eingang die Logik gestartet hat, um die Entscheidungen zu treffen: Traf eine Warnmeldung ein und danach kann die Info dass die Abfrage lief → Warnmeldung weitergeben. Keine Warnmeldung vorher und die Abfrage wurde ausgeführt → Konstanten Text weitergeben, den man in der VISU in den Darstellungsregeln mappen kann.


Das Status-Objekt "request warning occurred" benutze ich aktuell nur als Trigger dass die Abfrage gelaufen ist und der Wert wird ignoriert. Man könnte das noch ausbauen, dass dann eine weitere Meldung angezeigt wird, dass die Warnungen nicht abgefragt werden konnten.
Code: Alles auswählen
{
"Level": [
// Input Level
["$in_current_warning","string,64", ""],
["$in_request_run","bool",false],
// Output Level
["$out_warning","string,64", ""],
// Internal Level
["$is_triggered_by_str","bool",false],
["$was_triggered_by_str","bool",false],
["$is_triggered_by_run","bool",false],
// Constants
["$const_no_warning", "string", "all good"]
],
"Input": [
["Current Warning", "", "$in_current_warning", "a"],
["Request Run", "", "$in_request_run", "a"]
],
"Output": [
["Warning", "", "$out_warning", "a"]
],
"Module": [
[ "Triggered", "$in_current_warning", "$is_triggered_by_str" ],
[ "Triggered", "$in_request_run", "$is_triggered_by_run" ],
// str triggered, set str was triggered to true and break
["Latch","$true","$was_triggered_by_str","$is_triggered_by_str",0],
["Break", ["$is_triggered_by_str"]],
// Send out warning if was triggered by str
["Latch","$in_current_warning","$out_warning","$was_triggered_by_str",0],
// Send out no warning if was not triggered by str
["Latch","$const_no_warning","$out_warning","-$was_triggered_by_str",0],
// Reset was triggered by str
["Latch","$false","$was_triggered_by_str","$was_triggered_by_str",0]
]
}
Der Schöpfer dieser Custom Logik überträgt die Nutzungsrechte gemäß der TOLL ("Timberwolf Open Logikblock License") die unter https://wrgt.news/TOLL zum Download zur Verfügung steht.
Viele Grüße,
Matthias