Hauptmenü

HTTP-Anfragen

Begonnen von Apfeltee, 19 April 2018, 10:44:55

Vorheriges Thema - Nächstes Thema

Apfeltee

Hallo,

ich würde gern eine Anfrage über Web-Sockets, sprich über eine http-Schnittstelle, von einem Javaprogramm aus, an FHEM stellen. Mit der Anfrage würde ich gerne erreichen, dass FHEM mir eine Antwort in Form einer Zeichenkette (String) zurückliefert.

Ich würde gerne als erstes eine Anfrage schicken, die mir eine Auflistung aller registrierten Geräte in FHEM schickt. Wie kann ich das umsetzen? Ich hab versucht mich in einiges einzulesen, bspw. in HTTPMOD, jedoch verstehe ich davon noch nicht so viel bzw. kann das was im Wiki steht noch nicht wirklich so richtig zuordnen.
Deshalb wäre es schön, wenn ihr mir gleich konkret ein Beispiel aufzeigen könntet, wie ich das am besten umsetzen kann (auf FHEM seite)

Neben der Möglichkeit alle Geräte von FHEM über ein Web-Socket auszugeben, ist es auch möglich, alle Attribute eines bestimmtes Gerätes auszugeben? Und ist es auch möglich, ein bestimmtes Attribut zu setzen, bspw. ein Switch von off auf on stellen?
Wenn ja wäre ich hierbei auch über konkrete Beispiele sehr dankbar.

Schonmal danke im Voraus  :)

MadMax-FHEM

#1
Hallo,

Beispiele zum Steuern von fhem per HTTP-Aufrufen findest du u.a. hier: https://forum.fhem.de/index.php/topic,66920.0.html

Eine liste mit allen Geräten bekommst du beispielsweise über: list .*

Also in etwa so: http://IP-VON-FHEM:PORT/fhem?cmd=list%20.%2A&XHR=1

Aufpassen musst du halt noch bzgl. csrfToken, ist aber auch bei ha-bridge erläutert.

Ein-/Ausschalten geht nicht über Attribute sondern über entsprechende set Kommandos (siehe ha-bridge).

Willst du einschränken (also nicht alle Geräte sondern bestimmte etc.), solltest du dir devspec in der commandref (https://fhem.de/commandref_DE.html / https://fhem.de/commandref.html) ansehen...

Es gibt auch noch die Möglichkeit per Telnet Befehle etc. abzusetzen...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Apfeltee

Okay, schonmal Danke für die umfassende Antwort,
Jedoch suche ich eine Möglichkeit, das ganze nur mit einer einzigen url bspw: Localhost unter Port xxxx zu erreichen, ohne bei jedem neuen Fall eine unterschiedliche url ansprechen zu müssen.
Wahrscheinlich bin ich dann bei Anfragen über der http Schnittstelle an der falschen  Adresse? Oder funktioniert da Telnet anders?

Beta-User

Keine eigene Erfahrung damit, aber evtl. hilft dir das hier weiter:
https://forum.fhem.de/index.php?topic=33755.0

Gruß, beta-User
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

MadMax-FHEM

Zitat von: Apfeltee am 19 April 2018, 11:22:31
Okay, schonmal Danke für die umfassende Antwort,
Jedoch suche ich eine Möglichkeit, das ganze nur mit einer einzigen url bspw: Localhost unter Port xxxx zu erreichen, ohne bei jedem neuen Fall eine unterschiedliche url ansprechen zu müssen.
Wahrscheinlich bin ich dann bei Anfragen über der http Schnittstelle an der falschen  Adresse? Oder funktioniert da Telnet anders?

Verstehe ich nicht.

Wenn fhem auf dem selben Rechner/PI läuft, dann geht auch localhost...
...und ansonsten ist es doch immer die selbe IP wo eben fhem läuft!

Oder hab ich da was nicht verstanden?

Telnet ist genauso nur halt nicht http/https Protokoll sondern Telnet...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

MadMax-FHEM

#5
Ansonsten gibt es noch die Möglichkeit (falls du das mit EINER url meinst), dass du einfach alles Mögliche in einen Dummy schreibst, d.h. "url" bleibt gleich bis auf eben "alles Mögliche" (das ändert sich nat. immer)...
...und dann in fhem auswertest und agierst.

Also so: http://IP-VON-FHEM:PORT/fhem?cmd=setreading%20DUMMY_NAME%20READING_NAME%20Alles%20Moegliche&XHR=1

Bzw. gibt es auch Module die "gesprochene Sätze zerpflücken" und dann entsprechend steuern (TEERKO, Talk2Fhem, Babble, ...), wenn du "alles Mögliche" entsprechend "formatierst", dann kannst du das auch nutzen...

Aber gut ist anders (finde ich)...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Beta-User

Die Anforderung war doch das hier, oder:
Zitatich würde gern eine Anfrage über Web-Sockets, sprich über eine http-Schnittstelle, von einem Javaprogramm aus, an FHEM stellen. Mit der Anfrage würde ich gerne erreichen, dass FHEM mir eine Antwort in Form einer Zeichenkette (String) zurückliefert.

Zitat von: marvin78 am 20 Februar 2015, 09:15:13
Wenn ihr WebSocket Fans seid, schaut euch mal Fronthem an (im Frontends Bereich). Das ist eine Websocket Schnittstelle an FHEM um beliebige Frontends mit FHEM verbinden zu können.
Das scheint auch aktueller gepflegt zu sein als die Lösung in dem verlinkten Thread.

Gruß, Beta-User
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files