[Frage] Web-Seite mit Query-Parametern von KNX getriggert aufrufen

Wissen, Planung & Diskussion zur Unterstützung von Rest-API & Webabfragen im Timberwolf Server.
Stellt uns hier Eure Projekte und Ideen vor.
Forumsregeln
  • Denke bitte an aussagekräftige Titel und gebe dort auch die [Firmware] an. Wenn ETS oder CometVisu beteiligt sind, dann auch deren Version
  • Bitte mache vollständige Angaben zu Deinem Server, dessen ID und dem Online-Status in Deiner Signatur. Hilfreich ist oft auch die Beschreibung der angeschlossener Hardware sowie die verwendeten Protokolle
  • Beschreibe Dein Projekt und Dein Problem bitte vollständig. Achte bitte darauf, dass auf Screenshots die Statusleiste sichtbar ist
  • Bitte sei stets freundlich und wohlwollend, bleibe beim Thema und unterschreibe mit deinem Vornamen. Bitte lese alle Regeln, die Du hier findest: https://wiki.timberwolf.io/Forenregeln
Benutzeravatar

Ersteller
Chris M.
Reactions:
Beiträge: 1042
Registriert: Sa Aug 11, 2018 10:52 pm
Wohnort: Oberbayern
Hat sich bedankt: 179 Mal
Danksagung erhalten: 660 Mal
Kontaktdaten:

Web-Seite mit Query-Parametern von KNX getriggert aufrufen

#1

Beitrag von Chris M. »

Aufgabenstellung:

Wenn auf einer KNX GA ein Wert kommt, dann möchte ich einen HTTP-Request an "http://foo/bar?parameter=<Sende-Wert>&baz=42" schicken.
Wobei "<Sende-Wert>" z.B. "wenig" bei einem KNX Wert false / 0 sein soll und "viel" bei einem Wert true / 1.

D.h. ich brauche den Link und v.a. eine Übersetzung von Bool auf String, da die HTTP-API ja sinnvoller Weise einen String als Eingang braucht.

Wie bekomme ich das hin?
CometVisu Entwickler - Bitte keine PNs, Fragen gehören in das Forum, damit jeder was von den Antworten hat!

CometVisu Fragen, Bugs, ... bitte im Entwicklungs-Forum, hier nur spezifisches für CV<->Timberwolf.

TWS 2500 ID: 76 + TP-UART - VPN offen, Reboot nur nach Absprache

Robosoc
Reactions:
Beiträge: 1668
Registriert: Di Okt 09, 2018 9:26 am
Hat sich bedankt: 574 Mal
Danksagung erhalten: 654 Mal

#2

Beitrag von Robosoc »

Wenn ich es richtig verstanden habe und durchblicke (lange nichts mehr mit der HTTP-API gemacht), ist es recht einfach.
Dafür nutzt Du im Logik-Editor eine Multiplexer(String) Baustein:

Bild

Bei 0 am Selektor-Eingang wird der Wert von Eingang 1 auf den Ausgang geschrieben. Bei Allem größer gleich 0 der Wert des Eingang 2.

Am Ausgang verknüpfst Du dann das Objekt Deines HTTP-Objektes.
Zuletzt geändert von Robosoc am Mo Aug 08, 2022 12:27 pm, insgesamt 2-mal geändert.
VG, Sven - TWS 950Q ID:335 & 291, VPN offen, Reboot OK

gbglace
Reactions:
Beiträge: 2686
Registriert: So Aug 12, 2018 10:20 am
Hat sich bedankt: 900 Mal
Danksagung erhalten: 1076 Mal

#3

Beitrag von gbglace »

Auf jeden Fall mal ein plastisches Beispiel für diese Multiplexer Funktion.
Grüße
Göran

-- --Timberwolf 2600 Velvet Red-- -- TWS #225 / VPN aktiv / Reboot OK
Benutzeravatar

Ersteller
Chris M.
Reactions:
Beiträge: 1042
Registriert: Sa Aug 11, 2018 10:52 pm
Wohnort: Oberbayern
Hat sich bedankt: 179 Mal
Danksagung erhalten: 660 Mal
Kontaktdaten:

#4

Beitrag von Chris M. »

OK, ich habe das versucht - von meiner KNX GA kommt aber ein Bool, den mag der String-Multiplexer nicht. :(
CometVisu Entwickler - Bitte keine PNs, Fragen gehören in das Forum, damit jeder was von den Antworten hat!

CometVisu Fragen, Bugs, ... bitte im Entwicklungs-Forum, hier nur spezifisches für CV<->Timberwolf.

TWS 2500 ID: 76 + TP-UART - VPN offen, Reboot nur nach Absprache

Robosoc
Reactions:
Beiträge: 1668
Registriert: Di Okt 09, 2018 9:26 am
Hat sich bedankt: 574 Mal
Danksagung erhalten: 654 Mal

#5

Beitrag von Robosoc »

Sorry, damit hatte ich nicht gerechnet. Hier scheint die GUI die Autokorrektur etwas zu limitieren.

Ich sende Dir den Multiplexer hier jetzt einmal als Customcode mit einer einzigen Modifikation. Ich habe den Selektor-Eingang von integer auf bool geändert. Und das habe ich auch getestet, zumindest im Doktormodus.

Code: Alles auswählen

"$Select", "bool", false
statt

Code: Alles auswählen

"$Select", "integer", 0
Jetzt bekommt der eigentliche Multiplexer zwar auch einen bool vorgegeben, aber hier geht es jetzt.
Den folgenden Code einfach in das Codefeld einer Customlogik kopieren und fertig.

Code: Alles auswählen

{
  "Level": [
    [
      "$VAR<In!>",
      "string",
      "                          "
    ],
    [
      "$Out",
      "string",
      "                          "
    ],
    [
      "$Select",
      "bool",
      false
    ],
    [
      "$VAR<Inhibit?>",
      "bool",
      false
    ]
  ],
  "Module": [
    [
      "Break",
      [
        "$VAR<Inhibit?>"
      ]
    ],
    [
      "Multiplexer",
      [
        "$VAR<In!>"
      ],
      "$Out",
      "$Select"
    ]
  ],
  "Input": [
    [
      "Eingang",
      "Eingang",
      "$VAR<In!>",
      "c"
    ],
    [
      "Selektor",
      "Auswahl",
      "$Select",
      "c"
    ],
    [
      "Inhibit",
      "INHIBIT",
      "$VAR<Inhibit?>",
      "u"
    ]
  ],
  "Output": [
    [
      "Ausgang",
      "Ausgang",
      "$Out",
      "c"
    ]
  ]
}
Ich habe das jetzt nicht geschrieben. An diesen Code kommt man ran, wenn man den Code vom Standardbaustein kopiert:

Bild

Und dann habe ich nur die zwei eilen angepasst wie oben geschrieben.
Zuletzt geändert von Robosoc am Di Aug 09, 2022 8:47 am, insgesamt 1-mal geändert.
VG, Sven - TWS 950Q ID:335 & 291, VPN offen, Reboot OK

Robosoc
Reactions:
Beiträge: 1668
Registriert: Di Okt 09, 2018 9:26 am
Hat sich bedankt: 574 Mal
Danksagung erhalten: 654 Mal

#6

Beitrag von Robosoc »

Du hast ja schon ein paar mal geschrieben, dass Du mit dem Logikeditor noch nicht warm geworden bist. Daher noch kurz der Hinweis:

So wie die Logik Standardmässig angelegt ist, wird der String nur gesendet, wenn er sich ändert. Möchtest Du jedoch, dass der String jedes mal gesendet wird, wenn der KNX-Wert gesendet wurde, egal ob dieser gleich bleibt oder sich ändern, dann musst Du das Triggerverhalten des Eingangs und das Sendeverhalten des Ausgangs jeweils auf A setzen. Das kannst Du entweder in der GUI nach dem Anlegen der Logik (und da auch jederzeit ändern) oder aber in dem Logikcode...dann ist es auch immer gleich zu wie Du es willst, wenn Du die Logik öfter anlegst und nutzt.

Der String kann natürlich auch die gesamte URL sein...ich weiß aktuell nicht, was die Restriktion in Bezug auf Anzahl der Zeichen ist.
VG, Sven - TWS 950Q ID:335 & 291, VPN offen, Reboot OK

Robosoc
Reactions:
Beiträge: 1668
Registriert: Di Okt 09, 2018 9:26 am
Hat sich bedankt: 574 Mal
Danksagung erhalten: 654 Mal

#7

Beitrag von Robosoc »

Noch eine letzte Ergänzung.

Alternativ zu meinem Post 5 - also dem Anlegen der Customlogik - könnte man auch einfach einen AND-Baustein nehmen, dort nur einen Eingang verwenden, diesen Eingang mit Deiner KNX-GA verknüpfen und am Ausgang die Ausgangsfunktion Mapping so einstellen, dass bei false am Eingang eine 0 am Ausgang gesendet wird und eine 1 bei true. Nun würdest Du am Multiplexer Seletoreingang nicht die KNX-GA verschalten, sondern den Ausgang der AND-Logik.

Dann hast Du im Logikeditor zwei Logiken und wenn Du die geschickt benennst oder Tags vergibst, ist das noch recht übersichtlich und Du hast zwei S'tandardlogiken verwendet.
VG, Sven - TWS 950Q ID:335 & 291, VPN offen, Reboot OK
Benutzeravatar

starwarsfan
Reactions:
Beiträge: 799
Registriert: Mi Okt 10, 2018 2:39 pm
Hat sich bedankt: 496 Mal
Danksagung erhalten: 588 Mal

#8

Beitrag von starwarsfan »

Hallo miteinander
Robosoc hat geschrieben: Di Aug 09, 2022 9:01 am Dann hast Du im Logikeditor zwei Logiken und wenn Du die geschickt benennst oder Tags vergibst, ist das noch recht übersichtlich und Du hast zwei S'tandardlogiken verwendet.
Genau das ist der Grund, weshalb ich mit dem TW-Logikeditor nach wie vor nicht wirklich klar komme bzw. mir das mit dieser Heransgehensweise viel zu kompliziert ist. So cool wie die Features an und für sich auch sind... :crying-yellow:
Kind regards,
Yves

- TWS 2500 ID:159 (VPN offen, Reboot nach Rücksprache) - PBM ID:401 - TWS 3500 ID:618 (VPN offen, Reboot nach Rücksprache) - ControlPro - ProxMox - Edomi (LXC / Docker) - ... -
Benutzeravatar

Ersteller
Chris M.
Reactions:
Beiträge: 1042
Registriert: Sa Aug 11, 2018 10:52 pm
Wohnort: Oberbayern
Hat sich bedankt: 179 Mal
Danksagung erhalten: 660 Mal
Kontaktdaten:

#9

Beitrag von Chris M. »

Danke @Robosoc!

Eigentlich wollte ich nur ein ganz simples Beispiel um in der CometVisu Doku des RSSLog-Plugins zu beschreiben wie man mit Infos von außen die Log-Datenbank befüllt. Hierfür hatte ich mir als sehr einfaches Beispiel vorgestellt, dass wenn die Klingel gedrückt wird (und das KNX Paket dafür kommt) der TWS mit seiner HTTP-API die entsprechende URL zum Befüllen aufruft.
Ich sehe das ähnlich @starwarsfan und frage mich, ob für einen so einfachen Anwendungsfall wirklich die Verwendung einer Custom-Logik mit in die Doku soll - das könnte auch schnell abschreckend wirken.
CometVisu Entwickler - Bitte keine PNs, Fragen gehören in das Forum, damit jeder was von den Antworten hat!

CometVisu Fragen, Bugs, ... bitte im Entwicklungs-Forum, hier nur spezifisches für CV<->Timberwolf.

TWS 2500 ID: 76 + TP-UART - VPN offen, Reboot nur nach Absprache

Robosoc
Reactions:
Beiträge: 1668
Registriert: Di Okt 09, 2018 9:26 am
Hat sich bedankt: 574 Mal
Danksagung erhalten: 654 Mal

#10

Beitrag von Robosoc »

In dem Fall würde ich vorschlagen dass man es bei einem Link belässt, also nicht "viel" und "wenig", sondern nur "viel" und der Link wird nur gesendet, wenn die Klkngel gedrückt wird. Das wäre dann mit einem Bool wieder einfacherer.

Man verwendet wieder einen Multiplexer (String)
Nur ein Werteingang mit dem eben diesem Einen Link als Parameter
Der Selektor Eingang wird auf Parameter 0 festgesetzt
Man fügt einen optionalen Inhibit Eingang hinzu, verschaltet diesen mit der KNX-GA, verhalten C wenn die Klingeln true und false sendet, a wenn sie nur true telegramme sendet.

Ich gehe davon aus, dass bei einem true Ereignis der Link gesendet werden soll, dann müsste dieser Inhibit-Eingang negiert werden.
Zuletzt geändert von Robosoc am Mi Aug 10, 2022 7:06 am, insgesamt 1-mal geändert.
VG, Sven - TWS 950Q ID:335 & 291, VPN offen, Reboot OK
Antworten

Zurück zu „HTTP-API, REST & Web-Abfragen“