Autor Thema: REST-API / HTTP  (Gelesen 11759 mal)

ttww

  • Gast
REST-API / HTTP
« 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
oder
   http://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

Offline drdownload

  • Sr. Member
  • ****
  • Beiträge: 768
Antw:REST-API / HTTP
« Antwort #1 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)
CUL 868 Slow-RF (FS20 Aktoren, Sender, FHT8V), CUL 868 (WMBUS-Empfang), Jeelink (PCA301), WS3600 (WH3080 über USB-Basis), Bewässerung mit ESP-Easy und Proplanta, RFXTRX433 Home-Easy Empfang und Senden, Oregon TH, WS001 TH), Blackbean IR, Mopidy-Snapcast MR Audio, Kodi, Forum-LED-Controller,

sto

  • Gast
Antw:REST-API / HTTP
« Antwort #2 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

Offline Thorsten Pferdekaemper

  • Developer
  • Hero Member
  • ****
  • Beiträge: 6376
  • Finger weg von der fhem.cfg
Antw:REST-API / HTTP
« Antwort #3 am: 02 März 2016, 10:17:06 »
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
FUIP

sto

  • Gast
Antw:REST-API / HTTP
« Antwort #4 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.)

Offline Nairolf123

  • New Member
  • *
  • Beiträge: 31
Antw:REST-API / HTTP
« Antwort #5 am: 03 Januar 2017, 23:18:02 »
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

Offline dev0

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3578
    • _.:|:._
Antw:REST-API / HTTP
« Antwort #6 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.

Offline Nairolf123

  • New Member
  • *
  • Beiträge: 31
Antw:REST-API / HTTP
« Antwort #7 am: 04 Januar 2017, 22:35:53 »
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

Offline Nairolf123

  • New Member
  • *
  • Beiträge: 31
Antw:REST-API / HTTP
« Antwort #8 am: 17 Januar 2017, 22:01:12 »
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

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 24916
Antw:REST-API / HTTP
« Antwort #9 am: 17 Januar 2017, 22:42:37 »
Zitat
Kann 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.
Gefällt mir Gefällt mir x 1 Liste anzeigen