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.
  • W Offline
    W Offline
    webseb79
    schrieb am zuletzt editiert von
    #1

    Hallo liebe Gemeinde,

    habe in den letzten Tagen einen Umstieg gewagt von Raspi 2B auf Cubox-i4x4.

    Die Installation lief nach einigen Probieren einwandfrei durch sodass ich alle Adapter und Scripte und Vis Darstellungen soweit hatte wie beim Raspi.

    Es sind alle Adapter auf dem neusten Stand , Node 4.4.5 , Nodejs 4.4.5 , NPM 2.15.5.

    Nun zum Problem:

    Heute habe ich die Scripte am Raspi gestoppt und auf dem Cubox gestartet und nun kommen einige Fehler die sonst nie kamen

    TypeError:	2016-06-22 14:29:43.249	error	at Object.utils.adapter.stateChange (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:215:17)
    TypeError:	2016-06-22 14:29:43.249	error	at checkPatterns (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:537:17)
    TypeError:	2016-06-22 14:29:43.249	error	at getObjectEnums (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:2644:28)
    TypeError:	2016-06-22 14:29:43.249	error	at getObjectEnums (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:2644:28)
    TypeError:	2016-06-22 14:29:43.249	error	at getObjectEnums (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:2650:45)
    TypeError:	2016-06-22 14:29:43.249	error	at /opt/iobroker/node_modules/iobroker.javascript/javascript.js:541:48
    TypeError:	2016-06-22 14:29:43.249	error	at Object.subs.callback (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:1207:48)
    TypeError:	2016-06-22 14:29:43.249	error	at Object. (script.js.Keller.Absenktemperatur:254:5)
    TypeError:	2016-06-22 14:29:43.249	error	at Modus_Hand_10 (script.js.Keller.Absenktemperatur:259:5)
    TypeError:	2016-06-22 14:29:43.249	error	at toLog (script.js.Keller.Absenktemperatur:145:18)
    TypeError:	2016-06-22 14:29:43.249	error	Cannot read property 'push' of undefined
    message	2016-06-22 14:29:43.243	error	hm-rpc.0.LEQ1174762.1.STATE [object Object] Cannot read property 'push' of undefined
    

    oder

    javascript.0	2016-06-22 14:37:45.344	error	TypeError: Cannot read property 'split' of undefined at toLog (script.js.Badezimmer.Jalousie_Sonnenschutz:143:18) at Sonnenschutz_ausfuehren (script.js.Badezimmer.Jalousie_Sonnenschutz:244:21)
    javascript.0	2016-06-22 14:37:45.343	error	message javascript.0.Sonnenstand.Elevation [object Object] Cannot read property 'split' of undefined
    

    Somit werden dann die Scripte auch nicht aufgeführt.

    Bei Javascript habe ich noch suncalc , dewpoint , pi-controller installiert.

    Danke im voraus für eure Unterstützung

    Sebastian

    1 Antwort Letzte Antwort
    0
    • BluefoxB Offline
      BluefoxB Offline
      Bluefox
      schrieb am zuletzt editiert von
      #2

      Da muss man Skript ansehen. Anscheinend machst du irgendwas mit Werten von Variablen und es kann gut sein, dass bei bestimmten Werten Skript nicht mehr geht.

      1 Antwort Letzte Antwort
      0
      • 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

                            670

                            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