FHEM Forum

Verschiedenes => Off-Topic => Thema gestartet von: SamNitro am 27 Januar 2023, 13:31:57

Titel: [Gelöst] FHEM HTTP Json
Beitrag von: SamNitro am 27 Januar 2023, 13:31:57
Hallo, ich habe mir ein Stream Deck zugelegt, jetzt reizt es mich damit auch mein Smarthome zu schalten. Leider ist das für mich noch nicht so einfach.
Es gibt dort ein plugin Names API Ninja womit man schalten und Daten abrufen kann. Jetzt habe ich eine Vorlage gefunden die mit Tasmota funktioniert.

Wenn ich folgenden Befehl absetzte
http://IP/cm?cmnd=power1%20toggle
bekomme ich per HTTP
{"POWER1":"OFF"}
als Rückgabe. damit kann das Plugin arbeiten.

jetzt meine frage ist das mit FHEM auch möglich?

LÖSUNG:
https://forum.fhem.de/index.php/topic,131880.msg1260481.html#msg1260481 (https://forum.fhem.de/index.php/topic,131880.msg1260481.html#msg1260481)

LG Patrick
Titel: Antw:FHEM HTTP Json
Beitrag von: Otto123 am 27 Januar 2023, 13:35:40
Hi Patrick,

kurz und knapp: ja: mit HTTPMOD und JSONMOD
Oder für die eine Funktion auch mit HttpUtils selbst https://wiki.fhem.de/wiki/HttpUtils

Gruß Otto
Titel: Antw:FHEM HTTP Json
Beitrag von: SamNitro am 27 Januar 2023, 13:45:21
Aber damit schalte ich doch aus FHEM selber raus oder?
ich muss diesen Befehl quasi im Webbrowser absetzen.

10.1.1.3:8083/fhem?cmd=set%20HmIPW_Licht_Abstellkammer%20toggle&XHR=1

aber hier bekomme ich keine Rückmeldung
Titel: Antw:FHEM HTTP Json
Beitrag von: Otto123 am 27 Januar 2023, 14:03:00
Ich dachte Du willst von FHEM aus das Stream Deck schalten?
Du willst vom Stream Deck in FHEM schalten?
ok, falsch verstanden  :-[,
Dann würde ich empfehlen ein API WEB einrichten https://wiki.fhem.de/wiki/CsrfToken-HowTo#Alternative_Konfiguration

Titel: Antw:FHEM HTTP Json
Beitrag von: SamNitro am 27 Januar 2023, 14:09:05
sorry aber leider verstehe ich dann immer noch nicht wie ich die Rückmeldung bekomme. :/
ZitatDu willst vom Stream Deck in FHEM schalten?

Ja incl direkter Rückmeldung
Titel: Antw:FHEM HTTP Json
Beitrag von: Otto123 am 27 Januar 2023, 14:40:01
FHEM liefert mW bei set Kommandos keine Rückmeldung über FHEMWEB. Ich weiß leider nicht ob man da etwas aktivieren kann.
Du kannst natürlich Werte abfragen ...

Du kannst schauen ob das Modul HTTPAPI so etwas leistet https://forum.fhem.de/index.php/topic,128374.msg1229510.html#msg1229510
bzw. help HTTPAPI
Titel: Antw:FHEM HTTP Json
Beitrag von: rudolfkoenig am 27 Januar 2023, 14:53:14
ZitatFHEM liefert mW bei set Kommandos keine Rückmeldung über FHEMWEB.
Klar doch. Die meisten set Befehle liefern aber im Normalfall nichts zurueck.
Titel: Antw:FHEM HTTP Json
Beitrag von: SamNitro am 27 Januar 2023, 15:26:54
Zitat von: rudolfkoenig am 27 Januar 2023, 14:53:14
Klar doch. Die meisten set Befehle liefern aber im Normalfall nichts zurueck.
Okay aber für einen Laien wie mich bestimmt auch nicht so einfach aktivierbar?!
Titel: Antw:FHEM HTTP Json
Beitrag von: Otto123 am 27 Januar 2023, 16:30:14
Zitat von: rudolfkoenig am 27 Januar 2023, 14:53:14
Klar doch. Die meisten set Befehle liefern aber im Normalfall nichts zurueck.
Ok falsch ausgedrückt, aber genau sein Beispiel im ersten Post: Er will set aktor toggle absetzen und als Rückmeldung den Status on oder off erhalten. Bei FHEM erfolgt diese Rückmeldung im state vom Device und nicht als Antwort auf den set Befehl. Den state könnte man danach abfragen.

Aber dieses gewünschte Verhalten macht die HTTPAPI offenbar auch nicht, sie reflektiert nur:
ZitatSet
API command line for executing a set command
Request:
http://<ip-addr>:<port>/<apiName>/set?device=<devname>&action=<cmd>
Response:
<device>=<cmd>|error=<error message>
Titel: Antw:FHEM HTTP Json
Beitrag von: SamNitro am 27 Januar 2023, 16:49:11
Zitat von: Otto123 am 27 Januar 2023, 16:30:14
Aber dieses gewünschte Verhalten macht die HTTPAPI offenbar auch nicht, sie reflektiert nur:

musste ich zu bedauern auch feststellen :(
Titel: Antw:FHEM HTTP Json
Beitrag von: rudolfkoenig am 27 Januar 2023, 17:36:51
ZitatEr will set aktor toggle absetzen und als Rückmeldung den Status on oder off erhalten.

Na dann:
define w FHEMWEB 8083
attr w csrfToken mySecret

define d_1 dummy
attr d_1 setList on off
attr d_1 useSetExtensions 1


und
% wget -q -O - 'http://localhost:8083/fhem?cmd=set d_1 toggle;{Value("d_1")}&fwcsrf=mySecret&XHR=1'
off
% wget -q -O - 'http://localhost:8083/fhem?cmd=set d_1 toggle;{Value("d_1")}&fwcsrf=mySecret&XHR=1'
on


Von mir aus auch als JSON:
% wget -q -O - 'http://localhost:8083/fhem?cmd=set d_1 toggle;{toJSON({status=>Value("d_1")})}&fwcsrf=mySecret&XHR=1'
{"status":"off"}
Titel: Antw:FHEM HTTP Json
Beitrag von: Otto123 am 27 Januar 2023, 18:10:34
@Rudi Der Vorschlag war in meinem Kopf - ich hatte Hemmungen :) weil da war noch was
ZitatAchtung: unterschiedlicher Befehlsarten (FHEM/Shell/perl) in einer Kommandozeile sind nicht unterstützt, auch wenn es in manchen Fällen funktioniert.
Titel: Antw:FHEM HTTP Json
Beitrag von: SamNitro am 27 Januar 2023, 18:28:21
Zitat von: rudolfkoenig am 27 Januar 2023, 17:36:51
Von mir aus auch als JSON:
% wget -q -O - 'http://localhost:8083/fhem?cmd=set d_1 toggle;{toJSON({status=>Value("d_1")})}&fwcsrf=mySecret&XHR=1'
{"status":"off"}


Das ist genau das was ich brauche vielen Dank schonmal dafür.
Allerdings habe ich jetzt ein kleines anderes Problem, meine HMIP Geräte zeigen mir den Status invertiert an.
Titel: Antw:FHEM HTTP Json
Beitrag von: SamNitro am 27 Januar 2023, 18:39:26
http://10.1.1.3:8083/fhem?cmd={toJSON({status=%3EValue(%22HmIPW_Licht_Abstellkammer%22)})}&XHR=1

Wobei der status alleine richtig angezeigt wird...
evtl brauche ich eine kleine pause, wait oder sleep?
Titel: Antw:[Gelöst] FHEM HTTP Json
Beitrag von: rudolfkoenig am 27 Januar 2023, 19:45:18
Zitatevtl brauche ich eine kleine pause, wait oder sleep?
set in FHEM wartet nicht darauf, dass ein Befehl im Geraet ausgefuehrt wird, in vielen Faellen ist nicht mal bekannt, ob er ausgefuehrt wurde.
Weiterhin waere warten kontraproduktiv: solange man FHEM blockiert, wird auch HMIP sein Status nicht aktualisieren.

HMIP kenne ich nicht, manche andere Module setzen den Status vor Ankunft der Bestaetigung vom Geraet auf set_on / set_off.
Diesen Fall koennte man (mit etwas Glueck) so loesen:
wget -q -O - 'http://localhost:8083/fhem?cmd=set d_1 toggle;{toJSON({status=>(Value("d_1")=~s/set_//r)})}&fwcsrf=mySecret&XHR=1'
Titel: Antw:[Gelöst] FHEM HTTP Json
Beitrag von: Otto123 am 27 Januar 2023, 19:46:16
Ja sowas habe ich befürchtet. Das "gute" Device setzt den Status "asynchron" bzw nicht blockierend  Befehl an Device - Device schaltet - Status zurück an FHEM . Da können 0.1, 1 oder auch 3 sec dazwischen liegen (bei Homematic z.B.)
Bei einem dummy hat man das Problem nicht. Vielleicht hat der Chef eine Idee :)

Edit oh sorry hat sich jetzt überschnitten ...
Titel: Antw:[Gelöst] FHEM HTTP Json
Beitrag von: Otto123 am 27 Januar 2023, 21:02:45
Andere Idee: Ich habe eine Beschreibung Stream Deck von elgato gefunden. Ist es das?
Dort steht was von Events und Sent und received ...
Also viel besser als irgendwas biegen wäre: Du sendest einen Event an FHEM, FHEM sendet einen Event zurück zu Stream Deck.
Nur mal so ins unreine gesprochen. ;)

Und für Elgato Stream Deck gibt es sogar was : https://forum.fhem.de/index.php?topic=80897.15
Titel: Antw:[Gelöst] FHEM HTTP Json
Beitrag von: SamNitro am 27 Januar 2023, 22:55:03
Zitat von: rudolfkoenig am 27 Januar 2023, 19:45:18
wget -q -O - 'http://localhost:8083/fhem?cmd=set d_1 toggle;{toJSON({status=>(Value("d_1")=~s/set_//r)})}&fwcsrf=mySecret&XHR=1'

Geht leider auch nicht.

ZitatIst es das?
ja genau

ZitatDort steht was von Events und Sent und received ...
Leider habe ich dafür noch keine Lösung gefunden
Titel: Antw:[Gelöst] FHEM HTTP Json
Beitrag von: SamNitro am 27 Januar 2023, 22:56:21
Zitat von: Otto123 am 27 Januar 2023, 21:02:45
Und für Elgato Stream Deck gibt es sogar was : https://forum.fhem.de/index.php?topic=80897.15
ich glaube der hat das deck aber an den pi angeschlossen