Hallo zmaier,
hier das Blockly-Konstrukt:
Der Inhalt kann nicht angezeigt werden, da Sie keine Berechtigung haben, diesen Inhalt zu sehen.
Der Inhalt kann nicht angezeigt werden, da Sie keine Berechtigung haben, diesen Inhalt zu sehen.
Importiere den Inhalt der txt-Datei in deine Skripte.
Unter allen Kommentaren, die mit -> beginnen musst Du die bei dir gültigen/entsprechenden Objekt-IDs auswählen. (mein Input ON/OFF muss dein i3-Input sein, meine Helligkeit muss deine Dimmeransteuerung sein).
Die Zahl ganz oben hinter "maxShortduration" gibt die Maximaldauer in 0,1s an bis zu der ein Tasterdruck als Shortpress bewertet wird (hier 6 = 600ms).
Die Zahl ganz oben hinter "maxLongduration" gibt die Maximaldauer in 0,1s an bis zu der ein Tasterdruck als Longpress bewertet wird (hier 15 = 150ms = 1,5s).
"Shortdim" ist der Dimmwert, der bei erkanntem Shortpress gesetzt wird (hier 5%).
"Longdim" ist der Dimmwert, der bei erkanntem Longpress gesetzt wird (hier 30%).
"Dimspeed" ist die Steigerung und damit die Geschwindigkeit der Helligkeitserhöhung bei längerem Tastendruck als Longpress (hier Erhöhung um 2% je 0,1s = von 0% bis 100% in Longpress + 5 Sekunden (hier 6,5s))
Nach Import das Skript speichern und noch nicht starten.
Warum auch immer ist es nützlich erst nochmal die Instanz neu zu starten (vielleicht muss da mein ID/Variablenmüll erst noch eliminiert werden).
Dann Skript starten und hoffen, dass es so klappt wie bei mir.
Ich habe zum Testen eine SPS mit verschiedenen Signalzeiten (Short, Long, OverLong, MoreOverLong) programmiert und den i3-Eingang damit beschaltet.
Im ioBroker habe ich mir - da ich keinen Dimmer habe - Uservariablen steuern lassen und so die Dimmwerte ausgelesen, die je nach Tasterdrucklänge ausgegeben wurden.
Ach ja - Du hattest nicht beschrieben, wie du die Lampe wieder ausschalten willst.
Ich habe das so programmiert, dass bei einem Shortpress geprüft wird, ob die Lampe an ist. Ist sie an, wird sie ausgeschaltet. War sie aus, werden die 5% gesetzt.
Ist die Lampe an, und du machst einen Tastendruck über maxLongduration, dann wird der Dimmwert einfach weiter erhöht.
Also wenn da schon 5% waren, dann wird mit nächstem Overlongpress alle 0,1s um 2% erhöht bis max 100%.
Und wenn da schon 30% waren, dann wird mit dem nächsten Overlongpress alle 0,1s um 2% erhöht bis max 100%.
Oder wenn Du mit dem ersten OverLong bis auf 65% hochgegangen bist, dann macht der nächste OverLong da weiter und es wird immer heller - fängt also nicht immer von 0% an.
Und egal wie der Wert vorher über 0% war - Longpress steuert auf 30%, aber Shortpress schaltet erstmal aus.
Probier mal aus - war spannend für mich das zusammenzuklöppeln.
Ich hoffe es funktioniert bei Dir.
Ach ja - der Input des I3 muss auf toggle konfiguriert sein, sonst geht gar nichts...
Viele Späße - gute Nacht.