Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. PWM Steuerung mit Fade

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    PWM Steuerung mit Fade

    This topic has been deleted. Only users with topic management privileges can see it.
    • Aphofis
      Aphofis @paul53 last edited by

      @paul53
      Das ja mal ne coole Funktion!
      Bin noch auf einem Geburtstag
      Teste ich heute Abend mal und wenn die Strömung für 5 Sek. Inaktiv sind beim Wechsel zwischen den Programmen stört mich das nicht

      1 Reply Last reply Reply Quote 0
      • Aphofis
        Aphofis last edited by

        @paul53
        Also ich teste gerade etwas.
        Es gibt die Steuerung Intervall:

        var wellenauswahl, inc, dec, sequenzial, spannung, delta, Intervall;
        
        
        wellenauswahl = getState("Aqua_Control.0.Tunze_Steuerung.Tunze_Wellen_Auswahl").val;
        inc = 1750 / getState("Aqua_Control.0.Tunze_Steuerung.Intervall_Wave_Hold").val;
        dec = -1750 / getState("Aqua_Control.0.Tunze_Steuerung.Intervall_Wave_Down").val;
        on({id: wellenauswahl == 2, change: "ne"}, function (obj) {
          var value = obj.state.val;
          var oldValue = obj.oldState.val;
          sequenzial = (obj.state ? obj.state.val : "");
          if (sequenzial) {
            spannung = 30;
            setState("sonoff.0.Aqua_Wave.Channel1"/*Aqua_Wave_Pump_1*/, spannung);
            delta = inc;
            Intervall = setInterval(function () {
              spannung = (typeof spannung == 'number' ? spannung : 0) + delta;
              setState("sonoff.0.Aqua_Wave.Channel1"/*Aqua_Wave_Pump_1*/, spannung);
              if (spannung >= 100) {
                delta = dec;
              }
              if (spannung <= 30) {
                delta = inc;
                if (!sequenzial) {
                  (function () {if (Intervall) {clearInterval(Intervall); Intervall = null;}})();
                }
              }
            }, 25);
          }
        });
        // Sequenzial_Up (ms)
        on({id: 'Aqua_Control.0.Tunze_Steuerung.Intervall_Wave_Hold', change: "ne"}, function (obj) {
          var value = obj.state.val;
          var oldValue = obj.oldState.val;
          inc = 1750 / (obj.state ? obj.state.val : "");
        });
        // Sequenzial_Down (ms)
        on({id: 'Aqua_Control.0.Tunze_Steuerung.Intervall_Wave_Down', change: "ne"}, function (obj) {
          var value = obj.state.val;
          var oldValue = obj.oldState.val;
          dec = -1750 + (obj.state ? obj.state.val : "");
        });
        

        und die Steuerung Sequenzial:

        var wellenauswahl, inc, dec, sequenzial, spannung, delta, Intervall;
        
        
        wellenauswahl = getState("Aqua_Control.0.Tunze_Steuerung.Tunze_Wellen_Auswahl").val;
        inc = 1750 / getState("Aqua_Control.0.Tunze_Steuerung.Sequenzial_Wave_Up").val;
        dec = -1750 / getState("Aqua_Control.0.Tunze_Steuerung.Sequenzial_Wave_Down").val;
        on({id: wellenauswahl == 1, change: "ne"}, function (obj) {
          var value = obj.state.val;
          var oldValue = obj.oldState.val;
          sequenzial = (obj.state ? obj.state.val : "");
          if (sequenzial) {
            spannung = 30;
            setState("sonoff.0.Aqua_Wave.Channel1"/*Aqua_Wave_Pump_1*/, spannung);
            delta = inc;
            Intervall = setInterval(function () {
              spannung = (typeof spannung == 'number' ? spannung : 0) + delta;
              setState("sonoff.0.Aqua_Wave.Channel1"/*Aqua_Wave_Pump_1*/, spannung);
              if (spannung >= 100) {
                delta = dec;
              }
              if (spannung <= 30) {
                delta = inc;
                if (!sequenzial) {
                  (function () {if (Intervall) {clearInterval(Intervall); Intervall = null;}})();
                }
              }
            }, 25);
          }
        });
        // Sequenzial_Up (ms)
        on({id: 'Aqua_Control.0.Tunze_Steuerung.Sequenzial_Wave_Up', change: "ne"}, function (obj) {
          var value = obj.state.val;
          var oldValue = obj.oldState.val;
          inc = 1750 / (obj.state ? obj.state.val : "");
        });
        // Sequenzial_Down (ms)
        on({id: 'Aqua_Control.0.Tunze_Steuerung.Sequenzial_Wave_Down', change: "ne"}, function (obj) {
          var value = obj.state.val;
          var oldValue = obj.oldState.val;
          dec = -1750 + (obj.state ? obj.state.val : "");
        });
        

        Dann gibt es diese Datenpunkte:
        Bildschirmfoto 2019-09-14 um 17.03.11.png
        Die switch Datenpunkte mal bei seite lassen.
        Den Datenpunkt Tunze Wellen Auswahl erstellt mit 0:Aus;1:Sequenzial;2:Intervall;3:Pulse;4:Wellengang
        den hab ich verknüpft damit je nach dem was in dem Datenpunkt steht soll die jeweilige Steuerung anspringen. Nur Leider will die Zeitsteuerung nicht so wie ich das will.
        Sicherlich ist ein Fehler darin das man nur für 10 sek testet.
        Zeitsteuerung:

        var Wellenauswahl, Sequenzial, Intervall, timeout, timeout3, timeout4;
        
        
        Wellenauswahl = getState("Aqua_Control.0.Tunze_Steuerung.Tunze_Wellen_Auswahl").val;
        Sequenzial = schedule('59 16 * * *', function () {
          setState("Aqua_Control.0.Tunze_Steuerung.Tunze_Wellen_Auswahl"/*Tunze Wellen Auswahl*/, 1);
          timeout = setTimeout(function () {
            setState("Aqua_Control.0.Tunze_Steuerung.Tunze_Wellen_Auswahl"/*Tunze Wellen Auswahl*/, 0);
            (function () {if (timeout) {clearTimeout(timeout); timeout = null;}})();
          }, 10000);
          setState("Aqua_Control.0.Tunze_Steuerung.Tunze_Wellen_Auswahl"/*Tunze Wellen Auswahl*/, 0);
        });
        Intervall = schedule('0 17 * * *', function () {
          setState("Aqua_Control.0.Tunze_Steuerung.Tunze_Wellen_Auswahl"/*Tunze Wellen Auswahl*/, 2);
          timeout3 = setTimeout(function () {
            setState("Aqua_Control.0.Tunze_Steuerung.Tunze_Wellen_Auswahl"/*Tunze Wellen Auswahl*/, 0);
            (function () {if (timeout) {clearTimeout(timeout); timeout = null;}})();
          }, 10000);
          timeout4 = setTimeout(function () {
            setState("Aqua_Control.0.Tunze_Steuerung.Tunze_Wellen_Auswahl"/*Tunze Wellen Auswahl*/, 0);
            (function () {if (timeout2) {clearTimeout(timeout2); timeout2 = null;}})();
          }, 5000);
        });
        
        paul53 2 Replies Last reply Reply Quote 0
        • paul53
          paul53 @Aphofis last edited by paul53

          @Aphofis sagte:

          Dann gibt es diese Datenpunkte:

          Der Datenpunkt "Tunze Wellen Auswahl" ist keine Werteliste, denn der Wert einer Werteliste sieht so aus:
          Werteliste_Aus.JPG
          Poste mal die RAW-Daten des Datenpunktes in Code Tags.

          Man kann nicht auf Werte bzw. Vergleiche triggern, sondern nur auf Datenpunkt-IDs ! Der Vergleich muss mit einem falls-Logik-Baustein innerhalb des Triggers erfolgen.

          Blockly_temp.JPG

          Aphofis 1 Reply Last reply Reply Quote 0
          • paul53
            paul53 @Aphofis last edited by

            @Aphofis
            Weshalb schaltest Du das Intervall 2 mal aus (nach 10 s und 5 s) ? Wozu dienen die stop timeout und stop timeout2 ?

            Sequenzial wird sofort nach dem Einschalten wieder ausgeschalten ?

            Aphofis 2 Replies Last reply Reply Quote 0
            • Aphofis
              Aphofis last edited by

              Teste ich nachher! Ich muss erstmal au einen Geburtstag!

              1 Reply Last reply Reply Quote 0
              • Aphofis
                Aphofis @paul53 last edited by Aphofis

                mann schon wieder

                1 Reply Last reply Reply Quote 0
                • Aphofis
                  Aphofis @paul53 last edited by

                  @paul53 sagte in PWM Steuerung mit Fade:

                  @Aphofis
                  Weshalb schaltest Du das Intervall 2 mal aus (nach 10 s und 5 s) ? Wozu dienen die stop timeout und stop timeout2 ?

                  Sequenzial wird sofort nach dem Einschalten wieder ausgeschalten ?

                  Du sagtest zwischen den steuerungen müssen 5 sek pause sein und die 10 sek waren nur als Test nachher sollen die einzelnen steuerungen zw 10 bis 30 min laufen.

                  1 Reply Last reply Reply Quote 0
                  • Aphofis
                    Aphofis @paul53 last edited by

                    @paul53 sagte in PWM Steuerung mit Fade:

                    @Aphofis sagte:

                    Dann gibt es diese Datenpunkte:

                    Der Datenpunkt "Tunze Wellen Auswahl" ist keine Werteliste, denn der Wert einer Werteliste sieht so aus:
                    Werteliste_Aus.JPG
                    Poste mal die RAW-Daten des Datenpunktes in Code Tags.

                    Man kann nicht auf Werte bzw. Vergleiche triggern, sondern nur auf Datenpunkt-IDs ! Der Vergleich muss mit einem falls-Logik-Baustein innerhalb des Triggers erfolgen.

                    Blockly_temp.JPG

                    Hatte jetzt Zeichenkette genommen.
                    Wo soll denn werteliste sein !?

                    {
                      "from": "system.adapter.admin.0",
                      "user": "system.user.admin",
                      "ts": 1568470775091,
                      "common": {
                        "name": "Tunze Wellen Auswahl",
                        "role": "value",
                        "type": "string",
                        "desc": "0:Aus;1:Sequenzial;2:Intervall;3:Pulse;4:Wellengang",
                        "min": 0,
                        "max": 4,
                        "def": 0,
                        "read": true,
                        "write": true
                      },
                      "native": {},
                      "acl": {
                        "object": 1632,
                        "owner": "system.user.iobroker",
                        "ownerGroup": "system.group.administrator",
                        "state": 1632
                      },
                      "_id": "Aqua_Control.0.Tunze_Steuerung.Tunze_Wellen_Auswahl",
                      "type": "state"
                    }
                    
                    paul53 2 Replies Last reply Reply Quote 0
                    • paul53
                      paul53 @Aphofis last edited by paul53

                      @Aphofis sagte:

                      Wo soll denn werteliste sein !?

                      Nicht "desc", sondern "states" und "type": "number".

                        "type": "state",
                        "common": {
                          "name": "Tunze Wellen Auswahl",
                          "role": "",
                          "type": "number",
                          "desc": "Auswahl Wellen",
                          "states": "0:Aus;1:Sequenzial;2:Intervall;3:Pulse;4:Wellengang",
                          "min": 0,
                          "max": 4,
                          "def": 0,
                          "read": true,
                          "write": true
                        },
                      
                      1 Reply Last reply Reply Quote 0
                      • paul53
                        paul53 @Aphofis last edited by

                        @Aphofis sagte:

                        Hatte jetzt Zeichenkette genommen.

                        Ich schrieb "Werteliste", die man auswählen kann.

                        Werteliste_Wellen.JPG

                        Aphofis 2 Replies Last reply Reply Quote 0
                        • Aphofis
                          Aphofis @paul53 last edited by

                          @paul53
                          Warteliste ist also Logikwert!
                          Ok hab ich geändert und was kommt in Role rein ?

                          paul53 1 Reply Last reply Reply Quote 0
                          • paul53
                            paul53 @Aphofis last edited by paul53

                            @Aphofis sagte:

                            Warteliste ist also Logikwert!

                            Nein, Werteliste ist "Werteliste" (5. Auswahl von oben) mit type: "number".

                            @Aphofis sagte in PWM Steuerung mit Fade:

                            was kommt in Role rein ?

                            Bin mir nicht sicher, da in den Regeln nicht aufgeführt. Am ehesten "level" oder "level.mode", denn "value" ist für "read only" Datenpunkte.

                            Aphofis 1 Reply Last reply Reply Quote 0
                            • Aphofis
                              Aphofis @paul53 last edited by

                              @paul53 sagte in PWM Steuerung mit Fade:

                              @Aphofis sagte:

                              Hatte jetzt Zeichenkette genommen.

                              Ich schrieb "Werteliste", die man auswählen kann.

                              Werteliste_Wellen.JPG

                              Ich habe nur diese Werte zur Auswahl
                              BF87ACC2-C700-4340-9E7B-9833882582B2.jpeg

                              1 Reply Last reply Reply Quote 0
                              • Aphofis
                                Aphofis @paul53 last edited by

                                @paul53 sagte in PWM Steuerung mit Fade:

                                @Aphofis sagte:

                                Warteliste ist also Logikwert!

                                Nein, Werteliste ist "Werteliste" (5. Auswahl von oben) mit type: "number".

                                @Aphofis sagte in PWM Steuerung mit Fade:

                                was kommt in Role rein ?

                                Bin mir nicht sicher, da in den Regeln nicht aufgeführt. Am ehesten "level" oder "level.mode", denn "value" ist für "read only" Datenpunkte.

                                Ich habe einiges an verschiedenen Level und nur Level aber Level.mode gibt es nicht

                                1 Reply Last reply Reply Quote 0
                                • Aphofis
                                  Aphofis last edited by Aphofis

                                  Wie bekomme ich denn nun die werteliste
                                  Wie sieht denn bei dir ram aus wenn du den datenpunkt als werteliste erstellst

                                  paul53 1 Reply Last reply Reply Quote 0
                                  • paul53
                                    paul53 @Aphofis last edited by

                                    @Aphofis sagte:

                                    wenn du den datenpunkt als werteliste erstellst

                                    Habe ich schon gepostet

                                    {
                                      "_id": "javascript.1.test.Wellen",
                                      "type": "state",
                                      "common": {
                                        "name": "Wellen",
                                        "role": "",
                                        "type": "number",
                                        "desc": "Auswahl Wellen",
                                        "states": "0:Aus;1:Sequenzial;2:Intervall;3:Pulse;4:Wellengang",
                                        "min": 0,
                                        "max": 4,
                                        "def": 0,
                                        "read": true,
                                        "write": true
                                      },
                                      "native": {},
                                      "from": "system.adapter.admin.0",
                                      "user": "system.user.admin",
                                      "ts": 1568377978546,
                                      "acl": {
                                        "object": 1636,
                                        "owner": "system.user.admin",
                                        "ownerGroup": "system.group.administrator",
                                        "state": 1636
                                      }
                                    }
                                    
                                    Aphofis 1 Reply Last reply Reply Quote 0
                                    • Aphofis
                                      Aphofis @paul53 last edited by

                                      @paul53 sagte in PWM Steuerung mit Fade:

                                      @Aphofis sagte:

                                      wenn du den datenpunkt als werteliste erstellst

                                      Habe ich schon gepostet

                                      {
                                        "_id": "javascript.1.test.Wellen",
                                        "type": "state",
                                        "common": {
                                          "name": "Wellen",
                                          "role": "",
                                          "type": "number",
                                          "desc": "Auswahl Wellen",
                                          "states": "0:Aus;1:Sequenzial;2:Intervall;3:Pulse;4:Wellengang",
                                          "min": 0,
                                          "max": 4,
                                          "def": 0,
                                          "read": true,
                                          "write": true
                                        },
                                        "native": {},
                                        "from": "system.adapter.admin.0",
                                        "user": "system.user.admin",
                                        "ts": 1568377978546,
                                        "acl": {
                                          "object": 1636,
                                          "owner": "system.user.admin",
                                          "ownerGroup": "system.group.administrator",
                                          "state": 1636
                                        }
                                      }
                                      

                                      Hab jetzt deine RAM genommen und in meinen Datenpunkt eingebunden.
                                      Jetzt habe ich ein Dropdown Menü mit einer 0 in Klammern dahinter.

                                      1 Reply Last reply Reply Quote 0
                                      • Aphofis
                                        Aphofis last edited by

                                        @paul53
                                        Also habe jetzt den Datenpunkt so wie beschrieben.
                                        Die Steuerung ist so richtig?

                                        var inc, dec, sequenzial, spannung, delta, Intervall;
                                        
                                        
                                        inc = 1750 / getState("Aqua_Control.0.Tunze_Steuerung.Sequenzial_Wave_Up").val;
                                        dec = -1750 / getState("Aqua_Control.0.Tunze_Steuerung.Sequenzial_Wave_Down").val;
                                        on({id: 'Aqua_Control.0.Tunze_Steuerung.Tunze_Wellen_Auswahl', change: "ne"}, function (obj) {
                                          var value = obj.state.val;
                                          var oldValue = obj.oldState.val;
                                          if ((obj.state ? obj.state.val : "") == 1) {
                                            sequenzial = true;
                                            // Aktionen
                                          } else {
                                            sequenzial = false;
                                          }
                                          sequenzial = (obj.state ? obj.state.val : "");
                                          if (sequenzial) {
                                            spannung = 30;
                                            setState("sonoff.0.Aqua_Wave.Channel1"/*Aqua_Wave_Pump_1*/, spannung);
                                            delta = inc;
                                            Intervall = setInterval(function () {
                                              spannung = (typeof spannung == 'number' ? spannung : 0) + delta;
                                              setState("sonoff.0.Aqua_Wave.Channel1"/*Aqua_Wave_Pump_1*/, spannung);
                                              if (spannung >= 100) {
                                                delta = dec;
                                              }
                                              if (spannung <= 30) {
                                                delta = inc;
                                                if (!sequenzial) {
                                                  (function () {if (Intervall) {clearInterval(Intervall); Intervall = null;}})();
                                                }
                                              }
                                            }, 25);
                                          }
                                        });
                                        // Sequenzial_Up (ms)
                                        on({id: 'Aqua_Control.0.Tunze_Steuerung.Sequenzial_Wave_Up', change: "ne"}, function (obj) {
                                          var value = obj.state.val;
                                          var oldValue = obj.oldState.val;
                                          inc = 1750 / (obj.state ? obj.state.val : "");
                                        });
                                        // Sequenzial_Down (ms)
                                        on({id: 'Aqua_Control.0.Tunze_Steuerung.Sequenzial_Wave_Down', change: "ne"}, function (obj) {
                                          var value = obj.state.val;
                                          var oldValue = obj.oldState.val;
                                          dec = -1750 + (obj.state ? obj.state.val : "");
                                        });
                                        
                                        paul53 1 Reply Last reply Reply Quote 0
                                        • Aphofis
                                          Aphofis last edited by

                                          Hatte die Steuerung mal getestet, der Channel 1 vom Sonoff Aqua_Wave rennt auch los was ich sehen kann sind auch minus werte dabei und ich kann den Datenpunkt wieder nicht auf aus setzen oder stoppen.
                                          Kann man die Steuerung nicht irgendwie anders programmieren das nicht so viele Rechenschritte sind!? Ich denke der Pi ist damit überfordert oder bzw iobroker.

                                          1 Reply Last reply Reply Quote 0
                                          • paul53
                                            paul53 @Aphofis last edited by paul53

                                            @Aphofis sagte:

                                            Die Steuerung ist so richtig?

                                            Nein. Zeile 15 (setze sequenzial auf Wert) muss raus und Zeilen 16 bis 33 sind die Aktionen, die anstelle des Kommentars "Aktionen" einzusetzen sind. Etwa so:

                                            Blockly_temp.JPG

                                            Aphofis 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            951
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            2
                                            97
                                            5516
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo