NEWS
[Adapter] Shelly Adapter mit MQTT
-
Hallo zusammen,
erst einmal danke für den super tollen Adapter
Ich hab am Wochenende einen:
https://shelly.cloud/products/shelly-button-1-smart-home-automation-device/connected und freute mich, dass dieser auch funktioniert.
Der Buttonklick wird unter der variable "Event" angezeigt.
S für Short
SS für 2x Short
usw.Allerdings wird (wenn ich es richtige verstehe) (vielleicht mach ich auch etwas falsch?)
Wenn ich zuerst einmal kurz drücke und warte und dann noch einmal kurz drücke, nicht zweimal
der Wert "s" gesetzt, sondern nur einmal.
Wenn ich also auf die Variable "Event" "Lausche" bekomme ich den zweiten Klick (wenn es der gleiche Event wie der Vorgänger ist) nicht mit.Sollte man das anders Abfragen?
Oder sollte das Event ggf. doch doppelt gesetzt werden?Viele Grüße
BB -
@BlueBook , die Frage gab es schon ein einmal und wurde an Shelly weitergereicht. Wenn ich mich richtig erinnere, muss man warten bis der Button nicht mehr leuchtet. Anders geht es leider nicht.
-
@Stuebi Danke für die Info.
Ja, mit der Verzögerung hatte ich zuerst auch nicht gerechnet, ist für mich aber okay und auch verständlich, da der Button zum Strom sparen nicht dauerhaft ins WLAN connected ist.
Jeder Event braucht so seine 2-3 Sekunden. Man kann aber einstellen, wie lange der Button nach dem Klick aktiv bleibt - so könnte man schnelle Klicks hintereinander beschleunigen.Vielleicht hatte ich mich mit meiner Frage undeutlich ausgedrückt.
Folgendes Skript:
wird, wenn man zwei mal hintereinander die gleiche Aktion ausführt, nur einmal getriggert.
Anscheinend wird der Wert in der Variable "Event" nicht neu gesetzt - wenn der gleiche Event ein zweites Mal getriggert wird.
Zumindest steht in der Objektansicht bei Event noch der alte Zeitstempel.Das man zweimal hintereinander aber die gleich Aktion ausführt - wenn man z.B. eine Lampe darüber ein- und ausschaltet - halte ich für eine "normale" Anforderung. Diese bekomme ich aber schlecht abgebildet. Dies über die Uptime des Buttons abzufragen - wäre schon ein starker Workaround.
Daher meine Frage:
Hab ich hier einen Denkfehler?
Hat einer dieses Problem schon gelöst?
Oder sollte das Event nicht besser doppelt aus dem Adapter gesetzt werden, auch wenn es gleich ist?Gruß
BB -
@BlueBook ich glaube das es sich da um das gleiche Problem handelt, das ich auch habe.
@Diggewuff sagte in [Adapter] Shelly Adapter mit MQTT:
Der Shelly sendet einen wiederholten Longpress, aber dieser lässt sich nicht auswerten da der Adapter nur werte aktualisiert, wenn sie sich geändert haben. Werte die (nur) aktualisiert werden, werden absichtlich verworfen. Daher ist der Longpress nicht nutzbar. Ich habe das Thema einmal auf GitHub platziert und würde mich dort über Feedback dazu freuen, ob Ihr das so für sinnig haltet, oder ob Ihr auch denkt, dass Aktualisierungen die über MQTT oder CoAP eintreffen auch in die ioBroker states geschrieben werden sollten.
Diese Funktionsweise habe ich in einem Fork des Adapters angepasst, sodass man bei Verwendung von MQTT mit einem Haken in den Instanzeistellungen wählen kann, ob die werte auch aktualisiert werden sollen.
Wenn du möchtest, kannst du die Funktion gerne mal ausprobieren, vielleicht hilft es dir ja.
https://github.com/JoschaMiddendorf/ioBroker.shelly
Ich habe die Funktion auch als Pull Request eingereicht, sodass sie in den Adapter übernommen werden kann, wenn @Stuebi einverstanden ist, worauf ich sehr hoffe.
https://github.com/schmupu/ioBroker.shelly/pull/209
Der Request ist allerdings noch offen. -
@Diggewuff , Shelly stellt es sich wie folgt vor um Events wie Longpush / Shortpush abzufragen:
Right now such events are for example shortpush/longpush of buttons – devices will send a property of type “EV” to denote the exact event type
(“S” = shortpush, “L” = longpush), and a property of type “EVC” that will increment it’s value when a new event occurs (e.g. to be able
to know that two consecutive longpushes are actually two separate events). Please see “Input event” and “Input event counter” in the
property list below for additional information.
In the future, it’s possible that a type “EVV” (Event validity) will be added too, to denote how long an occurred event should be
considered “active” (e.g. for motion, vibration, etc.).Es ist zusätzlich zum Event der Event Counter laut Herstellervorgaben zu berücksichtigen.
-
@Diggewuff , ein kleines Update, ich habe Shelly gebeten, dass man analog zum MQTT Protokoll bei den CoAP Nachrichten nur die States in der payload mitschickt die sich wirklich ändern und nicht imm alle states. Mit dieser kleinen Anpassung wäre es ohne weiteres möglich, mehrere longpushes / shortpushes analog zu MQTT hintereinander auszuwerten.
Leider will der Shelly Entwickler von OpenHab diese Änderung nicht Ich habe parallel noch ein Ticket bei Shelly aufgegeben. Ich bin gespannt ob sich da etwas tut.
Das Lustige an der Geschichte ist, dass der Shelly DW2 mit Firmware 1.8 genau nur die Werte per CoAP liefert die angefasst wurden und nicht immer alle. Das ist aber ein Fehler in der Firmware -
@Stuebi danke für deinen Einsatz.
Könntest du in deiner GitHub repository eventuell einen „latest“ branch zur Verfügung stellen der jeweils den aktuellsten Release beinhaltet? Mir ist aufgefallen das der Master meist schon weiter ist als die releases.
Ein latest branch würde es stark vereinfachen den Fork aktuell zu halten.
Beste Grüße -
@Diggewuff sagte in [Adapter] Shelly Adapter mit MQTT:
Ein latest branch würde es stark vereinfachen den Fork aktuell zu halten.
Am besten arbeitest Du immer gegen Master - idealweise mergest DU auch während deiner Entwicklung den Master immer in deinem Fork bzw rebased deine ARbeit auf Basis des Master - so ist es später bei dem PR am einfachsten
-
@Diggewuff , ich habe die Funktionalität Deines PRs in der Version 4.0.3 überführt. Den Schalter "Update objects even if there is no value change" gilt nun für CoAP, MQTT und http gleichermassen.
Kannst Du die Version 4.0.3 über GitHub laden und bitte testen. -
@Stuebi Ich habe 4.0.3 getestet und es funktioniert bis jetzt alles erwartungsgemäß. Sollte mir doch noch etwas auffallen melde ich mich.
Danke -
@Stuebi
In 4.0.3 werden die Namen selbst umbenannter datenpunkte teilweise überschrieben. -
@Diggewuff , ja das kann passieren, aber nur dann wenn im Shelly im Devicename oder Channelname etwas steht.
-
@Diggewuff Danke für den Hinweis und auch deine Erweiterungen!
Ich war gerade erfreut zu sehen, dass es eine neue Version gibt.
Hab auf diese upgedatet.Dabei kam folgendes im Log:
shelly.0 2020-08-23 17:09:52.951 info (10150) Delete old state: shelly.0.SHBTN-1#xxxxxxxxxx#1.Button.Input shelly.0 2020-08-23 17:09:52.878 error (10150) Cound not delete old state: shelly.0.SHBTN-1#xxxxxxxxx#1.Button.Input host.iobroker 2020-08-23 17:09:52.871 warn Objects 127.0.0.1:55783 Error from InMemDB: Error: ERROR delObject shelly.0.SHBTN-xxxxxxx.Button.Input: Not exists shelly.0 2020-08-23 17:09:52.373 info (10150) Shelly device 192.168.xxx.xxx (shellybutton1 / shellybutton1-xxxxxx / SHBTN-xxxxxxxxx) with CoAP connected!
Da danach der Button zur keiner Zustandsänderung mehr im ioBroker führte, hab ich alle Instanzvariablen aus den Objekten und das Objekt gelöscht - ich hatte gehofft er erkennt den Button neu und legt diese neu an.
Leider ist das nicht passiert.
Der Button wird jetzt gar nicht mehr erkannt
War wohl doch eine dumme Idee ...Parallel hab ich die Firmeware des Buttons von 1.7 auf 1.8 erhöht - daher ist es jetzt leider schwer zu sagen, woran es liegt/lag.
Neustarts auf beiden Seiten haben leider nichts gebracht.
Wenn es über Coap nicht läuft, ist es nicht schlimm.
Ich werde es die Tage dann auf MQTT umstellen - dass sollte ja funktionieren.Wollte euch nur hier das Feedback geben - ggf. hilft es ja
Gruß
BB -
@BlueBook , das kann ich nicht bestätigen. Ich habe gerade den Shelly Adapter in der Version 4.0.3 mit CoAP und MQTT und dem Button mit der Firmware 20200812-091606/v1.8.0@8acf41b0 getestet.
Es funktioniert alles wunderbar. -
@Stuebi Ich hab es gerade noch mal verglichen.
Gleiche Adapter-Versionen und gleiche Firmeware.
Keine Ahnung warum der Button nicht mehr möchte - lief zuerst super.Ich hab es eben auch noch einmal über MQTT ausprobiert.
Der Button meldet sich erfolgreich an.
Es kommen sogar updateEvents, aber alle nur mit Event "s".
Ein komisches Verhalten von dem Button. Ich vermute, dass das Firmewareupdate nicht 100% geklappt hat? Ich hab gerade schon einen Reset probiert, er bleibt aber bei der Firmewareversion und löscht "nur" die Einstellungen.Ich hab es jetzt über den direkt Aufruf der iobroker-RestApi vom Button beholfen, komischerweise funktioniert dies.
Alles nicht wichtig, aber bissel komisch schon.Liegt aber meiner Meinung nach am Button! und nicht am Adapter.
Schöne Woche euch noch!
Gruß
BB -
@BlueBook , da es nicht direkt um MQTT geht, bitte weiter hier diskutieren wenn Du die Shelly Adapter Version 4.0.3 installiert hast: https://forum.iobroker.net/topic/36200/test-adapter-shelly-v4-0-3-latest
-
Guten Morgen an die Community.
Ich bin neu im Forum, lese aber schon länger eure Beiträge und diese konnten mir bereits mehrmals helfen.
Erst einmal vielen Dank für die ganze Arbeit die alle Akteure hier bereits reingesteckt haben und alles kostenlos zur Verfügung stellen!!Nach dem ich mit dem IO-Broker in meiner Wohnung etwas rumgespielt habe, habe ich mich dann entschieden beim Hauskauf komplett auf das System zu setzen.
Hierzu habe ich rund folgende Geräte im Einsatz:- Synology 218+
- Raspberry Pi
- 7x Shelly 4 Pro (4 per Cloud & 3 per MQTT)
- 10x Shelly 2.5
- 1x Shelly Dimmer
- 2x Shelly 1
- 2x Shelly 1PM
- 1x Sonoff 4
- 1x Sonoff Dual
- 3x Sonoff Mini
- 1x Ring-Klingel
- diverse Echo-Geräte
- Shelly I-3 --> Derzeit nur zu Testzecken
Ich habe sämtliche Kabel in die UV gezogen und dort hardwaremäßig verdrahtet.
Nun zu meinem eigentlichen Problem:
Ich habe letztes WE den Shelly-Adapter geupdatet, in der Hoffnung, dass der I3 funktioniert.
Im ersten Moment waren alle Shellys doppelt in der Liste und auf ihren ursprünglichen Namen benannt. Die Namen konnten nicht unbenannt werden.
Dieses Problem wurde mit der V4-0-2 behoben
Die doppelten Eintragungen habe ich per Hand gelöscht
Soweit so gut
Nun ist mein Problem, dass die drei Geräte die per MQTT betrieben werden nicht mehr über den Shelly-Adapter arbeiten können. Im MQTT-Adapter kann ich aber keine Relais steuern.
Das heißt ich sehe zwar ob die Lampen an sind, aber ich kann weder über den Broker, noch über Alexa die Geräte ansteuern. Leider kann ich in den Einstellungen des Shellys die MQTT-Einstellungen nicht zurücksetzen, da es so aussieht als ob dort keine Einträge vorhanden sind.
Beim Hardware-Reset eines Geräts (Shelly 4 - Pro) ist dieses leider komplett kaputtgegangen. Auf meine E-Mail antwortet natürlich wider niemand.Hat jemand von euch einen Rat, wie ich wieder an die Einstellungen komme, oder hilft mir ggf. die Version 4-0-3? Derzeit habe ich etwas Schiss was abzudaten, da die Gefahr besteht, dass noch weniger funktioniert.
Hoffe, dass mir jemand helfen kann.Beste Grüße
-
@Baummy said in [Adapter] Shelly Adapter mit MQTT:
Das heißt ich sehe zwar ob die Lampen an sind, aber ich kann weder über den Broker, noch über Alexa die Geräte ansteuern. Leider kann ich in den Einstellungen des Shellys die MQTT-Einstellungen nicht zurücksetzen, da es so aussieht als ob dort keine Einträge vorhanden sind.
Beim Hardware-Reset eines Geräts (Shelly 4 - Pro) ist dieses leider komplett kaputtgegangen. Auf meine E-Mail antwortet natürlich wider niemand.meinst du, du kannst nicht mal über die ip auf den pro zugreifen? weil dort könntest du mqtt wieder deaktivieren...
mir ist aufgefallen das im mom jede menge der 4pro sterben. obs so ist, oder an anderem liegt... gibt ja auch keine updates mehr für die dinger...
auf mails wirst du auch keine aw mehr bekommen, dafür wurde das ticket system eingeführt. dort gibts rasch aw... -
@da_Woody Ich kann über die IP auf das alle Geräte zugreifen, aber der Haken für MQTT ist nicht aktiviert (obwohl ich die Einstellungen letztes Jahr vorgenommen habe und die Daten auch in den entsprechenden Adapter übertragen werden)
Da der Haken nicht aktiv ist, kann ich ihn nicht deaktivieren.Hast du die 4Pro auch im Einsatz?
Danke für den Hinweis, aber ich habe ein Ticket erstellt und auch auf Dringlichkeit hingewiesen. Falsch ausgedrückt
Habe auch auf der Seite gesehen, dass die 4Pro wohl nicht mehr verkauft werden. Grund erschließt sich mir auch nicht so richtig
-
@Baummy , hast Du MQTT versucht wieder zu aktivieren? dann kannst du es im Anschluss vielleicht deaktivieren.