NEWS
Test Adapter Shelly v3.3.4 (latest)
-
@e-s , okay dann passt es ja , wie ich es umgesetzt habe. Schade, das Shelly den Longpush nicht wie bei CoAP zurücksetzt
-
@Stuebi
Ich habe es irgendwann aufgegeben und nutze jetzt immer ein script was mit dem Tasten startet und beim loslassen endet. Mit dem kann man somit auch mehrere Funktionen starten lassen und nicht nur eine. -
@e-s Also bei der Kommunikation per CoIoT scheint das mit longpush seitens des Shelly recht verlässlich kommuniziert zu werden. Im Zusammenspiel mit ioBroker sollte es beim umschalten von mqtt zu CoAP im Prinzip dann ja transparent weiterlaufen ohne Skritpzwang.
Oder nutzt du irgendwas spezielleres, was nur bei mqtt unterstützt wird und nicht bei CoAP? -
@Stuebi Ich würde den Longpush via /input wert 0 zurücksetzen lassen, damit es hier keine verwirrung gibt. Immer wenn longpush losgelassen wird wird auch input losgelassen, somit wäre das doch ein guter Ersatz oder? Das Problem ist nämlich bei der jetzigen Umsetzung, dass in IOB ja der Wert longpress nur getriggert wird, falls jemand ne komlexe Steuerung mit der Input high zeit bauen will funktioniert das so nicht.
-
@CrunkFX , es wäre möglich wenn Input == 0 ist, Longpush auch auf 0 zu setzen.
Aber bei short press ist Input == 1 , dann würde Longpush weiter auf 1 stehen bleiben -
@Stuebi Was ja kein Problem ist, da MQTT doch eh gepusht wird, somit ist der Trigger 1 doch nur aktiv wenn er reinkommt danach schwebt die 1 ja nur im Raum ohne bewandnis, kommt eine neue 1 wird wieder getriggert. Währenddessen kommt eine 0 im /input channel die den Datenpunkt zurücksetzt bis ne neue 1 im /longpress channel kommt oder sehe ich das falsch? Und nach Shortpress kommt ja auch wieder die 0.
-
@CrunkFX Also
Taster gedrückt <1000ms
/input = 1 --> DP true
/longpress = 1 aber nicht getriggert
dann loslassen
/input = 0 --> Beide DP falseTaster gedrückt >1000ms
/input = 1 --> DP true (oder false je nach belieben)
/longpress = 1 getriggert --> DP true
dann loslassen
/input = 0 --> Beide DP false -
@CrunkFX , ich habe keine Chance die gedrückte Zeit abzzfragen.
-
@Stuebi Das brauchst du ja auch nicht das mach shelly. Wenn >1000ms gedrückt wird longpress getriggert
">"1000 ms sollte heissen longpress
<1000 ms sollte heissen shortpress -
@Stuebi Vom Ansatz her Quasi so, ich hab nur von JS so gut wie null Ahnung aber es sollte zu verstehen sein falls nicht kein problem:
mqtt: { mqtt_publish: 'shellies/shellydimmer2-<deviceid>/longpush/0', mqtt_publish_funct: (value) => { return value == 1 && true }, }, mqtt: { mqtt_publish: 'shellies/shellydimmer2-<deviceid>/input/0', mqtt_publish_funct: (value) => { return value == 0 && false }, }
-
@CrunkFX , ich habe es einmal in der Version 3.3.5 eingebaut für MQTT und Dimmer 2. Kannst Du die Version 3.3.5 nochmals per GitHub herunterladen und die Instanz neu starten
-
@Stuebi Leider bleiben nun beide Werte auf true.
-
@Stuebi Nur ne vermutung, hab ja keine ahnung aber muss hier nicht nur lights stehen statt lights1?
-
@CrunkFX, genau, habe ich auch gerade gesehen und eben korrigiert. Kannst Du bitte nochmals die Version 3.3.5 von GitHub laden und die Instanz neu starten.
-
@Stuebi OK false geht dafür true nicht mehr bei beiden
-
@CrunkFX , schade, ich habe es jetzt wieder geändert, dass ich es so setze wie der Shelly Adapter es mir liefert.
-
@Stuebi Ich werd selbst nochmal ein wenig rumspielen. Falls sich was ergibt geb ich dir Bescheid.
-
@Stuebi Ließe sich input und longpush auf ähnliche Weise auch für den RGBW2 implementieren oder wären da noch weitere Infos nötig?
-
-
@Stuebi Moin, ich hab´s doch noch hinbekommen. Um zu veranschaulichen was ich geändert hab und um Überprüfen zu lassen ob ich ne Programmaturgische Sauerei veranstaltet hab hab ich mal deine Repo geforked.
Der Unterschied zu deiner Lösung ist diese Zeilemqtt_publish: 'shellies/shellydimmer2-<deviceid>/longpush/0', ---> mqtt_publish_funct: (value) => { if (value == 1) {return true; } }
So bleibt der Wert immer false. Ersetze ich das mit dem ShellyHelper geht´s:
mqtt_publish: 'shellies/shellydimmer2-<deviceid>/longpush/0', ---> mqtt_publish_funct: async (value, self) => { if (value == 1) { shellyHelper.setValueForId(self, 'lights.longpush1', true);}},
https://github.com/CrunkFX/ioBroker.shelly
!!Video!!
Schau mal ob das so geht, wenn nicht ist auch nicht schlimmMFG
CrunkFX