NEWS
Test Adapter Shelly v3.3.4 (latest)
-
@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 -
-
@Stuebi
Schau mal, das hab ich in der History bereits probiert, ohne Erfolg. -
@CrunkFX und die Lösung mit undefined? Hast die sich getestet?
-
@Stuebi Bin dabei
-
@Stuebi Wert bleibt false.
Er wird zwar hier beim Loslassen immer wieder auf false gesetzt:194| mqtt_publish_funct: async (value, self) => { if (value == 0) { shellyHelper.setValueForId(self, 'lights.longpush1', false); return false; } else { return true; } },
Aber hier nicht auf true:
213| mqtt_publish_funct: (value) => { return value == 1 ? true : undefined; }
-
@CrunkFX , die erste Anweisung macht eigentlich keinen Sinn, da in der Helper Methode der eigene DP gesetzt wird. Das geht auch mit return true oder false. Ist der MQTT Longpush wett jemals 1?
-
@Stuebi So sieht einmal Longpush mit loslassen in MQTT aus:
Es sieht danach aus, als würde bei benutzung der Helper Methode dieser Teil:'lights.longpush1': {
Garnicht mehr abgefragt
-
hi!
@CrunkFX said in Test Adapter Shelly v3.3.4 (latest):@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 shortpressnicht ganz richtig! die longpush time kannst du einstellen!
-
@da_Woody Ist korrekt, steht bei mir aber auf 1000ms.
-
hi!
@CrunkFX said in Test Adapter Shelly v3.3.4 (latest):@da_Woody Ist korrekt, steht bei mir aber auf 1000ms.
wollte nur drauf hinweisen damit da kein missverständniss entsteht und die 1000 als fixwert genommen wird...
-
@Stuebi Das Problem hier:
---> mqtt_publish_funct: (value) => { if (value == 1) {return true; } }
scheint zu sein, dass sich der Wert bei longpush nicht ändert sondern 1 bleibt. Drückt man den Taster ganz kurz < 500ms und lässt ihn dann wieder los, wird sporadisch der Wert longpush auf 0 gesetzt was laut API shortpush ist. Wenn dann der Taster lange gedrückt wird funktioniert longpush. Der geht dann auf true und beim loslassen auf false. Zu diesem Zeitpunkt hat longpush aber noch immer die 1 und erlaubt keine weitere ausführung bis man das ganze wiederholt. Es sei denn man nutzt das:
---> mqtt_publish_funct: async (value, self) => { if (value == 1) { shellyHelper.setValueForId(self, 'lights.longpush1', true);}},
dann scheint das egal zu sein.
Kann man das umgehen, dass bei gleichbleibenden Werten nicht erneut getriggert wird?