Shelly 1 mit Tasmota als Stromstossschalter Ersatz: Unterschied zwischen den Versionen
Aus znilwiki
BLinz (Diskussion | Beiträge) K (→Taster Betrieb) |
BLinz (Diskussion | Beiträge) |
||
Zeile 61: | Zeile 61: | ||
<code>SetOption13 0</code> sorgt dafür das er wartet wie lange Ihr den Taster drückt. Mit dieser Option reagiert er erst wenn man den Taster betätigt und wieder loslässt. Das Licht geht also erst an wenn man den Taster loslässt. Ist die gedrückte Zeit größer als die in der Option zuvor eingestellte Zeit so sendet er nur HOLD an den MQTT-Broker. | <code>SetOption13 0</code> sorgt dafür das er wartet wie lange Ihr den Taster drückt. Mit dieser Option reagiert er erst wenn man den Taster betätigt und wieder loslässt. Das Licht geht also erst an wenn man den Taster loslässt. Ist die gedrückte Zeit größer als die in der Option zuvor eingestellte Zeit so sendet er nur HOLD an den MQTT-Broker. | ||
Quelle: https://tasmota.github.io/docs/Buttons-and-Switches/ | Quelle: https://tasmota.github.io/docs/Buttons-and-Switches/ | ||
Das Ergebnis erscheint unter diesem MQTT-Pfad: | |||
cmnd/MQTT-Topic-Des-Gerätes/POWER1 | |||
Dort gibt es dann die Meldung "HOLD" | |||
---- | ---- | ||
==Bei HOLD anderes Tasmota-Gerät schalten== | ==Bei HOLD anderes Tasmota-Gerät schalten== | ||
Statt der Auswertung per MQTT kann der Shelly auch direkt auf einen langen Tastendruck reagieren und einen anderen Shelly mit Tasmota-Firmware schalten.<br> | Statt der Auswertung per MQTT kann der Shelly auch direkt auf einen langen Tastendruck reagieren und einen anderen Shelly mit Tasmota-Firmware schalten.<br> |
Version vom 31. Juli 2022, 10:19 Uhr
Ich nutze zu Hause den Shelly 1 mit Tasmota-Firmware. Ich habe vor meine vorhandenen Stromstoßschalter (40 Stück) durch diesen zu Ersetzen.
Bei der Einrichtung der ersten 12 habe ich diese Seite erstellt um die ganzen Einstellungen und Konsolenbefehle als Copy&Paste zur Verfügung zu haben.
Feste IP-Adresse setzen + Zeitserver
IP: IPAddress1 192.168.1.101 Gateway: IPAddress2 192.168.1.198 Subnetmaske: IPAddress3 255.255.255.0 DNS 1: IPAddress4 192.168.1.81 DNS 2: (ab Tasmota 11) IPAddress5 192.168.1.80 NtpServer1 192.168.1.198
und dann Übernehmen + Neustart mit
restart 1
Hostnamen setzen
DeviceName K01-Flur-EG Hostname K01-Flur-EG
sollte automatisch neu starten
Web Passwort setzen
WebPassword test1234
Benutzername ist admin
Taster Betrieb
Ab Werk schaltet der Shelly nun ein wenn an SW 230V anliegen. Wir wollen aber mit einem kurzen Stromstoß zwischen den Zuständen umschalten (wie ein Stromstoßschalter):
SwitchMode1 4 SetOption13 1
SwitchMode1 0
wäre der normale Betrieb, 4
ist Tasterbetrieb.
SetOption13 1
ist etwas "Tuning" - normalweise schaltet der Shelly nachdem Ihr den Taster loslasst. Mit dieser Option wird sofort nach Kontakt geschaltet.
MQTT einstellen
Topic K01-LichtFlurEG MqttClient Client-K01-LichtFlurEG MqttHost 192.168.1.8 MqttPort 1883 MqttUser mqtt MqttPassword test1234
Die nächsten beiden Befehle sorgen bei neueren Versionen (9.x) dafür das bei den Nachrichten das Retain-Flag gesetzt wird
stateretain 1 inforetain 1
MQTT HOLD Einstellung setzen
Mit dieser Änderungen bekommen wir eine Nachricht an den MQTT gesendet wenn der Button lange gedrückt wurde:
SwitchMode1 6 SwitchTopic 1 SetOption32 3 SetOption13 0
SwitchMode1 6
ist wieder der Tastermodus (wie 4), aktiviert aber auch den Long Press Mode welcher dann ein "HOLD" sendet (zusätzlich zum gerade aktiven Zustand).
SwitchTopic 1
aktiviert das Senden per MQTT der vorherigen Option
SetOption32 3
setzt die Zeit für einen langen Tastendruck auf 3 Sekunden. Alles darunter schaltet nur um.
SetOption13 0
sorgt dafür das er wartet wie lange Ihr den Taster drückt. Mit dieser Option reagiert er erst wenn man den Taster betätigt und wieder loslässt. Das Licht geht also erst an wenn man den Taster loslässt. Ist die gedrückte Zeit größer als die in der Option zuvor eingestellte Zeit so sendet er nur HOLD an den MQTT-Broker.
Quelle: https://tasmota.github.io/docs/Buttons-and-Switches/
Das Ergebnis erscheint unter diesem MQTT-Pfad:
cmnd/MQTT-Topic-Des-Gerätes/POWER1
Dort gibt es dann die Meldung "HOLD"
Bei HOLD anderes Tasmota-Gerät schalten
Statt der Auswertung per MQTT kann der Shelly auch direkt auf einen langen Tastendruck reagieren und einen anderen Shelly mit Tasmota-Firmware schalten.
Ich nutze das für die Nachtischlampen - bei mir ist neben dem Bett auf jeder Seite ein Taster welcher die jeweilige Nachtischlampe ein- oder ausschaltet.
Drückt man nun lange (in diesem Beispiel > 3 Sekunden) auf den Taster wird nun die Lampe auf der anderen Seite geschaltet.
SwitchMode1 6 SwitchTopic 0 SetOption32 3 SetOption13 0 Rule1 ON Switch1#State=3 DO WebSend [192.168.1.114,admin:test1234] POWER TOGGLE ENDON Rule1 1
SwitchMode1 6
ist wieder der Tastermodus (wie 4), aktiviert aber auch die Auswertung des "Long Press".
SwitchTopic 0
deaktiviert das Senden per MQTT, sonst ist die lokale Auswertung in einer RULE nicht möglich
SetOption32 3
setzt die Zeit für einen langen Tastendruck auf 3 Sekunden. Alles darunter schaltet nur um.
SetOption13 0
sorgt dafür das er erst wartet wir lange gedrückt wurde und erst dann reagiert.
Rule1 ON Switch1#State=3 DO WebSend [192.168.1.114,admin:test1234] POWER TOGGLE ENDON
bedeutet folgendes:
ON Switch1#State=3
wenn der HOLD Status ermittelt wurde (siehe https://tasmota.github.io/docs/Rules/#rule-trigger)DO
dann tue folgendes ...WebSend [192.168.1.114,admin:test1234] POWER TOGGLE
sende an das Geräte 192.168.1.114 mit dem Benutzer admin und dem Passwort test1234 den Befehl TOGGLE = von an auf aus oder umgekehrt wechseln. Ist der andere Tasmota nicht mit einem Passwort geschützt so lasst den Teil nach dem Komma weg, die IP muss aber trotzdem in eckige KlammernENDON
= Ende der Anweisung
Rule1 1
Aktiviert die Regel auch.
Und was ist mit MQTT?
Es geht nur entweder oder - entweder den Button/Tasterstatus an MQTT setzen oder den lokal in einer Rule direkt auswerten.
Um das trotzdem per MQTT zu erfassen:
cmnd/NameDesTasmota/RESULT
Meldet der Tasmota immer den letzten Befehlsstatus. Falls die Rule gegriffen hat steht dort
{"Websend":"Done"}
- hier wollte ich mit einer Rule einfach per Publish was an MQTT senden ... aber dann reagierte der Tasmota lokal nicht ... also müsste ich das alles mit in die Rule bauen ... was nicht geklappt hat.
Automatischen Ausschalten oder Einschalten nach x Sekunden Minuten
Ich vergesse gerne mal im Ankleidezimmer das Licht auszuschalten. Das lässt sich leicht über eine Regel steuern:
rule1 on power1#state do backlog power1 %value%; ruletimer1 600 endon on rules#timer=1 do power1 off endon
Den Wert von ruletimer1
müsst Ihr an die gewünschte Zeit in Sekunden anpassen.
power1 off
schaltet nach Ablauf der Zeit ab, für ein Einschalten müsst Ihr den Wert auf on
ändern.
Nun noch die Regel aktivieren / einschalten:
rule1 1
mit
rule1 0
würde man diese wieder deaktivieren.
Wenn Ihr Ihr rule1
ohne Parameter angebt so wird der Status + die Regel angezeigt.
Die Regel reagiert auf eine Änderung des Power-Status. Das habe ich gemacht weil es so auch im Tastermodus funktioniert - und auch wenn das Gerät z.B. über das Webinterface geschaltet wird.
Hier werden die Rules auch noch mal ganz gut erklärt: https://forum.creationx.de/lexicon/index.php?entry/24-rules/
Beachtet aber das der Artikel schon etwas älter ist, inzwischen gibt es ggf. weitere Trigger und Möglichkeiten.
Emulation einstellen (Amazon Echo & Co)
Der FriendlyName ist der Name unter dem z.B. der Amzon Echo das Gerät findet und auch in der App anzeigen wird.
FriendlyName1 Licht Flur Erdgeschoss
Typ (2 = Licht oder 1 = Steckdose)
Emulation 2
WLAN - optimalen AccessPoint suchen
SetOption56 1 SetOption57 1
SetOption56
sucht beim booten nach dem signalstärksten AccessPoint und verbindet sich mit diesem
SetOption57
wiederholt die Suche alle 44 Minuten und wechselt den AP sofern dieser 10dB stärker als der jetzige ist
Anzeige Einstellungen
SetOption53 1 WebColor {"WebColor":["#eaeaea","#252525","#4f4f4f","#000000","#dddddd","#65c115","#1f1f1f","#ff5661","#008000","#faffff","#1fa3ec","#0e70a4","#d43535","#931f1f","#47c266","#5aaf6f","#faffff","#999999","#eaeaea"]}
SetOption53
zeit den Hostnamen und die IP-Adresse auf der Webseite oben an
Der WebColor
stellt die Standard-Farben ein (dunkles Design, ältere geräte haben ggf. noch helles Design)
Alles auf einmal - Backlog
Mit dem Befehl Backlog kann man mehrere Settings auf einen Schlag setzen, bis zu 30. Nach dem Befehl einen Moment warten, dann sieht man wie dieser Übernommen wird:
Backlog IPAddress1 192.168.1.139; IPAddress2 192.168.1.198; IPAddress3 255.255.255.0; IPAddress4 192.168.1.81; NtpServer1 192.168.1.198; DeviceName K39-Esstisch; Hostname K39-Esstisch Backlog Topic K39-Esstisch; MqttClient Client-K39-Esstisch; MqttHost 192.168.1.4; MqttPort 1883; MqttUser mqtt;MqttPassword test1234 Backlog SwitchMode1 4; Emulation 2; FriendlyName1 Tisch