NEWS
[NICHT GELÖST] - Shelly mit Taster: langes Drücken
-
Tach!
Ich habe ein Eltako mit einem Shelly 1 (Tasmota) ausgetauscht. Über "SwitchMode4" kann ich jetzt schön mit den 3x Tastern das Licht ein-/ausschalten. Mit "SwitchMode6" möchte ich nun zusätzlich das lange Drücken aktivieren, jedoch weiss ich nicht, wie Tasmota diese Info verschickt bzw. wo die Info ankommt. Einen Datenpunkt für "Longpress" (o.Ä.) gibt es nicht.
In der Tasmota Doku steht nur, dass "HOLD" verschickt wird. Aber wie fange ich das ab bzw. woher bekomme ich die Info? Geht das nur über Rules?
Wenn es nur über Rules geht: wie kann ich eine boolsche Variable damit steuern?
Rule
ON Switch1#State=3 DO VariableXYZ ENDONGruss
Puls -
Wäre das nicht die Anforderung?
Tasmota sendet per MQTT den "HOLD" oder andere (daher noch weitere). Mit einem Trigger fängst du cmnd/POWER ab. Jetzt kannst du reagieren.
oder per JS:
on({id: 'mqtt.0.SmartHome.NSPanel_1.cmnd.POWER1' , change: "ne"}, async function (obj) { switch ((obj.state ? obj.state.val : "")) { case 'HOLD': ****mache etwas***** break; } });
-
@armilar Wie komme ich denn an das Objekt "SmartHome/NSPanel_1/cmnd/POWER1"? Unter Objekte finde ich nix... meins sollte natürlich anders heissen, aber unter meinem Shelly finde ich nichts vergleichbares... Wie kann ich auf .../cmnd/POWER1 zugreifen??!
-
Worüber kommuniziert denn der Shelly mit Tasmota? Sonoff-Adapter oder MQTT-Adapter. Ich wüsste keine weiteren Optionen. Unter welchem der beiden ist er denn eingebunden?
-
@puls200 wenn du mit dem den Sonoff-Adapter arbeitest wirst du die Meldung nicht sehen können.
Das kannst du an der Stelle nur abgreifen du einen anderen MQTT-Broker verwendest (z.B. den MQTT Adapter als Server).Oder willst du mit den HOLD (langen drücken) ein anderes Tasmota-Gerät schalten?
Das ginge z.B. mit einer Rule:
ON Switch1#State=3 DO WebSend [192.168.2.27,admin:passwort] POWER TOGGLE ENDON
Schaltet z.B. die 192.168.2.27 um wenn der Button lange gedrückt wird.
Per simple-api (Extra Adapter "Enfache RESTful API", musst du ggf nachinstallieren) könnte man das so auch senden, im Webbrowser wäre das Beispiel
http://ipaddress:8087/set/javascript.0.test?value=1
(siehe https://github.com/ioBroker/ioBroker.simple-api), per rule sollte das so aussehen:ON Switch1#State=3 DO WebSend [192.168.1.8:8087] /set/javascript.0.test?value=1
oder was für ein Wert es auch sein soll. Siehe auch https://tasmota.github.io/docs/Commands/#wi-fi
-
@bananajoe OK, einen funktionierenden HTTP-Befehl habe ich mir gebastelt, der eine boolsche Variable auf 1 bzw. 0 setzt. Mit einem "Longpress" möchte ich nun diese Variable auf 1 setzen, um dann letztendlich alle Jalousien zu schliessen. Mit dem normalen Tasterdruck schalte ich nur das Wohnzimmerlicht ein und aus.
Rule1
ON Switch1#State=3 DO WebSend <IP-adress>:8082/set/0_userdata.0.Wohnzimmer_Longpress?user=<user>&pass=<password>&value=1 ENDONIch kapiere noch nicht so richtig, was ich nun in Tasmota konfugurieren muss. Es gibt ja Switch-Modes, Buttons, SetOption, etc.
Kann mir einer sagen, was ich zu tun habe?
-
@puls200 Na sowie ich das verstanden habe, setzt Du mit einem LongPress über eine Tasmota RULE einen Datenpunkt über die simpleAPI.
Nun musst Du nur noch mit Deiner Logikmaschine auf diesen Datenpunkt reagieren und damit Deine Rollläden steuern.
-
@mickym Ja, aber ich muss Tasmota doch sagen, dass es ein Longpress gibt bzw. dass Tasmota eien Longpress ausgeben soll. Nur wie?
-
@puls200 Ok - das wir @BananaJoe wohl besser wissen, aber ich gehe mal davon aus, dass Du einmalig
mit Deinem SwitchMode=6 das einstellst. Das brauchst Du doch nur in der Tasmota Konsole eingeben. Wenn Du das eingetippt hast, dann solltest Du in dem State Datenpunkt ja dann sehen, ob es geklappt hat. Ob der State nun 3 ist ,kann ich im Moment nicht erkennen, aber das wirst Du ja irgendwoher gelesen haben.
-
@puls200 der Tasmota muss - wie du oben geschrieben hast - auf
SwitchMode 6 SetOption13 0 SetOption32 3
von meiner Webseite:
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.Meine Taster / Shellys laufen ansonsten alle mit
SwitchMode1 4
undSwitchMode13 1
, dann geht das Licht an sobald man den Taster betätigt. Ist dann bei Taster mit Doppelbelegung ungewohnt ... aber irgendetwas ist ja immerNachtrag: Ok, früher hieß das
SwitchMode1
, es ist egal ob manSwitchMode
oderSwitchMode1
schreibt, ich habe es aber mal geändert -
@puls200 sagte in Shelly mit Taster: langes Drücken:
@bananajoe OK, einen funktionierenden HTTP-Befehl habe ich mir gebastelt, der eine boolsche Variable auf 1 bzw. 0 setzt. Mit einem "Longpress" möchte ich nun diese Variable auf 1 setzen, um dann letztendlich alle Jalousien zu schliessen. Mit dem normalen Tasterdruck schalte ich nur das Wohnzimmerlicht ein und aus.
Rule1
ON Switch1#State=3 DO WebSend <IP-adress>:8082/set/0_userdata.0.Wohnzimmer_Longpress?user=<user>&pass=<password>&value=1 ENDONIch glaube ja nicht das der Befehl funktioniert ... Laut Hilfe muss die IP+Port in
[ ]
und dann ein Leerzeichen und dann der URL-Pfad. Ansonsten würde http davor gehören und wäre aber nur bei der direkten Kommunikation mit einem anderen Tasmota-Gerät erlaubt.Aber - Ausprobieren! Und wenn du deine fertige Lösung hast hier posten.
Und nicht vergessen die
rule1
auch einzuschalten:rule1 1
Die Authentifizierung hast du im Adapter aktiviert? Weil du Benutzername + Passwort verwendest. Aber du hast das ja vorher im Webbrowser getestet.
-
@bananajoe Geil... genau diese Seite hatte ich vor einigen Tagen/Wochen schon gefunden und habe gestern genau das gemacht, was da stand. Ich hatte mich schon gewundert, warum das jetzt "SwitchMode 6" heisst und nicht "SwitchMode1 6".
Leider ist dann aber mein Shelly nicht mehr ansprechbar gewesen, so dass ich ihn mit "Reset 6" resetten musste. Es kann aber sein, dass ich noch andere Optionen aktiviert habe, die dann letztendlich den Shelly abgeschossen haben.
Ich probiere es heute abend nochmal aus...
-
Achso nochwas: ich nutze nur den Sonoff Adapter, nicht den MQTT Broker. Ist das ein Problem?
-
-
@bananajoe: OK, also wenn ich folgende 4x Befehle über die Konsole absetze, sollte es aus Sicht des Shellys funktionieren?
SwitchMode 6
SwitchTopic 1
SetOption32 3
SetOption13 1Und wenn ich Dich richtig verstehe, empfängt der Sonoff-Adapter nicht alle MQTT-Daten, daher muss ich auf den MQTT-Broker umsteigen, wenn ich HOLD nutzen will?!
-
@puls200 sagte in Shelly mit Taster: langes Drücken:
Ja, mit den 4 Befehlen funktioniert es bei mir (Tasterbetrieb)
Und wenn ich Dich richtig verstehe, empfängt der Sonoff-Adapter nicht alle MQTT-Daten, daher muss ich auf den MQTT-Broker umsteigen, wenn ich HOLD nutzen will?!
Weis ich nicht. Ich nutze den Sonoff nicht. Probier aus ob der dir etwas anzeigt. Normalerweise wird über den
.../cmnd/...
nichts gesendet, ich weis nicht ober der Sonoff-Adapter das verarbeitet.Alternativ MQTT pur - aber dann hast du keinen True/False Datenpunkt mehr zum schalten (die sind gerade in der VIS sehr praktisch) und müsstest das - wie ich - per Skript lösen. Alias geht vermutlich auch ... eher nicht (da kommt ein JSON als Antwort)
Oder, wie ich schon gleich in einer meiner ersten Antworten geschrieben habe https://forum.iobroker.net/post/879895
nutzt du z.B. die Simple API und lässt per Rule einen Datenpunkt umschalten. Wenn Hold setzt du den auf 1, dein Script reagiert und setzt den wieder auf 0 damit du die nächste Änderung mitbekommst.Also, Teste Sonoff, und wenn es nicht geht nimm die Rule-Lösung
-
Also:
Über den Sonoff kriege ich kein LONG PRESS raus. Wenn ich die vier Tasmota-Optionen über die Konsole absetze, reagiert Tasmota gar nicht mehr, so dass ich ihn mit Hilfe von RESET 6 zurücksetzen muss.
Diese vier Optionen funktionieren nicht bei mir:
SwitchMode 6
SwitchTopic 1
SetOption32 3
SetOption13 0Gruss!
Puls -
@puls200 was für ein Tasmota (Version) mit welchen Template nutzt du denn?
Und du hast einen Taster dran, ja? Längeres Drücken würde/könnte ansonsten einen Reset auslösenIch habe nun ja auch eine paar Shelly 1 im Betrieb, alle nach meiner eigene Anleitung:
https://znil.net/index.php?title=Shelly_1_mit_Tasmota_als_Stromstossschalter_ErsatzSonst teste dich mal Stück für Stück durch. Die Anleitung habe ich neulich für 12.x Tasmota überarbeitet
-
@bananajoe Ich nutze einen Shelly1 mit dem Shelly1-Tasmota-Template.
Ich habe ja genau nach Deiner Anleitung Alles befolgt, leider kappt es aber nicht. Ich werde mal mit einem anderen Shelly1 das ganze nochmal neu probieren. Ich kann mir zwar schwer vorstellen, dass die HOLD-Funtkion bedingt durch einen Hardware-Fehler nicht funktioniert, aber man weiss ja nie.
-
@puls200 und die Version?