Shelly 1 mit Tasmota als Stromstossschalter Ersatz: Unterschied zwischen den Versionen
Aus znilwiki
BLinz (Diskussion | Beiträge) |
BLinz (Diskussion | Beiträge) |
||
(7 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 3: | Zeile 3: | ||
==Feste IP-Adresse setzen + Zeitserver== | ==Feste IP-Adresse setzen + Zeitserver== | ||
IP: | |||
IPAddress1 192.168.1.101 | IPAddress1 192.168.1.101 | ||
Gateway: | |||
IPAddress2 192.168.1.198 | IPAddress2 192.168.1.198 | ||
Subnetmaske: | |||
IPAddress3 255.255.255.0 | IPAddress3 255.255.255.0 | ||
DNS 1: | |||
IPAddress4 192.168.1.81 | IPAddress4 192.168.1.81 | ||
DNS 2: (ab Tasmota 11) | |||
IPAddress5 192.168.1.80 | |||
NtpServer1 192.168.1.198 | NtpServer1 192.168.1.198 | ||
und dann Übernehmen + Neustart mit | und dann Übernehmen + Neustart mit | ||
Zeile 24: | Zeile 30: | ||
==Taster Betrieb== | ==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):< | 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):<br> | ||
SwitchMode 4 | |||
SetOption13 1 | SetOption13 1 | ||
<code> | <code>SwitchMode 0</code> wäre der normale Betrieb, <code>4</code> ist Tasterbetrieb.<br> | ||
<code>SetOption13 1</code> ist etwas "Tuning" - normalweise schaltet der Shelly nachdem Ihr den Taster loslasst. Mit dieser Option wird sofort nach Kontakt geschaltet.<br> | <code>SetOption13 1</code> ist etwas "Tuning" - normalweise schaltet der Shelly nachdem Ihr den Taster loslasst. Mit dieser Option wird sofort nach Kontakt geschaltet.<br> | ||
---- | ---- | ||
Zeile 46: | Zeile 52: | ||
==MQTT HOLD Einstellung setzen== | ==MQTT HOLD Einstellung setzen== | ||
Mit dieser Änderungen bekommen wir eine Nachricht an den MQTT gesendet wenn der Button lange gedrückt wurde: | Mit dieser Änderungen bekommen wir eine Nachricht an den MQTT gesendet wenn der Button lange gedrückt wurde: | ||
SwitchMode 6 | |||
SwitchTopic 1 | SwitchTopic 1 | ||
SetOption32 3 | SetOption32 3 | ||
SetOption13 0 | SetOption13 0 | ||
<code> | <code>SwitchMode 6</code> ist wieder der Tastermodus (wie 4), aktiviert aber auch den Long Press Mode welcher dann ein "HOLD" sendet (zusätzlich zum gerade aktiven Zustand).<br> | ||
<code>SwitchTopic 1</code> aktiviert das Senden per MQTT der vorherigen Option<br> | <code>SwitchTopic 1</code> aktiviert das Senden per MQTT der vorherigen Option<br> | ||
<code>SetOption32 3</code> setzt die Zeit für einen langen Tastendruck auf 3 Sekunden. Alles darunter schaltet nur um.<br> | <code>SetOption32 3</code> setzt die Zeit für einen langen Tastendruck auf 3 Sekunden. Alles darunter schaltet nur um.<br> | ||
<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> | ||
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.<br> | 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.<br> | ||
Drückt man nun lange (in diesem Beispiel > 3 Sekunden) auf den Taster wird nun die Lampe auf der anderen Seite geschaltet.<br> | Drückt man nun lange (in diesem Beispiel > 3 Sekunden) auf den Taster wird nun die Lampe auf der anderen Seite geschaltet.<br> | ||
SwitchMode 6 | |||
SwitchTopic 0 | SwitchTopic 0 | ||
SetOption32 3 | SetOption32 3 | ||
Zeile 66: | Zeile 76: | ||
Rule1 ON Switch1#State=3 DO WebSend [192.168.1.114,admin:test1234] POWER TOGGLE ENDON | Rule1 ON Switch1#State=3 DO WebSend [192.168.1.114,admin:test1234] POWER TOGGLE ENDON | ||
Rule1 1 | Rule1 1 | ||
<code> | <code>SwitchMode 6</code> ist wieder der Tastermodus (wie 4), aktiviert aber auch die Auswertung des "Long Press".<br> | ||
<code>SwitchTopic 0</code> deaktiviert das Senden per MQTT, sonst ist die lokale Auswertung in einer RULE nicht möglich<br> | <code>SwitchTopic 0</code> deaktiviert das Senden per MQTT, sonst ist die lokale Auswertung in einer RULE nicht möglich<br> | ||
<code>SetOption32 3</code> setzt die Zeit für einen langen Tastendruck auf 3 Sekunden. Alles darunter schaltet nur um.<br> | <code>SetOption32 3</code> setzt die Zeit für einen langen Tastendruck auf 3 Sekunden. Alles darunter schaltet nur um. Die Option erwartet den Wert in 0.1 Sekunden-Schritten laut offzieller Anleitung. Ggf. müsst ihr etwas herumprobieren, bei mir scheinen 3 doch 3 Sekunden zu sein<br> | ||
<code>SetOption13 0</code> sorgt dafür das er erst wartet wir lange gedrückt wurde und erst dann reagiert.<br> | <code>SetOption13 0</code> sorgt dafür das er erst wartet wir lange gedrückt wurde und erst dann reagiert.<br> | ||
<code>Rule1 ON Switch1#State=3 DO WebSend [192.168.1.114,admin:test1234] POWER TOGGLE ENDON</code> bedeutet folgendes:<br> | <code>Rule1 ON Switch1#State=3 DO WebSend [192.168.1.114,admin:test1234] POWER TOGGLE ENDON</code> bedeutet folgendes:<br> | ||
Zeile 86: | Zeile 96: | ||
---- | ---- | ||
==Automatischen Ausschalten oder Einschalten nach x Sekunden Minuten== | ==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:<br> | Ich vergesse gerne mal im Ankleidezimmer das Licht auszuschalten. Das lässt sich leicht über eine Regel steuern:<br> | ||
Zeile 111: | Zeile 122: | ||
Typ (2 = Licht oder 1 = Steckdose) | Typ (2 = Licht oder 1 = Steckdose) | ||
Emulation 2 | Emulation 2 | ||
---- | |||
==WLAN - optimalen AccessPoint suchen== | ==WLAN - optimalen AccessPoint suchen== | ||
SetOption56 1 | SetOption56 1 | ||
Zeile 117: | Zeile 129: | ||
<code>SetOption57</code> wiederholt die Suche alle 44 Minuten und wechselt den AP sofern dieser 10dB stärker als der jetzige ist<br> | <code>SetOption57</code> wiederholt die Suche alle 44 Minuten und wechselt den AP sofern dieser 10dB stärker als der jetzige ist<br> | ||
---- | ---- | ||
==Anzeige Einstellungen== | ==Anzeige Einstellungen== | ||
SetOption53 1 | SetOption53 1 | ||
Zeile 127: | Zeile 140: | ||
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 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 Topic K39-Esstisch; MqttClient Client-K39-Esstisch; MqttHost 192.168.1.4; MqttPort 1883; MqttUser mqtt;MqttPassword test1234 | ||
Backlog | Backlog SwitchMode 4; Emulation 2; FriendlyName1 Tisch | ||
---- | ---- | ||
==2 Tasmota Geräte synchronisieren== | |||
Ich muss über einen Taster/Schalter 2 verschiedene Phasen schalten. | |||
Dazu habe ich den Taster mit dem ersten Shelly (mit Tasmota Firmware) verbunden. Wird dieser geschaltet synchronisiert dieser einen 2. Shelly: | |||
rule1 ON Power1#State=0 DO WebSend [192.168.2.34,admin:test1234] POWER1 OFF ENDON ON Power1#State=1 DO WebSend [192.168.2.34,admin:test1234] POWER1 ON ENDON | |||
rule1 1 | |||
Die IP | |||
192.168.2.34 | |||
ersetzt Ihr mit der IP des 2. Tasmota Gerätes | |||
admin,test1234 | |||
sind der Benutzername und Passwort für den Webzugriff | |||
---- | |||
==Kommentare== | ==Kommentare== | ||
<comments /> | <comments /> |
Aktuelle Version vom 28. März 2023, 16:11 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):
SwitchMode 4 SetOption13 1
SwitchMode 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:
SwitchMode 6 SwitchTopic 1 SetOption32 3 SetOption13 0
SwitchMode 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.
SwitchMode 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
SwitchMode 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. Die Option erwartet den Wert in 0.1 Sekunden-Schritten laut offzieller Anleitung. Ggf. müsst ihr etwas herumprobieren, bei mir scheinen 3 doch 3 Sekunden zu sein
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 SwitchMode 4; Emulation 2; FriendlyName1 Tisch
2 Tasmota Geräte synchronisieren
Ich muss über einen Taster/Schalter 2 verschiedene Phasen schalten. Dazu habe ich den Taster mit dem ersten Shelly (mit Tasmota Firmware) verbunden. Wird dieser geschaltet synchronisiert dieser einen 2. Shelly:
rule1 ON Power1#State=0 DO WebSend [192.168.2.34,admin:test1234] POWER1 OFF ENDON ON Power1#State=1 DO WebSend [192.168.2.34,admin:test1234] POWER1 ON ENDON rule1 1
Die IP
192.168.2.34
ersetzt Ihr mit der IP des 2. Tasmota Gerätes
admin,test1234
sind der Benutzername und Passwort für den Webzugriff