Shelly1, langer und kurzer Tastendruck

  • Idee?


    Rule 4 kann im 'Rule-Set' Rule3 untergebracht werden:

    Code
    Rule1 on Switch1#State=2 do backlog Power1 1; RuleTimer1 120 endon on Rules#Timer=1 do Power1 0 endon
    Rule2 on Switch1#State=2 do Power1 0 endon
    Rule3 on Switch1#State=3 do backlog Power1 1; RuleTimer1 600; Power1 3 endon on Rules#Timer=1 do Power1 0 endon on Power1#State=0 do backlog Rule1 1; Rule2 0 endon on Power1#State=1 do backlog Rule1 0; Rule2 1 endon


    zum Script Editor:

    Hier gibts eine fertige .bin 230V WLAN Tast-DIMMER 150W für LED, Halogen etc.


    ist aber z.B. Online inner Minute erstellt (link in meiner Signatur).


    Einstellungen verliert man i.d.R. nicht, man kann sie auch unter Konfiguration sichern,

    aber es ist immer mal besser Reset 5 auszuführen und dann neu zu konfigurieren

    (mit gespeicherten Einstellungen aus einer Text-Datei z.B.).


    LG

  • Nochmals danke für Deine Antwort!


    Ich Trottel könnte nun natürlich von oben nach unten alles lesen und verstehen und nicht direkt losrennen. ;-)


    Denn klar, mit den von Dir optimierten Regeln (ich Trottel habe erst nicht geblickt, dass ich ja "on X do" hintereinander schreiben kann) wäre alles natürlich direkt so mit dem Standard Tasmota möglich gewesen.


    So habe ich den geilen Online Compiler natürlich erstmal ausprobieren müssen und auch erfolgreich anwenden können. Dazu sollte man aber wissen, dass SUPPORT_IF_STATEMENT von USE_EXPRESSION abhängig ist. Zumindest gab es ohne USE_EXPRESSION Fehlermeldungen beim Compilern. Und genau diese Fehlermeldung gab es bei meiner lokalen Ardiuno Umgebung auch, lag also nicht daran. Mist, hätte also gestern schon ohne die Onlinevariante ne Firmware haben können. Aber ich glaube, ich bleibe bei online, muss ich lokal schon nichts pflegen. Daher danke für den Tipp - man sollte doch hin und wieder in die Footer schauen!


    Habe nun die Sache mit IF ELSE schick am Laufen (ich kann kurz und lange einschalten und jederzeit wieder ausschalten - also genau das, was ich wollte) mit folgenden Regeln:


    Rule1 on Power1#State=0 do Mem1 0 endon on Power1#State=1 do Mem1 1 endon on Rules#Timer=1 do Power1 off endon

    Rule2 on Switch1#State=2 do if (Mem1==0) backlog Power1 on; RuleTimer1 120 else Power1 off endif endon

    Rule3 on Switch1#State=3 do backlog Power1 on; RuleTimer1 600; Power1 3 endon


    Frage: Wenn ich nun ein OTA Update aus dem Internet mache, sind dann die IF ELSE Statements wieder ungültig? Vermutlich schon nehme ich an?


    Viele Grüße,

    Roi

  • sind dann die IF ELSE Statements wieder ungültig?

    Hi, ja, wird dann auf ein "Unknown" bzw. Nicht-Ausführen der Bedingung rauslaufen.


    Man kann auch die Regeln von oben ohne if..else verwenden, die genau dasselbe erledigen

    und wohl auch weniger Speicher fressen, als mit if..else Option im Code.

  • Hallo!


    Kurze Frage: Ganz oben schreibt NoitaercX im Quelltext SwitchTopic1 0 ...


    Was ich nun machen wollte: Den Shelly mit Tastern (kurzer oder langer Druck) steuern und dann

    je nachdem wie gedrückt wird über MQTT verschiede Geräte ansteuern.

    Der Shelly der gesteuert wird muss im Prinzip nur MQTT senden. Der Ausgang geht ins Leere.


    Ich war total froh, dass der sowas unterscheiden kann. Aber ich verstehe diese Option nicht.

    Würde das was ich vorhabe klappen? Also Tastendruck differezieren und dann entsprechde MQTT Message senden?

    Wie ich die Beschreibung der Option verstehe, werden eingehende MQTT Befehle nicht ausgeführt.


    Falls ich richtig liege, habt ihr eine Beispiel Rule zum Zeigen.


    Es geht um einen Flur, in dem ich jetzt bei kurzem Tasten nur eine kleine Hängelleuchte schalten möchte und bei langem Tasten

    alle Deckenleuchten einschalten möchte. Die Lampen haben dann Dauerphase mit Sonoffs oder Shellys, je nachdem was reinpasst.


    Viele Grüße


    Manuel

  • Hi, vielen Dank! Ich habe das probiert gestern.

    Das ist ja der Knaller, was da alles gehen könnte ...


    Es sollte doch auf Anhieb klappen, oder?


    Der MQTT Server läuft ja. Aber es tut sich schon nichts, wenn ich an Gerät1 in der Konsole publish cmnd/test0815/POWER1 2 reingebe.

    Gerät2 mit Topic test0815 bekommt nichts...


    Somit waren auch die Rule Versuche fruchtlos.


    Viele Grüße


    Plauzentiger


  • Moin, sorry fürs reingrätschen,

    Funktioniert bei mir mit nem Sonoff Mini soweit.

    Allerdings hab ich bei mir den SwitchMode 5 genommen.

    Wenn ich jetzt das Licht wieder aus machen möchte innerhalb der 180 sec. geht das nur mit 2 sec drücken.

    Und wenn ich dann sofort auf Dauerlicht schalten möchte geht das Licht zwar wieder an, allerdings läuft im Hintergrund der 180sec Timer ab und das Licht ist dann trotzdem irgendwann aus...


    Vielleicht ne Idee?

    Gruß

    Thorsten

    40x Shelly/Sonoff (Tasmota)

    2 x Yeelight (Xiaomi)

    Raspberry Pi4b mit ioBroker und ner kleinen VIS

    Conbee2 mit Ikea, Xiaomi und Philips Aktoren

  • Hi!

    Versuche es mal mit toggle anstelle von 2 bzw. on für 1 und off. Mit 1,0 und 2 hat ein Sonoff Basic auch bei mir nicht zuverlässig geschaltet, aber mit den entsprechenden Worten.

    Nee. Tut auch nicht.

    Also in der Konsole von Shelly test0815x funktioniert cmnd/test0815x/POWER on wunderbar . Aber aus der Konsole des Senders mit "publish" nicht.

    Hier wird es ausgeführt, und im Protokoll vom MQTT Broker im Symcon erscheint es auch, aber der Shelly test0815x macht keinen Mugs in der Konsole.


    12.12.2019, 00:57:49 | MQTT:RX:PUBLISH | Topic: cmnd/test0815x/POWER, Payload: off


    Verstehe ich nicht! Warum macht der nur ein RX er sollte das doch weitergeben.

    Hat da jemand einen Tipp?


    Danke!

    Plauzentiger

  • Ich komme ein wenig mit den Bezeichnungen durcheinander. Mal schreibst du von test0815x, mal test0815? Sind das deine zwei Geräte, die kommunizieren sollen, oder handelt es sich um dasselbe Gerät? Ein falscher Buchstabe reicht bekanntlich um Misserfolg zu haben ;-). Ist der MQTT-Broker korrekt eingetragen? Ist MQTT auch wirklich aktiv? Prüfe noch einmal genau die Gerätebezeichnungen (topic). Prüfe, ob die Struktur %prefix%/%topic% bei beiden Geräten gleich ist. Ich hatte mal durch eine Fehlbedienung bzw. setzen von setoption19 1 eine veränderte Struktur an diesem Geräte nämlich %topic%/%prefix%. Mittlerweile arbeite ich nur noch mit der zweiten Struktur. Dem MQTT-Broker ist es völlig egal, was er per publish angeliefert bekommt. Aber wenn kein Gerät auf das publish-Statement hört, passiert eben auch nix. Prüfe also, ob das Gerät, das nicht hören will, seinerseits MQTT-Statements herausgibt und wie die aussehen, wenn du händisch oder per Weboberfläche schaltest bzw. Statusabfragen machst. Das ist schon merkwürdig. Bisher kannte ich Fälle, wo die Geräte nicht auf http-Statements "hörten", aber MQTT ging immer.

  • Allerdings hab ich bei mir den SwitchMode 5 genommen.

    Hängt mit der unterschiedlichen Hardware zusammen

    und wie der Schalteranschluss verdrahtet ist.


    geht das nur mit 2 sec drücken.

    ja, ist in der Rule so vorgesehen -

    könnte man vertauschen, was bei kurz oder lange Drücken passiert

    oder aufwändiger mit "if" Bedingung entscheiden.

  • Hallo!

    Danke für die Tipps!


    Prüfe also, ob das Gerät, das nicht hören will, seinerseits MQTT-Statements herausgibt und wie die aussehen, wenn du händisch oder per Weboberfläche schaltest bzw. Statusabfragen machst.

    Aber echt, alles andere läuft perfekt. Ich kann auf Webseite schalten und es kommt am Broker an. Ich kann cmnd in der Konsole machen, läuft. MQTT geht raus. WebOberfläche von IP Symcon zeigt das instantan an. Ich schalte auf der IP Symcon WEbseite MQTT geht raus und der test0815x schaltet.

    Nur sobald ich publish mache, geht die Message nur an Broker und Ende.

    Und das geht von keinem der 6 Shellys oder Sonoffs Tasmota Konsolen publish cmnd/test0815x/power on ... nur der Broker logged das ... verstehe ich nicht. Sowas nervt mich! Wieso geht das bei mir nicht?


    Oder geht das nur aus Rules heraus, nein...


    Viele Grüße


    Manuel

  • Nur sobald ich publish mache, geht die Message nur an Broker und Ende.

    Wenn die Meldung an den Broker geht, aber das adressierte Gerät nicht reagiert, dann hat das adressierte Gerät vielleicht keinen subscribe auf den Broker bzw. auf das Topic, das du ansprichst. Es riecht etwas nach einem sogenannten logischen Fehler - also formal alles richtig, aber an den Inhalten (topic, payload) stimmt was nicht.


    Wenn ich dich richtig verstehe, kannst du also von einem anderen Gerät exakt denselben publish absetzen und der kommt beim Zielgerät an? Wenn das so ist, würde ich die Firmware noch einmal neu aufspielen. Irgendein Bit wird dann wohl gekippt sein...

  • Hi Jörg,

    nein bei keinem der Shelly klappt dieses publish.

    Sonst läuft die gesamte MQTT Sache wunderbar. Das habe ich jetzt festgestellt weil ich über eine Rule verschiedene Shelly ansteuen will. Es geht um einen Flur bei dem die Lampen parallel geschaltet sind. Dann habe ich drei parallel liegende Bewegubgsmelder, Schalter. Die sollen zu tastern werden, mit dem shelly als Sender, der dann den sonoffs und shelly in den Lampen die Befehle gibt. So kann ich die einzeln steuern und das auch mit nem Taster. Die lampen hab ich dann auf ner dauerphase. Zu kompliziert?


    Und jetzt hab ich mich soo gefreut, dass das alles geht und moepp...


    Warum es bei allen nicht geht... Das muss was systematisches sein. Firmwareupdate wäre doof. Da hier alles von unten verlegt ist, sind die dosen so eng. Ich muss immer mit den kaiserschrauben arbeiten damit der Schalter bleibt wo der ist.


    Der wichtige shelly liegt noch im testaufbau auf dem Schreibtisch.


    Also kann doch nicht sein...

  • nein bei keinem der Shelly klappt dieses publish.

    Das scheint also ein Shelly-Problem oder eben ein Firmware-Problem zu sein. Zu Shelly kann ich nix sagen, habe nur Sonoffs.


    Zum Firmware-Update: Du kannst doch übers WLAN updaten, wenn alle Geräte einen guten Empfang haben. Da musst du doch nichts schrauben. Aus Sicherheitsgründen mache ich

    a) eine Sicherung der Konfiguration (Einstellungen -> Konfiuration sichern)

    b) spiele die minimal firmware.bin auf (selbst wenn das Gerät neben mir auf dem Tisch liegt)

    c) spiele die Vollversions firmware.bin auf

  • Schon ziemlich OT, aber ob Shelly oder sonst ein ESP Gerät mit Tasmota,

    macht hier keinen Unterschied.


    Ich kenne Symcon nicht, läuft da ein vollwertiger MQTT Broker drauf?

    Das Problem gibts genauso bei Plugins von ioBroker etc.

    Sie empfangen zwar, leiten aber nicht direkt weiter.


    Sonst hänge dich mal mit MQTT.fx o.ä. dazwischen,

    um mehr rauszufinden.

  • NoitaercX

    Symcom nutzt den Port 1024 für MQTT. Da Plauzentiger schreibt, dass er die Nachricht im Broker sieht, gehe ich davon aus, dass er den Standardport aus der Tasmota-Konfiguration von 1883 auf 1024 geändert hat. Ansonsten könnte das eine Fehlerquelle sein: Tasmota sendet zwar an 1024 hört aber weiterhin auf 1883. Wer weiß....

  • Sobald man auf einem Tasmota Gerät den Broker konfiguriert (egal welche IP und Port),

    sollte das Gerät eigentlich nur mehr genau darauf horchen,

    ja, aber wer weiß :)


    Für mich sieht es halt so aus, als ob Symcon da nichts weiter gibt.

    Mit MQTT.fx... würde man schnell sehen, ob ein publish die "richtige Runde dreht".


    LG