Tasmota Device mit Web Requests steuern mit GetHttpFile

Begonnen von nicor2k, 10 Mai 2024, 11:23:30

Vorheriges Thema - Nächstes Thema

nicor2k

Nachdem ich viel zu lange gebraucht habe, um meine Tasmota Steckdosen mit MQTT zum Laufen zu bekommen (ich nutze noch Mosquitto separat, da geht das nicht so schön per Autodetect, wird wohl Zeit zum Umsteigen ;D ), habe ich zwischenzeitlich eine Lösung per Web Requests eingebaut. Wer nur schalten möchte und kein MQTT installieren möchte, dem hilft das hoffentlich  :)

Mehr zu den Tasmota Web Requests: https://tasmota.github.io/docs/Commands/#how-to-use-commands

Der Befehl zum Schalten ist somit:
http://<ip>/cm?cmnd=Power%20On
http://<ip>/cm?cmnd=Power%20off


Zuerst habe ich einen dummy definiert, den ich als Schalter nutze:
define Tasmota_Steckdose1 dummy
Der bekommt jetzt noch on und off als Schaltflächen:
attr Tasmota_Steckdose1 webCmd on:off

Anschließend 2 notifys, um per GetHttpFile die Steckdose zu schalten (umändern für eure eigene IP-Adresse!):

define act_on_Tasmota_Steckdose1on notify Tasmota_Steckdose1:on { GetHttpFile("192.168.1.100:80", "/cm?cmnd=Power%20On") }
define act_on_Tasmota_Steckdose1off notify Tasmota_Steckdose1:off { GetHttpFile("192.168.1.100:80", "/cm?cmnd=Power%20Off") }

Ich hoffe, das hilft jemandem - die Notifys könnte man auch noch optimieren und in einem zusammenfassen :)

betateilchen

Das ist ja nett, aber anstatt 3 devices zu benötigen, könnte man das auch in einem HTTPMOD device umsetzen. Auch wenn ich die Sinnhaftigkeit des Vorhabens generell in Frage stelle.

Was ist denn so schwer daran, eine Tasmota Steckdose per mqtt ein-/auszuschalten? Das ist doch "von Hand" sowieso schneller und übersichtlicher erledigt, als mit irgendwelchen Automatismen, die man nicht durchschaut.

Ich arbeite ausschließlich mit mosquitto Servern :)

defmod tasmota_test MQTT2_DEVICE
attr tasmota_test readingList tele/tasmota_2F1B0B/STATE:.*  { json2nameValue($EVENT) }\
stat/tasmota_2F1B0B/POWER:.* state
attr tasmota_test setList on  cmnd/tasmota_2F1B0B/POWER on\
off cmnd/tasmota_2F1B0B/POWER off

Lediglich der Teil "2F1B0B" muss an die eigene Tasmota-ID angepasst werden.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

nicor2k

Läuft denn MQTT2_DEVICE mit einem externen Mosquitto? Und das muss ja auch erst eingerichtet werden, oder?

Ich hatte jedenfalls sehr lange gebraucht, um den Channel (bei dir ja cmnd/tasmota_2F1B0B/POWER off) zu finden. Jetzt, wo ich es weiß, hab ich es auch in der Tasmota Doku gefunden  ;)
Aber daher hatte ich halt zuerst die Web Requests eingerichtet  :)

nicor2k

Zitat von: betateilchen am 10 Mai 2024, 12:19:30Ich arbeite ausschließlich mit mosquitto Servern :)

Oh, und ich wollte sonst das WE nutzen, um alles umzustellen. Nutze MQTT bisher nur zur Kommunikation zwischen mehreren Raspberries...

betateilchen

#4
Zitat von: nicor2k am 10 Mai 2024, 14:19:32Läuft denn MQTT2_DEVICE mit einem externen Mosquitto?
Und das muss ja auch erst eingerichtet werden, oder?

MQTT2_DEVICE2 läuft nicht selbst mit dem externen mosquitto.

Du brauchst in Deinem FHEM ein device vom TYPE MQTT2_CLIENT, damit wird Dein FHEM zentral mit Deinem mosquitto verbunden.

Die Einrichtung ist denkbar einfach:

defmod mqtt2_Local MQTT2_CLIENT 192.168.123.241:1883

Die ip und der port beziehen sich auf den mosquitto Server!

Falls der mosquitto mit username und passwort gesichert ist, musst Du noch zwei weitere Dinge tun:

#1. Username angeben:

attr mqtt2_Local username strengGeheimerUsername

#2. Passwort setzen:

set mqtt2_Local password strengGeheimesPasswort

Den set Befehl musst Du natürlich nur einmal tun.
Danach wird sich jedes neu angelegte MQTT2_DEVICE automatisch diesen MQTT2_CLIENT als IODev zuordnen.

Bestehende MQTT2_DEVICES kannst Du natürlich problemlos entsprechend anpassen:

attr TYPE=MQTT2_DEVICE IODev mqtt2_Local


Zitat von: nicor2k am 10 Mai 2024, 14:19:32Ich hatte jedenfalls sehr lange gebraucht, um den Channel (bei dir ja cmnd/tasmota_2F1B0B/POWER off) zu finden. Jetzt, wo ich es weiß, hab ich es auch in der Tasmota Doku gefunden

Um sowas rauszufinden, verbindet man sich einfach zweimal auf die Weboberfläche des Tasmota devices.

  • In einem Fenster startet man die Konsole von Tasmota über den entsprechenden Button
  • Im anderen Fenster schaltet man einmal die Steckdose über die Weboberfläche ein und aus

Danach sieht man in der Konsole sämtliche benötigten mqtt topics inkl. Inhalt.
Einfacher geht es eigentlich nicht.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Christoph Morrison

Zitat von: nicor2k am 10 Mai 2024, 14:19:32Läuft denn MQTT2_DEVICE mit einem externen Mosquitto? Und das muss ja auch erst eingerichtet werden, oder?

Ja, du bindest den Mosquitto als MQTT2_CLIENT ein.

Zitat von: betateilchen am 10 Mai 2024, 12:19:30Lediglich der Teil "2F1B0B" muss an die eigene Tasmota-ID angepasst werden.


Kleiner Hinweis auf das Attribut devicetopic und $DEVICETOPIC

betateilchen

Zitat von: Christoph Morrison am 10 Mai 2024, 14:50:02Ja, du bindest den Mosquitto als MQTT2_CLIENT ein.

Steht oben schon.

Zitat von: Christoph Morrison am 10 Mai 2024, 14:50:02Kleiner Hinweis auf das Attribut devicetopic und $DEVICETOPIC

Korrekt, aber ich hatte das absichtlich weggelassen.
Das setzt nämlich voraus, dass man mqtt grundsätzlich verstanden hat.
Und wenn jemand darüber nachdenkt, von mosquitto auf MQTT2_SERVER umzubauen, ist diese Voraussetzung für mich nicht erfüllt.

Deshalb zuerst die "plain-Variante" mit topics, die einfach aus der Konsole von Tasmota kopiert wurden.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!