Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [Vorlage] Anwesenheitssimulation - Script

    NEWS

    • ioBroker goes Matter ... Matter Adapter in Stable

    • 15. 05. Wartungsarbeiten am ioBroker Forum

    • Monatsrückblick - April 2025

    [Vorlage] Anwesenheitssimulation - Script

    This topic has been deleted. Only users with topic management privileges can see it.
    • A
      ak1 last edited by

      @looxer01:

      aaah, ok danke,

      Sollte ohne Probleme gehen.

      Im Prinzip sollte es so aussehen.

      Du könntest dazu z.B. zwei unterschiedliche Gruppen verwenden und die Datenpunkte entsprechend eintragen.

      Bei Zeit könntest du als Start z.B. 04:30 Morgens eingeben und also Ende-Zeit die Astrozeit

      Wie gesagt kann ich am WE mal ein Beispiel zimmern.

      vG Looxer `

      Danke! Ich freue mich auf das Beispiel.

      VG

      Stefan

      1 Reply Last reply Reply Quote 0
      • L
        looxer01 last edited by

        Hi,

        anbei ein Beispiel mit drei aktiven Gruppen.

        Damit dürften die Anzahl der parallel eingeschaleten Lichter sich erhöhen und somit Lebhaftigkeit simulieren.

        Alle Lampen gehen zum Sonnenaufgang aus.

        Getestet habe ich die Einstellungen nicht. Wenn du das Log einschaltest kannst du aber schon das Ergebnis sehen.

        z.B. in einem Excel Format.

        vG Looxer

        ! // Das Script wird aktiviert, wenn das Flag "Anwesenheitssteuerung gesetzt wird" // HIER Einstellungen vornehmen............................................................................................ ! // Einstellungen der Aktivzeiten je IDGruppe von bis var zeit1von = "04:30:00"; //Aktivzeit von IDGruppe1 var zeit1bis = "07:30:00"; //Aktivzeit bis IDGruppe1 ! var zeit2von = "06:15:00"; //Aktivzeit von IDGruppe2 var zeit2bis = "07:30:00"; //Aktivzeit bis IDGruppe2 ! var zeit3von = "07:15:00"; //Aktivzeit von IDGruppe3 var zeit3bis = "07:30:00"; //Aktivzeit bis IDGruppe3 ! var zeit4von = "00:00:00"; //Aktivzeit von IDGruppe4 var zeit4bis = "00:00:00"; //Aktivzeit bis IDGruppe4 ! var zeit5von = "00:00:00"; //Aktivzeit von IDGruppe5 var zeit5bis = "00:00:00"; //Aktivzeit bis IDGruppe5 ! // Wenn Astrozeit auf true steht, dann wird die vonZeit durch die Astrozeit übersteuert var vonAstro1 = false ; // die zeit1von wird ersetzt durch die Astrozeit - wenn auf night - setting ist optional true = Verwendung der Astrozeit - IDGruppe1 var vonAstro2 = false ; // die zeit1von wird ersetzt durch die Astrozeit - wenn auf night - setting ist optional true = Verwendung der Astrozeit - IDGruppe2 var vonAstro3 = false ; // die zeit1von wird ersetzt durch die Astrozeit - wenn auf night - setting ist optional true = Verwendung der Astrozeit - IDGruppe3 var vonAstro4 = false ; // die zeit1von wird ersetzt durch die Astrozeit - wenn auf night - setting ist optional true = Verwendung der Astrozeit - IDGruppe4 var vonAstro5 = false ; // die zeit1von wird ersetzt durch die Astrozeit - wenn auf night - setting ist optional true = Verwendung der Astrozeit - IDGruppe5 ! // Wenn bis Astrozeit auf true steht, dann wird die bisZeit durch die Astrozeit übersteuert var bisAstro1 = true ; // die zeit1von wird ersetzt durch die Astrozeit - setting ist optional true = Verwendung der Astrozeit - IDGruppe1 var bisAstro2 = true ; // die zeit1von wird ersetzt durch die Astrozeit - setting ist optional true = Verwendung der Astrozeit - IDGruppe2 var bisAstro3 = true ; // die zeit1von wird ersetzt durch die Astrozeit - setting ist optional true = Verwendung der Astrozeit - IDGruppe3 var bisAstro4 = false ; // die zeit1von wird ersetzt durch die Astrozeit - setting ist optional true = Verwendung der Astrozeit - IDGruppe4 var bisAstro5 = false ; // die zeit1von wird ersetzt durch die Astrozeit - setting ist optional true = Verwendung der Astrozeit - IDGruppe5 ! // Einstellungen der zufaelligen Einschaltdauer je IDGruppe von bis var ein1von = 1; // Minuten IDGruppe1 von var ein1bis = 5; // Minuten IDGruppe1 bis var ein2von = 10; // Minuten IDGruppe2 von var ein2bis = 20; // Minuten IDGruppe2 bis var ein3von = 5; // Minuten IDGruppe3 von var ein3bis = 10; // Minuten IDGruppe3 bis var ein4von = 5; // Minuten IDGruppe4 von var ein4bis = 10; // Minuten IDGruppe4 bis var ein5von = 10; // Minuten IDGruppe5 von var ein5bis = 30; // Minuten IDGruppe5 bis ! // Einstellung je Gruppe für die maximale Startverzögerung in Minuten // bei 0 = keine Startverzögerung - bei z.B. 10 = Startverzögerung zwischen 0 und 10 in Minuten // var StartDelay1 = 1; // Maximale Startverzoegerung Gruppe1 var StartDelay2 = 3; // Maximale Startverzoegerung Gruppe2 var StartDelay3 = 5; // Maximale Startverzoegerung Gruppe3 var StartDelay4 = 5; // Maximale Startverzoegerung Gruppe4 var StartDelay5 = 0; // Maximale Startverzoegerung Gruppe5 ! // Einstellung Check-schedule - Voreinstellung z.B. alle 30 Minuten je IDGruppe - Damit wird je Lauf nach Zufaelligkeit je ein Geraet der IDGruppe eingeschaltet var cron1 = 2; // checks alle x Minuten für IDGruppe1 var cron2 = 5; // checks alle x Minuten für IDGruppe2 var cron3 = 5; // checks alle x Minuten für IDGruppe3 var cron4 = 5; // checks alle x Minuten für IDGruppe4 var cron5 = 0; // checks alle x Minuten für IDGruppe5 ! // Einstellung teilnehmende Homematic Geräte je IDGruppe maximal 5 - Eingabe der Homematic ID var IDGruppe11 = "hm-rpc.0.xxx.1.STATE"; // Licht Wohnzimmer Esstisch Stehlampe var IDGruppe12 = "hm-rpc.0.xxx.1.STATE"; // Licht Terrassentuere var IDGruppe13 = "hm-rpc.0.xxx.1.STATE"; // Licht Flur oben unten; var IDGruppe14 = "hm-rpc.0.xxx.1.STATE"; // Licht Kinderbad var IDGruppe15 = "hm-rpc.0.xxx.1.STATE"; // Licht Hobbyraum var Grp1ZufAnz = 5; // Anzahl der Geräte zur zufälligen Bestimmung des Geraetes ! var IDGruppe21 = "hm-rpc.0.xxx.1.STATE"; // Licht Flur oben Wand; var IDGruppe22 = "hm-rpc.0.xxx.1.STATE"; // Licht Terrassentuere var IDGruppe23 = "hm-rpc.0.xxx.1.STATE"; // Licht Wohnzimmer Esstisch Stehlampe var IDGruppe24 = " "; var IDGruppe25 = " "; var Grp2ZufAnz = 3; // Anzahl der Geräte zur zufälligen Bestimmung des Geraetes ! var IDGruppe31 = "hm-rpc.0.xxx.1.STATE"; // Licht Flur oben Wand; var IDGruppe32 = "hm-rpc.0.xxx.1.STATE"; // Licht Flur oben unten; var IDGruppe33 = "hm-rpc.0.xxx.1.STATE"; // Licht Kinderbad var IDGruppe34 = " "; var IDGruppe35 = " "; var Grp3ZufAnz = 5; // Anzahl der Geräte zur zufälligen Bestimmung des Geraetes ! var IDGruppe41 = "hm-rpc.0.xxx.4.STATE"; // Licht aussen Steinterrasse var IDGruppe42 = "hm-rpc.0.xxx.1.STATE"; // Licht Kinderbad var IDGruppe43 = "hm-rpc.0.xxx.1.STATE"; // Licht Schwimmbad Nebenlicht; var IDGruppe44 = " "; var IDGruppe45 = " "; var Grp4ZufAnz = 3; // Anzahl der Geräte zur zufälligen Bestimmung des Geraetes ! var IDGruppe51 = " "; var IDGruppe52 = " "; var IDGruppe53 = " "; var IDGruppe54 = " "; var IDGruppe55 = " "; var Grp5ZufAnz = 5; // Anzahl der Geräte zur zufälligen Bestimmung des Geraetes ! var logflag = true; // wenn auf true dann wird das logging in Datei /opt/iobroker/iobroker-data/AWSLog.csv eingeschaltet bei false vice versa ! var ausflag = true; // Wenn AWS deaktiviert wird, dann werden alle Teilnehmer ausgeschaltet ! // Ende Einstellungen ....................................................................................................... !

        1 Reply Last reply Reply Quote 0
        • A
          ak1 last edited by

          @looxer01:

          Hi,

          anbei ein Beispiel mit drei aktiven Gruppen.

          Damit dürften die Anzahl der parallel eingeschaleten Lichter sich erhöhen und somit Lebhaftigkeit simulieren.

          Alle Lampen gehen zum Sonnenaufgang aus.

          Getestet habe ich die Einstellungen nicht. Wenn du das Log einschaltest kannst du aber schon das Ergebnis sehen.

          z.B. in einem Excel Format.

          vG Looxer `

          Herzlichen Dank! Ich werde das ausprobieren. Aufgrund der beruflichen Auslastung dauert es aber etwa zwei Wochen, bis ich das etwas intensiver machen kann.

          VG

          Stefan

          1 Reply Last reply Reply Quote 0
          • L
            looxer01 last edited by

            @ak1:

            Aufgrund der beruflichen Auslastung dauert es aber etwa zwei Wochen `
            kein Problem. glaub mir, ich weiss wovon du redest :lol:

            vG Looxer

            1 Reply Last reply Reply Quote 0
            • A
              ak1 last edited by

              Hallo Looxer,

              ich komme jetzt wieder schrittweise dazu, mich mit dem Thema zu beschäftigen.

              Bevor ich die Simulation "live" schalte, möchte ich erst ein wenig testen. Dazu habe ich mir ein paar Datenpunkte (state/switch) angelegt, die ich schalte.

              Meine Frage: Wie stelle ich die Schaltzeiten übersichtlich dar, um den Zeitverlauf zu kontrollieren. Sowohl in Excel mit dem AWSLog.csv tue ich mich schwer etwas Übersichtliches zu erzeugen, als auch mit dem History- und dem flot-Adapter.

              Es muss doch einen einfachen Weg geben die true/false Stati auf einer Zeitachse darstellen zu können.

              VG

              Stefan

              1 Reply Last reply Reply Quote 0
              • L
                looxer01 last edited by

                Hi,

                @ak1:

                Wie stelle ich die Schaltzeiten übersichtlich dar, um den Zeitverlauf zu kontrollieren. Sowohl in Excel mit dem AWSLog.csv tue ich mich schwer etwas Übersichtliches zu erzeugen, als auch mit dem History- und dem flot-Adapter.

                Es muss doch einen einfachen Weg geben die true/false Stati auf einer Zeitachse darstellen zu können. `
                in der Tat habe ich dafür das Excel angedacht. Aber über Flot geht es natürlich auch. Allerdings ist ja i.d.R. nur true und false verfügbar. Die Kurven sehen also etwas eigenartig aus.

                Was ist denn das Problem mit dem Excel ?

                vG Looxer

                1 Reply Last reply Reply Quote 0
                • A
                  ak1 last edited by

                  @looxer01:

                  Hi,

                  in der Tat habe ich dafür das Excel angedacht. Aber über Flot geht es natürlich auch. Allerdings ist ja i.d.R. nur true und false verfügbar. Die Kurven sehen also etwas eigenartig aus.

                  Was ist denn das Problem mit dem Excel ?

                  vG Looxer `

                  Vielleicht hast Du einen Screenshot der Visualisierung in Excel für mich und kannst mir sagen, welchen Diagramm-Typ Du gewählt hast und welche Spalten Du dazu benutzt.

                  Ich muss ja irgendwie einen Zeitstrahl darstellen, bei dem ich die berechneten Ein- und Ausschaltzeiten für die unterschiedlichen Geräte darstelle. Momentan bin ich noch komplett planlos, wie ich das am geschicktesten anstelle.

                  1 Reply Last reply Reply Quote 0
                  • L
                    looxer01 last edited by

                    @ak1:

                    ielleicht hast Du einen Screenshot der Visualisierung in Excel für mich und kannst mir sagen, welchen Diagramm-Typ Du gewählt hast und welche Spalten Du dazu benutzt.

                    Ich muss ja irgendwie einen Zeitstrahl darstellen, bei dem ich die berechneten Ein- und Ausschaltzeiten für die unterschiedlichen Geräte darstelle. Momentan bin ich noch komplett planlos, wie ich das am geschicktesten anstelle. `

                    also wie gesagt, du kannst es per Flot visualisieren. Flot hat ja irgendwann die Funktion bekommen auch boolean darzustellen.

                    Ich excel habe ich mir immer nur das log angesehen, es aber nicht als Grafik.

                    Schau ich mir an. Bin zur Zeit aber unterwegs.

                    vG Looxer

                    1 Reply Last reply Reply Quote 0
                    • L
                      looxer01 last edited by

                      Hi,

                      es gibt ein Problem mit dem externen log (schreiben in externe Datei) und der neuen JS Version 4.0.1.

                      Ich habe eine neue Version hochgeladen 0.92, die das Problem behebt.

                      vG Looxer

                      1 Reply Last reply Reply Quote 0
                      • N
                        nheuk last edited by

                        Hallo,

                        ich nutze Deine beiden hervorragende Scripte zum Anwesenheit setzten und zum Starten der Anwesenheitssimulation.

                        Allerdings habe ich immer wieder einen Fehler.

                        Jedesmal wenn jemand das Haus verlässt und die Variable "IDAWSAktiv" auf false gesetzt wird kommt diese Meldung. Zu dem Zeitpunkt ist immer noch jemand im Haus.

                        javascript.0	2018-12-27 14:40:01.840	error	at Object. <anonymous>(script.js.javascript.anwesenheitssteuerung:324:36)
                        javascript.0	2018-12-27 14:40:01.840	error	Error in callback: TypeError: Cannot read property 'common' of null
                        javascript.0	2018-12-27 14:40:01.839	warn	at Object. <anonymous>(script.js.javascript.anwesenheitssteuerung:321:25)
                        javascript.0	2018-12-27 14:40:01.839	warn	at GeraetExists (script.js.javascript.anwesenheitssteuerung:462:6)
                        javascript.0	2018-12-27 14:40:01.836	warn	getState "" not found (3)
                        javascript.0	2018-12-27 14:40:01.835	warn	Object "" does not exist</anonymous></anonymous>
                        

                        Habe die Abfrage bei mit jetzt wie folgt geändert, da ja nur geschaltet werden muss wenn sich der "StatusAllUser" ändert. Die Variable "OldStatusAllUser" hast Du mir dafür ja schon geliefert. Der Fehler ist dadurch natürlich nicht weg nur er wird erst gar nicht ausgelöst.

                        // Anwesenheitssimulation ein-oder ausschalten
                        // prüfe status AWSCheck aktiv
                        if (AWSCheckAktiv === true)
                            {
                                // prüfe StatusAllUser sich verändert hat, nur dann muss geschaltet werden
                                if (StatusAllUser != OldStatusAllUser)
                                    {
                                        //jemand da
                                        if (StatusAllUser === true)                                             
                                            {
                                                //dann IDAWSAktiv ausschalten
                                                setState(IDAWSAktiv,false);
                                            }
                                        else
                                            {
                                                //sonst verzögert IDAWSAktiv einschalten
                                                setStateDelayed(IDAWSAktiv,true,AWSZeit*1000);
                                                log("EVENT Anwesenheit ist auf false gesetzt  - AWSFlag wird aktiviert in " + AWSZeit + " Sekunden","info");
                                            }
                                    }
                            }
                        
                        

                        Gruß

                        Manuel

                        1 Reply Last reply Reply Quote 0
                        • N
                          nheuk last edited by

                          in den definierten Gruppen muss was stehen auch wenn nur Leerzeichen… das war der Fehler :oops:

                          var     IDGruppe35 = " "; 
                          
                          1 Reply Last reply Reply Quote 0
                          • E
                            etproject last edited by

                            Hallo an alle,

                            ich habe die Anwesenheitsimulatition mit Sonoff und Zigbee Module erfolgreich getestet.

                            Bisher habe ich immer feste Zeiten in dem Script eingetragen.

                            Schalte ich jedoch die Astrozeit1 ( von ) ein, dann schaltet dieses Schaltmodul teilweise schon ab 14:00 .

                            Da ich mich mit Java überhaupt nicht auskenne brauche ich Eure Hilfe!

                            Hier meine Einstellungen

                            // Einstellungen der Aktivzeiten je IDGruppe von bis

                            var zeit1von = "16:07:00"; //Aktivzeit von IDGruppe1

                            var zeit1bis = "00:30:00"; //Aktivzeit bis IDGruppe1

                            var zeit2von = "08:15:00"; //Aktivzeit von IDGruppe2

                            var zeit2bis = "23:30:00"; //Aktivzeit bis IDGruppe2

                            var zeit3von = "08:30:00"; //Aktivzeit von IDGruppe3

                            var zeit3bis = "23:30:00"; //Aktivzeit bis IDGruppe3

                            var zeit4von = "08:00:00"; //Aktivzeit von IDGruppe4

                            var zeit4bis = "23:15:00"; //Aktivzeit bis IDGruppe4

                            var zeit5von = "08:00:00"; //Aktivzeit von IDGruppe5

                            var zeit5bis = "23:00:00"; //Aktivzeit bis IDGruppe5

                            // Wenn Astrozeit auf true steht, dann wird die vonZeit durch die Astrozeit �bersteuert

                            var vonAstro1 = true ; // die zeit1von wird ersetzt durch die Astrozeit - wenn auf night - setting ist optional true = Verwendung der Astrozeit - IDGruppe1

                            var vonAstro2 = false ; // die zeit1von wird ersetzt durch die Astrozeit - wenn auf night - setting ist optional true = Verwendung der Astrozeit - IDGruppe2

                            var vonAstro3 = false ; // die zeit1von wird ersetzt durch die Astrozeit - wenn auf night - setting ist optional true = Verwendung der Astrozeit - IDGruppe3

                            var vonAstro4 = false ; // die zeit1von wird ersetzt durch die Astrozeit - wenn auf night - setting ist optional true = Verwendung der Astrozeit - IDGruppe4

                            var vonAstro5 = false ; // die zeit1von wird ersetzt durch die Astrozeit - wenn auf night - setting ist optional true = Verwendung der Astrozeit - IDGruppe5

                            // Wenn bis Astrozeit auf true steht, dann wird die bisZeit durch die Astrozeit �bersteuert

                            var bisAstro1 = false ; // die zeit1von wird ersetzt durch die Astrozeit - setting ist optional true = Verwendung der Astrozeit - IDGruppe1

                            var bisAstro2 = false ; // die zeit1von wird ersetzt durch die Astrozeit - setting ist optional true = Verwendung der Astrozeit - IDGruppe2

                            var bisAstro3 = false ; // die zeit1von wird ersetzt durch die Astrozeit - setting ist optional true = Verwendung der Astrozeit - IDGruppe3

                            var bisAstro4 = false ; // die zeit1von wird ersetzt durch die Astrozeit - setting ist optional true = Verwendung der Astrozeit - IDGruppe4

                            var bisAstro5 = false ; // die zeit1von wird ersetzt durch die Astrozeit - setting ist optional true = Verwendung der Astrozeit - IDGruppe5

                            // Einstellungen der zufaelligen Einschaltdauer je IDGruppe von bis

                            var ein1von = 2; // Minuten IDGruppe1 von

                            var ein1bis = 10; // Minuten IDGruppe1 bis

                            var ein2von = 10; // Minuten IDGruppe2 von

                            var ein2bis = 30; // Minuten IDGruppe2 bis

                            var ein3von = 5; // Minuten IDGruppe3 von

                            var ein3bis = 20; // Minuten IDGruppe3 bis

                            var ein4von = 20; // Minuten IDGruppe4 von

                            var ein4bis = 45; // Minuten IDGruppe4 bis

                            var ein5von = 10; // Minuten IDGruppe5 von

                            var ein5bis = 30; // Minuten IDGruppe5 bis

                            // Einstellung je Gruppe f�r die maximale Startverz�gerung in Minuten

                            // bei 0 = keine Startverz�gerung - bei z.B. 10 = Startverz�gerung zwischen 0 und 10 in Minuten

                            //

                            var StartDelay1 = 1; // Maximale Startverzoegerung Gruppe1

                            var StartDelay2 = 5; // Maximale Startverzoegerung Gruppe2

                            var StartDelay3 = 5; // Maximale Startverzoegerung Gruppe3

                            var StartDelay4 = 5; // Maximale Startverzoegerung Gruppe4

                            var StartDelay5 = 0; // Maximale Startverzoegerung Gruppe5

                            // Einstellung Check-schedule - Voreinstellung z.B. alle 30 Minuten je IDGruppe - Damit wird je Lauf nach Zufaelligkeit je ein Geraet der IDGruppe eingeschaltet

                            var cron1 = 30; // checks alle x Minuten f�r IDGruppe1

                            var cron2 = 2; // checks alle x Minuten f�r IDGruppe2

                            var cron3 = 5; // checks alle x Minuten f�r IDGruppe3

                            var cron4 = 5; // checks alle x Minuten f�r IDGruppe4

                            var cron5 = 3; // checks alle x Minuten f�r IDGruppe5

                            // Einstellung teilnehmende Homematic Ger�te je IDGruppe maximal 5 - Eingabe der Homematic ID

                            var IDGruppe11 = "zigbee.0.01124b001bb01141.state"; // ElternBad Licht_1

                            var IDGruppe12 = "mqtt.0.cmnd.sonoffCH4_2.POWER4"; // reserve

                            var IDGruppe13 = " "; // Licht Wohnzimmer Esstisch Stehlampe

                            var IDGruppe14 = " "; // Licht Kinderbad

                            var IDGruppe15 = " "; // Licht Hobbyraum

                            var Grp1ZufAnz = 3; // Anzahl der Ger�te zur zuf�lligen Bestimmung des Geraetes

                            var IDGruppe21 = "mqtt.0.cmnd.sonoffCH4_2.POWER3"; // Terrasse Dose rechts

                            var IDGruppe22 = " "; // Licht Terrassentuere

                            var IDGruppe23 = " "; // Licht Wohnzimmer Esstisch Stehlampe

                            var IDGruppe24 = " ";

                            var IDGruppe25 = " ";

                            var Grp2ZufAnz = 3; // Anzahl der Ger�te zur zuf�lligen Bestimmung des Geraetes

                            var IDGruppe31 = "mqtt.0.cmnd.sonoffCH4_2.POWER2"; // Terrasee Dose links

                            var IDGruppe32 = " "; // Licht Flur oben unten;

                            var IDGruppe33 = " "; // Licht Kinderbad

                            var IDGruppe34 = " ";

                            var IDGruppe35 = " ";

                            var Grp3ZufAnz = 5; // Anzahl der Ger�te zur zuf�lligen Bestimmung des Geraetes

                            var IDGruppe41 = "mqtt.0.cmnd.sonoffCH4_2.POWER1"; // Garten linke Seite Pool

                            var IDGruppe42 = " "; // Licht aussen Kugeln

                            var IDGruppe43 = " "; // Licht Schwimmbad Nebenlicht;

                            var IDGruppe44 = " ";

                            var IDGruppe45 = " ";

                            var Grp4ZufAnz = 3; // Anzahl der Ger�te zur zuf�lligen Bestimmung des Geraetes

                            var IDGruppe51 = "mqtt.0.cmnd.sonoffCH4_1.POWER4"; // Garten mitte Mauer

                            var IDGruppe52 = " ";

                            var IDGruppe53 = " ";

                            var IDGruppe54 = " ";

                            var IDGruppe55 = " ";

                            var Grp5ZufAnz = 5; // Anzahl der Ger�te zur zuf�lligen Bestimmung des Geraetes

                            var logflag = true; // wenn auf true dann wird das logging in Datei /opt/iobroker/iobroker-data/AWSLog.csv eingeschaltet bei false vice versa

                            var ausflag = true; // Wenn AWS deaktiviert wird, dann werden alle Teilnehmer ausgeschaltet

                            // Ende Einstellungen …......................................................

                            1 Reply Last reply Reply Quote 0
                            • L
                              looxer01 last edited by

                              @etproject:

                              chalte ich jedoch die Astrozeit1 ( von ) ein, dann schaltet dieses Schaltmodul teilweise schon ab 14:00 . `
                              Hi,

                              schau ich mir an. Dauert nur ein paar Tage, da ich z.Zt. kein Systemzugriff habe.

                              ….oder jemand anderes macht Vorschläge - immer willkommenn 😄

                              EDIT

                              aber bevor ich mir das Coding ansehen.

                              Hast du deinen Längen- und Breitengrad in ioBroker eingetragen ?

                              Wenn nicht - bitte eintragen und nochmal testen.

                              Die Felder befinden sich in ioBroker Admin - oben links das ICON für die Werkzeuge.

                              vG Looxer

                              1 Reply Last reply Reply Quote 0
                              • E
                                etproject last edited by

                                Hallo Looxer,

                                Danke für deine schnelle Antwort.

                                Beide Einstellungen sind vorhanden. Andere Scripte( mit Blockly und AstroZeit) funktionieren .

                                Schöne Grüße

                                1 Reply Last reply Reply Quote 0
                                • M
                                  Mihaeru last edited by

                                  @etproject:

                                  Schalte ich jedoch die Astrozeit1 ( von ) ein, dann schaltet dieses Schaltmodul teilweise schon ab 14:00 .

                                  Da ich mich mit Java überhaupt nicht auskenne brauche ich Eure Hilfe!

                                  var zeit1von = "16:07:00"; //Aktivzeit von IDGruppe1
                                  var zeit1bis = "00:30:00"; //Aktivzeit bis IDGruppe1
                                  
                                  var zeit2von = "08:15:00"; //Aktivzeit von IDGruppe2
                                  var zeit2bis = "23:30:00"; //Aktivzeit bis IDGruppe2
                                  ```` `  
                                  

                                  Hm, das ist seltsam. Da die Astro-Zeiten bei dir ja wohl grundsätzlich in Ordnung sind ist das Einzige, was mir spontan einfällt, dass eventuell die Berechnung des Zeitabschnitts einen Fehler hat. Wenn du zeit1bis auf z.B. "23:59:59" stellst oder für die zweite Gruppe die Astrozeit nimmst, tritt das Problem dann immer noch auf?

                                  1 Reply Last reply Reply Quote 0
                                  • I
                                    ib968142 last edited by

                                    Hallo,

                                    ich hatte ähnliche Probleme mit der Astro-Zeit. Bei Nutzung dieser Funktion im Script wurden meine Lampen auch bereits tagsüber eingeschaltet. Die iobroker Astro-Funktionen selbst liefern aber die korrekten Werte (mit kleinem Helper-Script mal alle Astro-Zeiten ausgeben lassen).

                                    Ich hab es nicht mehr komplett in Erinnerung, aber bei mir lag es glaube ich an der "isTimeInRange" Methode oder der vorgelagerten Bestimmung von "strLower" / "strUpper".

                                    Mein aktueller Workaround sieht wie folgt aus:

                                    • Ich habe den "else-Zweig" in der isTimeInRange Methode auskommentiert

                                    • damit wurde es auf jeden Fall besser…

                                    Hier meine Version der isTimeInRange Funktion:

                                    function isTimeInRange(strLower, strUpper) {
                                        ...
                                        if (upper > lower) {
                                            ...
                                        }
                                    //    else {
                                            // closes in the following day
                                    //        inRange = (now >= upper && now <= lower) ? false : true;
                                    //    }
                                        return inRange;
                                    }
                                    

                                    Final gelöst habe ich damit das Problem aber nicht, aber eventuell hilft der Hinweis. Durch das auskommentieren wurde es bei mir auf jeden Fall besser mit den Schaltzeiten.

                                    Viele Grüße

                                    1 Reply Last reply Reply Quote 0
                                    • L
                                      looxer01 last edited by

                                      Hi,

                                      ok, dann scheint das ja im coding zu liegen.

                                      Ist sicher mal mit irgendeiner Javascript aenderung passiert.

                                      Ich schaue es mir am WE an und poste dann ggf eine neue Version,

                                      vG Looxer

                                      1 Reply Last reply Reply Quote 0
                                      • L
                                        looxer01 last edited by

                                        Hi,

                                        ich habe einen Fehler gefunden, wenn die Bis-Zeit in den nächsten Tage geht.

                                        Dann wird die von Zeit auf bis Zeit gesetzt. Ich bin aber nicht sicher, ob das euer Problem löst.

                                        Die Astrozeit wird -wie schon vorher gesagt- korrekt berechnet aber dann verändert.

                                        könntet ihr bitte die folgende Zeile in Routine Astrojetzt auskommentieren

                                        //        zeit = zeitbis;                                                       // wenn die Astrozeit groesser wird als die BisZeit, dann ist vonZeit = bisZeit
                                        
                                        

                                        Feedback wäre klasse.

                                        vG Looxer

                                        1 Reply Last reply Reply Quote 0
                                        • M
                                          Mihaeru last edited by

                                          Hi looxer01, du hast Recht. Das Problem liegt in der Funktion. Jetzt ist mir auch eingefallen, dass ich das auch schon mal hatte und die Funktion angepasst aber es nie eingesetzt habe :oops:

                                          Das war meine angedachte Lösung:

                                          function isTimeInAstroRange(zeitvon, zeitbis, astrovon, astrobis) {
                                              var now = new Date();
                                              var sunriseEnd = getAstroDate("sunriseEnd");    // Ende der Nacht nach Astro
                                              var sunsetStart = getAstroDate("sunsetStart");  // Ende des Tages nach Astro
                                              var lower = addTime(zeitvon);                   // switch on time
                                              var upper = addTime(zeitbis);                   // switch off time
                                              var switchOffNextDay = upper < lower;           // Abschaltung am nächsten Tag?
                                          
                                              if (astrovon === true) {                        // Astrozeit gesetzt
                                                  lower = sunsetStart;
                                              }
                                          
                                              if (astrobis === true) {                        // Astrozeit gesetzt
                                                  upper = sunriseEnd;
                                              }
                                          
                                              if (upper < lower && switchOffNextDay) {
                                                      return (now >= upper && now <= lower) ? false : true;
                                              }
                                          
                                              return (now >= lower && now <= upper) ? true : false;
                                          }
                                          
                                          

                                          Basiert auf deiner astroJetzt Funktion, vergleicht aber direkt die Zeiten. Der Plan war, die Funktion dann statt isTimeInRange zu verwenden. Die Aufrufe von astroJetzt könnten dann komplett wegfallen. Wenn ich mich jetzt nicht täusche, müsste es dann so aussehen:

                                          schedule(cron1job, function() {
                                          if  (getState(IDAWSaktiv).val === true) {     // AWS aktiv ?
                                              if(isTimeInAstroRange(zeit1von, zeit1bis, vonAstro1, bisAstro1)) {              // ist die "von"-Zeit innerhalb des aktuellen Zeitfensters ?
                                                  log("astrozeit1von  gesetzt von " + zeit1von + " bis " + zeit1bis ,"info");   
                                                  x = zufall(1,Grp1ZufAnz,x);                                                 // Ermittlung zufaelliges Geraet zum enschalten
                                                  z = zufall(0,StartDelay1*60,y)*1000;                                        // Ermittlung der Einschaltverzögerung aufgrund der Zufallszahl
                                                  y = zufall(ein1von*60,ein1bis*60,y)*1000;                                   // Ermittlung der Einschaltzdauer aufgrund der Zufallszahl in Millisekunden
                                                  var IDGruppe = "IDGruppe1" + x;                                             // Ermittlung Gruppenname z.B. IDGruppe11
                                                  if (x <= 5 && GeraetExists(IDGruppe)) {    AWSSchaltung(IDGruppe,y,z);  }   // Geraetenummer muss 1 - 5 sein, dass Geraet muss existieren dann schalten
                                              } // Ende Zeitcheck
                                          }  // Endeif für AWS-Aktivflag check   
                                          }); // end schedule IDGruppe1
                                          
                                          

                                          Wie gesagt, ich habe es leider nicht richtig in ioBroker getestet, sondern nur damals in VsCode mit statischen Astro-Zeiten. Hoffe, es klappt trotzdem.

                                          Grüße

                                          Mihaeru

                                          1 Reply Last reply Reply Quote 0
                                          • L
                                            looxer01 last edited by

                                            @Mihaeru:

                                            Wie gesagt, ich habe es leider nicht richtig in ioBroker getestet, sondern nur damals in VsCode mit statischen Astro-Zeiten. Hoffe, es klappt trotzdem.

                                            Grüße `

                                            vielen Dank. Ich schaue mir das am WE an.

                                            Der fix den ich gepostet habe sollte erstmal kurzfristig helfen.

                                            vG Looxer

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            943
                                            Online

                                            31.6k
                                            Users

                                            79.5k
                                            Topics

                                            1.3m
                                            Posts

                                            40
                                            271
                                            50456
                                            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