Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Node-Red
  5. Shelly Dimmer via MQTT in NodeRed

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.5k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.1k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    2.8k

Shelly Dimmer via MQTT in NodeRed

Geplant Angeheftet Gesperrt Verschoben Node-Red
9 Beiträge 3 Kommentatoren 1.3k Aufrufe 3 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • M Offline
    M Offline
    m.gans
    schrieb am zuletzt editiert von
    #1

    Hallo zusammen.

    Ich habe wiedermal eine Frage.

    Und zwar möchte ich via NodeRed einen Shelly Dimmer 2 ansteuern und natürlich auch dimmen.

    Das Einschalten klappt wunderbar..
    a9a0237d-380d-4840-9be2-e9f7fbcad216-image.png
    Das Change node sieht so aus:
    6666057e-de84-4556-8423-e5f4bc157616-image.png 438ed4c2-2eaa-44d6-b2d5-b73cd644762a-image.png

    Wenn man bei "brightness" einen Wert von 1-100 dahinter schreibt, schaltet der Shelly mit dem entsprechenden Dimmwert ein. 100 wäre also demnach Dimmwert 100.
    Momentan steht da X weil ich nicht weiss wie ich das angehen soll, damit ich via Slider auf dem Dashboard dimmen kann.
    Der Slider sieht so aus:
    76e63441-8ee5-4bfd-8351-25919dbf41f7-image.png

    Danke für eure Hilfe. 😊

    mickymM 1 Antwort Letzte Antwort
    0
    • M m.gans

      Hallo zusammen.

      Ich habe wiedermal eine Frage.

      Und zwar möchte ich via NodeRed einen Shelly Dimmer 2 ansteuern und natürlich auch dimmen.

      Das Einschalten klappt wunderbar..
      a9a0237d-380d-4840-9be2-e9f7fbcad216-image.png
      Das Change node sieht so aus:
      6666057e-de84-4556-8423-e5f4bc157616-image.png 438ed4c2-2eaa-44d6-b2d5-b73cd644762a-image.png

      Wenn man bei "brightness" einen Wert von 1-100 dahinter schreibt, schaltet der Shelly mit dem entsprechenden Dimmwert ein. 100 wäre also demnach Dimmwert 100.
      Momentan steht da X weil ich nicht weiss wie ich das angehen soll, damit ich via Slider auf dem Dashboard dimmen kann.
      Der Slider sieht so aus:
      76e63441-8ee5-4bfd-8351-25919dbf41f7-image.png

      Danke für eure Hilfe. 😊

      mickymM Online
      mickymM Online
      mickym
      Most Active
      schrieb am zuletzt editiert von mickym
      #2

      @faithlux Du schreibst nicht x dahinter, sondern payload (ohne Gänsefüsschen) und nutzt JSONATA und nicht JSON in Deiner Change Node.

      d3aa41f8-f29c-48d3-a312-ae5be32dfa75-image.png

      9226b4e2-97c6-4978-9d8b-ffff834f4417-image.png

      Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

      M 1 Antwort Letzte Antwort
      1
      • mickymM mickym

        @faithlux Du schreibst nicht x dahinter, sondern payload (ohne Gänsefüsschen) und nutzt JSONATA und nicht JSON in Deiner Change Node.

        d3aa41f8-f29c-48d3-a312-ae5be32dfa75-image.png

        9226b4e2-97c6-4978-9d8b-ffff834f4417-image.png

        M Offline
        M Offline
        m.gans
        schrieb am zuletzt editiert von m.gans
        #3

        @mickym

        ich habe dasselbe gemacht, einfach in json. ich habe nachgelesen was jsonata ist und das macht durchaus sinn, ergo es funktioniert 😂 danke @mickym

        Dimmen hört auf den Befehl shellies/shellydimmer-<deviceid>/light/0/set
        Schalten hört auf den Befehl shellies/shellydimmer-<deviceid>/light/0/command

        Ich möchte nun, dass wenn ich zB auf 50% gedimmt habe (natürlich sollte das mit jedem anderen Dimmwert zwischen 0-100 auch genauso gehen) und ausschalte, beim nächsten Mal genau auf der selben Dimmstufe eingeschaltet wird.

        Ich dimme auf 50% runter, schalte aus.
        Schalte ein, Licht ist auf 50% gedimmt.

        Ich kann das gewünschte mit zwei MQTT Ausgängen bereitstellen. dass das gewollte so funktioniert:
        aa698d24-c563-4743-b3c3-79ba747e1b2d-image.png

        Aber das ist eher so eine semi gute Lösung.

        Am Besten wäre es, wenn man in NodeRed, das Dimmen so gestalten könnte, wie wenn man einen Push-Taster hat.

        Kurzes Tippen = on oder off
        Langes Tippe = hochdimmen oder mit Pause dazwischen runterdimmen (und umgekehrt)

        mickymM 1 Antwort Letzte Antwort
        0
        • M m.gans

          @mickym

          ich habe dasselbe gemacht, einfach in json. ich habe nachgelesen was jsonata ist und das macht durchaus sinn, ergo es funktioniert 😂 danke @mickym

          Dimmen hört auf den Befehl shellies/shellydimmer-<deviceid>/light/0/set
          Schalten hört auf den Befehl shellies/shellydimmer-<deviceid>/light/0/command

          Ich möchte nun, dass wenn ich zB auf 50% gedimmt habe (natürlich sollte das mit jedem anderen Dimmwert zwischen 0-100 auch genauso gehen) und ausschalte, beim nächsten Mal genau auf der selben Dimmstufe eingeschaltet wird.

          Ich dimme auf 50% runter, schalte aus.
          Schalte ein, Licht ist auf 50% gedimmt.

          Ich kann das gewünschte mit zwei MQTT Ausgängen bereitstellen. dass das gewollte so funktioniert:
          aa698d24-c563-4743-b3c3-79ba747e1b2d-image.png

          Aber das ist eher so eine semi gute Lösung.

          Am Besten wäre es, wenn man in NodeRed, das Dimmen so gestalten könnte, wie wenn man einen Push-Taster hat.

          Kurzes Tippen = on oder off
          Langes Tippe = hochdimmen oder mit Pause dazwischen runterdimmen (und umgekehrt)

          mickymM Online
          mickymM Online
          mickym
          Most Active
          schrieb am zuletzt editiert von mickym
          #4

          @faithlux ich hab den shelly Dimmer gen1 und da funktioniert es so, wie du es beschreibst. Das macht aber die Hardware du muss ich gar nichts mit Node-red machen. Um einen Taster softwareseitig zu simulieren, arbeitest du im Dashboard nicht mit einem slider, sondern musst dir selbst was basteln. Das ist alles andere als trivial- ich habesowas ähnliches mal gemacht- muss aber nochmal schauen.

          Die Frage ist in dem Fall wirklich, wieviel Aufwand möchtest Du in dein Dashboard stecken. Wie gesagt hardwareseitig habe ich ein Taster am Shelly und funktioniert genau so.

          Hier habe ich mal sowas mit einem Node-Red Flow für ein vis Widget gebastelt- das kann ich nochmal raussuchen, da müsstest du dann einen eigenen Button-Typ im Dashboard definieren.
          Hier: https://forum.iobroker.net/post/939067 gibts ein kleines mp4, wenn es das ist was du meinst - ist aber viel Aufwand.

          Du musst halt aufpassen ob du soviel Aufwand in ein Dashboard stecken willst, oder ob dir das mit slider und switch langt. Ansonsten musst du dir einen eigenen Button erstellen.

          Du müsstest im übrigen auch ohne brightness mit dem Objekt schalten können, also ohne brightness, also mit

          {"turn":"off"}
          

          Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

          M 1 Antwort Letzte Antwort
          0
          • mickymM mickym

            @faithlux ich hab den shelly Dimmer gen1 und da funktioniert es so, wie du es beschreibst. Das macht aber die Hardware du muss ich gar nichts mit Node-red machen. Um einen Taster softwareseitig zu simulieren, arbeitest du im Dashboard nicht mit einem slider, sondern musst dir selbst was basteln. Das ist alles andere als trivial- ich habesowas ähnliches mal gemacht- muss aber nochmal schauen.

            Die Frage ist in dem Fall wirklich, wieviel Aufwand möchtest Du in dein Dashboard stecken. Wie gesagt hardwareseitig habe ich ein Taster am Shelly und funktioniert genau so.

            Hier habe ich mal sowas mit einem Node-Red Flow für ein vis Widget gebastelt- das kann ich nochmal raussuchen, da müsstest du dann einen eigenen Button-Typ im Dashboard definieren.
            Hier: https://forum.iobroker.net/post/939067 gibts ein kleines mp4, wenn es das ist was du meinst - ist aber viel Aufwand.

            Du musst halt aufpassen ob du soviel Aufwand in ein Dashboard stecken willst, oder ob dir das mit slider und switch langt. Ansonsten musst du dir einen eigenen Button erstellen.

            Du müsstest im übrigen auch ohne brightness mit dem Objekt schalten können, also ohne brightness, also mit

            {"turn":"off"}
            
            M Offline
            M Offline
            m.gans
            schrieb am zuletzt editiert von
            #5

            @mickym Danke für diesen Input.
            Das wäre genau das was ich suche. Jedoch absolut keinen Plan wie ich das angehen soll.

            Hast du nicht per Zufall irgendwo diesen Code, den ich dann mit meinen Werten etc befüllen kann?

            mickymM 1 Antwort Letzte Antwort
            0
            • M m.gans

              @mickym Danke für diesen Input.
              Das wäre genau das was ich suche. Jedoch absolut keinen Plan wie ich das angehen soll.

              Hast du nicht per Zufall irgendwo diesen Code, den ich dann mit meinen Werten etc befüllen kann?

              mickymM Online
              mickymM Online
              mickym
              Most Active
              schrieb am zuletzt editiert von mickym
              #6

              @faithlux Ja ich habe diesen Flow gefunden - aber nichts mit einfach Werte befüllen. Da musst Du schon tiefer einsteigen und zwar viel tiefer.

              Wie gesagt im Normalfall nutzt man im Dashboard einfach den Slider und einen Switch getrennt - habe ich auch bei meinen Lampen so:

              7ef77278-c38b-4a0b-9255-e0fb345d0031-image.png

              Das was Du in meinem Beitrag über das mp4 und dem vis widget gesehen hast, funktioniert für einen Softwaretaster nicht, da dieser einfach nur ein true oder eine beliebige payload schickt beim betätigen. Aber das nur einmal.
              Als erste Vorraussetzung brauchst Du also einen Button, der meldet wenn er gedrückt wird (also Maus down) und meldet wenn er wieder losgelassen wird (also Maus up). Das ist im Standard nie der Fall, deswegen kannst Du da auch kein Long und Short unterscheiden.

              Um so einen Taster im NodeRed Dashboard zu erzeigen, musst Du den also selbst programmieren und halt auch das Aussehen anpassen. Ich nutze sogenannte momentary Buttons zum Beispiel im NodeRed Dashboard, dass ich als Fernbedienung nutze für die Lautstärketasten.

              ff1709e9-1330-49f9-8e43-151fb4545b7d-image.png

              Wie gesagt anpassen musst Du die dann vom Aussehen her selbst. Ich hab Dir diese Taste mal herausgelöst und in ein eigene Dashboardgruppe übernommen. Ich habe mal das Lautstärkesymbol ausgetauscht mit den Awesome-Icons

              4ad0febb-523d-42bc-b5f7-02377a999c72-image.png

              Dieser Button hat nun die Eigenschaft, dass er true beim Drücken und false bei Loslassen sendet und deshalb sich von allen Standardbuttons unterscheidet.

              8cef1d57-14e2-4fa2-ae46-87f80d59f837-image.png

              Hier die Node als Einzelstück:

              [{"id":"b9b257e.70ef5a8","type":"ui_template","z":"9485df68.fd8ba","group":"57f13d6f733e5c9d","name":"momentary","order":17,"width":3,"height":1,"format":"<style>\n.nr-dashboard-template {\n    padding: 0px;\n}\n</style>\n<div class=\"momentary_1\">\n   <md-button style=\"width:100%; height:48px; margin: 0px; background-color: var(--nr-dashboard-widgetBackgroundColor); padding-top: 10px;\" ><i class=\"fa fa-lightbulb-o fa-2x\"> </i></md-button>\n</div>\n\n<script>\n\n(function($scope) {\n\n$('.momentary_1').on('touchstart mousedown', function(e) {\n   // e.preventDefault(); //prevent default behavior\n   $scope.send({\"payload\": true});\n});\n\n$('.momentary_1').on('touchend mouseup', function(e) {\n    // e.preventDefault(); //prevent default behavior\n    $scope.send({\"payload\": false});\n});\n    \n})(scope);\n</script>","storeOutMessages":false,"fwdInMessages":true,"resendOnRefresh":false,"templateScope":"local","className":"","x":150,"y":780,"wires":[["111e399f13e068c4"]]},{"id":"57f13d6f733e5c9d","type":"ui_group","name":"Test","tab":"20b3095113f94d70","order":1,"disp":true,"width":"6","collapse":false,"className":""},{"id":"20b3095113f94d70","type":"ui_tab","name":"Home","icon":"dashboard","order":2,"disabled":false,"hidden":false}]
              

              Die Node besteht aus einer template Node mit folgendem Code:

              <style>
              .nr-dashboard-template {
                  padding: 0px;
              }
              </style>
              <div class="momentary_1">
                 <md-button style="width:100%; height:48px; margin: 0px; background-color: var(--nr-dashboard-widgetBackgroundColor); padding-top: 10px;" ><i class="fa fa-lightbulb-o fa-2x"> </i></md-button>
              </div>
              
              <script>
              
              (function($scope) {
              
              $('.momentary_1').on('touchstart mousedown', function(e) {
                 // e.preventDefault(); //prevent default behavior
                 $scope.send({"payload": true});
              });
              
              $('.momentary_1').on('touchend mouseup', function(e) {
                  // e.preventDefault(); //prevent default behavior
                  $scope.send({"payload": false});
              });
                  
              })(scope);
              </script>
              

              Man sieht es wird eine eigene CSS Klasse definiert, die auf Mauseregnisse reagiert. Wenn Du mehrere solcher Nodes auf einer Dashboard-Seite verwendest musst Du darauf achten, dass Du jeder Node eine eigene ID gibst.
              ggf kannst Du das auch über die ID der Node machen:

              <div id="{{'my_'+$id}}" - aber ich habe den Code nicht ausprobiert.

              So hier mal der gesamte Tasterflow:

              [{"id":"9485df68.fd8ba","type":"tab","label":"Tutorial vis Taster","disabled":false,"info":""},{"id":"b0c81813.4154f8","type":"ioBroker in","z":"9485df68.fd8ba","d":true,"name":"taster","topic":"0_userdata.0.dimmer.taster","payloadType":"value","onlyack":"","func":"rbe","gap":"","fireOnStart":"false","x":130,"y":100,"wires":[["16e2170a.87ef89"]]},{"id":"dc014311.a8d3f","type":"debug","z":"9485df68.fd8ba","name":"Taste gedrückt","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":600,"y":60,"wires":[]},{"id":"16e2170a.87ef89","type":"trigger","z":"9485df68.fd8ba","name":"","op1":"true","op2":"","op1type":"bool","op2type":"payl","duration":"-250","extend":true,"overrideDelay":false,"units":"ms","reset":"false","bytopic":"all","topic":"topic","outputs":1,"x":370,"y":100,"wires":[["dc014311.a8d3f","a123b62d.af5fa8"]]},{"id":"9982d6c4.29e058","type":"switch","z":"9485df68.fd8ba","name":"","property":"payload","propertyType":"msg","rules":[{"t":"false"}],"checkall":"true","repair":false,"outputs":1,"x":310,"y":220,"wires":[["d38eb95d.854638","a123b62d.af5fa8"]]},{"id":"d38eb95d.854638","type":"debug","z":"9485df68.fd8ba","name":"Taste losgelassen","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":490,"y":280,"wires":[]},{"id":"a123b62d.af5fa8","type":"function","z":"9485df68.fd8ba","name":"","func":"var count = context.get('count') || 0;\nvar longpress = context.get('longpress') || false;\nif (msg.payload){\n    count += 1;\n    context.set('count',count);\n    if (count > 5) { // Wert erhöhen wenn Longpress zu früh erkannt wird\n        longpress = true;\n        context.set('longpress',longpress);\n        return [null,msg];\n    }\n} else {\n    msg.payload=true;\n    count = 0;\n    context.set('count',count);    \n    if (!longpress) return [msg,null];\n    longpress = false;\n    context.set('longpress',longpress);\n}\n","outputs":2,"noerr":0,"initialize":"","finalize":"","x":590,"y":180,"wires":[["65393650.6cfcd8","1dbf19e0.f8af96"],["faaddc42.671cf","c5e2ef2d.6e447"]],"outputLabels":["shortpress","longpress"]},{"id":"65393650.6cfcd8","type":"debug","z":"9485df68.fd8ba","name":"shortpress","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":810,"y":100,"wires":[]},{"id":"faaddc42.671cf","type":"debug","z":"9485df68.fd8ba","name":"longpress","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":800,"y":340,"wires":[]},{"id":"a9311da5.e0c66","type":"ioBroker in","z":"9485df68.fd8ba","d":true,"name":"status","attrname":"","topic":"mqtt.1.shellies.shellydimmer.light.0.status","payloadType":"value","onlyack":"","func":"rbe","gap":"","fireOnStart":"false","x":150,"y":400,"wires":[["15d1fa89.761575"]]},{"id":"35413631.c8570a","type":"debug","z":"9485df68.fd8ba","name":"status","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":450,"y":340,"wires":[]},{"id":"15d1fa89.761575","type":"json","z":"9485df68.fd8ba","name":"","property":"payload","action":"","pretty":false,"x":290,"y":400,"wires":[["35413631.c8570a","eeebcf13.9b2fd","af96a9a1.7e48c8"]]},{"id":"eeebcf13.9b2fd","type":"change","z":"9485df68.fd8ba","name":"setze flow Variablen","rules":[{"t":"set","p":"ison","pt":"flow","to":"payload.ison","tot":"msg"},{"t":"set","p":"brightness","pt":"flow","to":"payload.brightness","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":500,"y":400,"wires":[[]]},{"id":"1dbf19e0.f8af96","type":"change","z":"9485df68.fd8ba","name":"switch (toggle)","rules":[{"t":"set","p":"payload","pt":"msg","to":"ison","tot":"flow"},{"t":"set","p":"payload","pt":"msg","to":"$not(payload)\t","tot":"jsonata"},{"t":"set","p":"ison","pt":"flow","to":"payload","tot":"msg"},{"t":"set","p":"down","pt":"flow","to":"payload","tot":"msg"},{"t":"change","p":"payload","pt":"msg","from":"true","fromt":"bool","to":"on","tot":"str"},{"t":"change","p":"payload","pt":"msg","from":"false","fromt":"bool","to":"off","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":800,"y":140,"wires":[["f48be0e6.d432f","c4574d9a.44f53","f2909e1e.20a93"]]},{"id":"f48be0e6.d432f","type":"debug","z":"9485df68.fd8ba","name":"command","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":1040,"y":200,"wires":[]},{"id":"c4574d9a.44f53","type":"ioBroker out","z":"9485df68.fd8ba","d":true,"name":"command","topic":"mqtt.1.shellies.shellydimmer.light.0.command","ack":"false","autoCreate":"false","stateName":"","role":"","payloadType":"","readonly":"","stateUnit":"","stateMin":"","stateMax":"","x":1040,"y":140,"wires":[]},{"id":"f2909e1e.20a93","type":"change","z":"9485df68.fd8ba","name":"","rules":[{"t":"change","p":"payload","pt":"msg","from":"off","fromt":"str","to":"0","tot":"num"},{"t":"change","p":"payload","pt":"msg","from":"on","fromt":"str","to":"brightness","tot":"flow"}],"action":"","property":"","from":"","to":"","reg":false,"x":1050,"y":80,"wires":[["6d903925.3ff818"]]},{"id":"6d903925.3ff818","type":"ioBroker out","z":"9485df68.fd8ba","d":true,"name":"brightness","topic":"0_userdata.0.dimmer.brightness","ack":"true","autoCreate":"false","stateName":"","role":"","payloadType":"","readonly":"","stateUnit":"","stateMin":"","stateMax":"","x":1240,"y":80,"wires":[]},{"id":"88d6e66a.ddb258","type":"inject","z":"9485df68.fd8ba","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":true,"onceDelay":0.1,"topic":"","payload":"false","payloadType":"bool","x":130,"y":600,"wires":[["e9fb15f5.98b588"]]},{"id":"e9fb15f5.98b588","type":"change","z":"9485df68.fd8ba","name":"","rules":[{"t":"set","p":"down","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":310,"y":600,"wires":[[]]},{"id":"c5e2ef2d.6e447","type":"switch","z":"9485df68.fd8ba","name":"","property":"payload","propertyType":"msg","rules":[{"t":"istype","v":"boolean","vt":"boolean"},{"t":"istype","v":"number","vt":"number"}],"checkall":"true","repair":false,"outputs":2,"x":810,"y":300,"wires":[["ca4f99bd.cfa6f8"],["ff1bde73.7c88"]]},{"id":"ca4f99bd.cfa6f8","type":"change","z":"9485df68.fd8ba","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"brightness","tot":"flow"},{"t":"change","p":"payload","pt":"msg","from":"100","fromt":"num","to":"98","tot":"num"},{"t":"change","p":"payload","pt":"msg","from":"0","fromt":"num","to":"2","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":1020,"y":240,"wires":[["c5e2ef2d.6e447"]]},{"id":"ff1bde73.7c88","type":"switch","z":"9485df68.fd8ba","name":"brightness zwischen 2 und 98","property":"payload","propertyType":"msg","rules":[{"t":"btwn","v":"2","vt":"num","v2":"98","v2t":"num"}],"checkall":"true","repair":false,"outputs":1,"x":1050,"y":320,"wires":[["4f962993.612978"]]},{"id":"4f962993.612978","type":"switch","z":"9485df68.fd8ba","name":"","property":"down","propertyType":"flow","rules":[{"t":"true"},{"t":"false"}],"checkall":"true","repair":false,"outputs":2,"x":1270,"y":320,"wires":[["ece0bc1e.1d06c"],["a0118b8f.a7ca18"]]},{"id":"ece0bc1e.1d06c","type":"change","z":"9485df68.fd8ba","name":"Verringere Brightness um 2","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload - 2","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":1510,"y":280,"wires":[["71a8a0f2.c1756"]]},{"id":"a0118b8f.a7ca18","type":"change","z":"9485df68.fd8ba","name":"Erhöhe Brightness um 2","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload + 2","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":1500,"y":340,"wires":[["71a8a0f2.c1756"]]},{"id":"71a8a0f2.c1756","type":"switch","z":"9485df68.fd8ba","name":"","property":"payload","propertyType":"msg","rules":[{"t":"gt","v":"98","vt":"num"},{"t":"lt","v":"2","vt":"str"},{"t":"else"}],"checkall":"true","repair":false,"outputs":3,"x":1740,"y":300,"wires":[["879502b2.7de07"],["f57bd65b.705688"],["58308d21.de8e84"]]},{"id":"879502b2.7de07","type":"change","z":"9485df68.fd8ba","name":"= 100","rules":[{"t":"set","p":"payload","pt":"msg","to":"100","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":1900,"y":260,"wires":[["58308d21.de8e84"]]},{"id":"f57bd65b.705688","type":"change","z":"9485df68.fd8ba","name":"= 0","rules":[{"t":"set","p":"payload","pt":"msg","to":"0","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":1900,"y":300,"wires":[["58308d21.de8e84"]]},{"id":"58308d21.de8e84","type":"change","z":"9485df68.fd8ba","name":"Update flow.brightness","rules":[{"t":"set","p":"brightness","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":2120,"y":340,"wires":[["33d29b3d.a84344","fb67d520.bc8208"]]},{"id":"33d29b3d.a84344","type":"rbe","z":"9485df68.fd8ba","name":"","func":"rbe","gap":"","start":"","inout":"out","property":"payload","x":2330,"y":340,"wires":[["8ef3400d.e495","d66fdb59.ee3d88"]]},{"id":"fb67d520.bc8208","type":"trigger","z":"9485df68.fd8ba","name":"","op1":"","op2":"true","op1type":"nul","op2type":"bool","duration":"1","extend":true,"overrideDelay":false,"units":"s","reset":"","bytopic":"all","topic":"topic","outputs":1,"x":2350,"y":420,"wires":[["1110ff6a.6c0661"]]},{"id":"1110ff6a.6c0661","type":"change","z":"9485df68.fd8ba","name":"","rules":[{"t":"set","p":"down","pt":"flow","to":"$not($flowContext('down'))\t","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":2550,"y":420,"wires":[[]]},{"id":"8ef3400d.e495","type":"ioBroker out","z":"9485df68.fd8ba","d":true,"name":"brightness","topic":"0_userdata.0.dimmer.brightness","ack":"false","autoCreate":"false","stateName":"","role":"","payloadType":"","readonly":"","stateUnit":"","stateMin":"","stateMax":"","x":2510,"y":340,"wires":[]},{"id":"b2d86076.b0a04","type":"change","z":"9485df68.fd8ba","name":"","rules":[{"t":"move","p":"payload","pt":"msg","to":"brightness","tot":"msg"},{"t":"set","p":"payload","pt":"msg","to":"{\"brightness\":70,\"turn\":\"on\"}","tot":"json"},{"t":"move","p":"brightness","pt":"msg","to":"payload.brightness","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":2680,"y":280,"wires":[["3fe9eb1.ff60414"]]},{"id":"d66fdb59.ee3d88","type":"switch","z":"9485df68.fd8ba","name":"","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"0","vt":"num"},{"t":"gt","v":"0","vt":"num"}],"checkall":"true","repair":false,"outputs":2,"x":2490,"y":260,"wires":[["b3cabeb1.02f96"],["b2d86076.b0a04"]]},{"id":"b3cabeb1.02f96","type":"change","z":"9485df68.fd8ba","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"{\"brightness\":0,\"turn\":\"off\"}","tot":"json"}],"action":"","property":"","from":"","to":"","reg":false,"x":2690,"y":240,"wires":[["3fe9eb1.ff60414"]]},{"id":"3fe9eb1.ff60414","type":"json","z":"9485df68.fd8ba","name":"","property":"payload","action":"","pretty":false,"x":2890,"y":260,"wires":[["583ee091.d82b2"]]},{"id":"583ee091.d82b2","type":"ioBroker out","z":"9485df68.fd8ba","d":true,"name":"","topic":"mqtt.1.shellies.light.0.set","ack":"false","autoCreate":"false","stateName":"","role":"","payloadType":"","readonly":"","stateUnit":"","stateMin":"","stateMax":"","x":3110,"y":260,"wires":[]},{"id":"98936af7.b84158","type":"ioBroker in","z":"9485df68.fd8ba","d":true,"name":"taster","topic":"0_userdata.0.dimmer.taster","payloadType":"value","onlyack":"","func":"rbe","gap":"","fireOnStart":"false","x":130,"y":220,"wires":[["9982d6c4.29e058"]]},{"id":"af96a9a1.7e48c8","type":"change","z":"9485df68.fd8ba","name":"","rules":[{"t":"move","p":"payload","pt":"msg","to":"status","tot":"msg"},{"t":"change","p":"status.ison","pt":"msg","from":"false","fromt":"bool","to":"0","tot":"num"},{"t":"change","p":"status.ison","pt":"msg","from":"true","fromt":"bool","to":"status.brightness","tot":"msg"},{"t":"set","p":"payload","pt":"msg","to":"status.ison","tot":"msg"},{"t":"delete","p":"status","pt":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":480,"y":460,"wires":[["c281079b.e9e728"]]},{"id":"c281079b.e9e728","type":"ioBroker out","z":"9485df68.fd8ba","d":true,"name":"brightness","topic":"0_userdata.0.dimmer.brightness","ack":"false","autoCreate":"false","stateName":"","role":"","payloadType":"","readonly":"","stateUnit":"","stateMin":"","stateMax":"","x":690,"y":460,"wires":[]},{"id":"b9b257e.70ef5a8","type":"ui_template","z":"9485df68.fd8ba","group":"57f13d6f733e5c9d","name":"momentary","order":17,"width":3,"height":1,"format":"<style>\n.nr-dashboard-template {\n    padding: 0px;\n}\n</style>\n<div class=\"momentary_1\">\n   <md-button style=\"width:100%; height:48px; margin: 0px; background-color: var(--nr-dashboard-widgetBackgroundColor); padding-top: 10px;\" ><i class=\"fa fa-lightbulb-o fa-2x\"> </i></md-button>\n</div>\n\n<script>\n\n(function($scope) {\n\n$('.momentary_1').on('touchstart mousedown', function(e) {\n   // e.preventDefault(); //prevent default behavior\n   $scope.send({\"payload\": true});\n});\n\n$('.momentary_1').on('touchend mouseup', function(e) {\n    // e.preventDefault(); //prevent default behavior\n    $scope.send({\"payload\": false});\n});\n    \n})(scope);\n</script>","storeOutMessages":false,"fwdInMessages":true,"resendOnRefresh":false,"templateScope":"local","className":"","x":150,"y":780,"wires":[["111e399f13e068c4"]]},{"id":"111e399f13e068c4","type":"debug","z":"9485df68.fd8ba","name":"Ausgabe momentary Button","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":420,"y":780,"wires":[]},{"id":"57f13d6f733e5c9d","type":"ui_group","name":"Test","tab":"20b3095113f94d70","order":1,"disp":true,"width":"6","collapse":false,"className":""},{"id":"20b3095113f94d70","type":"ui_tab","name":"Home","icon":"dashboard","order":2,"disabled":false,"hidden":false}]
              

              Der ist schon etwas älter deswegen wurde hier noch ohne JSONATA gearbeitet - um zum Beispiel zu dimmen:

              a9e45db8-e0fb-436f-a018-5a18cf5c606d-image.png

              Das ist wie gesagt noch umständlicher gemacht - aber das kannst Du ggf. ja anpassen, aber es kommen die gleichen Objekte raus.

              Wichtig ist dass Du das Herzstück des Flows begreifst. Bevor ich den richtigen momentary Switch einbinde hier noch mit 2 getrennten Triggern:

              005e3ec4-272e-4ec9-b34c-d054f65e2bd5-image.png

              Der obere Trigger entspricht dem Taster gedrückt, dem unteren Trigger entspricht Taster losgelassen. Solange der Taster gedrückt ist wird also alle 250 Millisekunden eine Nachricht erzeugt und zwar true. Falls false kommt wird der Trigger zurückgesetzt und es werden kein Nachrichten mehr erzeugt. Ich binde Dir später den momentary button noch ein.

              47131266-2ce5-4d89-a645-81d9aa7661d7-image.png

              Also die trigger Node sendet solange true alle 250 ms bis false kommt.

              Nun kommen wir (eine der seltenen Fälle) sinnvoll ohne Programmieren nicht aus - deswegen folgende function Node:

              ce35f6f1-7b1f-4ce1-a06d-5630aacf69a4-image.png

              Hier als Code:

              var count = context.get('count') || 0;
              var longpress = context.get('longpress') || false;
              if (msg.payload){
                  count += 1;
                  context.set('count',count);
                  if (count > 5) { // Wert erhöhen wenn Longpress zu früh erkannt wird
                      longpress = true;
                      context.set('longpress',longpress);
                      return [null,msg];
                  }
              } else {
                  msg.payload=true;
                  count = 0;
                  context.set('count',count);    
                  if (!longpress) return [msg,null];
                  longpress = false;
                  context.set('longpress',longpress);
              }
              

              Wie Du an den ersten beiden Zeilen siehst, wird der Node Kontext für 2 Variablen verwendet. Zum einen ob die Node im Status Longpress ist und wieviele Nachrichten eingegangen sind, bevor eine false Nachricht kommt.

              Wenn die false Nachricht kommt, dann wird der else-Ast ausgeführt und falls die Node nicht im Status Longpress ist, wird eine true Nachricht an den oberen Ausgang geschickt. Ausserdem wird der Zähler zurückgesetzt und der Longpress Zustand auf false.

              Solange True Nachrichten kommen werden diese gezählt und ab 5 Nachrichten an den unteren Ausgang weitergeleitet.
              Diese Zahl kannst Du natürlich anpassen, so wie Du es willst. Da alle 250 ms eine Nachricht von der Trigger Node erzeugt wird und erst ab mehr als 5 Nachrichten ein Longpress erkannt wird, wird am 1,5 Sekunden ein Longpress erkannt.

              Wenn Du was nicht verstehst musst halt nachfragen.

              So ich habe mal den momentary button eingebunden:

              682e24c2-89d1-451e-93d3-fe1cbe45a1bb-image.png

              Wird der button nur kurz gedrückt siehst Du dass die Nachricht am oberen Ausgang rauskommt - habe den shortpress debug aktiviert (hellblau) , drückst Du länger werden alle Nachrichten nach 1,5 Sekunden nach unten geleitet (lila).

              So damit Du weiter den Flow verstehst, habe ich hier mal als Trockenübung über eine Inject Node mal die Flowvariablen initialisiert. (Test Inject Node)

              de6cbe40-c355-4070-8853-0584d8d98e7e-image.png

              Im Flowkontext wird also folgendes gespeichert:

              fbb1ab86-95ca-4d84-bbb8-f17fbbea3ea6-image.png

              Das aktuelle Dimmlevel, in welche Richtung gedimmt wird und ob die Lampe an ist.

              Bei kurzem Drücken, schaltet also das commando (toggelt) zwischen "on" und "off".
              de86e8ff-9663-4775-8220-f44afb813d4e-image.png

              Das Dimmen siehst Du nicht als Trockenübung - da hier der tatsächliche Status der Lampe triggert. Das ist auch wichtig, da Du ja weiterhin über den physischen Taster schalten kannst.

              Zum Schluss noch eine Erklärung dieses Flow teils beim Dimmen:

              ed7cba3f-9b9d-4438-be9c-7bf83694aa8a-image.png

              Wenn keine neuen Dimmkommandos mehr kommen, dann wird die flow.down variable umgeschaltet.

              40e6d6a0-ae49-4de6-9ad8-69209c01fcc6-image.png

              Das ist im Prinzip die Dimmrichtung. Über die Flowvariable wird also entschieden ob bei erneutem Longpress auf- oder abgedimmt wird.

              ff43600b-14ff-46dd-9f92-13752f9fc1ea-image.png

              So hier nochmal der Flow in letzter Form:

              [{"id":"9485df68.fd8ba","type":"tab","label":"Tutorial vis Taster","disabled":false,"info":""},{"id":"b0c81813.4154f8","type":"ioBroker in","z":"9485df68.fd8ba","d":true,"name":"taster","attrname":"","topic":"0_userdata.0.dimmer.taster","payloadType":"value","onlyack":"","func":"rbe","gap":"","fireOnStart":"false","x":130,"y":100,"wires":[["16e2170a.87ef89"]]},{"id":"dc014311.a8d3f","type":"debug","z":"9485df68.fd8ba","name":"Taste gedrückt","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":600,"y":60,"wires":[]},{"id":"16e2170a.87ef89","type":"trigger","z":"9485df68.fd8ba","name":"","op1":"true","op2":"","op1type":"bool","op2type":"payl","duration":"-250","extend":true,"overrideDelay":false,"units":"ms","reset":"false","bytopic":"all","topic":"topic","outputs":1,"x":370,"y":100,"wires":[["dc014311.a8d3f","a123b62d.af5fa8"]]},{"id":"9982d6c4.29e058","type":"switch","z":"9485df68.fd8ba","name":"","property":"payload","propertyType":"msg","rules":[{"t":"false"}],"checkall":"true","repair":false,"outputs":1,"x":310,"y":220,"wires":[["d38eb95d.854638","a123b62d.af5fa8"]]},{"id":"d38eb95d.854638","type":"debug","z":"9485df68.fd8ba","name":"Taste losgelassen","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":490,"y":280,"wires":[]},{"id":"a123b62d.af5fa8","type":"function","z":"9485df68.fd8ba","name":"","func":"var count = context.get('count') || 0;\nvar longpress = context.get('longpress') || false;\nif (msg.payload){\n    count += 1;\n    context.set('count',count);\n    if (count > 5) { // Wert erhöhen wenn Longpress zu früh erkannt wird\n        longpress = true;\n        context.set('longpress',longpress);\n        return [null,msg];\n    }\n} else {\n    msg.payload=true;\n    count = 0;\n    context.set('count',count);    \n    if (!longpress) return [msg,null];\n    longpress = false;\n    context.set('longpress',longpress);\n}\n","outputs":2,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":590,"y":180,"wires":[["65393650.6cfcd8","1dbf19e0.f8af96"],["faaddc42.671cf","c5e2ef2d.6e447"]],"outputLabels":["shortpress","longpress"]},{"id":"65393650.6cfcd8","type":"debug","z":"9485df68.fd8ba","name":"shortpress","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":810,"y":100,"wires":[]},{"id":"faaddc42.671cf","type":"debug","z":"9485df68.fd8ba","name":"longpress","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":800,"y":340,"wires":[]},{"id":"a9311da5.e0c66","type":"ioBroker in","z":"9485df68.fd8ba","d":true,"name":"status","attrname":"","topic":"mqtt.1.shellies.shellydimmer.light.0.status","payloadType":"value","onlyack":"","func":"rbe","gap":"","fireOnStart":"false","x":130,"y":520,"wires":[["15d1fa89.761575"]]},{"id":"35413631.c8570a","type":"debug","z":"9485df68.fd8ba","name":"status","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":430,"y":460,"wires":[]},{"id":"15d1fa89.761575","type":"json","z":"9485df68.fd8ba","name":"","property":"payload","action":"","pretty":false,"x":270,"y":520,"wires":[["35413631.c8570a","eeebcf13.9b2fd","af96a9a1.7e48c8"]]},{"id":"eeebcf13.9b2fd","type":"change","z":"9485df68.fd8ba","name":"setze flow Variablen","rules":[{"t":"set","p":"ison","pt":"flow","to":"payload.ison","tot":"msg"},{"t":"set","p":"brightness","pt":"flow","to":"payload.brightness","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":480,"y":520,"wires":[[]]},{"id":"1dbf19e0.f8af96","type":"change","z":"9485df68.fd8ba","name":"switch (toggle)","rules":[{"t":"set","p":"payload","pt":"msg","to":"ison","tot":"flow"},{"t":"set","p":"payload","pt":"msg","to":"$not(payload)\t","tot":"jsonata"},{"t":"set","p":"ison","pt":"flow","to":"payload","tot":"msg"},{"t":"set","p":"down","pt":"flow","to":"payload","tot":"msg"},{"t":"change","p":"payload","pt":"msg","from":"true","fromt":"bool","to":"on","tot":"str"},{"t":"change","p":"payload","pt":"msg","from":"false","fromt":"bool","to":"off","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":800,"y":140,"wires":[["f48be0e6.d432f","c4574d9a.44f53","f2909e1e.20a93"]]},{"id":"f48be0e6.d432f","type":"debug","z":"9485df68.fd8ba","name":"command","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":1040,"y":200,"wires":[]},{"id":"c4574d9a.44f53","type":"ioBroker out","z":"9485df68.fd8ba","d":true,"name":"command","topic":"mqtt.1.shellies.shellydimmer.light.0.command","ack":"false","autoCreate":"false","stateName":"","role":"","payloadType":"","readonly":"","stateUnit":"","stateMin":"","stateMax":"","x":1040,"y":140,"wires":[]},{"id":"f2909e1e.20a93","type":"change","z":"9485df68.fd8ba","name":"","rules":[{"t":"change","p":"payload","pt":"msg","from":"off","fromt":"str","to":"0","tot":"num"},{"t":"change","p":"payload","pt":"msg","from":"on","fromt":"str","to":"brightness","tot":"flow"}],"action":"","property":"","from":"","to":"","reg":false,"x":1050,"y":80,"wires":[["6d903925.3ff818"]]},{"id":"6d903925.3ff818","type":"ioBroker out","z":"9485df68.fd8ba","d":true,"name":"brightness","topic":"0_userdata.0.dimmer.brightness","ack":"true","autoCreate":"false","stateName":"","role":"","payloadType":"","readonly":"","stateUnit":"","stateMin":"","stateMax":"","x":1240,"y":80,"wires":[]},{"id":"88d6e66a.ddb258","type":"inject","z":"9485df68.fd8ba","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":true,"onceDelay":0.1,"topic":"","payload":"false","payloadType":"bool","x":110,"y":720,"wires":[["e9fb15f5.98b588"]]},{"id":"e9fb15f5.98b588","type":"change","z":"9485df68.fd8ba","name":"","rules":[{"t":"set","p":"down","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":290,"y":720,"wires":[[]]},{"id":"c5e2ef2d.6e447","type":"switch","z":"9485df68.fd8ba","name":"","property":"payload","propertyType":"msg","rules":[{"t":"istype","v":"boolean","vt":"boolean"},{"t":"istype","v":"number","vt":"number"}],"checkall":"true","repair":false,"outputs":2,"x":810,"y":300,"wires":[["ca4f99bd.cfa6f8"],["ff1bde73.7c88"]]},{"id":"ca4f99bd.cfa6f8","type":"change","z":"9485df68.fd8ba","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"brightness","tot":"flow"},{"t":"change","p":"payload","pt":"msg","from":"100","fromt":"num","to":"98","tot":"num"},{"t":"change","p":"payload","pt":"msg","from":"0","fromt":"num","to":"2","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":1020,"y":240,"wires":[["c5e2ef2d.6e447"]]},{"id":"ff1bde73.7c88","type":"switch","z":"9485df68.fd8ba","name":"brightness zwischen 2 und 98","property":"payload","propertyType":"msg","rules":[{"t":"btwn","v":"2","vt":"num","v2":"98","v2t":"num"}],"checkall":"true","repair":false,"outputs":1,"x":1050,"y":320,"wires":[["4f962993.612978"]]},{"id":"4f962993.612978","type":"switch","z":"9485df68.fd8ba","name":"","property":"down","propertyType":"flow","rules":[{"t":"true"},{"t":"false"}],"checkall":"true","repair":false,"outputs":2,"x":1270,"y":320,"wires":[["ece0bc1e.1d06c"],["a0118b8f.a7ca18"]]},{"id":"ece0bc1e.1d06c","type":"change","z":"9485df68.fd8ba","name":"Verringere Brightness um 2","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload - 2","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":1510,"y":280,"wires":[["71a8a0f2.c1756"]]},{"id":"a0118b8f.a7ca18","type":"change","z":"9485df68.fd8ba","name":"Erhöhe Brightness um 2","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload + 2","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":1500,"y":340,"wires":[["71a8a0f2.c1756"]]},{"id":"71a8a0f2.c1756","type":"switch","z":"9485df68.fd8ba","name":"","property":"payload","propertyType":"msg","rules":[{"t":"gt","v":"98","vt":"num"},{"t":"lt","v":"2","vt":"str"},{"t":"else"}],"checkall":"true","repair":false,"outputs":3,"x":1740,"y":300,"wires":[["879502b2.7de07"],["f57bd65b.705688"],["58308d21.de8e84"]]},{"id":"879502b2.7de07","type":"change","z":"9485df68.fd8ba","name":"= 100","rules":[{"t":"set","p":"payload","pt":"msg","to":"100","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":1900,"y":260,"wires":[["58308d21.de8e84"]]},{"id":"f57bd65b.705688","type":"change","z":"9485df68.fd8ba","name":"= 0","rules":[{"t":"set","p":"payload","pt":"msg","to":"0","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":1900,"y":300,"wires":[["58308d21.de8e84"]]},{"id":"58308d21.de8e84","type":"change","z":"9485df68.fd8ba","name":"Update flow.brightness","rules":[{"t":"set","p":"brightness","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":2120,"y":340,"wires":[["33d29b3d.a84344","fb67d520.bc8208"]]},{"id":"33d29b3d.a84344","type":"rbe","z":"9485df68.fd8ba","name":"","func":"rbe","gap":"","start":"","inout":"out","septopics":true,"property":"payload","topi":"topic","x":2330,"y":340,"wires":[["8ef3400d.e495","d66fdb59.ee3d88"]]},{"id":"fb67d520.bc8208","type":"trigger","z":"9485df68.fd8ba","name":"","op1":"","op2":"true","op1type":"nul","op2type":"bool","duration":"1","extend":true,"overrideDelay":false,"units":"s","reset":"","bytopic":"all","topic":"topic","outputs":1,"x":2350,"y":420,"wires":[["1110ff6a.6c0661"]]},{"id":"1110ff6a.6c0661","type":"change","z":"9485df68.fd8ba","name":"","rules":[{"t":"set","p":"down","pt":"flow","to":"$not($flowContext('down'))\t","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":2550,"y":420,"wires":[[]]},{"id":"8ef3400d.e495","type":"ioBroker out","z":"9485df68.fd8ba","d":true,"name":"brightness","topic":"0_userdata.0.dimmer.brightness","ack":"false","autoCreate":"false","stateName":"","role":"","payloadType":"","readonly":"","stateUnit":"","stateMin":"","stateMax":"","x":2510,"y":340,"wires":[]},{"id":"b2d86076.b0a04","type":"change","z":"9485df68.fd8ba","name":"","rules":[{"t":"move","p":"payload","pt":"msg","to":"brightness","tot":"msg"},{"t":"set","p":"payload","pt":"msg","to":"{\"brightness\":70,\"turn\":\"on\"}","tot":"json"},{"t":"move","p":"brightness","pt":"msg","to":"payload.brightness","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":2680,"y":280,"wires":[["3fe9eb1.ff60414"]]},{"id":"d66fdb59.ee3d88","type":"switch","z":"9485df68.fd8ba","name":"","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"0","vt":"num"},{"t":"gt","v":"0","vt":"num"}],"checkall":"true","repair":false,"outputs":2,"x":2490,"y":260,"wires":[["b3cabeb1.02f96"],["b2d86076.b0a04"]]},{"id":"b3cabeb1.02f96","type":"change","z":"9485df68.fd8ba","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"{\"brightness\":0,\"turn\":\"off\"}","tot":"json"}],"action":"","property":"","from":"","to":"","reg":false,"x":2690,"y":240,"wires":[["3fe9eb1.ff60414"]]},{"id":"3fe9eb1.ff60414","type":"json","z":"9485df68.fd8ba","name":"","property":"payload","action":"","pretty":false,"x":2890,"y":260,"wires":[["583ee091.d82b2"]]},{"id":"583ee091.d82b2","type":"ioBroker out","z":"9485df68.fd8ba","d":true,"name":"","topic":"mqtt.1.shellies.light.0.set","ack":"false","autoCreate":"false","stateName":"","role":"","payloadType":"","readonly":"","stateUnit":"","stateMin":"","stateMax":"","x":3110,"y":260,"wires":[]},{"id":"98936af7.b84158","type":"ioBroker in","z":"9485df68.fd8ba","d":true,"name":"taster","attrname":"","topic":"0_userdata.0.dimmer.taster","payloadType":"value","onlyack":"","func":"rbe","gap":"","fireOnStart":"false","x":130,"y":220,"wires":[["9982d6c4.29e058"]]},{"id":"af96a9a1.7e48c8","type":"change","z":"9485df68.fd8ba","name":"","rules":[{"t":"move","p":"payload","pt":"msg","to":"status","tot":"msg"},{"t":"change","p":"status.ison","pt":"msg","from":"false","fromt":"bool","to":"0","tot":"num"},{"t":"change","p":"status.ison","pt":"msg","from":"true","fromt":"bool","to":"status.brightness","tot":"msg"},{"t":"set","p":"payload","pt":"msg","to":"status.ison","tot":"msg"},{"t":"delete","p":"status","pt":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":460,"y":580,"wires":[["c281079b.e9e728"]]},{"id":"c281079b.e9e728","type":"ioBroker out","z":"9485df68.fd8ba","d":true,"name":"brightness","topic":"0_userdata.0.dimmer.brightness","ack":"false","autoCreate":"false","stateName":"","role":"","payloadType":"","readonly":"","stateUnit":"","stateMin":"","stateMax":"","x":670,"y":580,"wires":[]},{"id":"b9b257e.70ef5a8","type":"ui_template","z":"9485df68.fd8ba","group":"57f13d6f733e5c9d","name":"momentary","order":17,"width":3,"height":1,"format":"<style>\n.nr-dashboard-template {\n    padding: 0px;\n}\n</style>\n<div class=\"momentary_1\">\n   <md-button style=\"width:100%; height:48px; margin: 0px; background-color: var(--nr-dashboard-widgetBackgroundColor); padding-top: 10px;\" ><i class=\"fa fa-lightbulb-o fa-2x\"> </i></md-button>\n</div>\n\n<script>\n\n(function($scope) {\n\n$('.momentary_1').on('touchstart mousedown', function(e) {\n   // e.preventDefault(); //prevent default behavior\n   $scope.send({\"payload\": true});\n});\n\n$('.momentary_1').on('touchend mouseup', function(e) {\n    // e.preventDefault(); //prevent default behavior\n    $scope.send({\"payload\": false});\n});\n    \n})(scope);\n</script>","storeOutMessages":false,"fwdInMessages":true,"resendOnRefresh":false,"templateScope":"local","className":"","x":130,"y":160,"wires":[["16e2170a.87ef89","9982d6c4.29e058"]]},{"id":"bd9be677d25dbd6b","type":"inject","z":"9485df68.fd8ba","name":"Test","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"{\"ison\":false,\"brightness\":0}","payloadType":"json","x":230,"y":460,"wires":[["eeebcf13.9b2fd"]]},{"id":"57f13d6f733e5c9d","type":"ui_group","name":"Test","tab":"20b3095113f94d70","order":1,"disp":true,"width":"6","collapse":false,"className":""},{"id":"20b3095113f94d70","type":"ui_tab","name":"Home","icon":"dashboard","order":2,"disabled":false,"hidden":false}]
              

              Die iobroker Nodes musst halt ggf. gegen entsprechenden mqtt Nodes ersetzen.

              Du siehst also - entweder Standard - der Rest ist machbar und auch eine gute Übung, aber halt alles andere als trivial.

              Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

              M 1 Antwort Letzte Antwort
              1
              • mickymM mickym

                @faithlux Ja ich habe diesen Flow gefunden - aber nichts mit einfach Werte befüllen. Da musst Du schon tiefer einsteigen und zwar viel tiefer.

                Wie gesagt im Normalfall nutzt man im Dashboard einfach den Slider und einen Switch getrennt - habe ich auch bei meinen Lampen so:

                7ef77278-c38b-4a0b-9255-e0fb345d0031-image.png

                Das was Du in meinem Beitrag über das mp4 und dem vis widget gesehen hast, funktioniert für einen Softwaretaster nicht, da dieser einfach nur ein true oder eine beliebige payload schickt beim betätigen. Aber das nur einmal.
                Als erste Vorraussetzung brauchst Du also einen Button, der meldet wenn er gedrückt wird (also Maus down) und meldet wenn er wieder losgelassen wird (also Maus up). Das ist im Standard nie der Fall, deswegen kannst Du da auch kein Long und Short unterscheiden.

                Um so einen Taster im NodeRed Dashboard zu erzeigen, musst Du den also selbst programmieren und halt auch das Aussehen anpassen. Ich nutze sogenannte momentary Buttons zum Beispiel im NodeRed Dashboard, dass ich als Fernbedienung nutze für die Lautstärketasten.

                ff1709e9-1330-49f9-8e43-151fb4545b7d-image.png

                Wie gesagt anpassen musst Du die dann vom Aussehen her selbst. Ich hab Dir diese Taste mal herausgelöst und in ein eigene Dashboardgruppe übernommen. Ich habe mal das Lautstärkesymbol ausgetauscht mit den Awesome-Icons

                4ad0febb-523d-42bc-b5f7-02377a999c72-image.png

                Dieser Button hat nun die Eigenschaft, dass er true beim Drücken und false bei Loslassen sendet und deshalb sich von allen Standardbuttons unterscheidet.

                8cef1d57-14e2-4fa2-ae46-87f80d59f837-image.png

                Hier die Node als Einzelstück:

                [{"id":"b9b257e.70ef5a8","type":"ui_template","z":"9485df68.fd8ba","group":"57f13d6f733e5c9d","name":"momentary","order":17,"width":3,"height":1,"format":"<style>\n.nr-dashboard-template {\n    padding: 0px;\n}\n</style>\n<div class=\"momentary_1\">\n   <md-button style=\"width:100%; height:48px; margin: 0px; background-color: var(--nr-dashboard-widgetBackgroundColor); padding-top: 10px;\" ><i class=\"fa fa-lightbulb-o fa-2x\"> </i></md-button>\n</div>\n\n<script>\n\n(function($scope) {\n\n$('.momentary_1').on('touchstart mousedown', function(e) {\n   // e.preventDefault(); //prevent default behavior\n   $scope.send({\"payload\": true});\n});\n\n$('.momentary_1').on('touchend mouseup', function(e) {\n    // e.preventDefault(); //prevent default behavior\n    $scope.send({\"payload\": false});\n});\n    \n})(scope);\n</script>","storeOutMessages":false,"fwdInMessages":true,"resendOnRefresh":false,"templateScope":"local","className":"","x":150,"y":780,"wires":[["111e399f13e068c4"]]},{"id":"57f13d6f733e5c9d","type":"ui_group","name":"Test","tab":"20b3095113f94d70","order":1,"disp":true,"width":"6","collapse":false,"className":""},{"id":"20b3095113f94d70","type":"ui_tab","name":"Home","icon":"dashboard","order":2,"disabled":false,"hidden":false}]
                

                Die Node besteht aus einer template Node mit folgendem Code:

                <style>
                .nr-dashboard-template {
                    padding: 0px;
                }
                </style>
                <div class="momentary_1">
                   <md-button style="width:100%; height:48px; margin: 0px; background-color: var(--nr-dashboard-widgetBackgroundColor); padding-top: 10px;" ><i class="fa fa-lightbulb-o fa-2x"> </i></md-button>
                </div>
                
                <script>
                
                (function($scope) {
                
                $('.momentary_1').on('touchstart mousedown', function(e) {
                   // e.preventDefault(); //prevent default behavior
                   $scope.send({"payload": true});
                });
                
                $('.momentary_1').on('touchend mouseup', function(e) {
                    // e.preventDefault(); //prevent default behavior
                    $scope.send({"payload": false});
                });
                    
                })(scope);
                </script>
                

                Man sieht es wird eine eigene CSS Klasse definiert, die auf Mauseregnisse reagiert. Wenn Du mehrere solcher Nodes auf einer Dashboard-Seite verwendest musst Du darauf achten, dass Du jeder Node eine eigene ID gibst.
                ggf kannst Du das auch über die ID der Node machen:

                <div id="{{'my_'+$id}}" - aber ich habe den Code nicht ausprobiert.

                So hier mal der gesamte Tasterflow:

                [{"id":"9485df68.fd8ba","type":"tab","label":"Tutorial vis Taster","disabled":false,"info":""},{"id":"b0c81813.4154f8","type":"ioBroker in","z":"9485df68.fd8ba","d":true,"name":"taster","topic":"0_userdata.0.dimmer.taster","payloadType":"value","onlyack":"","func":"rbe","gap":"","fireOnStart":"false","x":130,"y":100,"wires":[["16e2170a.87ef89"]]},{"id":"dc014311.a8d3f","type":"debug","z":"9485df68.fd8ba","name":"Taste gedrückt","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":600,"y":60,"wires":[]},{"id":"16e2170a.87ef89","type":"trigger","z":"9485df68.fd8ba","name":"","op1":"true","op2":"","op1type":"bool","op2type":"payl","duration":"-250","extend":true,"overrideDelay":false,"units":"ms","reset":"false","bytopic":"all","topic":"topic","outputs":1,"x":370,"y":100,"wires":[["dc014311.a8d3f","a123b62d.af5fa8"]]},{"id":"9982d6c4.29e058","type":"switch","z":"9485df68.fd8ba","name":"","property":"payload","propertyType":"msg","rules":[{"t":"false"}],"checkall":"true","repair":false,"outputs":1,"x":310,"y":220,"wires":[["d38eb95d.854638","a123b62d.af5fa8"]]},{"id":"d38eb95d.854638","type":"debug","z":"9485df68.fd8ba","name":"Taste losgelassen","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":490,"y":280,"wires":[]},{"id":"a123b62d.af5fa8","type":"function","z":"9485df68.fd8ba","name":"","func":"var count = context.get('count') || 0;\nvar longpress = context.get('longpress') || false;\nif (msg.payload){\n    count += 1;\n    context.set('count',count);\n    if (count > 5) { // Wert erhöhen wenn Longpress zu früh erkannt wird\n        longpress = true;\n        context.set('longpress',longpress);\n        return [null,msg];\n    }\n} else {\n    msg.payload=true;\n    count = 0;\n    context.set('count',count);    \n    if (!longpress) return [msg,null];\n    longpress = false;\n    context.set('longpress',longpress);\n}\n","outputs":2,"noerr":0,"initialize":"","finalize":"","x":590,"y":180,"wires":[["65393650.6cfcd8","1dbf19e0.f8af96"],["faaddc42.671cf","c5e2ef2d.6e447"]],"outputLabels":["shortpress","longpress"]},{"id":"65393650.6cfcd8","type":"debug","z":"9485df68.fd8ba","name":"shortpress","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":810,"y":100,"wires":[]},{"id":"faaddc42.671cf","type":"debug","z":"9485df68.fd8ba","name":"longpress","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":800,"y":340,"wires":[]},{"id":"a9311da5.e0c66","type":"ioBroker in","z":"9485df68.fd8ba","d":true,"name":"status","attrname":"","topic":"mqtt.1.shellies.shellydimmer.light.0.status","payloadType":"value","onlyack":"","func":"rbe","gap":"","fireOnStart":"false","x":150,"y":400,"wires":[["15d1fa89.761575"]]},{"id":"35413631.c8570a","type":"debug","z":"9485df68.fd8ba","name":"status","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":450,"y":340,"wires":[]},{"id":"15d1fa89.761575","type":"json","z":"9485df68.fd8ba","name":"","property":"payload","action":"","pretty":false,"x":290,"y":400,"wires":[["35413631.c8570a","eeebcf13.9b2fd","af96a9a1.7e48c8"]]},{"id":"eeebcf13.9b2fd","type":"change","z":"9485df68.fd8ba","name":"setze flow Variablen","rules":[{"t":"set","p":"ison","pt":"flow","to":"payload.ison","tot":"msg"},{"t":"set","p":"brightness","pt":"flow","to":"payload.brightness","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":500,"y":400,"wires":[[]]},{"id":"1dbf19e0.f8af96","type":"change","z":"9485df68.fd8ba","name":"switch (toggle)","rules":[{"t":"set","p":"payload","pt":"msg","to":"ison","tot":"flow"},{"t":"set","p":"payload","pt":"msg","to":"$not(payload)\t","tot":"jsonata"},{"t":"set","p":"ison","pt":"flow","to":"payload","tot":"msg"},{"t":"set","p":"down","pt":"flow","to":"payload","tot":"msg"},{"t":"change","p":"payload","pt":"msg","from":"true","fromt":"bool","to":"on","tot":"str"},{"t":"change","p":"payload","pt":"msg","from":"false","fromt":"bool","to":"off","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":800,"y":140,"wires":[["f48be0e6.d432f","c4574d9a.44f53","f2909e1e.20a93"]]},{"id":"f48be0e6.d432f","type":"debug","z":"9485df68.fd8ba","name":"command","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":1040,"y":200,"wires":[]},{"id":"c4574d9a.44f53","type":"ioBroker out","z":"9485df68.fd8ba","d":true,"name":"command","topic":"mqtt.1.shellies.shellydimmer.light.0.command","ack":"false","autoCreate":"false","stateName":"","role":"","payloadType":"","readonly":"","stateUnit":"","stateMin":"","stateMax":"","x":1040,"y":140,"wires":[]},{"id":"f2909e1e.20a93","type":"change","z":"9485df68.fd8ba","name":"","rules":[{"t":"change","p":"payload","pt":"msg","from":"off","fromt":"str","to":"0","tot":"num"},{"t":"change","p":"payload","pt":"msg","from":"on","fromt":"str","to":"brightness","tot":"flow"}],"action":"","property":"","from":"","to":"","reg":false,"x":1050,"y":80,"wires":[["6d903925.3ff818"]]},{"id":"6d903925.3ff818","type":"ioBroker out","z":"9485df68.fd8ba","d":true,"name":"brightness","topic":"0_userdata.0.dimmer.brightness","ack":"true","autoCreate":"false","stateName":"","role":"","payloadType":"","readonly":"","stateUnit":"","stateMin":"","stateMax":"","x":1240,"y":80,"wires":[]},{"id":"88d6e66a.ddb258","type":"inject","z":"9485df68.fd8ba","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":true,"onceDelay":0.1,"topic":"","payload":"false","payloadType":"bool","x":130,"y":600,"wires":[["e9fb15f5.98b588"]]},{"id":"e9fb15f5.98b588","type":"change","z":"9485df68.fd8ba","name":"","rules":[{"t":"set","p":"down","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":310,"y":600,"wires":[[]]},{"id":"c5e2ef2d.6e447","type":"switch","z":"9485df68.fd8ba","name":"","property":"payload","propertyType":"msg","rules":[{"t":"istype","v":"boolean","vt":"boolean"},{"t":"istype","v":"number","vt":"number"}],"checkall":"true","repair":false,"outputs":2,"x":810,"y":300,"wires":[["ca4f99bd.cfa6f8"],["ff1bde73.7c88"]]},{"id":"ca4f99bd.cfa6f8","type":"change","z":"9485df68.fd8ba","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"brightness","tot":"flow"},{"t":"change","p":"payload","pt":"msg","from":"100","fromt":"num","to":"98","tot":"num"},{"t":"change","p":"payload","pt":"msg","from":"0","fromt":"num","to":"2","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":1020,"y":240,"wires":[["c5e2ef2d.6e447"]]},{"id":"ff1bde73.7c88","type":"switch","z":"9485df68.fd8ba","name":"brightness zwischen 2 und 98","property":"payload","propertyType":"msg","rules":[{"t":"btwn","v":"2","vt":"num","v2":"98","v2t":"num"}],"checkall":"true","repair":false,"outputs":1,"x":1050,"y":320,"wires":[["4f962993.612978"]]},{"id":"4f962993.612978","type":"switch","z":"9485df68.fd8ba","name":"","property":"down","propertyType":"flow","rules":[{"t":"true"},{"t":"false"}],"checkall":"true","repair":false,"outputs":2,"x":1270,"y":320,"wires":[["ece0bc1e.1d06c"],["a0118b8f.a7ca18"]]},{"id":"ece0bc1e.1d06c","type":"change","z":"9485df68.fd8ba","name":"Verringere Brightness um 2","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload - 2","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":1510,"y":280,"wires":[["71a8a0f2.c1756"]]},{"id":"a0118b8f.a7ca18","type":"change","z":"9485df68.fd8ba","name":"Erhöhe Brightness um 2","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload + 2","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":1500,"y":340,"wires":[["71a8a0f2.c1756"]]},{"id":"71a8a0f2.c1756","type":"switch","z":"9485df68.fd8ba","name":"","property":"payload","propertyType":"msg","rules":[{"t":"gt","v":"98","vt":"num"},{"t":"lt","v":"2","vt":"str"},{"t":"else"}],"checkall":"true","repair":false,"outputs":3,"x":1740,"y":300,"wires":[["879502b2.7de07"],["f57bd65b.705688"],["58308d21.de8e84"]]},{"id":"879502b2.7de07","type":"change","z":"9485df68.fd8ba","name":"= 100","rules":[{"t":"set","p":"payload","pt":"msg","to":"100","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":1900,"y":260,"wires":[["58308d21.de8e84"]]},{"id":"f57bd65b.705688","type":"change","z":"9485df68.fd8ba","name":"= 0","rules":[{"t":"set","p":"payload","pt":"msg","to":"0","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":1900,"y":300,"wires":[["58308d21.de8e84"]]},{"id":"58308d21.de8e84","type":"change","z":"9485df68.fd8ba","name":"Update flow.brightness","rules":[{"t":"set","p":"brightness","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":2120,"y":340,"wires":[["33d29b3d.a84344","fb67d520.bc8208"]]},{"id":"33d29b3d.a84344","type":"rbe","z":"9485df68.fd8ba","name":"","func":"rbe","gap":"","start":"","inout":"out","property":"payload","x":2330,"y":340,"wires":[["8ef3400d.e495","d66fdb59.ee3d88"]]},{"id":"fb67d520.bc8208","type":"trigger","z":"9485df68.fd8ba","name":"","op1":"","op2":"true","op1type":"nul","op2type":"bool","duration":"1","extend":true,"overrideDelay":false,"units":"s","reset":"","bytopic":"all","topic":"topic","outputs":1,"x":2350,"y":420,"wires":[["1110ff6a.6c0661"]]},{"id":"1110ff6a.6c0661","type":"change","z":"9485df68.fd8ba","name":"","rules":[{"t":"set","p":"down","pt":"flow","to":"$not($flowContext('down'))\t","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":2550,"y":420,"wires":[[]]},{"id":"8ef3400d.e495","type":"ioBroker out","z":"9485df68.fd8ba","d":true,"name":"brightness","topic":"0_userdata.0.dimmer.brightness","ack":"false","autoCreate":"false","stateName":"","role":"","payloadType":"","readonly":"","stateUnit":"","stateMin":"","stateMax":"","x":2510,"y":340,"wires":[]},{"id":"b2d86076.b0a04","type":"change","z":"9485df68.fd8ba","name":"","rules":[{"t":"move","p":"payload","pt":"msg","to":"brightness","tot":"msg"},{"t":"set","p":"payload","pt":"msg","to":"{\"brightness\":70,\"turn\":\"on\"}","tot":"json"},{"t":"move","p":"brightness","pt":"msg","to":"payload.brightness","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":2680,"y":280,"wires":[["3fe9eb1.ff60414"]]},{"id":"d66fdb59.ee3d88","type":"switch","z":"9485df68.fd8ba","name":"","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"0","vt":"num"},{"t":"gt","v":"0","vt":"num"}],"checkall":"true","repair":false,"outputs":2,"x":2490,"y":260,"wires":[["b3cabeb1.02f96"],["b2d86076.b0a04"]]},{"id":"b3cabeb1.02f96","type":"change","z":"9485df68.fd8ba","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"{\"brightness\":0,\"turn\":\"off\"}","tot":"json"}],"action":"","property":"","from":"","to":"","reg":false,"x":2690,"y":240,"wires":[["3fe9eb1.ff60414"]]},{"id":"3fe9eb1.ff60414","type":"json","z":"9485df68.fd8ba","name":"","property":"payload","action":"","pretty":false,"x":2890,"y":260,"wires":[["583ee091.d82b2"]]},{"id":"583ee091.d82b2","type":"ioBroker out","z":"9485df68.fd8ba","d":true,"name":"","topic":"mqtt.1.shellies.light.0.set","ack":"false","autoCreate":"false","stateName":"","role":"","payloadType":"","readonly":"","stateUnit":"","stateMin":"","stateMax":"","x":3110,"y":260,"wires":[]},{"id":"98936af7.b84158","type":"ioBroker in","z":"9485df68.fd8ba","d":true,"name":"taster","topic":"0_userdata.0.dimmer.taster","payloadType":"value","onlyack":"","func":"rbe","gap":"","fireOnStart":"false","x":130,"y":220,"wires":[["9982d6c4.29e058"]]},{"id":"af96a9a1.7e48c8","type":"change","z":"9485df68.fd8ba","name":"","rules":[{"t":"move","p":"payload","pt":"msg","to":"status","tot":"msg"},{"t":"change","p":"status.ison","pt":"msg","from":"false","fromt":"bool","to":"0","tot":"num"},{"t":"change","p":"status.ison","pt":"msg","from":"true","fromt":"bool","to":"status.brightness","tot":"msg"},{"t":"set","p":"payload","pt":"msg","to":"status.ison","tot":"msg"},{"t":"delete","p":"status","pt":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":480,"y":460,"wires":[["c281079b.e9e728"]]},{"id":"c281079b.e9e728","type":"ioBroker out","z":"9485df68.fd8ba","d":true,"name":"brightness","topic":"0_userdata.0.dimmer.brightness","ack":"false","autoCreate":"false","stateName":"","role":"","payloadType":"","readonly":"","stateUnit":"","stateMin":"","stateMax":"","x":690,"y":460,"wires":[]},{"id":"b9b257e.70ef5a8","type":"ui_template","z":"9485df68.fd8ba","group":"57f13d6f733e5c9d","name":"momentary","order":17,"width":3,"height":1,"format":"<style>\n.nr-dashboard-template {\n    padding: 0px;\n}\n</style>\n<div class=\"momentary_1\">\n   <md-button style=\"width:100%; height:48px; margin: 0px; background-color: var(--nr-dashboard-widgetBackgroundColor); padding-top: 10px;\" ><i class=\"fa fa-lightbulb-o fa-2x\"> </i></md-button>\n</div>\n\n<script>\n\n(function($scope) {\n\n$('.momentary_1').on('touchstart mousedown', function(e) {\n   // e.preventDefault(); //prevent default behavior\n   $scope.send({\"payload\": true});\n});\n\n$('.momentary_1').on('touchend mouseup', function(e) {\n    // e.preventDefault(); //prevent default behavior\n    $scope.send({\"payload\": false});\n});\n    \n})(scope);\n</script>","storeOutMessages":false,"fwdInMessages":true,"resendOnRefresh":false,"templateScope":"local","className":"","x":150,"y":780,"wires":[["111e399f13e068c4"]]},{"id":"111e399f13e068c4","type":"debug","z":"9485df68.fd8ba","name":"Ausgabe momentary Button","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":420,"y":780,"wires":[]},{"id":"57f13d6f733e5c9d","type":"ui_group","name":"Test","tab":"20b3095113f94d70","order":1,"disp":true,"width":"6","collapse":false,"className":""},{"id":"20b3095113f94d70","type":"ui_tab","name":"Home","icon":"dashboard","order":2,"disabled":false,"hidden":false}]
                

                Der ist schon etwas älter deswegen wurde hier noch ohne JSONATA gearbeitet - um zum Beispiel zu dimmen:

                a9e45db8-e0fb-436f-a018-5a18cf5c606d-image.png

                Das ist wie gesagt noch umständlicher gemacht - aber das kannst Du ggf. ja anpassen, aber es kommen die gleichen Objekte raus.

                Wichtig ist dass Du das Herzstück des Flows begreifst. Bevor ich den richtigen momentary Switch einbinde hier noch mit 2 getrennten Triggern:

                005e3ec4-272e-4ec9-b34c-d054f65e2bd5-image.png

                Der obere Trigger entspricht dem Taster gedrückt, dem unteren Trigger entspricht Taster losgelassen. Solange der Taster gedrückt ist wird also alle 250 Millisekunden eine Nachricht erzeugt und zwar true. Falls false kommt wird der Trigger zurückgesetzt und es werden kein Nachrichten mehr erzeugt. Ich binde Dir später den momentary button noch ein.

                47131266-2ce5-4d89-a645-81d9aa7661d7-image.png

                Also die trigger Node sendet solange true alle 250 ms bis false kommt.

                Nun kommen wir (eine der seltenen Fälle) sinnvoll ohne Programmieren nicht aus - deswegen folgende function Node:

                ce35f6f1-7b1f-4ce1-a06d-5630aacf69a4-image.png

                Hier als Code:

                var count = context.get('count') || 0;
                var longpress = context.get('longpress') || false;
                if (msg.payload){
                    count += 1;
                    context.set('count',count);
                    if (count > 5) { // Wert erhöhen wenn Longpress zu früh erkannt wird
                        longpress = true;
                        context.set('longpress',longpress);
                        return [null,msg];
                    }
                } else {
                    msg.payload=true;
                    count = 0;
                    context.set('count',count);    
                    if (!longpress) return [msg,null];
                    longpress = false;
                    context.set('longpress',longpress);
                }
                

                Wie Du an den ersten beiden Zeilen siehst, wird der Node Kontext für 2 Variablen verwendet. Zum einen ob die Node im Status Longpress ist und wieviele Nachrichten eingegangen sind, bevor eine false Nachricht kommt.

                Wenn die false Nachricht kommt, dann wird der else-Ast ausgeführt und falls die Node nicht im Status Longpress ist, wird eine true Nachricht an den oberen Ausgang geschickt. Ausserdem wird der Zähler zurückgesetzt und der Longpress Zustand auf false.

                Solange True Nachrichten kommen werden diese gezählt und ab 5 Nachrichten an den unteren Ausgang weitergeleitet.
                Diese Zahl kannst Du natürlich anpassen, so wie Du es willst. Da alle 250 ms eine Nachricht von der Trigger Node erzeugt wird und erst ab mehr als 5 Nachrichten ein Longpress erkannt wird, wird am 1,5 Sekunden ein Longpress erkannt.

                Wenn Du was nicht verstehst musst halt nachfragen.

                So ich habe mal den momentary button eingebunden:

                682e24c2-89d1-451e-93d3-fe1cbe45a1bb-image.png

                Wird der button nur kurz gedrückt siehst Du dass die Nachricht am oberen Ausgang rauskommt - habe den shortpress debug aktiviert (hellblau) , drückst Du länger werden alle Nachrichten nach 1,5 Sekunden nach unten geleitet (lila).

                So damit Du weiter den Flow verstehst, habe ich hier mal als Trockenübung über eine Inject Node mal die Flowvariablen initialisiert. (Test Inject Node)

                de6cbe40-c355-4070-8853-0584d8d98e7e-image.png

                Im Flowkontext wird also folgendes gespeichert:

                fbb1ab86-95ca-4d84-bbb8-f17fbbea3ea6-image.png

                Das aktuelle Dimmlevel, in welche Richtung gedimmt wird und ob die Lampe an ist.

                Bei kurzem Drücken, schaltet also das commando (toggelt) zwischen "on" und "off".
                de86e8ff-9663-4775-8220-f44afb813d4e-image.png

                Das Dimmen siehst Du nicht als Trockenübung - da hier der tatsächliche Status der Lampe triggert. Das ist auch wichtig, da Du ja weiterhin über den physischen Taster schalten kannst.

                Zum Schluss noch eine Erklärung dieses Flow teils beim Dimmen:

                ed7cba3f-9b9d-4438-be9c-7bf83694aa8a-image.png

                Wenn keine neuen Dimmkommandos mehr kommen, dann wird die flow.down variable umgeschaltet.

                40e6d6a0-ae49-4de6-9ad8-69209c01fcc6-image.png

                Das ist im Prinzip die Dimmrichtung. Über die Flowvariable wird also entschieden ob bei erneutem Longpress auf- oder abgedimmt wird.

                ff43600b-14ff-46dd-9f92-13752f9fc1ea-image.png

                So hier nochmal der Flow in letzter Form:

                [{"id":"9485df68.fd8ba","type":"tab","label":"Tutorial vis Taster","disabled":false,"info":""},{"id":"b0c81813.4154f8","type":"ioBroker in","z":"9485df68.fd8ba","d":true,"name":"taster","attrname":"","topic":"0_userdata.0.dimmer.taster","payloadType":"value","onlyack":"","func":"rbe","gap":"","fireOnStart":"false","x":130,"y":100,"wires":[["16e2170a.87ef89"]]},{"id":"dc014311.a8d3f","type":"debug","z":"9485df68.fd8ba","name":"Taste gedrückt","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":600,"y":60,"wires":[]},{"id":"16e2170a.87ef89","type":"trigger","z":"9485df68.fd8ba","name":"","op1":"true","op2":"","op1type":"bool","op2type":"payl","duration":"-250","extend":true,"overrideDelay":false,"units":"ms","reset":"false","bytopic":"all","topic":"topic","outputs":1,"x":370,"y":100,"wires":[["dc014311.a8d3f","a123b62d.af5fa8"]]},{"id":"9982d6c4.29e058","type":"switch","z":"9485df68.fd8ba","name":"","property":"payload","propertyType":"msg","rules":[{"t":"false"}],"checkall":"true","repair":false,"outputs":1,"x":310,"y":220,"wires":[["d38eb95d.854638","a123b62d.af5fa8"]]},{"id":"d38eb95d.854638","type":"debug","z":"9485df68.fd8ba","name":"Taste losgelassen","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":490,"y":280,"wires":[]},{"id":"a123b62d.af5fa8","type":"function","z":"9485df68.fd8ba","name":"","func":"var count = context.get('count') || 0;\nvar longpress = context.get('longpress') || false;\nif (msg.payload){\n    count += 1;\n    context.set('count',count);\n    if (count > 5) { // Wert erhöhen wenn Longpress zu früh erkannt wird\n        longpress = true;\n        context.set('longpress',longpress);\n        return [null,msg];\n    }\n} else {\n    msg.payload=true;\n    count = 0;\n    context.set('count',count);    \n    if (!longpress) return [msg,null];\n    longpress = false;\n    context.set('longpress',longpress);\n}\n","outputs":2,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":590,"y":180,"wires":[["65393650.6cfcd8","1dbf19e0.f8af96"],["faaddc42.671cf","c5e2ef2d.6e447"]],"outputLabels":["shortpress","longpress"]},{"id":"65393650.6cfcd8","type":"debug","z":"9485df68.fd8ba","name":"shortpress","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":810,"y":100,"wires":[]},{"id":"faaddc42.671cf","type":"debug","z":"9485df68.fd8ba","name":"longpress","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":800,"y":340,"wires":[]},{"id":"a9311da5.e0c66","type":"ioBroker in","z":"9485df68.fd8ba","d":true,"name":"status","attrname":"","topic":"mqtt.1.shellies.shellydimmer.light.0.status","payloadType":"value","onlyack":"","func":"rbe","gap":"","fireOnStart":"false","x":130,"y":520,"wires":[["15d1fa89.761575"]]},{"id":"35413631.c8570a","type":"debug","z":"9485df68.fd8ba","name":"status","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":430,"y":460,"wires":[]},{"id":"15d1fa89.761575","type":"json","z":"9485df68.fd8ba","name":"","property":"payload","action":"","pretty":false,"x":270,"y":520,"wires":[["35413631.c8570a","eeebcf13.9b2fd","af96a9a1.7e48c8"]]},{"id":"eeebcf13.9b2fd","type":"change","z":"9485df68.fd8ba","name":"setze flow Variablen","rules":[{"t":"set","p":"ison","pt":"flow","to":"payload.ison","tot":"msg"},{"t":"set","p":"brightness","pt":"flow","to":"payload.brightness","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":480,"y":520,"wires":[[]]},{"id":"1dbf19e0.f8af96","type":"change","z":"9485df68.fd8ba","name":"switch (toggle)","rules":[{"t":"set","p":"payload","pt":"msg","to":"ison","tot":"flow"},{"t":"set","p":"payload","pt":"msg","to":"$not(payload)\t","tot":"jsonata"},{"t":"set","p":"ison","pt":"flow","to":"payload","tot":"msg"},{"t":"set","p":"down","pt":"flow","to":"payload","tot":"msg"},{"t":"change","p":"payload","pt":"msg","from":"true","fromt":"bool","to":"on","tot":"str"},{"t":"change","p":"payload","pt":"msg","from":"false","fromt":"bool","to":"off","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":800,"y":140,"wires":[["f48be0e6.d432f","c4574d9a.44f53","f2909e1e.20a93"]]},{"id":"f48be0e6.d432f","type":"debug","z":"9485df68.fd8ba","name":"command","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":1040,"y":200,"wires":[]},{"id":"c4574d9a.44f53","type":"ioBroker out","z":"9485df68.fd8ba","d":true,"name":"command","topic":"mqtt.1.shellies.shellydimmer.light.0.command","ack":"false","autoCreate":"false","stateName":"","role":"","payloadType":"","readonly":"","stateUnit":"","stateMin":"","stateMax":"","x":1040,"y":140,"wires":[]},{"id":"f2909e1e.20a93","type":"change","z":"9485df68.fd8ba","name":"","rules":[{"t":"change","p":"payload","pt":"msg","from":"off","fromt":"str","to":"0","tot":"num"},{"t":"change","p":"payload","pt":"msg","from":"on","fromt":"str","to":"brightness","tot":"flow"}],"action":"","property":"","from":"","to":"","reg":false,"x":1050,"y":80,"wires":[["6d903925.3ff818"]]},{"id":"6d903925.3ff818","type":"ioBroker out","z":"9485df68.fd8ba","d":true,"name":"brightness","topic":"0_userdata.0.dimmer.brightness","ack":"true","autoCreate":"false","stateName":"","role":"","payloadType":"","readonly":"","stateUnit":"","stateMin":"","stateMax":"","x":1240,"y":80,"wires":[]},{"id":"88d6e66a.ddb258","type":"inject","z":"9485df68.fd8ba","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":true,"onceDelay":0.1,"topic":"","payload":"false","payloadType":"bool","x":110,"y":720,"wires":[["e9fb15f5.98b588"]]},{"id":"e9fb15f5.98b588","type":"change","z":"9485df68.fd8ba","name":"","rules":[{"t":"set","p":"down","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":290,"y":720,"wires":[[]]},{"id":"c5e2ef2d.6e447","type":"switch","z":"9485df68.fd8ba","name":"","property":"payload","propertyType":"msg","rules":[{"t":"istype","v":"boolean","vt":"boolean"},{"t":"istype","v":"number","vt":"number"}],"checkall":"true","repair":false,"outputs":2,"x":810,"y":300,"wires":[["ca4f99bd.cfa6f8"],["ff1bde73.7c88"]]},{"id":"ca4f99bd.cfa6f8","type":"change","z":"9485df68.fd8ba","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"brightness","tot":"flow"},{"t":"change","p":"payload","pt":"msg","from":"100","fromt":"num","to":"98","tot":"num"},{"t":"change","p":"payload","pt":"msg","from":"0","fromt":"num","to":"2","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":1020,"y":240,"wires":[["c5e2ef2d.6e447"]]},{"id":"ff1bde73.7c88","type":"switch","z":"9485df68.fd8ba","name":"brightness zwischen 2 und 98","property":"payload","propertyType":"msg","rules":[{"t":"btwn","v":"2","vt":"num","v2":"98","v2t":"num"}],"checkall":"true","repair":false,"outputs":1,"x":1050,"y":320,"wires":[["4f962993.612978"]]},{"id":"4f962993.612978","type":"switch","z":"9485df68.fd8ba","name":"","property":"down","propertyType":"flow","rules":[{"t":"true"},{"t":"false"}],"checkall":"true","repair":false,"outputs":2,"x":1270,"y":320,"wires":[["ece0bc1e.1d06c"],["a0118b8f.a7ca18"]]},{"id":"ece0bc1e.1d06c","type":"change","z":"9485df68.fd8ba","name":"Verringere Brightness um 2","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload - 2","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":1510,"y":280,"wires":[["71a8a0f2.c1756"]]},{"id":"a0118b8f.a7ca18","type":"change","z":"9485df68.fd8ba","name":"Erhöhe Brightness um 2","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload + 2","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":1500,"y":340,"wires":[["71a8a0f2.c1756"]]},{"id":"71a8a0f2.c1756","type":"switch","z":"9485df68.fd8ba","name":"","property":"payload","propertyType":"msg","rules":[{"t":"gt","v":"98","vt":"num"},{"t":"lt","v":"2","vt":"str"},{"t":"else"}],"checkall":"true","repair":false,"outputs":3,"x":1740,"y":300,"wires":[["879502b2.7de07"],["f57bd65b.705688"],["58308d21.de8e84"]]},{"id":"879502b2.7de07","type":"change","z":"9485df68.fd8ba","name":"= 100","rules":[{"t":"set","p":"payload","pt":"msg","to":"100","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":1900,"y":260,"wires":[["58308d21.de8e84"]]},{"id":"f57bd65b.705688","type":"change","z":"9485df68.fd8ba","name":"= 0","rules":[{"t":"set","p":"payload","pt":"msg","to":"0","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":1900,"y":300,"wires":[["58308d21.de8e84"]]},{"id":"58308d21.de8e84","type":"change","z":"9485df68.fd8ba","name":"Update flow.brightness","rules":[{"t":"set","p":"brightness","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":2120,"y":340,"wires":[["33d29b3d.a84344","fb67d520.bc8208"]]},{"id":"33d29b3d.a84344","type":"rbe","z":"9485df68.fd8ba","name":"","func":"rbe","gap":"","start":"","inout":"out","septopics":true,"property":"payload","topi":"topic","x":2330,"y":340,"wires":[["8ef3400d.e495","d66fdb59.ee3d88"]]},{"id":"fb67d520.bc8208","type":"trigger","z":"9485df68.fd8ba","name":"","op1":"","op2":"true","op1type":"nul","op2type":"bool","duration":"1","extend":true,"overrideDelay":false,"units":"s","reset":"","bytopic":"all","topic":"topic","outputs":1,"x":2350,"y":420,"wires":[["1110ff6a.6c0661"]]},{"id":"1110ff6a.6c0661","type":"change","z":"9485df68.fd8ba","name":"","rules":[{"t":"set","p":"down","pt":"flow","to":"$not($flowContext('down'))\t","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":2550,"y":420,"wires":[[]]},{"id":"8ef3400d.e495","type":"ioBroker out","z":"9485df68.fd8ba","d":true,"name":"brightness","topic":"0_userdata.0.dimmer.brightness","ack":"false","autoCreate":"false","stateName":"","role":"","payloadType":"","readonly":"","stateUnit":"","stateMin":"","stateMax":"","x":2510,"y":340,"wires":[]},{"id":"b2d86076.b0a04","type":"change","z":"9485df68.fd8ba","name":"","rules":[{"t":"move","p":"payload","pt":"msg","to":"brightness","tot":"msg"},{"t":"set","p":"payload","pt":"msg","to":"{\"brightness\":70,\"turn\":\"on\"}","tot":"json"},{"t":"move","p":"brightness","pt":"msg","to":"payload.brightness","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":2680,"y":280,"wires":[["3fe9eb1.ff60414"]]},{"id":"d66fdb59.ee3d88","type":"switch","z":"9485df68.fd8ba","name":"","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"0","vt":"num"},{"t":"gt","v":"0","vt":"num"}],"checkall":"true","repair":false,"outputs":2,"x":2490,"y":260,"wires":[["b3cabeb1.02f96"],["b2d86076.b0a04"]]},{"id":"b3cabeb1.02f96","type":"change","z":"9485df68.fd8ba","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"{\"brightness\":0,\"turn\":\"off\"}","tot":"json"}],"action":"","property":"","from":"","to":"","reg":false,"x":2690,"y":240,"wires":[["3fe9eb1.ff60414"]]},{"id":"3fe9eb1.ff60414","type":"json","z":"9485df68.fd8ba","name":"","property":"payload","action":"","pretty":false,"x":2890,"y":260,"wires":[["583ee091.d82b2"]]},{"id":"583ee091.d82b2","type":"ioBroker out","z":"9485df68.fd8ba","d":true,"name":"","topic":"mqtt.1.shellies.light.0.set","ack":"false","autoCreate":"false","stateName":"","role":"","payloadType":"","readonly":"","stateUnit":"","stateMin":"","stateMax":"","x":3110,"y":260,"wires":[]},{"id":"98936af7.b84158","type":"ioBroker in","z":"9485df68.fd8ba","d":true,"name":"taster","attrname":"","topic":"0_userdata.0.dimmer.taster","payloadType":"value","onlyack":"","func":"rbe","gap":"","fireOnStart":"false","x":130,"y":220,"wires":[["9982d6c4.29e058"]]},{"id":"af96a9a1.7e48c8","type":"change","z":"9485df68.fd8ba","name":"","rules":[{"t":"move","p":"payload","pt":"msg","to":"status","tot":"msg"},{"t":"change","p":"status.ison","pt":"msg","from":"false","fromt":"bool","to":"0","tot":"num"},{"t":"change","p":"status.ison","pt":"msg","from":"true","fromt":"bool","to":"status.brightness","tot":"msg"},{"t":"set","p":"payload","pt":"msg","to":"status.ison","tot":"msg"},{"t":"delete","p":"status","pt":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":460,"y":580,"wires":[["c281079b.e9e728"]]},{"id":"c281079b.e9e728","type":"ioBroker out","z":"9485df68.fd8ba","d":true,"name":"brightness","topic":"0_userdata.0.dimmer.brightness","ack":"false","autoCreate":"false","stateName":"","role":"","payloadType":"","readonly":"","stateUnit":"","stateMin":"","stateMax":"","x":670,"y":580,"wires":[]},{"id":"b9b257e.70ef5a8","type":"ui_template","z":"9485df68.fd8ba","group":"57f13d6f733e5c9d","name":"momentary","order":17,"width":3,"height":1,"format":"<style>\n.nr-dashboard-template {\n    padding: 0px;\n}\n</style>\n<div class=\"momentary_1\">\n   <md-button style=\"width:100%; height:48px; margin: 0px; background-color: var(--nr-dashboard-widgetBackgroundColor); padding-top: 10px;\" ><i class=\"fa fa-lightbulb-o fa-2x\"> </i></md-button>\n</div>\n\n<script>\n\n(function($scope) {\n\n$('.momentary_1').on('touchstart mousedown', function(e) {\n   // e.preventDefault(); //prevent default behavior\n   $scope.send({\"payload\": true});\n});\n\n$('.momentary_1').on('touchend mouseup', function(e) {\n    // e.preventDefault(); //prevent default behavior\n    $scope.send({\"payload\": false});\n});\n    \n})(scope);\n</script>","storeOutMessages":false,"fwdInMessages":true,"resendOnRefresh":false,"templateScope":"local","className":"","x":130,"y":160,"wires":[["16e2170a.87ef89","9982d6c4.29e058"]]},{"id":"bd9be677d25dbd6b","type":"inject","z":"9485df68.fd8ba","name":"Test","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"{\"ison\":false,\"brightness\":0}","payloadType":"json","x":230,"y":460,"wires":[["eeebcf13.9b2fd"]]},{"id":"57f13d6f733e5c9d","type":"ui_group","name":"Test","tab":"20b3095113f94d70","order":1,"disp":true,"width":"6","collapse":false,"className":""},{"id":"20b3095113f94d70","type":"ui_tab","name":"Home","icon":"dashboard","order":2,"disabled":false,"hidden":false}]
                

                Die iobroker Nodes musst halt ggf. gegen entsprechenden mqtt Nodes ersetzen.

                Du siehst also - entweder Standard - der Rest ist machbar und auch eine gute Übung, aber halt alles andere als trivial.

                M Offline
                M Offline
                m.gans
                schrieb am zuletzt editiert von
                #7

                @mickym Ach du heilige.. Danke für deine Arbeit.
                Ich studiere das heute Abend mal und probiere meine Sache zum laufen zu bringen 😂

                Sieht in der Tat sehr komplex aus - aber ja ist sicher eine gute Übung.

                mickymM 1 Antwort Letzte Antwort
                0
                • M m.gans

                  @mickym Ach du heilige.. Danke für deine Arbeit.
                  Ich studiere das heute Abend mal und probiere meine Sache zum laufen zu bringen 😂

                  Sieht in der Tat sehr komplex aus - aber ja ist sicher eine gute Übung.

                  mickymM Online
                  mickymM Online
                  mickym
                  Most Active
                  schrieb am zuletzt editiert von
                  #8

                  @faithlux Ja manches würde ich heute mit JSONATA machen - aber das ist halt noch ein Flow aus meinen früheren Tagen und ich wollte ihn jetzt nicht ewig überarbeiten.

                  Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                  1 Antwort Letzte Antwort
                  1
                  • I Offline
                    I Offline
                    icanic
                    schrieb am zuletzt editiert von Negalein
                    #9

                    @m-gans you can try to use this. It is not working over mqtt so you can leave shell cloud turned on.

                    [
                        {
                            "id": "c4e589e09355c27d",
                            "type": "shelly-cloud",
                            "z": "d724ef4f9c579ce1",
                            "server": "33eca59cc5addf74",
                            "description": "",
                            "outputs": 1,
                            "x": 690,
                            "y": 700,
                            "wires": [
                                [
                                    "42afdd0863c670c9",
                                    "28bd90bf0488a3bc"
                                ]
                            ]
                        },
                        {
                            "id": "28bd90bf0488a3bc",
                            "type": "shelly-gen1",
                            "z": "d724ef4f9c579ce1",
                            "hostname": "10.0.1.34",
                            "description": "",
                            "mode": "polling",
                            "server": "033a6e9acf499057",
                            "outputmode": "event",
                            "uploadretryinterval": 5000,
                            "pollinginterval": 5000,
                            "pollstatus": false,
                            "getstatusoncommand": true,
                            "devicetype": "Dimmer",
                            "devicetypemustmatchexactly": true,
                            "outputs": 1,
                            "x": 900,
                            "y": 640,
                            "wires": [
                                []
                            ]
                        },
                        {
                            "id": "42afdd0863c670c9",
                            "type": "debug",
                            "z": "d724ef4f9c579ce1",
                            "name": "debug 1",
                            "active": true,
                            "tosidebar": true,
                            "console": false,
                            "tostatus": false,
                            "complete": "false",
                            "statusVal": "",
                            "statusType": "auto",
                            "x": 900,
                            "y": 760,
                            "wires": []
                        },
                        {
                            "id": "aeb4c2cae80da838",
                            "type": "function",
                            "z": "d724ef4f9c579ce1",
                            "name": "on",
                            "func": "msg.payload = {\n    on:true\n};\nreturn msg;",
                            "outputs": 1,
                            "noerr": 0,
                            "initialize": "",
                            "finalize": "",
                            "libs": [],
                            "x": 270,
                            "y": 500,
                            "wires": [
                                [
                                    "c4e589e09355c27d"
                                ]
                            ]
                        },
                        {
                            "id": "cb63debaf7f8cc7a",
                            "type": "function",
                            "z": "d724ef4f9c579ce1",
                            "name": "off",
                            "func": "msg.payload = {\n    on:false\n};\nreturn msg;",
                            "outputs": 1,
                            "noerr": 0,
                            "initialize": "",
                            "finalize": "",
                            "libs": [],
                            "x": 270,
                            "y": 540,
                            "wires": [
                                [
                                    "c4e589e09355c27d"
                                ]
                            ]
                        },
                        {
                            "id": "a2c586bfef493ba4",
                            "type": "inject",
                            "z": "d724ef4f9c579ce1",
                            "name": "Turn On",
                            "props": [
                                {
                                    "p": "payload"
                                },
                                {
                                    "p": "topic",
                                    "vt": "str"
                                }
                            ],
                            "repeat": "",
                            "crontab": "",
                            "once": false,
                            "onceDelay": 0.1,
                            "topic": "",
                            "payload": "",
                            "payloadType": "date",
                            "x": 120,
                            "y": 500,
                            "wires": [
                                [
                                    "aeb4c2cae80da838"
                                ]
                            ]
                        },
                        {
                            "id": "aa0ecc89becb52b6",
                            "type": "inject",
                            "z": "d724ef4f9c579ce1",
                            "name": "Turn Off",
                            "props": [
                                {
                                    "p": "payload"
                                },
                                {
                                    "p": "topic",
                                    "vt": "str"
                                }
                            ],
                            "repeat": "",
                            "crontab": "",
                            "once": false,
                            "onceDelay": 0.1,
                            "topic": "",
                            "payload": "",
                            "payloadType": "date",
                            "x": 120,
                            "y": 540,
                            "wires": [
                                [
                                    "cb63debaf7f8cc7a"
                                ]
                            ]
                        },
                        {
                            "id": "2cf86b714691d6aa",
                            "type": "inject",
                            "z": "d724ef4f9c579ce1",
                            "name": "Poll Status",
                            "props": [
                                {
                                    "p": "payload"
                                },
                                {
                                    "p": "topic",
                                    "vt": "str"
                                }
                            ],
                            "repeat": "",
                            "crontab": "",
                            "once": false,
                            "onceDelay": 0.1,
                            "topic": "",
                            "payload": "",
                            "payloadType": "str",
                            "x": 120,
                            "y": 440,
                            "wires": [
                                []
                            ]
                        },
                        {
                            "id": "3340ffcb8fc86c54",
                            "type": "function",
                            "z": "d724ef4f9c579ce1",
                            "name": "toggle",
                            "func": "msg.payload = {\n    turn:\"toggle\"\n};\nreturn msg;",
                            "outputs": 1,
                            "noerr": 0,
                            "initialize": "",
                            "finalize": "",
                            "libs": [],
                            "x": 270,
                            "y": 580,
                            "wires": [
                                [
                                    "c4e589e09355c27d"
                                ]
                            ]
                        },
                        {
                            "id": "0ea0fceb5bc1b8f8",
                            "type": "inject",
                            "z": "d724ef4f9c579ce1",
                            "name": "Toggle",
                            "props": [
                                {
                                    "p": "payload"
                                },
                                {
                                    "p": "topic",
                                    "vt": "str"
                                }
                            ],
                            "repeat": "",
                            "crontab": "",
                            "once": false,
                            "onceDelay": 0.1,
                            "topic": "",
                            "payload": "",
                            "payloadType": "date",
                            "x": 110,
                            "y": 580,
                            "wires": [
                                [
                                    "3340ffcb8fc86c54"
                                ]
                            ]
                        },
                        {
                            "id": "e2e90ad3b39f30fb",
                            "type": "function",
                            "z": "d724ef4f9c579ce1",
                            "name": "brightness 100%",
                            "func": "msg.payload = {\nbrightness: 100\n}\nreturn msg;",
                            "outputs": 1,
                            "noerr": 0,
                            "initialize": "",
                            "finalize": "",
                            "libs": [],
                            "x": 310,
                            "y": 620,
                            "wires": [
                                [
                                    "c4e589e09355c27d"
                                ]
                            ]
                        },
                        {
                            "id": "5cd3246ee54df257",
                            "type": "inject",
                            "z": "d724ef4f9c579ce1",
                            "name": "Brightness",
                            "props": [
                                {
                                    "p": "payload"
                                },
                                {
                                    "p": "topic",
                                    "vt": "str"
                                }
                            ],
                            "repeat": "",
                            "crontab": "",
                            "once": false,
                            "onceDelay": 0.1,
                            "topic": "",
                            "payload": "",
                            "payloadType": "date",
                            "x": 120,
                            "y": 620,
                            "wires": [
                                [
                                    "e2e90ad3b39f30fb"
                                ]
                            ]
                        },
                        {
                            "id": "bbfe7de807db8d9d",
                            "type": "function",
                            "z": "d724ef4f9c579ce1",
                            "name": "brightness 25%",
                            "func": "msg.payload = {\nbrightness: 25\n}\nreturn msg;",
                            "outputs": 1,
                            "noerr": 0,
                            "initialize": "",
                            "finalize": "",
                            "libs": [],
                            "x": 300,
                            "y": 660,
                            "wires": [
                                [
                                    "c4e589e09355c27d"
                                ]
                            ]
                        },
                        {
                            "id": "c3dabccd82633861",
                            "type": "inject",
                            "z": "d724ef4f9c579ce1",
                            "name": "Brightness",
                            "props": [
                                {
                                    "p": "payload"
                                },
                                {
                                    "p": "topic",
                                    "vt": "str"
                                }
                            ],
                            "repeat": "",
                            "crontab": "",
                            "once": false,
                            "onceDelay": 0.1,
                            "topic": "",
                            "payload": "",
                            "payloadType": "date",
                            "x": 120,
                            "y": 660,
                            "wires": [
                                [
                                    "bbfe7de807db8d9d"
                                ]
                            ]
                        },
                        {
                            "id": "784a23f5f04fe49d",
                            "type": "function",
                            "z": "d724ef4f9c579ce1",
                            "name": "turn on & set brightness 60%",
                            "func": "msg.payload = {\n    on : true,\n    brightness: 60\n}\nreturn msg;",
                            "outputs": 1,
                            "noerr": 0,
                            "initialize": "",
                            "finalize": "",
                            "libs": [],
                            "x": 340,
                            "y": 700,
                            "wires": [
                                [
                                    "c4e589e09355c27d"
                                ]
                            ]
                        },
                        {
                            "id": "84b0058013cd5e99",
                            "type": "inject",
                            "z": "d724ef4f9c579ce1",
                            "name": "Combined",
                            "props": [
                                {
                                    "p": "payload"
                                },
                                {
                                    "p": "topic",
                                    "vt": "str"
                                }
                            ],
                            "repeat": "",
                            "crontab": "",
                            "once": false,
                            "onceDelay": 0.1,
                            "topic": "",
                            "payload": "",
                            "payloadType": "date",
                            "x": 120,
                            "y": 700,
                            "wires": [
                                [
                                    "784a23f5f04fe49d"
                                ]
                            ]
                        },
                        {
                            "id": "cde543a45872eba4",
                            "type": "function",
                            "z": "d724ef4f9c579ce1",
                            "name": "on 2s",
                            "func": "msg.payload = {\n    on:true,\n    brightness: 100,\n    transition: 1000, // optional 0..5000ms\n    timer: 2\n};\nreturn msg;",
                            "outputs": 1,
                            "noerr": 0,
                            "initialize": "",
                            "finalize": "",
                            "libs": [],
                            "x": 270,
                            "y": 740,
                            "wires": [
                                [
                                    "c4e589e09355c27d"
                                ]
                            ]
                        },
                        {
                            "id": "21765d5065807b6a",
                            "type": "function",
                            "z": "d724ef4f9c579ce1",
                            "name": "up 10%",
                            "func": "msg.payload = {\n    dim : 'up',\n    step : 10, // %\n};\nreturn msg;",
                            "outputs": 1,
                            "noerr": 0,
                            "initialize": "",
                            "finalize": "",
                            "libs": [],
                            "x": 280,
                            "y": 780,
                            "wires": [
                                [
                                    "c4e589e09355c27d"
                                ]
                            ]
                        },
                        {
                            "id": "f23c3049caf67f07",
                            "type": "inject",
                            "z": "d724ef4f9c579ce1",
                            "name": "Turn On",
                            "props": [
                                {
                                    "p": "payload"
                                },
                                {
                                    "p": "topic",
                                    "vt": "str"
                                }
                            ],
                            "repeat": "",
                            "crontab": "",
                            "once": false,
                            "onceDelay": 0.1,
                            "topic": "",
                            "payload": "",
                            "payloadType": "date",
                            "x": 120,
                            "y": 740,
                            "wires": [
                                [
                                    "cde543a45872eba4"
                                ]
                            ]
                        },
                        {
                            "id": "70d0d15752323197",
                            "type": "inject",
                            "z": "d724ef4f9c579ce1",
                            "name": "Dim Up",
                            "props": [
                                {
                                    "p": "payload"
                                },
                                {
                                    "p": "topic",
                                    "vt": "str"
                                }
                            ],
                            "repeat": "",
                            "crontab": "",
                            "once": false,
                            "onceDelay": 0.1,
                            "topic": "",
                            "payload": "",
                            "payloadType": "date",
                            "x": 110,
                            "y": 780,
                            "wires": [
                                [
                                    "21765d5065807b6a"
                                ]
                            ]
                        },
                        {
                            "id": "dcd652864f8a15d5",
                            "type": "function",
                            "z": "d724ef4f9c579ce1",
                            "name": "down 10%",
                            "func": "msg.payload = {\n    dim : 'down',\n    step : 10, // %\n};\nreturn msg;",
                            "outputs": 1,
                            "noerr": 0,
                            "initialize": "",
                            "finalize": "",
                            "libs": [],
                            "x": 290,
                            "y": 820,
                            "wires": [
                                [
                                    "c4e589e09355c27d"
                                ]
                            ]
                        },
                        {
                            "id": "828232e21c455142",
                            "type": "inject",
                            "z": "d724ef4f9c579ce1",
                            "name": "Dim Down",
                            "props": [
                                {
                                    "p": "payload"
                                },
                                {
                                    "p": "topic",
                                    "vt": "str"
                                }
                            ],
                            "repeat": "",
                            "crontab": "",
                            "once": false,
                            "onceDelay": 0.1,
                            "topic": "",
                            "payload": "",
                            "payloadType": "date",
                            "x": 120,
                            "y": 820,
                            "wires": [
                                [
                                    "dcd652864f8a15d5"
                                ]
                            ]
                        },
                        {
                            "id": "4d828a1702a46719",
                            "type": "function",
                            "z": "d724ef4f9c579ce1",
                            "name": "stop",
                            "func": "msg.payload = {\n    dim : 'stop',\n};\nreturn msg;",
                            "outputs": 1,
                            "noerr": 0,
                            "initialize": "",
                            "finalize": "",
                            "libs": [],
                            "x": 270,
                            "y": 860,
                            "wires": [
                                [
                                    "c4e589e09355c27d"
                                ]
                            ]
                        },
                        {
                            "id": "a8a4fae7ed7cb40c",
                            "type": "inject",
                            "z": "d724ef4f9c579ce1",
                            "name": "Dim Stop",
                            "props": [
                                {
                                    "p": "payload"
                                },
                                {
                                    "p": "topic",
                                    "vt": "str"
                                }
                            ],
                            "repeat": "",
                            "crontab": "",
                            "once": false,
                            "onceDelay": 0.1,
                            "topic": "",
                            "payload": "",
                            "payloadType": "date",
                            "x": 120,
                            "y": 860,
                            "wires": [
                                [
                                    "4d828a1702a46719"
                                ]
                            ]
                        },
                        {
                            "id": "775474fc432399fe",
                            "type": "ui_slider",
                            "z": "d724ef4f9c579ce1",
                            "name": "",
                            "label": "Svijetlo boravak",
                            "tooltip": "",
                            "group": "d5e8a876913ae91e",
                            "order": 0,
                            "width": 0,
                            "height": 0,
                            "passthru": false,
                            "outs": "end",
                            "topic": "payload",
                            "topicType": "msg",
                            "min": "1",
                            "max": "100",
                            "step": "1",
                            "className": "",
                            "x": 120,
                            "y": 360,
                            "wires": [
                                [
                                    "be8c892c4ecbe444"
                                ]
                            ]
                        },
                        {
                            "id": "be8c892c4ecbe444",
                            "type": "function",
                            "z": "d724ef4f9c579ce1",
                            "name": "set brightness and turn on",
                            "func": "msg.payload = {\n    on : true,\n    brightness: msg.payload\n}\nreturn msg;",
                            "outputs": 1,
                            "noerr": 0,
                            "initialize": "",
                            "finalize": "",
                            "libs": [],
                            "x": 370,
                            "y": 360,
                            "wires": [
                                [
                                    "c4e589e09355c27d"
                                ]
                            ]
                        },
                        {
                            "id": "611ce15e1152fcb8",
                            "type": "ui_button",
                            "z": "d724ef4f9c579ce1",
                            "name": "",
                            "group": "d5e8a876913ae91e",
                            "order": 2,
                            "width": "3",
                            "height": "1",
                            "passthru": false,
                            "label": "Upali",
                            "tooltip": "",
                            "color": "",
                            "bgcolor": "",
                            "className": "",
                            "icon": "",
                            "payload": "",
                            "payloadType": "date",
                            "topic": "topic",
                            "topicType": "msg",
                            "x": 90,
                            "y": 220,
                            "wires": [
                                [
                                    "aeb4c2cae80da838"
                                ]
                            ]
                        },
                        {
                            "id": "dda55d360731af0b",
                            "type": "ui_button",
                            "z": "d724ef4f9c579ce1",
                            "name": "",
                            "group": "d5e8a876913ae91e",
                            "order": 2,
                            "width": "3",
                            "height": "1",
                            "passthru": false,
                            "label": "Ugasi",
                            "tooltip": "",
                            "color": "",
                            "bgcolor": "",
                            "className": "",
                            "icon": "",
                            "payload": "",
                            "payloadType": "date",
                            "topic": "topic",
                            "topicType": "msg",
                            "x": 90,
                            "y": 260,
                            "wires": [
                                [
                                    "cb63debaf7f8cc7a"
                                ]
                            ]
                        },
                        {
                            "id": "33eca59cc5addf74",
                            "type": "shelly-cloud-server",
                            "description": ""
                        },
                        {
                            "id": "033a6e9acf499057",
                            "type": "shelly-gen1-server",
                            "port": "20001",
                            "hostname": "aaa",
                            "hostip": ""
                        },
                        {
                            "id": "d5e8a876913ae91e",
                            "type": "ui_group",
                            "name": "Svjetlo boravak",
                            "tab": "35399c96328c3aa8",
                            "order": 1,
                            "disp": true,
                            "width": "6",
                            "collapse": false,
                            "className": ""
                        },
                        {
                            "id": "35399c96328c3aa8",
                            "type": "ui_tab",
                            "name": "Home",
                            "icon": "dashboard",
                            "disabled": false,
                            "hidden": false
                        }
                    ]
                    
                    1 Antwort Letzte Antwort
                    0
                    Antworten
                    • In einem neuen Thema antworten
                    Anmelden zum Antworten
                    • Älteste zuerst
                    • Neuste zuerst
                    • Meiste Stimmen


                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    787

                    Online

                    32.4k

                    Benutzer

                    81.5k

                    Themen

                    1.3m

                    Beiträge
                    Community
                    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                    ioBroker Community 2014-2025
                    logo
                    • Anmelden

                    • Du hast noch kein Konto? Registrieren

                    • Anmelden oder registrieren, um zu suchen
                    • Erster Beitrag
                      Letzter Beitrag
                    0
                    • Home
                    • Aktuell
                    • Tags
                    • Ungelesen 0
                    • Kategorien
                    • Unreplied
                    • Beliebt
                    • GitHub
                    • Docu
                    • Hilfe