FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Frank_Huber am 22 Mai 2017, 16:11:05

Titel: [gelöst] - "HTTP POST" Werte in externem Gerät setzen.
Beitrag von: Frank_Huber am 22 Mai 2017, 16:11:05
Hi,

Ich würde gerne Werte in meinem Heizkessel setzen. Dies geht nach folgender Seite wohl per HTTP-POST.
https://homematic-forum.de/forum/viewtopic.php?f=43&t=22058&p=185613&hilit=ETA#p185613

Wie müsste ich so etwas denn in FHEM umsetzen?
Bin leider in Linux nen Amateur und als Programmierer ne Niete. :-)

Eine beschreibung der gesamten API als pdf hängt an.

Danke & Grüße
Frank
Titel: Antw:"HTTP POST" Werte in externem Gerät setzen.
Beitrag von: andies am 22 Mai 2017, 16:14:44
Das Modul heißt HTTPMOD und ist im Wiki relativ gut dokumentiert. Leider ist das aber eine eierlegende Wollmilchsau (das sollte ein Kompliment sein!) und daher kann es nicht nur viel, sondern muss auch entsprechend komplex eingerichtet werden. Also das wird etwas Zeit kosten.


Gesendet von iPad mit Tapatalk Pro
Titel: Antw:"HTTP POST" Werte in externem Gerät setzen.
Beitrag von: Frank_Huber am 22 Mai 2017, 16:18:35
mit HTTPMOD hole ich werte von dem Gerät ab.
Soweit ich weis kann ich damit aber keine Werte setzen.

Vielleicht gibt es ja hier jemanden der etwas ähnliches macht und mich in ne Richtung schieben kann.

/Frank
Titel: Antw:"HTTP POST" Werte in externem Gerät setzen.
Beitrag von: jojoja am 22 Mai 2017, 16:21:49
Hallo Frank,

ums hier zu ergänzen, wir haben vorhin zur selben Zeit im anderen Thread geschrieben :D

Probiers mal mit GetFileFromURL: https://wiki.fhem.de/wiki/HttpUtils (https://wiki.fhem.de/wiki/HttpUtils)
und in data müsste dann der POST rein.

Gruß Johannes

PS: Codeschnipsel ist das falsche Unterforum, sieht Hinweis in der Übersicht :D
Titel: Antw:"HTTP POST" Werte in externem Gerät setzen.
Beitrag von: Frank_Huber am 22 Mai 2017, 16:31:26
Danke, verschoben.

muss mich da mal einlesen und experimentieren.
Das kann ich aber erst machen wenn ich zuhause bin.
Wer weis was mein Heizkessel sonst macht...

/Frank
Titel: Antw:"HTTP POST" Werte in externem Gerät setzen.
Beitrag von: andies am 22 Mai 2017, 17:45:09
PS Eventuell solltest Du Dir auch Burp anschauen um zu sehen, wie genau das geschrieben wird (Format, Adresse etc.).


Gesendet von iPhone mit Tapatalk Pro
Titel: Antw:"HTTP POST" Werte in externem Gerät setzen.
Beitrag von: viegener am 22 Mai 2017, 18:03:24
Nur zur Info - HTTPMOD hat auch die Möglichkeiten set-Befehle zu definieren - einfach mal in der Commandref schauen

ZitatConfiguration to define a set command and send data to a device
Titel: Antw:"HTTP POST" Werte in externem Gerät setzen.
Beitrag von: Frank_Huber am 22 Mai 2017, 19:08:59
Es gibt bestimmt viele Wege nach Rom. Man muss sie nur umsetzen können. Habt ihr evtl Beispiele für die Lösungswege?

Gesendet von meinem S3_32 mit Tapatalk

Titel: Antw:"HTTP POST" Werte in externem Gerät setzen.
Beitrag von: viegener am 22 Mai 2017, 19:16:14
Im fhemwiki gibt es ein Beispiel bei dem JSON per set.command gesendet wird, das müsste sich einfach auf das XML-Format umsetzen lassen:

https://wiki.fhem.de/wiki/HTTPMOD#Advanced_configuration_to_define_a_set_command_and_send_data_to_a_device (https://wiki.fhem.de/wiki/HTTPMOD#Advanced_configuration_to_define_a_set_command_and_send_data_to_a_device)
Titel: Antw:"HTTP POST" Werte in externem Gerät setzen.
Beitrag von: andies am 22 Mai 2017, 19:58:34
Wenn du sonst mit einem Formular werte setzt, lohnt es sich wahrscheinlich, das Wertesetzrn mit Burp aufzuzeichnen und dann mit HTTPMOD und get (via POST) zu kopieren. Ich versuche das gerade mit meinem Speedport. Zumindest einloggen kann ich schon.


Gesendet von iPhone mit Tapatalk Pro
Titel: Antw:"HTTP POST" Werte in externem Gerät setzen.
Beitrag von: Frank_Huber am 22 Mai 2017, 22:28:17
andies, nein kein Formular zum tragen...

viegener, das schaut nach nem Lösungsweg aus, danke!

Gesendet von meinem S3_32 mit Tapatalk

Titel: Antw:"HTTP POST" Werte in externem Gerät setzen.
Beitrag von: Frank_Huber am 26 Mai 2017, 15:04:23
Zitat von: jojoja am 22 Mai 2017, 16:21:49
Probiers mal mit GetFileFromURL: https://wiki.fhem.de/wiki/HttpUtils (https://wiki.fhem.de/wiki/HttpUtils)
und in data müsste dann der POST rein.

soebena usprobiert. wenn ich in der FHEM Kommandozeile GetFileFromURL (http://192.168.12.82:8080, 5, POST /user/var/112/10021/0/0/12112 HTTP/1.1 Content-Type: application/x-www-form-urlencoded value=1803, 0, 4) eigebe bekomme ich als Fehler.
Unknown command GetFileFromURL(http://192.168.12.82:8080,, try help.

Werd mich jetzt mal am HTTPMOD versuchen und wieder berichten.
Titel: Antw:"HTTP POST" Werte in externem Gerät setzen.
Beitrag von: KernSani am 26 Mai 2017, 15:10:41
GetFileFromUrl ist eine perl Funktion, du musst das Ganze also in geschweifte Klammern packen.
Titel: Antw:"HTTP POST" Werte in externem Gerät setzen.
Beitrag von: Frank_Huber am 26 Mai 2017, 15:43:23
Ich werd hier noch zum Hirsch!

Nach einigen Fehlversuchen hab ich so jetzt erfolgreich die Entaschungs-Taste drücken können:
{GetFileFromURL("http://192.168.12.82:8080/user/var/40/10021/0/0/12112",5,"value=1803",0,4)}

Damit bin ich schon einen Riesen Schritt weiter! :)
Titel: Antw:[gelöst] - "HTTP POST" Werte in externem Gerät setzen.
Beitrag von: andies am 29 Mai 2017, 21:25:08
Hast Du schon mal HTTPMOD probiert?

defmod Heizkessel HTTPMOD none 0
attr Heizkessel userattr get1Data get1Name set1URL
attr Heizkessel get1Name Entaschung
attr Heizkessel get1URL http://192.168.12.82:8080/user/var/40/10021/0/0/12112
attr Heizkessel get1Data value=1803
Titel: Antw:[gelöst] - "HTTP POST" Werte in externem Gerät setzen.
Beitrag von: Frank_Huber am 29 Mai 2017, 21:54:34
Ich hab es zum laufen bekommen über den GetFileFromUrl.
siehe: https://forum.fhem.de/index.php/topic,43927.msg641470.html#msg641470 (https://forum.fhem.de/index.php/topic,43927.msg641470.html#msg641470)
Titel: Antw:[gelöst] - "HTTP POST" Werte in externem Gerät setzen.
Beitrag von: andies am 30 Mai 2017, 20:39:05
Ja, klar, habe ich ja gelesen. Der Vorteil von HTTPMOD ist in meinen Augen (und das kann Betriebsblindheit sein), dass es ein FHEM-device ist und damit in die Programmabfolge mit allen Details passt (Logfile-Eintrag, Anzeige im room-group etc.). GetFileFromURL ist ein Programmcode und, wenn ich das richtig in Erinnerung habe, im worst case blockierend.
Titel: Antw:[gelöst] - "HTTP POST" Werte in externem Gerät setzen.
Beitrag von: viegener am 30 Mai 2017, 21:20:30
@andies: Ich war versucht etwas sehr ähnliches zu schreiben... :)
Titel: Antw:[gelöst] - "HTTP POST" Werte in externem Gerät setzen.
Beitrag von: Frank_Huber am 04 Juni 2017, 20:59:34
Ich sehe genau da (momentan) den Nachteil vom httpmod.
Ich müsste ja (bis ich tiefer durchblicke) für jeden Befehl den ich an den Kessel schicken will nen eigenes device anlegen.
Den getfilefromurl baue ich direkt im at/doif/notify mit ein.

Gesendet von meinem S3_32 mit Tapatalk

Titel: Antw:[gelöst] - "HTTP POST" Werte in externem Gerät setzen.
Beitrag von: andies am 04 Juni 2017, 22:15:18
Nein, das glaube ich nicht. Ich weiß nicht, wie die Befehle genau aussehen, aber ich bastle mal ein device mit zwei Befehlen:

defmod Heizkessel HTTPMOD none 0
attr Heizkessel userattr get1Data get1Name set1URL get2Data get2Name get2URL
attr Heizkessel get1Name Entaschung
attr Heizkessel get1URL http://192.168.12.82:8080/user/var/40/10021/0/0/12112
attr Heizkessel get1Data value=1803
attr Heizkessel get2Name Beaschung
attr Heizkessel get2URL http://192.168.12.82:8080/user/var/40/10021/1/1/34343
attr Heizkessel get2Data value=0815

Das device zeigt dann zwei Möglichkeiten direkt an (Auswahlliste). Selbst die URL kannst Du pro get ändern.
Titel: Antw:[gelöst] - "HTTP POST" Werte in externem Gerät setzen.
Beitrag von: viegener am 05 Juni 2017, 14:04:49
Zitat von: Frank_Huber am 04 Juni 2017, 20:59:34
Ich sehe genau da (momentan) den Nachteil vom httpmod.
Ich müsste ja (bis ich tiefer durchblicke) für jeden Befehl den ich an den Kessel schicken will nen eigenes device anlegen.
Den getfilefromurl baue ich direkt im at/doif/notify mit ein.

Nein das mit dem eigenen Device stimmt so nicht - Wenn Du die commandref gelesen hättest - hättest Du gesehen , dass für jeden set-befehl eines einzelnen HTTPMod-Devices auch ein URL etc vergeben werden kann.

Der direkt einbau ins at/doif/notify macht ja nur Sinn, wenn Du nur automatisch schalten willst / keinerlei Rücklmeldung brauchst / dein FHEM gerne blockiert sein darf etc.

Generell würde ich vermuten, dass Du ja irgendwann den Status des Kesses auch auslesen/darstellen willst spätestens dann ist die getfileFromURL-Methode eher hinderlich und Du betreibst den Aufwand nochmal - Meine Empfehlung nicht an den Konzepten von FHEM vorbei zu gehen, denn das erzeugt viele zusätzliche Probleme und kostet Zeit
Titel: Antw:[gelöst] - "HTTP POST" Werte in externem Gerät setzen.
Beitrag von: Frank_Huber am 05 Juni 2017, 14:09:17
Ich hab schon verstanden dass httpmod das kann.
hab ja geschrieben "bis ich tiefer durchblicke"...

Auslesen tu ich ja schon einige Werte per httpmod.
für das setzen brauch ich keine weiteren Werte auslesen.

ich ändere die Zirkulationszeiten je nach Anwesenheitsstatus.
Da passt das so erstmal und funktioniert.
wenn ich mal wieder mehr Zeit hab mich da reinzulesen und zu testen baue ich es evtl um.
Aber solange es sauber läuft passt das so erstmal.