Hi,
gibt es eine REST-API zu FHEM ?
Ich habe in der Doku Telnet und JSON gefunden, beides würde (zur Not :-)) gehen, aber REST erscheint mir einfacher...
Also z.B.:
http://xx.xx.xx.xx:port/GET/lampe/status (xx.xx.xx.xx:port/GET/lampe/status)
oder
http://xx.xx.xx.xx:port/GET?dev=lampe,attr=status (xx.xx.xx.xx:port/GET?dev=lampe,attr=status)
oder so ähnlich....
Und das gleiche natürlich auch mit einem entsprechenden SET :-)
Habe ich da was übersehen oder gibt es sowas nicht ?
Schlussendlich möchte ich von einem OpenRemote-Controller meinen FHEM Raspberry steuern....
Grüße,
Thomas
es gibt die open transporter schnittstelle aber keine "offizielle" rest api. und man kann natürlich auch über die links im webinterface schalten. (analog dazu was andfhem macht)
Würde gerne nochmals auf diese Frage zurück kommen.
Zugriff über's Web-IF ist ok. Aber...
- wie kann ich vermeiden, dass der ganze HTML-Code der Seite als Antwort unnötig über die Leitung geht?
- wie komme ich (elegant) an den neuen Zustand ran?
Eine REST-API schiene mir hier schon ziemlich nützlich, meint ihr nicht?
Danke, Dieter
Zitat von: sto am 02 März 2016, 09:05:49
Würde gerne nochmals auf diese Frage zurück kommen.
Zugriff über's Web-IF ist ok. Aber...
- wie kann ich vermeiden, dass der ganze HTML-Code der Seite als Antwort unnötig über die Leitung geht?
- wie komme ich (elegant) an den neuen Zustand ran?
Eine REST-API schiene mir hier schon ziemlich nützlich, meint ihr nicht?
Danke, Dieter
Hi,
ich glaube, dafür ist das Modul jsonlist2 gedacht. Bei mir funktioniert z.B. folgendes:
http://192.168.xxx.yyy/fhem?cmd=jsonlist2 dg_ku_Lampe21 state&XHR=1
Das liefert dann:
{
"Arg":"dg_ku_Lampe21 state",
"Results": [
{
"Name":"dg_ku_Lampe21",
"Readings": { "state": { "Value":"off", "Time":"2016-03-01 19:02:43" } }
} ],
"totalResultsReturned":1
}
Gruß,
Thorsten
Super - besten Dank.
(In dem Fall sehe ich auch keinen unmittelbaren Bedarf mehr für eine REST-API.)
Zitat von: Thorsten Pferdekaemper am 02 März 2016, 10:17:06
Hi,
ich glaube, dafür ist das Modul jsonlist2 gedacht. Bei mir funktioniert z.B. folgendes:
http://192.168.xxx.yyy/fhem?cmd=jsonlist2 dg_ku_Lampe21 state&XHR=1
Das liefert dann:
{
"Arg":"dg_ku_Lampe21 state",
"Results": [
{
"Name":"dg_ku_Lampe21",
"Readings": { "state": { "Value":"off", "Time":"2016-03-01 19:02:43" } }
} ],
"totalResultsReturned":1
}
Gruß,
Thorsten
Hi zusammen,
ist es auch möglich nur den Wert "off" auszulesen? Also ich möchte eine URL in der Art http://192.168.xxx.yyy/fhem?cmd=jsonlist2 dg_ku_Lampe21 state
value&XHR=1 aufrufen, die mir dann wirklich nur "Off" ohne das restliche JSON zurückliefert.
Danke & Grüße,
Florian
Du kannst auch perl Funktionen aufrufen:
http://192.168.xxx.yyy:8083/fhem?cmd={ReadingsVal('device','reading','default')}
Ans url encoden denken.
Zitat von: dev0 am 04 Januar 2017, 09:12:11
Du kannst auch perl Funktionen aufrufen:
http://192.168.xxx.yyy:8083/fhem?cmd={ReadingsVal('device','reading','default')}
Ans url encoden denken.
DANKE!!! Funkioniert ;-). Hoffe ich habe bald Zeit, das in meinem Garmin Uhren Widget einzubauen, um dort auf der Startseite z. B. Temperatur oder ähnliches anzuzeigen.
Grüße,
Florian
PS: Wer es noch nicht kennt und eine neuere Garmin Uhr hat: https://apps.garmin.com/de/apps/ab37134f-1282-48df-a3be-ce0e583e3291;jsessionid=02695A9FFEBF7A53913DF9515E628547 (https://apps.garmin.com/de/apps/ab37134f-1282-48df-a3be-ce0e583e3291;jsessionid=02695A9FFEBF7A53913DF9515E628547)
Zitat von: dev0 am 04 Januar 2017, 09:12:11
Du kannst auch perl Funktionen aufrufen:
http://192.168.xxx.yyy:8083/fhem?cmd={ReadingsVal('device','reading','default')}
Ans url encoden denken.
Leider kann ich das so nicht für mein Widget für Garmin Uhren verwenden, da die dortige Laufzeitumgebung nur Web-Zugriffe erlaubt, die einen bestimmten Response-Typ liefern (z. B. JSON, FIT, GPX, aber kein Text oder HTML). Wenn ich etwas wie:
http://192.168.xxx.yyy:8083/fhem?cmd={ReadingsVal('device','reading','default')}&XHR1
aufrufe, dann ist die Response reiner Text, was auch im HTTP Response Header steht:
Content-Type:text/plain; charset=UTF-8
Da Garmin jedoch JSON unterstützt, wollte ich Abfragen mittels JSONLIST2 machen. Doch auch hier steht im Response Header, dass es sich um "text/plain" handelt, obwohl die Response selbst klar JSON ist.
Daher meine Frage:
- Kann ich JSONLIST2 dazu bringen, auch im Response Header den Content-Type als JSON zu markieren?
- Gibt es eine andere Möglichkeit FHEM zu befragen, so dass es JSON zurückliefert?
Danke & Grüße,
Florian
ZitatKann ich JSONLIST2 dazu bringen, auch im Response Header den Content-Type als JSON zu markieren?
Bisher nicht, ich habe aber FHEMWEB/JsonList2/XmlList gerade erweitert, so dass bei XHR=1 das passende Content-Type gesetzt wird.
P.S.: Ich habe dieses Posting nur per Zufall gesehen (Anfaengerfragen lese ich nicht): das sind keine Anfaengerfragen, bitte in den passenden Bereich posten.