[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

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

#11

Beitrag von Robosoc »

Ich habe die HTTP-API erst einmal testweise genutzt und bin da noch eher Anfänger... eventuell lässt sich da die KNX-GA auch schon als trigger nutzen, ich hatte nur zyklische Abfragen erstellt.
VG, Sven - TWS 950Q ID:335 & 291, VPN offen, 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:

#12

Beitrag von Chris M. »

OK, ich habe nun 3 Verbindungen am laufen, die jede für sich funktionieren sollte (hoffte ich) - tun sie aber alle nicht:

L27:641 ist das Objekt / die GA der Klingel, ein Bool.

Die Logiken sind:
Bild
Beim Custom ist der Code:

Code: Alles auswählen

{
  "levels": [
    "$Select",
    "$VAR<In>0",
    "$Out"
  ],
  "modules": [
    [
      "Break",
      []
    ],
    [
      "Multiplexer",
      [
        "$VAR<In>0"
      ],
      "$Out",
      "$Select"
    ]
  ],
  "inputPorts": [
    {
      "name": "Selektor",
      "description": "Auswahl",
      "mnemonic": "$Select-LE-INPUT-0",
      "triggerType": "a",
      "type": "boolean",
      "optional": false,
      "multiple": false
    }
  ],
  "outputPorts": [
    {
      "name": "Ausgang",
      "description": "Ausgang",
      "mnemonic": "$Out",
      "triggerType": "a",
      "type": "string",
      "optional": false,
      "multiple": false
    }
  ]
}
Der Eintrag der HTTP-APi ist:
Bild
Unter "Empfangene und gesendete Rohdaten anzeigen" steht nur "Bisher keine Daten gesendet".

Wie geschrieben: egal ob ich True oder False auf die Klingel-GA schreibe, die URL wird nie aufgerufen. Auch ein Ausgang:A beim Multiplexer macht hier keinen Unterschied.

Wie kann ich das debuggen, um zu sehen wo es hängt?
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

#13

Beitrag von Robosoc »

Ich stelle das später im TWS bei mir mal nach.

Das Cergaltwn der Logikzelle kannst Du im sogenannten Doktormodus überwachen. Dazu bewege den Mauscursor über die Logikzelle, dann erscheinen oben in der Zelle zwei Symbole, das Linke sieht aus wir ein Stetoskop. Aktiviert Du es , kannst Du an vier Stellen in der Zelle die Wette beobachten und diese auch manipulieren (letzteres zumindest die Einfänge).

Deine erste Logikzelle wird erst das gewünschte Verhalten haben können, wenn Du den Ausgang auf A setzt. Im Moment würde der Ausgang meines Erachtens maximal (wenn überhaupt) 1x initial gesendet werden. Er ändert sich ja nicht, daher macht c = ln change keinen Sinn.

Warum der zweite Ansatz nicht zu funktionieren scheint und ob es an der Einstellung in der Logik hängt oder der beim HTTP-API Modul kann ich gerade noch nicht nachvollziehen.

Ich stelle was bei mir mal nach.
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

#14

Beitrag von Robosoc »

Der Custom Code von Dir kann nicht funktionieren. Wo hast Du den CustomCode her? Das ist nicht der, den ich gepostet habe und sollte auch nicht der sein, den Du erhält, wenn Du auf den Link klickst, den ich oben im Screenshot darstelle.

Ich vermute, Du just in der Logikzelle, die Du im ersten Screenshot darstellst, unten rechts auf das CODE Zeichen neben dem Speichern Button geklickt. Das wäre leider nicht richtig. Bisher haben wir nie geklärt, was dieser Code bedeutet oder bringt. Ich nehme an es ist eine Debugging Hilfe für S. KOLBINGER....aber das ist leider der Blinde Fleck auch in der Wiki. Sorry.

Du musst so tun als würdest Du eine neue StandardLogik erstellen wollen und in der Auswahl der Logikenmofule kannst Du den Beschreibungsrext minimal erweitern. Dann sieht es so aus, wie in meinem Screenshot. Wenn du dort dann auf den Link "Code" klickst, wird der Code in Deinen Zwischenspeicher geladen.

Das ist dann der Code, wo Du die eine Level (Variable) bon Integer auf Bool, wie von mir beschrieben , ändern musst.
VG, Sven - TWS 950Q ID:335 & 291, VPN offen, 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:

#15

Beitrag von Chris M. »

Wie schon geschrieben, beim String-Multiplex hatte ich auch das "A" am Ausgang ausprobiert - geändert hatte es für mich nichts.

Beim Custom dachte ich, dass das der Code war, da ich keinen anderen Zugriff gefunden hatte. Jetzt weiß ich aber wie ich da ran komme, hier ist der wirkliche Code:

Code: Alles auswählen

/**
 * New custom logic
 *
 * 
 */

{
  "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"
    ]
  ]
}
Im Doktor-Modus sieht's so aus:
Bild
Hier hatte ich kurz vor der Aufnahme mal ein paar Werte auf die KNX GA geschrieben (true und false)

Ich vermute also, dass das KNX Paket ankommt - aber es dann irgendwo klemmt.
Könnte es sein, dass das Problem in der HTTP-API liegt? Hier sind die Balken ja blau und beim Mouse Over kommt ein Tooltip mit "Der aktualisierte Objektwert wurde für eine spätere Auslösung zwischengespeichert"
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

blaubaerli
Reactions:
Beiträge: 1548
Registriert: Sa Sep 15, 2018 10:26 am
Hat sich bedankt: 556 Mal
Danksagung erhalten: 421 Mal

#16

Beitrag von blaubaerli »

Hallo Chris,

im HTTP-Ressourcen Manager musst du beim Hinzufügen der Objekte zur HTTP-Anfrage auch noch die Frage nach dem Auslöseverhalten korrekt beantworten.

Bild

Wie sieht das da bei dir aus?

Die Icons deines diesbezüglichen Screenshots weisen da auf ein Problem hin.

Beste Grüße
Jens
wiregate1250 & timberwolf168 (2600er), VPN offen, Reboot nach Vereinbarung
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:

#17

Beitrag von Chris M. »

Danke, das war der Trick. Bei der HTTP-API ist es auch leider etwas tricky zu sehen wo ich was ändern kann, da die aktiven Flächen ja erst erscheinen, wenn man die Maus drüber hat.
=> Möglichkeit die UI zu verbessern wäre die "Zahnrädchen" immer eingeblendet zu haben. Dann ist klar, dass es hier was zum einstellen gibt.

Praktisch habe ich es nun geschafft, dass ohne Logik bei jedem KNX Paket (mit true und mit false) eine statische URL aufgerufen wird:
Bild
Bild
Bild

Und wenn man nur bei true die URL aufrufen möchte, und das ganze auch noch mit einem in der Logik festgelegten Wert, dann geht das nun so:
Bild
Bild
Bild
Bild

Mit der Custom Logik habe ich das nicht hin bekommen. Die sendet jedes mal, bei true und bei false. Das ist jetzt nicht wirklich schlimm, da ich ja erreicht habe was ich wollte - und das auch noch mit einer Standard-Logik.

Fazit:
- Positiv: Ich habe eine Lösung, die ich im CometVisu Handbuch beim Eintrag für das RSSLog-Plugin erklärt bekomme
- Negativ: Diese simple Funktion hat mich mehrere Abende und in Summe uns zusammen 16 Forenbeiträge gekostet. Mein geringes Vorwissen zu Logiken und HTTP-API dürfte ich mit vielen Kunden teilen. Die gleiche Funktion hatte ich auch in Node-RED umgesetzt um sie zusätzlich in's Handbuch mit aufzunehmen - hier wäre ich in 1 Minute fertig gewesen, wenn nicht meine (eh nur rudimentären) Node-RED Skills seit einem halben Jahr eingeschlafen wären. So war die Lösung in 5 Minuten gebaut und getestet.

PS: Noch zwei Vorschläge die UI zu verbessern:
- Bitte das "Ressource URI" Feld deutlich vergrößern. Hier kommt es auf jedes (kryptische) Zeichen an und die URIs können praktisch sehr lang werden. Da ist Übersichtlichkeit wichtig
- Die Möglichkeit bieten, dass wenn ein String in den Query-Parameter eingebaut wird, dass der escaped wird. Ich kann hier statisch per Hand schon die Leerzeichen durch %20 ersetzen. Was aber, wenn jemand einen per KNX Paket kommenden String (mit Leerzeichen!) hier weiterreichen möchte?
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

Sun1453
Reactions:
Beiträge: 1558
Registriert: Do Feb 07, 2019 8:08 am
Hat sich bedankt: 1025 Mal
Danksagung erhalten: 640 Mal

#18

Beitrag von Sun1453 »

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 so habe ich es gelöst bei meinen Bewegungsmelder. KNX auf das AND Modul mit eingestellten Mapping und dann auf den Multiplexer String und dann zur HTTP API mit Pushover am Ende.

Hatte nämlich auch das Interger vs Bool Problem.

Pushover sendet dabei 2 Nachrichten. Melder hat Präsens erkannt oder Präsens ist nicht mehr vorhanden. Da reichen zwei Eingänge beim Multiplexer.
Zuletzt geändert von Sun1453 am Mi Aug 17, 2022 5:06 pm, insgesamt 1-mal geändert.
Gruß Michael

Timberwolf 950 QL #344 | Mit Internetanbindung | VPN Offen | Reboot nach Absprache | PROD Server
Timberwolf 2500 #602 | VPN zu | TEST Server
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:

#19

Beitrag von Chris M. »

Da der Fix des RSSLog für MySQL nun in der Entwicklungsversion angekommen ist, ist auch der Eintrag im Handbuch da, bei dem man sehen kann wie ich es nun final umgesetzt habe (die Node-RED Lösung ist auch drinnen): https://www.cometvisu.org/CometVisu/de/ ... index.html
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

#20

Beitrag von Robosoc »

Ich habe die Anleitungsseite nur kurz überflogen...sehr beeindruckend und richtig gut mit all den Beispielen und Screenhots. Ich nutze ein solches RSSLog in der Visu heute noch nicht, aber wollte mich immer mal ran machen. Das ist nun in meiner ToDo-Liste höher gerutscht:-). Herzlichen DANK!!!
VG, Sven - TWS 950Q ID:335 & 291, VPN offen, Reboot OK
Antworten

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