Funktionswunsch: neuen Command HTTP get

Für Fragen zu IRControl, Vorschläge für kommende Versionen, Ideen zu Designs von Seitenlayouten
Lars
Posts: 13
Joined: 04 Jan 2018, 19:50

Funktionswunsch: neuen Command HTTP get

Post by Lars »

Hallo CES-TEAM,

wirklich ein tolles App, für alle die sich eine wirklich dynamische Fernbedienung zusammenstellen möchten.

Toll wäre es noch, wenn man bei den Command-Actions noch eine Auswahl "HTTP Aufruf" hätte.
Dann könnte man z.B. per simplen URL-Aufruf den Status von Homematic - Geräten setzen, sprich diese Geräte ebenfalls steuern.

...und natürlich alle möglichen anderen Steuerungen die sich per Get-Requests steuern lassen "selber basteln"...
info@cec.gmbh
Posts: 220
Joined: 25 Jul 2017, 14:27

Re: Funktionswunsch: neuen Command HTTP get

Post by info@cec.gmbh »

Hallo Lars

Vielen Dank für diesen Input. So eine Funktion macht Sinn, wir werden das höchstwahrscheinlich umsetzen. Wie genau ist noch etwas unklar, da wir in der Kette wie so ein Command raus geht immer vom Control über ein Device auf einen Gateway gehen und das auch entsprechend konfiguriert werden muss. Das ist für einen HTTP Request etwas umständlich. Wir schlafen aber mal da drüber, und überlegen uns was.

Viele Grüsse
Urs
Lars
Posts: 13
Joined: 04 Jan 2018, 19:50

Re: Funktionswunsch: neuen Command HTTP get

Post by Lars »

Klasse, danke für das schnelle und positive Feedback. Ich kann hier dann anschließend gerne posten, mit welcher URL man per Homematic eine Tür öffnet oder das Licht einschaltet.

Vielleicht macht ihr ein "Device" des Typs "Webservice" oder ähnliches.

PS: In Version 2 könnte man auch die Response auswerten, um so z.B. das Icon von einem Button je nach Antwort/Status setzen oder andere Buttons einblenden.
info@cec.gmbh
Posts: 220
Joined: 25 Jul 2017, 14:27

Re: Funktionswunsch: neuen Command HTTP get

Post by info@cec.gmbh »

Hallo Lars

Die HTTP Response irgendwie zu verwerten wird allerdings etwas Zauberei voraussetzen. HTTP definiert ja nur das Übertragungsprotokoll. Zurückkommen kann da irgendwas: HTML, XML, REST, ein Binary... eigentlich beliebige Formate. Was wir eigentlich nicht wollen ist, aus dem ganzen IRControl System eine Programmierumgebung mit Scriptsprache zum machen.

Jetzt gebe ich Dir aber auch noch eine Denksportaufgabe: Eigentlich ist das bereits jetzt möglich, ein HTTP Get abzusetzen. Nicht so direkt, sondern über Umwege. Vielleicht kommst Du dahinter :-)

Wir kriegen das vermutlich zeitlich sonst noch hin, den HTTP Get Command einzubinden in die kommende Version von IRControl. Die sollte noch im Januar erscheinen.

Viele Grüsse
Urs
Lars
Posts: 13
Joined: 04 Jan 2018, 19:50

Re: Funktionswunsch: neuen Command HTTP get

Post by Lars »

Ja, ich kann nachvollziehen, dass die einfache Bedienbarkeit nicht darunter leiden sollte. Aber ähnlich wie die Event - Funktionen, muss das ja keine Funktion sein, die vom Einsteigern genutzt werden soll, sondern für fortgeschrittene Geeks ;)

Mit der Art der Response hast du auch recht. Hier wird es bei der Vielzahl der Systeme schwierig werden, dass sinnvoll auszuwerten.
info@cec.gmbh
Posts: 220
Joined: 25 Jul 2017, 14:27

Re: Funktionswunsch: neuen Command HTTP get

Post by info@cec.gmbh »

Hoi Lars

Man könnte irgendwas mit Regular Expressions machen. Das würde den Implementationsaufwand bescheiden halten und man wäre dennoch sehr flexibel.

Viele Grüsse
Urs
Lars
Posts: 13
Joined: 04 Jan 2018, 19:50

Re: Funktionswunsch: neuen Command HTTP get

Post by Lars »

Habe die neue Version mit diesem neuen Feature installiert. Danke für die Umsetzung!
Allerdings ist mir noch nicht klar, wie ich die Antwort in dem Event weiterverarbeiten kann.

Konkret führe ich über einen Button einen GET Request aus, dessen Antwort als neuer Text für den Button verwendet werden soll.

Ich habe in der Command Konfiguration des http Device im "Response Event" bei "Parameter" und "Value" die gleichen Werte eingegeben, wie in in dem Reiter "Events" bei dem Button in den Feldern "Property" und "Value". Und dort bei "SetAttribute"versucht den Text setzen zu lassen.
Soweit korrekt? Wie kann dann der zurück gegebene Wert dort als Attribut verwendet werden?
Oder bin ich voll auf dem Holzweg? :)

PS: hab mich kurz gewundert, dass https Aufrufe nicht durchgingen, dann im Handbuch in dem Beispiel aber gesehen, das "http://" automatisch davor gesetzt wird. https-Aufrufe so also nicht möglich sind.
info@cec.gmbh
Posts: 220
Joined: 25 Jul 2017, 14:27

Re: Funktionswunsch: neuen Command HTTP get

Post by info@cec.gmbh »

Hallo Lars

Ich weiss, Events sind noch etwas Lückenhaft beschrieben. Ich werde demnächst noch ein Beispiel, wie man einen REST-Service mit dem Feature aufruft in die Dokumentation einfügen.

Wenn Du im HTTP Device im Response Event irgend einen Value definierst, wird der Event nur versendet, falls die Regular Expression auf die Responsedaten zutrifft.

Willst Du einen Wert auf der Response dem Event übergeben, so definierst Du einen Regular Expression mit einem Suchausdruck. Alles was er da findet, wird rausgelöscht und dem Event übergeben. Wichtig dabei ist, beim Value "#value" eingeben. Der Eventhandler auf dem Control kannst Du dann nicht mehr mit einem fixen Wert beim Value konfigurieren. Der arbeitet ja wie ein Filter. Willst Du, dass alle Values durchflutschen, gibst Du dort eine "#null" ein, Beim Attribut schliesslich wieder den "#value".

Der Test Button im Konfigurationsdialog vom Response Event führt den HTTP Request aus und zeigt dir dann im Feld Content den Wert, der mit der Regular Expression ermittelt wird an. Das hilft, da die richtige Regular Expression zu finden.

Übrigens, wenn Du den Log-Level auf Debug stellst bekommst Du auch alle Events die versendet werden ins Log geschrieben.

Https geht zur Zeit noch nicht, das ist richtig. Das ist nur eine Frage der Zeit, bis das auch noch realisiert wird.

Viele Grüsse
Urs
info@cec.gmbh
Posts: 220
Joined: 25 Jul 2017, 14:27

Re: Funktionswunsch: neuen Command HTTP get

Post by info@cec.gmbh »

Ein Beispiel von der Konfiguration eines REST-Services über den HTTPGateway ist nun online im Handbuch:

http://ircontrol.cec.gmbh/handbuch/spez ... t-service/

Viele Grüsse
Urs
Lars
Posts: 13
Joined: 04 Jan 2018, 19:50

Re: Funktionswunsch: neuen Command HTTP get

Post by Lars »

Danke, hatte es gestern Nachmittag auch schon anhand deiner vorherigen Antwort hinbekommen. Fast.
Denn ich glaube es sind noch 1 kleiner Bug und 1 Missing Feature vorhanden:

1) wenn ich im Fenster "Response Event" auf den Test-Buttons klicke, wird mir als Content nicht der per RegEx extrahierte Wert der Response angezeigt, sondern die komplette Response ohne den extrahierten Wert.
Konkretes Beispiel:
RegEx: (?<=<action>)(.*)(?=</action>)
Response: <xml><action>Hallo Welt</action></xml>
Content: <xml><action></action></xml>
Erwarteter Content: Hallo Welt

2) Das Attribut "text" lässt sich in Events nur bei Controls des Typs "Text Label" setzen, nicht aber bei den Controls des Typs "Image Button", die ja eigentlich auch ein Text-Attrribut haben. Wäre schön, wenn man das Text-Attribut der Image Buttons in Zukunft auch im Eventhandler setzen könnte.
Post Reply