FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: ttww am 27 August 2013, 21:31:43

Titel: REST-API / HTTP
Beitrag von: ttww am 27 August 2013, 21:31:43
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
Titel: Antw:REST-API / HTTP
Beitrag von: drdownload am 19 November 2013, 11:58:29
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)
Titel: Antw:REST-API / HTTP
Beitrag 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...
Eine REST-API schiene mir hier schon ziemlich nützlich, meint ihr nicht?

Danke, Dieter
Titel: Antw:REST-API / HTTP
Beitrag von: Thorsten Pferdekaemper am 02 März 2016, 10:17:06
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
Titel: Antw:REST-API / HTTP
Beitrag von: sto am 03 März 2016, 09:03:20
Super - besten Dank.
(In dem Fall sehe ich auch keinen unmittelbaren Bedarf mehr für eine REST-API.)
Titel: Antw:REST-API / HTTP
Beitrag von: Nairolf123 am 03 Januar 2017, 23:18:02
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
Titel: Antw:REST-API / HTTP
Beitrag 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.
Titel: Antw:REST-API / HTTP
Beitrag von: Nairolf123 am 04 Januar 2017, 22:35:53
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)
Titel: Antw:REST-API / HTTP
Beitrag von: Nairolf123 am 17 Januar 2017, 22:01:12
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:

Danke & Grüße,
Florian
Titel: Antw:REST-API / HTTP
Beitrag von: rudolfkoenig am 17 Januar 2017, 22:42:37
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.