Wie kann ich HTTP Befehle in FHEM einbinden? (z.B. für ESP Easy)

Begonnen von Dynalon, 28 September 2020, 20:28:05

Vorheriges Thema - Nächstes Thema

Dynalon

Hallo,

vermutlich ist dies eine sehr einfache Frage, aber ich komme leider nicht drauf.

Ich möchte gerne LEDs, Buzzer und vor allem den "DRPlayer Mini (DFR0299/YX5200)", die an meine mit ESP Easy geflashten ESP8266er (D1 mini bzw. V3 12e) angeschlossen sind per FHEM automatisiert einbinden.

Ziel ist zum Beispiel ein DoIf zu erzeugen, das bei bestimmten Aktionen eine bestimmte LED leuchten lässt oder einen Ton (oder eine Melodie) erzeugt oder eben eine MP3 abspielt.

ESP Easy Bridge ist vorhanden, über diese lese ich meine ESP Sensoren (Thermometer, Luftdruck,...) aus.
MQTT2 ist eingerichtet, das verwende ich derzeit für meine Tasmota Stecker.

Ich bin mir nun aber nicht sicher, wie ich die LEDs, Buzzer usw. am geschicktesten ansteuere. Diese müssen ja nicht in ESP Easy als Device angelegt werden. Auch hat sich der DR Player bei mir nicht als ESP Easy Device selbst angelegt, so wie es die Bewegungsmelder, Thermometer usw. bisher getan haben.

Im ESPeasy Wiki (https://www.letscontrolit.com/wiki/index.php/Buzzer_(RTTTL)) steht, wie es als http Befehl angesteuert werden können, z.B.:
http://<ESP IP address>/control?cmd=tone,14,1300,200
Das funktioniert bei mir auch tadellos, bis auf das unbedeutende Problem, dass mein DR Player immer die gewählte MP3 +8 (also die 009 statt der 001 und die 010 statt der 002 usw.) abspielt, womit ich aber leben kann wenn ich das weiß.

Wenn ich diese HTTP Befehle also in mein FHEM einbinden kann, könnte ich all diese Befehle automatisiert ausführen lassen. (IPs meiner ESP8266er sind natürlich statisch) Leider finde ich im FHEM Wiki (https://wiki.fhem.de/wiki/ESPEasy), sowie per Google Suche und auch hier nicht, wie man solche HTML Befehle einbindet (oder ich suche mit den falschen Schlagworten oder bin einfach blind oder sehe den Wald vor lauter Bäumen nicht).

Kann mir einer von Euch einen Tipp geben? Im Prinzip benötige ich nur einen gültigen Befehl um zu kapieren, was ich tun muss.
Alternativ nehme ich gerne auch eine elegantere Lösung als die http Befehle, wenn Ihr eine für mich parat habt.

Vielen Dank!https://www.letscontrolit.com/wiki/index.php/Buzzer_(RTTTL)

tgv_boost

Servus,
hoffe ich hab' Dein Ansinnen richtig verstanden und eventuell hilft das hier ->

Eventuell so:
define TEST_ntfy notify DeinDevice:.*off { GetHttpFile("192.168.0.140:80", "DeinKommando") }
oder etwas eleganter als nonBlocking:
define TEST_ntfy notify DeinDevice:*off { HttpUtils_NonblockingGet( { url=>"http://192.168.0.140:80/DeinKommando ", callback=>sub() { } }) }
oder hier ein Beispiel mit dem auch noch Rückmeldungen ausgewertet werden. Als Client läuft ein Arduino Sketch auf Basis ESP12e, der auch die Relais etc. für die Rohrmotoren steuert:
define TEST_ntfy notify DeinDevice:*off { HttpUtils_NonblockingGet( { url=>"http://192.168.0.140:80/?=/DeinKommando ", incrementalTimout=>"1", callback=>sub($$$) { my ($hash, $err, $data) = @_;; {if ("$err" eq "") {Log 1, "Fab: ".("$data")}};; {if ("$err" ne "") {Log 1, "Err Fab: ".("$err"))}} }}} )};;\

viel Erfolg

Roger79

Hallo Dynalon,

ich z.B. steuere meine Gartenventile über mehrere ESP. Dazu habe ich jeden GPIO Ausgang als eigenes Device "Switch Input" anlegen müssen.
Danach wurden diese auch automatisch im Fhem angelegt und ich kann dann den Ausgang ganz einfach über das Device im Fhem ansteuern.

Gruß
Roger