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. Fehler in Scripte die schon funktionierten!!!

NEWS

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

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

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

Fehler in Scripte die schon funktionierten!!!

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
13 Beiträge 3 Kommentatoren 2.2k Aufrufe
  • Ä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.
  • paul53P Offline
    paul53P Offline
    paul53
    schrieb am zuletzt editiert von
    #3

    @webseb79:

    Bei Javascript habe ich noch suncalc , dewpoint , pi-controller installiert. `
    suncalc ist bereits mit dem Javascript-Adapter installiert und braucht (sollte) nicht nochmal installiert werden.

    Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
    Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

    1 Antwort Letzte Antwort
    0
    • W Offline
      W Offline
      webseb79
      schrieb am zuletzt editiert von
      #4

      Hier mal die Scripte:

      Sonnenstandsberechnung

      /* System Sonnenstand
      
      Sonne Azimut und Elevation in Variablen schreiben
      
      erstellt: 06.07.2015 nach ioBroker Forum http://forum.iobroker.net/viewtopic.php?f=21&t=975&sid=6f0ba055de5f82eed6809424f49ca93b#p7635
      */
      var suncalc = require('suncalc'),
          result = getObject("system.adapter.javascript.0"),
          lat = result.native.latitude,
          long = result.native.longitude;
      
      createState('Sonnenstand.Elevation', 0, {unit: '°'});
      createState('Sonnenstand.Azimut', 0, {unit: '°'});
      
      function Sonnenstand_berechnen () {
          var now = new Date();
          var sunpos = suncalc.getPosition(now, lat, long);
          var h = sunpos.altitude * 180 / Math.PI,
              a = sunpos.azimuth * 180 / Math.PI + 180;
      
          setState("javascript.0.Sonnenstand.Elevation",h.toFixed(1));
          setState("javascript.0.Sonnenstand.Azimut",a.toFixed());
      }
      
      schedule("*/3 * * * *", Sonnenstand_berechnen);
      Sonnenstand_berechnen(); // bei Scriptstart
      

      Sonnenschutz Badezimmer:

      on({
          id: "javascript.0.Sonnenstand.Elevation"/*Sonnenstand.Elevation*/,
          change: "ne",
          logic: "and"
      }, function (obj) {
          Sonnenschutz_ausfuehren();
      });
      
      function Sonnenschutz_ausfuehren() 
      {
          if (getState("hm-rpc.0.LEQ1028794.1.LEVEL"/*Bad Jalousie Fenster:1.LEVEL*/).val <= 90) { return; }
              if (getState("javascript.0.Sonnenstand.Azimut"/*Sonnenstand.Azimut*/).val >= 145 && getState("javascript.0.Sonnenstand.Azimut"/*Sonnenstand.Azimut*/).val <= 289) {
                  if (getState("javascript.0.Beschattung.Jalousien.Sonnenschutz"/*javascript.0.Beschattung.Jalousien.Sonnenschutz*/).val === true) {
                          toLog("Sonnenschutzposition Jalousie Badezimmer angefahren",true);
                          setStateDelayed("hm-rpc.0.LEQ1028794.1.LEVEL"/*Bad Jalousie Fenster:1.LEVEL*/,40,15000);
                  }
              }
      }
      
      on({
          id: "javascript.0.Sonnenstand.Elevation"/*Sonnenstand.Elevation*/,
          change: "ne",
          logic: "and"
      }, function (obj) {
          Sonnenschutz_aufheben();
      });
      
      function Sonnenschutz_aufheben() 
      {
          if (getState("hm-rpc.0.LEQ1028794.1.LEVEL"/*Bad Jalousie Fenster:1.LEVEL*/).val <= 10 || getState("hm-rpc.0.LEQ1028794.1.LEVEL"/*Bad Jalousie Fenster:1.LEVEL*/).val >= 90) { return; }
              if (getState("javascript.0.Sonnenstand.Azimut"/*Sonnenstand.Azimut*/).val >= 290) {
                      toLog("Sonnenschutzposition Jalousie Badezimmer verlassen",true);
                      setState("hm-rpc.0.LEQ1028794.1.LEVEL"/*Bad Jalousie Fenster:1.LEVEL*/,100);
      
              }
      }
      
      

      Sonnenschutz rpüfen:

      //--------------------Sonnenschutz prüfen---------------------------------------
      on({
          id: "javascript.0.Sonnenstand.Elevation"/*Sonnenstand.Elevation*/,
          change: "ne",
          logic: "and"
      }, function (obj) {
          Sonnenschutz_pruefen();
      });
      
      createState("javascript.0.Beschattung.Jalousien.Sonnenschutz", false);
      createState("javascript.0.Beschattung.Jalousien.Aktiv", false);
      
      function Sonnenschutz_pruefen() {
          var SunProtect = false;
          if (getState("javascript.0.Sonnenstand.Elevation"/*Sonnenstand.Elevation*/).val >= 5) {
              if (getState("javascript.0.Sonnenstand.Azimut"/*Sonnenstand.Azimut*/).val >= 100 && getState("javascript.0.Sonnenstand.Azimut"/*Sonnenstand.Azimut*/).val <= 300) {
                  if (getState("javascript.0.Aussentemperatur.Anpassung"/*Aussentemperatur.Anpassung*/).val >= 19 && getState("javascript.0.Aussentemperatur.Anpassung"/*Aussentemperatur.Anpassung*/).val <= 30) {
                      if (getState("javascript.0.Beschattung.Sonnensensor.Sonne"/*javascript.0.Beschattung.Sonnensensor.Sonne*/).val === true && getState("hm-rpc.0.MEQ0203583.3.TEMPERATURE"/*Sonnensensor:3.TEMPERATURE*/).val >= 1.0) {
                          if (getState("javascript.0.Beschattung.Jalousien.Aktiv").val === true){
                          SunProtect = true;
                          }
                      }
                  }
              }
          }
          if (getState("javascript.0.Beschattung.Jalousien.Sonnenschutz").val != SunProtect) {
              // Nur bei Änderung setzen
              //setState("hm-rega.0.8091"/*Jalousie Sonnenschutz*/, SunProtect);
              setState("javascript.0.Beschattung.Jalousien.Sonnenschutz", SunProtect);
              //log("Prüfe Sonnenschutz: " + SunProtect);
          }
      }
      
      // Sonnenschutz wurde aktiviert
      on({
          id: "javascript.0.Beschattung.Jalousien.Sonnenschutz",
          change: "ne",
          val: true,
          logic: "and"
      }, function (obj) {
          Sonnenschutz_ein();
      });
      
      function Sonnenschutz_ein() {
      
          toLog("Der Sonnenschutz global wurde aktiviert",true);
      }
      
      // Sonnenschutz wurde deaktiviert
      on({
          id: "javascript.0.Beschattung.Jalousien.Sonnenschutz",
          change: "ne",
          val: false,
          logic: "and"
      }, function (obj) {
          Sonnenschutz_aus();
      });
      
      on({
          id: "javascript.0.Beschattung.Jalousien.Aktiv",
          change: "ne",
          val: false,
          logic: "and"
      }, function (obj) {
          Sonnenschutz_aus();
      });
      
      on({
          id: "javascript.0.Beschattung.Jalousien.Hitzeschutz",
          change: "ne",
          val: true,
          logic: "and"
      }, function (obj) {
          Sonnenschutz_aus();
      });
      
      function Sonnenschutz_aus() {
      
          toLog("Der Sonnenschutz global wurde deaktiviert",true);
      }
      
      

      Das sind z.B. drei Scripte die zusammen arbeiten.

      Durch Sonne Elevation wird getriggert , Sonnenschutz nach Kriterien prüfen , Sonnenschutz im Badezimmer ausführen.

      Hoffe es ist verständlich.

      Gruß Sebastian

      1 Antwort Letzte Antwort
      0
      • paul53P Offline
        paul53P Offline
        paul53
        schrieb am zuletzt editiert von
        #5
        createState('Sonnenstand.Elevation', 0, {unit: '°'});
        

        hat den Datenpunkt in der Instanz "javascript.0" angelegt ?

        error   hm-rpc.0.LEQ1174762.1.STATE [object Object] Cannot read property 'push' of undefined
        

        Der Datenpunkt "hm-rpc.0.LEQ1174762.1.STATE" taucht in den Skripten nicht auf. Woher kommt eine property 'push' ?

        Schau Dir im Reiter "Objekte" die Eigenschaften des betreffenden Datenpunktes an.

        Ersetze bitte

            setState("javascript.0.Sonnenstand.Elevation",h.toFixed(1));
            setState("javascript.0.Sonnenstand.Azimut",a.toFixed());
        
        

        durch

            setState("javascript.0.Sonnenstand.Elevation", Math.round(10 * h) / 10);
            setState("javascript.0.Sonnenstand.Azimut", Math.round(a));
        
        

        Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
        Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

        1 Antwort Letzte Antwort
        0
        • W Offline
          W Offline
          webseb79
          schrieb am zuletzt editiert von
          #6

          Hallo paul53,

          der Datenpunkt wurde angelegt.

          Habe deinen Vorschlag im Script geändert.

          Der Datenpunkt "hm-rpc.0.LEQ1174762.1.STATE" ist vorhanden…hat sich gerade dazwichen gedrängelt...kommt in einem anderen Script vor.

          Der Fehler ist wieder aufgetreten.

          Die Sonnenstandsberechnung funktioniert ja...aber als Trigger in anderen Scripten kommt es dann zum Fehler

          javascript.0	2016-06-22 17:39:00.643	error	TypeError: Cannot read property 'split' of undefined at toLog (script.js.Veranda.Jalousie_G_Sonnenschutz:143:18) at Sonnenschutz_ausfuehren (script.js.Veranda.Jalousie_G_Sonnenschutz:244:21)
          javascript.0	2016-06-22 17:39:00.643	error	message javascript.0.Sonnenstand.Elevation [object Object] Cannot read property 'split' of undefined
          

          Z.B im Logdatenscript kommt das Wort 'split' ja vor.

          createState('Logdatenerstellung.Log', '');
          
          function getTimeAsString(d) {
              var date = d || new Date();
              return date.getFullYear() + '.' + ('0' + (date.getMonth() + 1)).slice(-2) + '.' + ('0' + date.getDate()).slice(-2) + '  ---   '+
           ('0' + date.getHours()).slice(-2) + ':' + ('0' + date.getMinutes()).slice(-2) + ':' +  ('0' + date.getSeconds()).slice(-2);    
          }
          function toLog(text, addTimestamp) 
          {
              console.log(text);
              var lines = getState('Logdatenerstellung.Log').val;
              lines = lines.split('
          ');
              if (addTimestamp) {
                      lines.push(getTimeAsString() + '  ---  ' + text);
              } else {
                      lines.push(text);
              }
              if (lines.length > 33) lines.splice(0,1);
              setState('Logdatenerstellung.Log', lines.join('
          '), true);
          }
          

          Kann da der Fehler sein?

          Sebastian

          1 Antwort Letzte Antwort
          0
          • paul53P Offline
            paul53P Offline
            paul53
            schrieb am zuletzt editiert von
            #7

            @webseb79:

            Kann da der Fehler sein? `
            Ja. Mit

                setState('Logdatenerstellung.Log', lines.join('
            '), true);
            

            soll ein Array in einen Datenpunkt geschrieben werden, was nicht funktioniert. Das Array müsste erst in einen String gewandelt werden.

                var lines = getState('Logdatenerstellung.Log').val;
                lines = lines.split('
            ');
            

            erwartet einen String im Datenpunkt und macht daraus ein Array. Da aber kein String geschrieben wurde, kann split nicht funktionieren.

            Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
            Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

            1 Antwort Letzte Antwort
            0
            • paul53P Offline
              paul53P Offline
              paul53
              schrieb am zuletzt editiert von
              #8

              Muss mich korrigieren:

              lines.join('
              ')
              

              macht aus dem Array einen String mit Zeilentrenner.

              Vielleicht muss man den Datenpunkt 'Logdatenerstellung.Log' erst einmal mit einem einfachen String initialisieren ?

              Wie sieht der Datenpunkt (Wert) jetzt aus ?

              Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
              Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

              1 Antwort Letzte Antwort
              0
              • W Offline
                W Offline
                webseb79
                schrieb am zuletzt editiert von
                #9

                Also ganz kann ich dir leider nicht mehr folgen in Punkto String und Array…bin gerade dabei mich zu belesen.

                Unter Zustande steht kein Wert geschrieben.

                1 Antwort Letzte Antwort
                0
                • paul53P Offline
                  paul53P Offline
                  paul53
                  schrieb am zuletzt editiert von
                  #10

                  @webseb79:

                  Unter Zustande steht kein Wert geschrieben. `
                  Dann gib mal einen kurzen Text ein, z.B. startlog.

                  Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                  Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                  1 Antwort Letzte Antwort
                  0
                  • W Offline
                    W Offline
                    webseb79
                    schrieb am zuletzt editiert von
                    #11

                    Habe das Script für Logdatenerfassung erstmal gestoppt und in alle anderen Scripten das "toLog" auskommentiert.

                    Jetzt funktioniert z.B meine Beschattung wieder.

                    Wo soll ich startlog eingeben?

                    1 Antwort Letzte Antwort
                    0
                    • paul53P Offline
                      paul53P Offline
                      paul53
                      schrieb am zuletzt editiert von
                      #12

                      @webseb79:

                      Wo soll ich startlog eingeben? `
                      Im Reiter Zustände auf den Datenpunkt 'Logdatenerstellung.Log' doppelklicken und im Feld Wert den Text eingeben.

                      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                      1 Antwort Letzte Antwort
                      0
                      • W Offline
                        W Offline
                        webseb79
                        schrieb am zuletzt editiert von
                        #13

                        Schlechte Nachricht…

                        Jetzt ist mein System komplett abgeschmiert....werde erstmal wieder zurück auf Raspi umstellen und mein Backup auf den Cubox einspielen.

                        Probiere dann dein Eintrag unter Zustände.

                        Wird ein weilchen dauern , würde mich morgen mit meinen Ergebnissen melden.

                        Danke erstmal paul53 für deine Hilfe.

                        Schönen Abend

                        Sebastian

                        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

                        828

                        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