Hauptmenü

FHEM per HTTP steuern

Begonnen von Klaus0815, 28 Oktober 2015, 20:06:07

Vorheriges Thema - Nächstes Thema

Klaus0815

kann man FHEM per HTTP steuern ?
Ich weiss es geht prinzipiell, setzte das auch schon lange ein.
Aber bei HTTP-Requests wird immer die komplette Webseite geöffnet?

Ich suche was in der Richtung:
- schalten - http://192.168.178.1:8083/fhem?cmd.Test=set%20Lampe%20on -als Antwort kommt dann einfach z.B. ok
- abfragen - http://192.168.178.1:8083/fhem?cmd.Test=get%20Lampe%20status -als Antwort kommt dann einfach z.B. on, wegen mir auch noch mit Zeitstempel,
aber nicht die ganze Webseite

Es gibt meines Wissens nur die Ports 8083, 8084 und 8085 für PC, Handy und Tablet ?





marvin78

Hänge mal &XHR=1 an die URLs

justme1968

und statt get Lampe status wie per telnet list Lampe state.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

viegener

Dafür ist eigentlich der Parameter XHR=1 im URL zuständig.
Also wenn Du ein Kommando an FHEMWeb schickst und an den URL für das Kommando noch
&XHR=1 anhängst sollte als Ergebnis kein HTML sondern nur die Daten zurückgeliefert werden.

Also z.B.:

http://<fhem>:8083/fhem?cmd.dummy=set%20dummy%20on&XHR=1


Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

Klaus0815

sorry, das mit get / list war mein Fehler, zu schnell geschrieben
ich probiere es gerade aus, schalten geht problemlos,
aber wenn ich abfragen schicke mit
http://192.168.178.47:8083/fhem?cmd.dummy=list%20Gartenhaus_Tuerschloss%20state&XHR=1
sieht es zwar in IE und Chrome gut aus, aber unter Debian in der Kommandozeile mit Curl kommt trotzdem die ganze Seite mit ?


curl http://192.168.178.47:8083/fhem?cmd.dummy=list%20Gartenhaus_Tuerschloss%20state&XHR=1

Antwort (nur der letzte Teil, am Ende steht das was ich eigentlich haben will:
</tr>
<tr><td><div><a href="/fhem/docs/commandref.html"  >Commandref</a></div></td>
</tr>
<tr><td><div><a href="http://fhem.de/fhem.html#Documentation"  >Remote doc</a></div></td>
</tr>
<tr><td><div class="menu_Edit_files"><a href="/fhem?cmd=style%20list">Edit files</a></div></td>
</tr>
<tr><td><div class="menu_Select_style"><a href="/fhem?cmd=style%20select">Select style</a></div></td>
</tr>
<tr><td><div class="menu_Event_monitor"><a href="/fhem?cmd=style%20eventMonitor">Event monitor</a></div></td>
</tr>
</table></td></tr>
</table>
</div>
</div>
<div id="hdr">
<table border="0" class="header"><tr><td style="padding:0">
<form method="post" action="/fhem">
<input type="text" name="cmd" class="maininput" size="40" value=""/>
</form>
</td></tr></table>
</div>
<div id="content">
<a href="/fhem?detail=Gartenhaus_Tuerschloss">Gartenhaus_Tuerschloss</a> 2015-10-25 15:06:20 closed
</div>
</body></html>

[2]+  Done                    curl http://192.168.178.47:8083/fhem?cmd.dummy=list%20Gartenhaus_Tuerschloss%20state







justme1968

du musst anführungszeichen um die komplette url machen. & auf der shell bedeutet das kommando wird im Hintergrund ausgeführt und das XHR=1 abgeschnitten.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Adriano

#6
Hallo. Ich hänge mich hier mal rein. Da ich ein Windows Phone habe und ich mir "Webseiten" als App ablegen kann, wie hier beschrieben:

http://forum.fhem.de/index.php?topic=27374.0

kann ich "Cortana" dazu benutzen "Webseiten" per App-Namen aufzurufen. Also könnte ich auch Cortana dazu benutzen, FHEM zu schalten ;)

Aktuell funktioniert Cortana bei mir ja schon soweit, dass ich nur sagen muss: "Öffne Home" und schwupps öffnet sich FHEM im Browser.

Jetzt möchte ich aber sowas machen wie. "Öffne Alarm" oder "Öffne Alaus".

Ich müsste nur noch irgendwie in die "/fhem?cmd.Test" HTML Ausgabe dann den Code "einschleusen".


  #Windows Phone Tile Image Integration
  FW_pO '<meta name="application-name" content="Home" />';
  FW_pO '<meta name="msapplication-TileColor" content="#009900" />';
  FW_pO '<meta name="msapplication-square70x70logo" content="/fhem/images/dark/smalltile.png" />';
  FW_pO '<meta name="msapplication-square150x150logo" content="/fhem/images/dark/mediumtile.png" />';
  FW_pO '<meta name="msapplication-wide310x150logo" content="/fhem/images/dark/widetile.png" />';
  FW_pO '<meta name="msapplication-square310x310logo" content="/fhem/images/dark/largetile.png" />';


Könnt ihr mir sagen, wo ich das machen könnte? Ich denke in "01_FHEMWEB.pm" bloss wo. (XHR=1)

EDIT: Habs gefunden:

  #If we are in XHR or json mode, execute the command directly
  if($FW_XHR || $FW_jsonp) {
    $FW_cmdret = $docmd ? FW_fC($cmd, $cmddev) : "";
    $FW_RETTYPE = "text/plain; charset=$FW_encoding";


Ich versuch mal mein Glück

herrmannj

Na dann häng ich mich auch mal ran :)

Unter meinen Flügeln liegt fronthem - das ist eine fhem websocket Schnittstelle. Über fronthem wird smartVisu angebunden. (demo.smartVisu.de).

smartVisu wiederrum ist ein toolkit mit dem sich smart home Bedienoberflächen bauen lassen (jquery, html5, css), also ein Frontend.

Wenn Du sowieso gerade "auf der Suche bist". Evtl sagt Dir das Konzept zu. Man kann das jetzt schon gut aus dem wp8.1 browser herraus bedienen.
Noch schöner wäre ein wp8 app dafür:

Für Android habe ich einen POC. Da ist eine embedded webview drin (xwalk, auch Präferenz) deren Start auf die smartVisu Seite konfiguriert ist.

wss mit client cert fehlen, sind angestrebt.
Ausserdem ist eine javascript brigde drin. Mit der kann smartVisu mit den Hardware Funktionen des device (Helligkeit, Sound, voice rec, tts, notification, vibration und location) interagieren.

Könntest Du Dir so etwas als wp app vorstellen ? ;)

vg
joerg