Seite 1 von 3

Web-Seite mit Query-Parametern von KNX getriggert aufrufen

Verfasst: Mo Aug 08, 2022 1:13 am
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?

Re: Web-Seite mit Query-Parametern von KNX getriggert aufrufen

Verfasst: Mo Aug 08, 2022 10:13 am
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.

Re: Web-Seite mit Query-Parametern von KNX getriggert aufrufen

Verfasst: Mo Aug 08, 2022 12:18 pm
von gbglace
Auf jeden Fall mal ein plastisches Beispiel für diese Multiplexer Funktion.

Re: Web-Seite mit Query-Parametern von KNX getriggert aufrufen

Verfasst: Di Aug 09, 2022 12:39 am
von Chris M.
OK, ich habe das versucht - von meiner KNX GA kommt aber ein Bool, den mag der String-Multiplexer nicht. :(

Re: Web-Seite mit Query-Parametern von KNX getriggert aufrufen

Verfasst: Di Aug 09, 2022 8:47 am
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.

Re: Web-Seite mit Query-Parametern von KNX getriggert aufrufen

Verfasst: Di Aug 09, 2022 8:53 am
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.

Re: Web-Seite mit Query-Parametern von KNX getriggert aufrufen

Verfasst: Di Aug 09, 2022 9:01 am
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.

Re: Web-Seite mit Query-Parametern von KNX getriggert aufrufen

Verfasst: Di Aug 09, 2022 12:51 pm
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:

Re: Web-Seite mit Query-Parametern von KNX getriggert aufrufen

Verfasst: Mi Aug 10, 2022 12:36 am
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.

Re: Web-Seite mit Query-Parametern von KNX getriggert aufrufen

Verfasst: Mi Aug 10, 2022 7:04 am
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.