Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Script läuft auf einer iobroker Installation, auf der anderen NICHT???

    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 auf einer iobroker Installation, auf der anderen NICHT???

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

      Dutchman,

      gute Frage! aber da ich nur Script Laie bin, kann ich sie nicht gut beantworten. Ich poste hier mal das Script. Vielleicht schaust Du mal drauf? Danke!

      `// ##################################################################
      
      //                  Buero Geburstage u. Muell
      
      // ##################################################################
      
      // ##################################################################
      
      //                      Definitionen
      
      // ##################################################################
      
      // Definition Sayit für "2" = Buero;
      var idSayIt =            "sayit.2.tts.text";
      var lautstaerke = 40;
      
      // Quellen
      var idWetter =           "hm-rega.0.29954";
      var idTemperatursensor = "hm-rpc.0.LEQ0177463.1.TEMPERATURE"; /*Temperatursensor:1.TEMPERATURE*/
      var idGeburtstage =      "javascript.0.Kalenderereignisse.heute";
      var idMuell =            "javascript.0.Muellereignisse.heute";
      
      function ermitteleAnsagedatum () {
          //Wochentag ermitteln
          var d = new Date ();
          var w = new Array("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag");
          var wochentag = w[d.getDay()]; 
      
          //Tagesdatum ermitteln
          var tag = d.getDate();
      
          //Monat ermitteln
          var month = new Array("Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember");
          var monat = month[d.getMonth()];
      
          //Jahr ermitteln
          var jahr = d.getFullYear();
      
          //Stunde ermitteln
          var stunde = d.getHours();
      
          //Minute ermitteln
          var minute = d.getMinutes();
      
          return { // zurückgeben
              'Jahr'      : jahr,
              'Monat'     : monat,
              'Tag'       : tag,
              'Wochentag' : wochentag,
              'Stunde'    : stunde,
              'Minute'    : minute
          };
      }
      
      function ermitteleWetter () { // Wetterbedingungen
          var wetterdaten = getState(idWetter).val;
          log('Wetter: ' + wetterdaten);
          return(wetterdaten);
      }
      
      function ermitteleAnsageTemperatur () {
          // Die Außentemperatur ist xx. Das Wetter heute ist xx
          // Einfache Temperaturansage mit SayIt.
          // Variante 1 mittels splitten der Temperatur, damit die Ansage nicht
          // "Es sind 18 Punkt 2 Grad " sagt.
      
          var temperatursensor = getState(idTemperatursensor).val;
          var temp_string = temperatursensor.toString();
          log('Temp  ' + temp_string);
          var temp_array = [];
          temp_array = temp_string.split(".");
      
          // Fange leere Nachkommastellen ab. Das passiert, wenn die Temperatur z. B. 18.0 ist.
          // Es wird dann nur "18" gelesen.
          if (!temp_array[1]) {
              temp_array[1] = "0";
              log("Die Nach-Kommastelle in temp_array[1] war nicht vorhanden und wird nun fest auf 0 gesetzt.");
          }
          return{
              'Ganzzahl'      : temp_array[0],
              'Nachkommazahl' : temp_array[1]
          };
      }
      
      function ermitteleGeburtstage () {
          var geburtstage = getState(idGeburtstage).val;
       log(geburtstage);
          return (geburtstage);
      }
      
      function ermitteleMuell () {
          var muell = getState(idMuell).val;
          log(muell);
          return (muell);
      }
      
      // ##################################################################
      //
      //                  Ansagetext zusammenstellen
      //
      // ##################################################################
      
          var ansagetext = "Guten Morgen, heute ist " + ermitteleAnsagedatum().Wochentag + " der " + ermitteleAnsagedatum().Tag + "te " + ermitteleAnsagedatum().Monat + ' ' + ermitteleAnsagedatum().Jahr 
                  + ". Es ist" + ermitteleAnsagedatum().Stunde + "  Uhr und " + ermitteleAnsagedatum().Minute + "  Minuten." 
                  + " Die Aussentemperatur beträgt " + ermitteleAnsageTemperatur().Ganzzahl + "," + ermitteleAnsageTemperatur().Nachkommazahl + " Grad." 
                  + " Wetter Bedingungen," + ermitteleWetter() +" .";
      
      // ####################################################
      // Wenn Geburtstag dann mit ansagen
      // ####################################################
      
         var geburtstage2 = getState(idGeburtstage).val;
          if (geburtstage2.length > 2) { // wenn der Inhalt des Objektes "idGeburtstage" weniger als 2 Zeichen lang ist (also praktisch leer), dann ...
              ansagetext = ansagetext + "Heute haben Geburtstag, " + ermitteleGeburtstage() +" .";
      
            }
      
      // ####################################################
      // Wenn Müll dann mit ansagen
      // ####################################################
      
         var muell2 = getState(idMuell).val;
          if (muell2.length > 2) { // wenn der Inhalt des Objektes "idMuell" weniger als 2 Zeichen lang ist (also praktisch leer), dann ...
               ansagetext = ansagetext + "  Achtung, heute ist Abholung " + ermitteleMuell() +" .";
          }
      
      // ####################################################
      //                  ANSAGE
      // ####################################################
      
         setState(idSayIt, lautstaerke + ";" + ansagetext);  // hier also ("40;Guten Morgen ...")
      
      /* #######################################################
          Kalenderevent auswerten ----> nur Geburtstage
          sucht im iCal Adapter nach events (heute)
          auf Anfrage von Skorpil im Forum erstellt.
          http://forum.iobroker.de/viewtopic.php?f=21&t=2347&p=20627&sid=524f9dda2f313d3cbb183941df61fc38#p20627
      
          27.02.2016 erstellt von Pix
          02.03.2016 Anpassung und Aufbereitung für Sprachausgabe
          21.07.2016 Umbau auf Müll  Kalender
          ######################################################*/
      
      //Datum als String ermitteln;
      function ermitteleDatum() {
          var d= new Date();
      
          //Tagesdatum ermitteln
              var day = new Array("00","01","02","03","04","05","06","07","06","09","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31");
              var t = day[d.getDate().toString()];
      
          //Monat ermitteln
              var month = new Array("01","02","03","04","05","06","07","08","09","10","11","12");
              var m = month[d.getMonth().toString()];
      
          //Jahr ermitteln
              var j = d.getFullYear().toString();
      
          var datum= t+"."+m+"."+j+" ";
          //log("datum:   " + datum);
          return (datum);
      }
      
      createState('Kalenderereignisse.heute', '', {
          name: 'Events von heute',
          type: 'string'
      });
      
      var idListe =  'Kalenderereignisse.heute';
      
      function pruefeKalender() {
          var inhalt = getState('ical.0.data.table').val;
          var heute = ermitteleDatum();
          try{
              var ereignisse = JSON.stringify(inhalt, null, 2); // Ausgabe als String
      log(ereignisse);
              var ereignisheute = '', // Liste (kommasepariert)
                  ereignisheute_zeilen = ''; // Liste (mit Zeilenumbruch, zB für Anzeige in VIS)
              for(var i = 0; i <inhalt.length; i++)/{/alle/events/durchgehen/if/(/(inhalt[i].date.indexof(heute)/!="-1)" ||/(inhalt[i].date.indexof('heute')/)/strings/datum/oder/relatives/(nicht/nicht)/gefunden/var/ereignis="inhalt[i].event;" komma/im/namen/ersetzen="">0) ? ', ' : '';
                      ereignisheute = ereignisheute + komma + ereignis;
                      ereignisheute = ereignisheute.replace('Geburtstag von ', ''); // "Geburtstag von " löschen
                  } 
              }
              // Aufbereitung für die Ansage (falls vorhanden, wird letztes Komma durch und ersetzt)
              var lastkomma = ereignisheute.lastIndexOf(','); // letztes Komma in der Reihe
              if (lastkomma != -1) {
                 var vorn = ereignisheute.slice(0,lastkomma-1);
                 var hinten = ereignisheute.slice(lastkomma+1, ereignisheute.length);
                 ereignisheute = vorn + ' und' + hinten;
              }
              // Ende Aufbereitung für die Ansage
      
              setState(idListe, ereignisheute);
              log('Geburtstage: ' + ereignisheute);
          } catch (fehler_try) {
              log('Fehler beim Kalenderevent einlesen ' + fehler_try);
          }
      }
      
      // #################################################################
      
      //  neuer Teil für Müllkalender
      
      // #################################################################
      
      createState('Muellereignisse.heute', '', {
          name: 'Müll-Events von heute',
          type: 'string'
      });
      
      var idListe2 = "Muellereignisse.heute";
      
      function pruefeKalender2() {
          var inhalt2 = getState('ical.1.data.table').val;
          var heute2 = ermitteleDatum();
          try{
              var ereignisse2 = JSON.stringify(inhalt2, null, 2); // Ausgabe als String
      log(ereignisse2);
              var ereignisheute2 = '', // Liste (kommasepariert)
                  ereignisheute2_zeilen = ''; // Liste (mit Zeilenumbruch, zB für Anzeige in VIS)
              for(var i = 0; i <inhalt2.length; i++)/{/alle/events/durchgehen/if/(/(inhalt2[i].date.indexof(heute2)/!="-1)" ||/(inhalt2[i].date.indexof('heute')/)/strings/datum/oder/relatives/(nicht/nicht)/gefunden/var/ereignis2="inhalt2[i].event;" komma/im/namen/ersetzen="">0) ? ', ' : '';
                      ereignisheute2 = ereignisheute2 + komma + ereignis2;
                  } 
              }
              // Aufbereitung für die Ansage (falls vorhanden, wird letztes Komma durch und ersetzt)
              var lastkomma = ereignisheute2.lastIndexOf(','); // letztes Komma in der Reihe
              if (lastkomma != -1) {
                 var vorn = ereignisheute2.slice(0,lastkomma-1);
                 var hinten = ereignisheute2.slice(lastkomma+1, ereignisheute2.length);
                 ereignisheute2 = vorn + ' und' + hinten;
              }
              // Ende Aufbereitung für die Ansage
      
              setState(idListe2, ereignisheute2);
              log('Müll: ' + ereignisheute2);
          } catch (fehler_try) {
              log('Fehler beim Müll-Kalenderevent einlesen ' + fehler_try);
          }
      }
      
      // bei Aktualisierung des Kalenders
      on ({id:'ical.0.events.Geburtstag', change: 'any'}, function(data) {
          pruefeKalender();
      });
      on ({id:/\ical.1.events.$/, change: 'any'}, function(data) { // jedes Objekt im ical.1
          pruefeKalender2();
      });
      
      //bei Skriptstart
      pruefeKalender();
      pruefeKalender2();</inhalt2.length;></inhalt.length;>`[/i][/i][/i][/i][/i][/i]
      
      1 Reply Last reply Reply Quote 0
      • Dutchman
        Dutchman Developer Most Active Administrators last edited by

        Hmm das script erstellt dieses Objekt eigentlich ist es denn nicht im Baum vorhanden ?

        Dieser Teil hier führt das aus:

         createState('Muellereignisse.heute', '', {
            name: 'Müll-Events von heute',
            type: 'string'
        });
        

        System Mal neu gestartet?

        Sent from my iPhone using Tapatalk

        1 Reply Last reply Reply Quote 0
        • S
          skorpil last edited by

          Vielen Dank. Nein, noch nicht neu gestartet. Versuche ich gleich noch mal. Merkwürdig ist, dass alle anderen Scripte laufen…

          Ob denn in den Versionen irgendein Befehl geändert wurde, der jetzt nicht mehr funktioniert?

          1 Reply Last reply Reply Quote 0
          • Dutchman
            Dutchman Developer Most Active Administrators last edited by

            @skorpil:

            Ob denn in den Versionen irgendein Befehl geändert wurde, der jetzt nicht mehr funktioniert? `

            Ehm nö, getState und setState waren und sind eigentlich schon immer so.

            Wie gesagt das Script sollte diesen Datenpunkt erstellen und danach ist der Fehler auch Weck

            Sent from my iPhone using Tapatalk

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

              Kommt der Fehler bei Neustart des Skriptes wieder ?

              1 Reply Last reply Reply Quote 0
              • S
                skorpil last edited by

                Paul53, ja, er kommt immer wieder

                Dutchman, er ist aber nicht weg[emoji23]

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

                  Der Datenpunkt "javascript.0.Muellereignisse.heute" ist vorhanden (Reiter "Objekte") und hat einen Wert ?

                  1 Reply Last reply Reply Quote 0
                  • S
                    skorpil last edited by

                    paul53,

                    ich bin ja leider ein Script Laie. Dutchman hat die Frage ja auch gestellt. Siehe oben. Und meinte, das Script hatte den Punkt erstellt.

                    1 Reply Last reply Reply Quote 0
                    • S
                      skorpil last edited by

                      So, Neustart durchgeführt, gleiches Verhalten! Der Datenplunkt „javascript.0.Muellereignisse.heute“ findet sich NICHT bei den Objekten…

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

                        @skorpil:

                        Der Datenplunkt „javascript.0.Muellereignisse.heute“ findet sich NICHT bei den Objekten… `
                        Du verwendest nur die eine Javascript-Instanz 0 und das Skript läuft unter dieser Instanz ?

                        1 Reply Last reply Reply Quote 0
                        • S
                          skorpil last edited by

                          Ja!

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

                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          696
                          Online

                          31.7k
                          Users

                          79.9k
                          Topics

                          1.3m
                          Posts

                          3
                          13
                          530
                          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