Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Script läuft nach Umzug auf anderen Server nicht mehr

    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

    Script läuft nach Umzug auf anderen Server nicht mehr

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

      Hey Leute,

      ich habe zuletzt meinen Server aktualliert auf dem der ioBroker läuft. Nur ich habe das Problem, dass ein Script, zumindest habe ich es bei einem gemerkt, da nicht alle ständig bzw. Täglich eine Aufgabe haben. Zu meiner Vorgehensweise, ich habe auf dem alten Server ein komplettes Backup gemacht, auf dem neuen Server dieses wieder aufgespielt und gewartet, bis im Hintergrund alles mögliche nachinstalliert war. Im Anschluß habe ich die benötigten Adapter gestartet und gewartet, bis Messdaten und ähnliches geladen Waren.

      Doch nun sollte das Script bei überschreiten der 25° und Helligkeit von über 2.500 Lux die Rollos runter fahren. Doch da tat sich heute nichts. Vielleicht kann mir jemand helfen.

      Das Script:

      /*
      Urlaubssteuerung für die Rollos, bei über 25 Grad fahren die Rollos runter, bei unter 25 Grad und wenn es Hell ist hoch
      
      
      */
      
      
      
      
      var level = getState('hm-rpc.0.PEQ0181456.1.LEVEL').val;
      
      on('hm-rpc.1.0010D8A990A07B.1.ACTUAL_TEMPERATURE', function (dp) {
          let temp = dp.state.val;
          let licht = getState("hm-rpc.1.000D58A9915FBC.1.AVERAGE_ILLUMINATION").val;
          if(licht > 2500) {
              if (temp > 25) level = 25;
      
              else if (temp < 20) level = 100;
      
              if(level != getState('hm-rpc.0.PEQ0181456.1.LEVEL').val) {
                  setState("hm-rpc.0.PEQ0181456.1.LEVEL", level);
                  setStateDelayed("hm-rpc.0.PEQ0181557.1.LEVEL", level, 5000);
                 /*
                      setStateDelayed("hm-rpc.0.PEQ0181507.1.LEVEL", level, 10000);
                      setStateDelayed("hm-rpc.0.OEQ2341971.1.LEVEL", level, 15000);       
                  */
                  setStateDelayed("hm-rpc.0.PEQ0181297.1.LEVEL", level, 20000);
                  setStateDelayed("hm-rpc.0.PEQ0181518.1.LEVEL", level, 25000);
                  setStateDelayed("hm-rpc.0.PEQ0181504.1.LEVEL", level, 30000);
                  setStateDelayed("hm-rpc.0.PEQ0181520.1.LEVEL", level, 35000);
                  setStateDelayed("hm-rpc.0.PEQ0181559.1.LEVEL", level, 40000);
              }
      
          }
      
      });
      
      

      Die 2 Rollos die Auskommentiert sind, sind vom Kinderzimmer. Da muss ich mir noch was überlegen, dass diese im Zeitraum von 12 - 16 Uhr ignoriert werden. Also die sollen vor 12 Uhr und nach 16 Uhr automatisch mitlaufen. Aber das gucke ich mir im Nachgang an. Problem war, dass die Kinder beim Mittagsschlaf geweckt wurden, wenn plötzlich kälter wurde. War nicht ganz so cool. Den Schwellwert ab wann die Rollos wieder hoch gefahren werden sollen, habe ich reduziert. Da beim Original, was vorher so geplant war das Rollo x Mal hoch und runter fuhr. Vor dem Serverumzug lief alles noch wunderbar.

      Und der ioBroker auf dem Alten Server ist gestoppt. Habe den Server selbst noch nicht ganz runter gefahren.

      Eine Fehlermeldung zum Script gibt es im LOG nicht. Hat jemand von euch ggf. sowas schon mal erlebt und ggf. ein Tipp?

      Michael

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

        @raspido
        Schreibe in Zeile 35 eine Log-Ausgabe, um zu sehen, was passiert.

            log('Temperatur: ' + temp + ' °C, Licht: ' + licht + ' lux, Rollos: ' + level + ' %');
        
        R 1 Reply Last reply Reply Quote 0
        • R
          raspido @paul53 last edited by

          @paul53 Soweit ich das richtig verstehe, sollte diese Zeile im Log oder unterm Script im Ereignismonitor was ausgeben. Nur leider gibt er dazu keine Infos aus.

          Also ich finde keine Zeile mit "Temperatur", Licht oder der gleichen.

          Nur Ereignisse, wie Script gestopt, gestartet und so.

          Michael

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

            @raspido sagte: Also ich finde keine Zeile mit "Temperatur", Licht oder der gleichen.

            Du musst warten, bis der Trigger auslöst, also sich die Temperatur ändert.

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

              @paul53 Okay dann warte ich mal und melde mich am Abend. Bis dahin sollte sich was tun.

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

                @raspido
                Im Tab "Objekte" werden die Werte der hm-rpc-Datenpunkte richtig angezeigt und aktualisiert?

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

                  @paul53 Also bevor mir was aufgefallen ist, wurden die Werte nicht aktuallisiert. Wobei ich hatte das Gefühl, dass sich draußen bislang nicht viel geändert hatte. Aber naja das eine Problem gefunden und beseitigt. Also das Script an sich läuft wieder.

                  Bei den Adapter für Homematic war die Falsche Callback IP hinterlegt gewesen. Also der neue und der alte Server haben unterschiedliche IP Adressen und naja ist mir erst garnicht aufgefallen bzw. eingefallen.

                  Nur muss ich nun gucken, wie man es am einfachsten und besten lösen kann, dass die Rollos im Kinderzimmer (Die auskommentierten), nicht in dem Zeitraum Montag bis Freitag jeweils 12.00 Uhr bis 15.30 Uhr automatisch bewegen. In dem Zeitraum schlafen in der Regel die Tageskinder und die werden immer Wach wenn plötzlich das Rollo fährt.

                  Deshalb habe ich diese im Moment auskommentiert.

                  Michael

                  htrecksler paul53 2 Replies Last reply Reply Quote 0
                  • htrecksler
                    htrecksler Forum Testing @raspido last edited by

                    @raspido Du machst dir einfach einen Datenpunkt "Kinderzimmerrolladensperre" .
                    Den setzt du um 12 Uhr auf True und um 15:00 Uhr auf False

                    Und im Rolladenscript prüfst du vorm Schalten den Datenpunkt.
                    Das wäre eine Möglichkeit. Es gibst sich noch andere.

                    R 1 Reply Last reply Reply Quote 0
                    • R
                      raspido @htrecksler last edited by

                      @htrecksler Okay Danke für den Tipp.

                      Das "steuern" des Datenpunktes kann ich ja auch im gleichen Script packen oder spricht da was dagegen? Ein kleines Problem hab ich noch, wie bekomme ich die Aktuelle Uhrzeit? Ich habe in den Datenpunkten gewühlt und irgendwie noch nicht den gefunden, der "aktuell" ist

                      Michael

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

                        @raspido sagte: nicht in dem Zeitraum Montag bis Freitag jeweils 12.00 Uhr bis 15.30 Uhr automatisch bewegen

                        let wd = new Date().getDay();
                        if(compareTime('12:00', '15:30', 'not between') || wd == 0 || wd == 6) {
                        }
                        
                        1 Reply Last reply Reply Quote 0
                        • htrecksler
                          htrecksler Forum Testing @raspido last edited by htrecksler

                          @raspido z. B. mit einem

                          schedule("0 12 * * *", RolladenSperreSetzen);
                          
                          schedule("0 15 * * *", RolladenSperreAufheben);
                          

                          RolladenSperreSetzen bzw RolladenSperreAufheben wären in dem Fall Funktionen im Script in welchen dann der Datenpunkt auf TRUE bzw. FALSE gesetzt wird.

                          Der Vorteil das Ganze über einen DP zu steuern...Du kannst auch andere Ereignisse nutzen um das Fahren der Rolladen zu verhindern. Den DP kannst du ja jederzeit beeinflussen.

                          R 1 Reply Last reply Reply Quote 0
                          • R
                            raspido @htrecksler last edited by

                            Ich habe das mit dem externen Datenpunkt gemacht. Ich denke das bringt mehr flexibiltät. Aber mal gucken ob das nun läuft, was ich da zusammengebaut habe.

                            Hier der Code zur Rollosteuerung:

                            /*
                            Urlaubssteuerung für die Rollos, bei über 25 Grad fahren die Rollos runter, bei unter 25 Grad und wenn es Hell ist hoch
                            
                            
                            */
                            
                            
                            
                            var level = getState('hm-rpc.0.PEQ0181456.1.LEVEL').val;
                            
                            on('alias.0.Temperaturen.Draußen.ACTUAL', function (dp) {
                                let temp = dp.state.val;
                                let licht = getState("hm-rpc.1.000D58A9915FBC.1.AVERAGE_ILLUMINATION").val;
                                if(licht > 2500) {
                                    if (temp > 25) level = 25;
                            
                                    else if (temp < 20) level = 100;
                            
                                    if(level != getState('hm-rpc.0.PEQ0181456.1.LEVEL').val) {
                                        setState("hm-rpc.0.PEQ0181456.1.LEVEL", level);
                                        setStateDelayed("hm-rpc.0.PEQ0181557.1.LEVEL", level, 5000);
                                        setStateDelayed("hm-rpc.0.PEQ0181297.1.LEVEL", level, 10000);
                                        setStateDelayed("hm-rpc.0.PEQ0181518.1.LEVEL", level, 15000);
                                        setStateDelayed("hm-rpc.0.PEQ0181504.1.LEVEL", level, 20000);
                                        setStateDelayed("hm-rpc.0.PEQ0181520.1.LEVEL", level, 25000);
                                        setStateDelayed("hm-rpc.0.PEQ0181559.1.LEVEL", level, 30000);
                                        //Kinderzimmer Rollos
                                        if(!getState('0_userdata.0.Hilfsdatenpunkte.Kinderzimmer_Rollo_Sperre')){
                                            setStateDelayed("hm-rpc.0.PEQ0181507.1.LEVEL", level, 35000);
                                            setStateDelayed("hm-rpc.0.OEQ2341971.1.LEVEL", level, 40000);
                                        }
                                    }
                            
                                }
                                log('Temperatur: ' + temp + ' °C, Licht: ' + licht + ' lux, Rollos: ' + level + ' %'); 
                            });
                            

                            Und Hier ein Screenshot vom Blockly Code für die Steuerung des Datenpunktes:

                            a5c73a50-a7ee-4ddc-b376-da193e5810fa-grafik.png

                            Also wenn ich das noch richtig in Erinnerung habe aus der Vergangeheit, müsste das mit dem Abfragen des Zustands des Datenpunktes klappen. Ich habe den zur besseren Übersicht ans Ende gepackt. Also nicht wundern. So sind die ohne "Sonderprogramm" und mit "Sonderprogramm" bisschen von einander getrennt.

                            Michael

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

                              @raspido sagte: ob das nun läuft, was ich da zusammengebaut habe.

                              Das läuft nicht. Korrigiere Zeile 28:

                                          if(!getState('0_userdata.0.Hilfsdatenpunkte.Kinderzimmer_Rollo_Sperre').val) {
                              
                              R 1 Reply Last reply Reply Quote 0
                              • R
                                raspido @paul53 last edited by

                                @paul53 danke für den Hinweis.

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

                                Support us

                                ioBroker
                                Community Adapters
                                Donate

                                391
                                Online

                                31.8k
                                Users

                                80.0k
                                Topics

                                1.3m
                                Posts

                                3
                                14
                                316
                                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