FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: ChrisW am 13 Januar 2013, 20:18:51

Titel: Ext API ( Weblink ) aufrufen
Beitrag von: ChrisW am 13 Januar 2013, 20:18:51
Hallo,
habe lokal ein tool auf einem anderen rechner.
Diese API kann ich ansteuern per http://ip:Port/api/shutdown (ip:Port/api/shutdown)

Wie kann ich das nun in Fhem so aufrufen das es ausgefügrt wird ??
Jemand eine idee?
Titel: Aw: Ext API ( Weblink ) aufrufen
Beitrag von: Dirk am 13 Januar 2013, 20:37:15
Hi Chris,

Das ginge z.B. mit wget.

Hier ein Beispiel als FS20 Schaltbefehl. xxxxxxxx und yyyy muss dann durch den entsprechenden FS20 Housecode und Taster-Code ersetzt werden.
Beim Ausschalten per FS20 Befehl wird deine API dann angesprochen.


### apishutdown ###
define api_shutdown FS20 xxxxxxxx yyyy
define notify_apishutdown notify apishutdown:off* "/usr/bin/wget http://ip:Port/api/shutdown"
Titel: Aw: Ext API ( Weblink ) aufrufen
Beitrag von: Dirk am 13 Januar 2013, 20:41:39
Sorry, hab grade erst gesehen das du ein Windows System hast, dann muss der Path "/usr/bin/wget" natürlich gegen den Path von wget auf deinem Windows-System getauscht werden.

Und FS20 war nur ein Beispiel. Das geht mit deinem System auf 433Mhz genau so. Die Zeichenfolge auf die das Notify reagieren soll kannst du dann dem EventMonitor entnehmen..
Titel: Aw: Ext API ( Weblink ) aufrufen
Beitrag von: ChrisW am 13 Januar 2013, 20:45:27
okay danke dann guck ich mal wie ich wget nutze unter Win ;)
Schalter brauche ich nicht es wird für meine Abwesenheits Erkennung benötigt ;)
Will somit nur meinem HTPC abschalten :D
Titel: Aw: Ext API ( Weblink ) aufrufen
Beitrag von: ChrisW am 14 Januar 2013, 08:49:56
Hallo,
kann ich das auch ähnlich einfach wie "set Licht_1 on" einbauen ? Also quasi 1 Zeile die ich auch manuell oben eintragen kann und ENTER Drücke ?
Titel: Aw: Ext API ( Weblink ) aufrufen
Beitrag von: ChrisW am 14 Januar 2013, 08:57:37
hab eine wget64.exe nun auch richtig abgelegt per CMD funktioniert diese aber nicht in FHEM .. muss ich wget vielleicht in Pearl irgendwie nachinstallieren ?
Titel: Aw: Ext API ( Weblink ) aufrufen
Beitrag von: Dirk am 14 Januar 2013, 08:58:41
Ja, wenn du dir orher ein entsprechendes Notify definierst.
Siehe mein Beispiel oben. Abgeändert sehe das dann so aus:

define notify_Licht1 notify Licht_1:on* "/usr/bin/wget http://ip:Port/api/shutdown"

Wenn du dann "set Licht_1 on" eingibst, dann reagiert das Notify darauf und startet wget.

Gruß
Dirk
Titel: Aw: Ext API ( Weblink ) aufrufen
Beitrag von: Dirk am 14 Januar 2013, 09:00:32
Zitat von: Chris schrieb am Mo, 14 Januar 2013 08:57hab eine wget64.exe nun auch richtig abgelegt per CMD funktioniert diese aber nicht in FHEM .. muss ich wget vielleicht in Pearl irgendwie nachinstallieren ?
Stimmt der Path? Sind leerzeichen im Path?
Titel: Aw: Ext API ( Weblink ) aufrufen
Beitrag von: ChrisW am 14 Januar 2013, 09:06:18
hmm also der Pfad ist :
c:\windows\system32\wget64.exe
Der kennt den Befehl nur nicht. Das wird auch sicher anders gehen vielleicht muss ich wie wget64.exe im fhem irgendwo ablegen?
Titel: Aw: Ext API ( Weblink ) aufrufen
Beitrag von: Dirk am 14 Januar 2013, 09:14:23
Zitat von: Chris schrieb am Mo, 14 Januar 2013 09:06...vielleicht muss ich wie wget64.exe im fhem irgendwo ablegen?
Das kannst du auch machen.


define notify_Licht1 notify Licht_1:on* "c:/windows/system32/wget64.exe http://ip:Port/api/shutdown"
Sollte aber funktionieren.
Titel: Aw: Ext API ( Weblink ) aufrufen
Beitrag von: ChrisW am 14 Januar 2013, 09:24:04
ok ich glaube bei mir hängt es noch wo anders
Oben folgendes EIngetragen ENTER und auch SAVE schon versucht
define notify_HTPC notify HTPC:on* "c:/wget64.exe http://ip:Port/api/shutdown (ip:Port/api/shutdown)"

set HTPC on folgt: Please define HTPC first

Habs mal unter C: direkt abgelegt.
Titel: Aw: Ext API ( Weblink ) aufrufen
Beitrag von: ChrisW am 14 Januar 2013, 09:39:55
Was ist den mit dem befehl: GetHttpFile($host, $uri) Ist das vielleicht einfacher ?
Titel: Aw: Ext API ( Weblink ) aufrufen
Beitrag von: Dirk am 14 Januar 2013, 09:47:26
stimmt, das sollte auch funktionieren. Das ist eine FHEM Funktion. Da brauchst du dann kein wget wenn das klappt.
Titel: Aw: Ext API ( Weblink ) aufrufen
Beitrag von: ChrisW am 14 Januar 2013, 10:00:38
hm selbes Problem bekomme es nicht geschaltet :
define HTPCAPI notify HTPCAPI:on { GetHttpFile("192.168.2.1:81", "/API/shutdown toggle") }

bekomme es mit set HTPCAPI on nicht an ...
Manuell GetHttpFile("192.168.2.1:81", "/API/shutdown toggle") geht auch nicht kennt er kein getHttpFile ........ unter help ist der befehl auch nicht drin
KOMISCH
Titel: Aw: Ext API ( Weblink ) aufrufen
Beitrag von: Dirk am 14 Januar 2013, 10:14:37
Mit Help findest du GetHttpFile nicht. Ist eine interne Funktion definiert in HttpUtils.pm.

Im deinem Browser funktioniert "http://192.168.2.1:81/API/shutdown (//192.168.2.1:81/API/shutdown) toggle"?

dann Versuch das mal so:
define HTPCAPI notify HTPCAPI:on { GetHttpFile("192.168.2.1:81", "/API/shutdown%20toggle") }
Titel: Aw: Ext API ( Weblink ) aufrufen
Beitrag von: ChrisW am 14 Januar 2013, 10:17:56
Okay hab ich eingefügt mit
set HTPCAPI on kommt:
No set implemented for HTPCAPI
Titel: Aw: Ext API ( Weblink ) aufrufen
Beitrag von: ChrisW am 14 Januar 2013, 10:24:32
Okay befehl wird aber ausgeführt HTPC ist aus =)
Aber wieso die Meldung kommt hmm
Titel: Aw: Ext API ( Weblink ) aufrufen
Beitrag von: Dirk am 14 Januar 2013, 10:29:57
Zitat von: Chris schrieb am Mo, 14 Januar 2013 10:17Okay hab ich eingefügt mit
set HTPCAPI on kommt:
No set implemented for HTPCAPI

HTPCAPI ist in denem Fall nur ein Notify. Das hat kein Set.

Du müsstest vorher noch ein Dummy-Device definieren. Das kannst du dann mit Set "schalten".
Das Notify reagiert dann darauf.
Titel: Aw: Ext API ( Weblink ) aufrufen
Beitrag von: ChrisW am 14 Januar 2013, 10:43:57
oha .. wie Kompliziert und umständlich.

Wieso funktioniert es nicht so?? :


define HTPC_AUS_ANWESEND notify Anwesenheit.*:.* { \
if ((Value("Anwesenheit_Chris") eq "on") or (Value("Anwesenheit_Tanja") eq "on")) { \
Log (3,"HTPC BLEIBT AN");; \
} \
else { \
fhem ("GetHttpFile("192.168.2.1:81", "/API/shutdown%20toggle")");; \
Log (3,"HTPC Ausgeschaltet weil keiner da");;\
}\
}
Titel: Aw: Ext API ( Weblink ) aufrufen
Beitrag von: Dirk am 14 Januar 2013, 10:53:35
Genauso funktioniert das. Da wurder vorher aber noch ein Device "Anwesenheit" definiert. Darauf reagiert das Notify. Das kann eben auch ein Dummy sein.

Also zuerst ein Dummy-Device definieren wenn du nicht mit einem "echten" Device schalten willst
define HTPCAPI dummy

Dann das Notify:
define HTPCAPI_notify notify HTPCAPI:on { GetHttpFile("192.168.2.1:81", "/API/shutdown%20toggle") }

Dann kannst du mit "set HTPCAPI on" deine Api schalten. Der Name vom Dummy und vom zugehörigen Notify müssen unterschiedlich sein.
Titel: Aw: Ext API ( Weblink ) aufrufen
Beitrag von: ChrisW am 14 Januar 2013, 11:01:16
Jap Anwesend funzt bei mir für die Heizung jetzt geht es Leerstelle darf drinbleiben ;)

define HTPC_AUS_ANWESEND notify Anwesenheit.*:.* { \
if ((Value("Anwesenheit_Chris") eq "on") or (Value("Anwesenheit_Tanja") eq "on")) { \
Log (3,"HTPC BLEIBT AN");; \
} \
else { \
    fhem (GetHttpFile("192.168.2.1:81", "/API/shutdown toggle"));;\
Log (3,"HTPC Ausgeschaltet weil keiner da");;\
}\
}

Titel: Aw: Ext API ( Weblink ) aufrufen
Beitrag von: Tobias am 14 Januar 2013, 13:51:38
irgendwie scheint es bei mir nicht so zu funktionieren...

aus der Definition im fhem-Webif:
ALARM_STATUS:ALARM {
fhem(GetHttpFile("api.clickatell.com", "/http/sendmsg?user=USERNAME&password=PASSWORT&api_id=123456&to=4915222111111&text=Testalarm ausgelöst"));
undef;
}


gibt im Log:
2013.01.14 13:46:33.770 3: Alarm_SendSMS return value: Unknown command {, try help
Unknown command undef, try help
Unknown command }\
, try help


bin gerade ratlos...
Titel: Aw: Ext API ( Weblink ) aufrufen
Beitrag von: ChrisW am 14 Januar 2013, 14:36:13
Zitat von: Dirk schrieb am Mo, 14 Januar 2013 10:53Genauso funktioniert das. Da wurder vorher aber noch ein Device "Anwesenheit" definiert. Darauf reagiert das Notify. Das kann eben auch ein Dummy sein.

Also zuerst ein Dummy-Device definieren wenn du nicht mit einem "echten" Device schalten willst
define HTPCAPI dummy

Dann das Notify:
define HTPCAPI_notify notify HTPCAPI:on { GetHttpFile("192.168.2.1:81", "/API/shutdown%20toggle") }

Dann kannst du mit "set HTPCAPI on" deine Api schalten. Der Name vom Dummy und vom zugehörigen Notify müssen unterschiedlich sein.


Hi,
hab ein dummy HTPC angelegt. Möchte einen ON / OFF Schalter haben.
Für Off :
define HTPC_notify notify HTPC:off { GetHttpFile("192.168.2.1:81", "/API/shutdown toggle") }
Für On :
define HTPC_notify notify HTPC:on { GetHttpFile("192.168.2.1:81", "/API/WOL MYMACID") }

Würde das so funktionieren ?
Titel: Aw: Ext API ( Weblink ) aufrufen
Beitrag von: Dirk am 14 Januar 2013, 21:03:14
Das sieht soweit gut aus.
Teste das mal so.

Gruß
Dirk