Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. DWD EXP

    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

    DWD EXP

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

      Mahlzeit,

      ich habe mir leider aus meine Datenbank das Falsche Script gelöscht und jetzt finde ich es nicht mehr im Netz.

      Es ist ein JavaScript für den DWD Adapter, der die Warnungen besser angezeigt hat, wie ich finde.
      Wenn mich nicht alles täuscht, war es diese Script, nur leider bekomme ich wenn ich es einfüge und Starte immer eine Fehlermeldung in Zeile 2.

      Vielleicht kann mir jemand weiter helfen.

      Homoran 1 Reply Last reply Reply Quote 0
      • Homoran
        Homoran Global Moderator Administrators @JavaMafia last edited by

        @JavaMafia sagte in DWD EXP:

        war es diese Script, nur leider

        Da war einiges durch die Konvertierung an das neue Forum verzogen.

        Ich habe gerade es versucht zu regenerieren.

        Wenn es jetzt noch immer nicht klappt muss da der Ersteller noch mal ran

        1 Reply Last reply Reply Quote 0
        • J
          JavaMafia last edited by

          Das war das Script. Es gibt aber noch Fehler in Zeile 128, diese habe ich auch behoben.

          const util = require('util');
          // verschiedene Vorgaben
          var arrType = new Array("gewitter_","wind_","regen_","schnee_","nebel_","frost_","eis_","tau_","hitze","uv");
          var arrFarben = new Array("#C5E566","#FFFF00","#FA9600","#E53935","#AF0064","#FE68FE");
          var stationAltitude = 103;
          // States anlegen
          createState("DwdExp", "", {
              type: "channel",
              desc: "DWD Expand Message 1 - 10",
              role: "info" 
          });
          for (var State = 1; State < 11; State++) {   
              createState("DwdExp.Message" + State, "", {
                  type: "channel",
                  desc: "Daten Meldung Nr. " + State,
                  role: "info"
              });
           
              createState("DwdExp.Message" + State + ".start", null, {
                  read: true,
                  write: false,
                  desc: "Warnzeitraum Beginn",
                  type: "datetime",
                  def: null
              });
           
              createState("DwdExp.Message" + State + ".end", null, {
                  read: true,
                  write: false,
                  desc: "Warnzeitraum Ende",
                  type: "datetime",
                  def: null
              });
           
              createState("DwdExp.Message" + State + ".type", null, {
                  read: true,
                  write: false,
                  desc: "Art der Warnung",
                  type: "number",
                  min: 0,
                  max: 9,
                  def: null,
                  states: "0:Gewitter; 1:Wind/Sturm; 2:Regen; 3:Schnee; 4:Nebel; 5:Frost; 6:Eis; 7:Tauwetter; 8:Hitzebelastung; 9:UV-Belastung"
              });
           
              createState("DwdExp.Message" + State + ".level", null, {
                  read: true,
                  write: false,
                  desc: "Warnstufe",
                  type: "number",
                  def: null,
                  states: "1:Vorabinformation Unwetter; 2:Amtliche Wetterwarnung; 3:Amtliche Warnung vor markantem Wetter; 4:Amtliche Unwetterwarnung; 5:Amtliche Warnung vor extremem Unwetter"
              });
           
              createState("DwdExp.Message" + State + ".severity", null, {
                  read: true,
                  write: false,
                  desc: "Schwere der Warnstufe",
                  type: "number",
                  def: null,
                  states: "0:None; 1:Minor; 2:Moderate; 3:Severe; 4:Extreme"
              });
           
              createState("DwdExp.Message" + State + ".headline", false, {
                  read: true,
                  write: false,
                  desc: "Warntyp Überschrift" + State,
                  type: "string",
                  def: ""
              });
           
              createState("DwdExp.Message" + State + ".description", false, {
                  read: true,
                  write: false,
                  desc: "Warntyp Beschreibung" + State,
                  type: "string",
                  def: ""
              });
           
              createState("DwdExp.Message" + State + ".event", false, {
                  read: true,
                  write: false,
                  desc: "Warntyp Stichwaort" + State,
                  type: "string",
                  def: ""
              });
           
              createState("DwdExp.Message" + State + ".instruction", false, {
                  read: true,
                  write: false,
                  desc: "Warntyp Handlungsratschläge" + State,
                  type: "string",
                  def: ""
              });
           
              createState("DwdExp.Message" + State + ".period", "", {
                  read: true,
                  write: false,
                  desc: "Warnzeitraum " + State,
                  type: "string",
                  def: ""
              });
           
              createState("DwdExp.Message" + State + ".colour", "", {
                  read: true,
                  write: false,
                  desc: "Level Farbe " + State,
                  type: "string",
                  def: ""
              });
           
              createState("DwdExp.Message" + State + ".icon", "", {
                  read: true,
                  write: false,
                  desc: "Level Icon " + State,
                  type: "string",
                  def: ""
              });
           
              createState("DwdExp.Message" + State + ".visible", false, {
                  read: true,
                  write: false,
                  desc: "Sichtbarkeit des Icon Nr. " + State,
                  type: "boolean",
                  def: false
              });
          }
          // Prüfen ob ein JSON-Objekt gültig ist.
          function isValidObject(obj) {
              var retVal = false;
              var count = Object.keys(obj).length;
              if (count > 2) { retVal = true; }
           
              log("isValidObj = " + retVal);
              return retVal;
          }
          function isValidAltitude(obj) {
              var retVal = false;
           
              if ((obj.altitudeStart === null) || ((stationAltitude > obj.altitudeStart) && ((stationAltitude < obj.altitudeEnd) || (obj.altitudeEnd === null)))) { retVal = true; }
           
              log("isValidAltitude = " + retVal + ", Höhen => Station " + stationAltitude + " Start " + obj.altitudeStart + " Ende " + obj.altitudeEnd);
              return retVal;
          }
          // Prüfen wieviel Meldungen aktiv sind
          function getActiveMessageCount() {
              var activeCount = 0;
           
              for (var a = 0; a < 10; a++){
                  if (a === 0) {
                      getState("dwd.0.warning.severity").val > 0 ? activeCount++ : null;
                  } else {
                      getState("dwd.0.warning" + a + ".severity").val > 0 ? activeCount++ : null;
                  }
              }
           
              log("getActiveMessageCount = " + activeCount);
              return activeCount;
          }
          function getSeverity(lev) {
              if (lev === 0) {
                  return 0;
              } else if (lev === 1) {
                  return 1;
              } else {
                  return lev - 1;
              }
          }
          // aktuelle Zeit liegt zwischen der Anfangs- und Endzeit der Warnung. Das Ereignis ist eingetreten.
          function isActive(start, end) {
              var retVal = compareTime(start, end, "between");
              log("isActive = " + retVal + " input Start: " + start + " End: " + end);    
              return retVal;
          }
          // Aus einer Zeit einen formatierten String mit heute, morgen, übermorgen oder einem Datum mit Uhrzeit zurückgeben
          function getTimeString(toConvert) {
              var retVal = "";
              // Heute
              var Tag0 = new Date();
                  Tag0.setHours(23, 59, 59);
              // Morgen
              var Tag1 = new Date(Tag0);
                  Tag1.setDate(Tag1.getDate() + 1);
              // Übermorgen
              var Tag2 = new Date(Tag0);
                  Tag2.setDate(Tag2.getDate()+2);
           
              if (toConvert < Tag0) {
                  retVal = "heute " + formatDate(toConvert, "hh:mm") + " Uhr";
              } else if ((toConvert > Tag0) && (toConvert < Tag1)) {
                  retVal = "morgen " + formatDate(toConvert, "hh:mm") + " Uhr";
              } else if ((toConvert > Tag1) && (toConvert < Tag2)) {
                  retVal = "übermorgen " + formatDate(toConvert, "hh:mm") + " Uhr";
              } else {
                  retVal = formatDate(toConvert, "DD.MM.YYYY, hh:mm");
              }
           
              log("getTimeString = " + retVal + " input = " + toConvert);
              return retVal;
          }
          // String zur Beschreibung des Warnzeitraumes erstellt: z. B. AKTIV bis heute 18:30 Uhr oder heute 23:00 bis morgen 09:00 Uhr 
          function createTimeString(start, end) {
              var retVal = "";
           
              if (isActive(start, end)) {
                  retVal = "AKTIV bis " + getTimeString(end);
              } else {
                  retVal = getTimeString(start) + " bis " + getTimeString(end);
              }
           
              log("createTimeString = " + retVal + " input = Start: " + start + " End: " + end);
              return retVal;
          }
          // entsprechenden String mit dem Pfad zum Icon und der entsprechenden Bezeichnung des Bildes erstellen
          function createIconString(type, level) {
              var retVal = "";
              if (level === 1) {
                  retVal ="/vis.0/main/img/dwd/vorab.png";
              } else {
                  retVal = "/vis.0/main/img/dwd/warn_icons_" + arrType[type];
           
                  if ((type >= 0) && (type <= 7)) { retVal += level - 1; }
           
                  retVal += ".png";
              }
              log("createIconString = " + retVal + " input = Type: " + type + " Level: " + level);
              return retVal;
          }
          function sortMessageArr(objA, objB) {
              var retVal;
              if (objA.start < objB.start) {
                  log("Objekt A Start => " + objA.start + " ist kleiner als B Start => " + objB.start + " = A vor B");
                  retVal = -1;
              } else if (objA.Start > objB.start) {
                  log("Objekt A Start => " + objA.start + " ist größer als B Start => " + objB.start + " = B vor A");
                  retVal = 1;
              } else {
                  if (objA.level < objB.level) {
                      log("Objekt A Level => " + objA.level + " ist kleiner als B Level => " + objB.level + " = B vor A");
                      retVal = 1;
                  } else if (objA.level > objB.level) {
                      log("Objekt A Level => " + objA.level + " ist größer als B Level => " + objB.level + " = A vor B");
                      retVal = -1;
                  } else {
                      if (objA.end < objB.end) {
                          log("Objekt A Ende => " + objA.end + " ist kleiner als B Ende => " + objB.end + " = A vor B");
                          retVal = -1;
                      } else if (objA.end > objB.end) {
                          log("Objekt A Ende => " + objA.end + " ist größer als B Ende => " + objB.end + " = B vor A");
                          retVal = 1;
                      } else {
                          if (objA.type < objB.type) {
                              log("Objekt A Typ => " + objA.type + " ist kleiner als B Typ => " + objB.typ + " = A vor B");
                              retVal = -1;
                          } else if (objA.type > objB.type) {
                              log("Objekt A Typ => " + objA.type + " ist größer als B Typ => " + objB.typ + " = B vor a");
                              retVal = 1;
                          } else {
                              log("Es gibt keinen Unterschied daher Sortierung egal.");
                              retVal = 0;
                          }
                      }
                  }
              }
              return retVal;
          }
          function getColour(lev, typ) {
              var retVal;
           
              if ((typ >= 8)) {
                  retVal = arrFarben[5];
              } else {
                  retVal = arrFarben[lev - 1];
              }
           
              log("getColour => " + retVal);
              return retVal;
          }
          function getMessages() {
              var count = getActiveMessageCount();
              var validCount = 0;
              var object = null;
              var objDwd = [];
           
              for (var b = 0; b < count; b++) {
                  if (b === 0) {
                      object = JSON.parse(getState("dwd.0.warning.object").val);
                  } else {
                      object = JSON.parse(getState("dwd.0.warning" + b + ".object").val);
                  }
                  if (isValidObject(object) && isValidAltitude(object)) {
                      objDwd[validCount] = new Object({
                          start: formatDate(object.start, "DD.MM.YYYY, hh:mm"),
                          end: formatDate(object.end, "DD.MM.YYYY, hh:mm"),
                          type: object.type,
                          level: object.level,
                          severity: getSeverity(object.level),
                          headline: object.headline,
                          description: object.description,
                          event: object.event,
                          instruction: object.instruction,
                          period: createTimeString(object.start, object.end),
                          icon: createIconString(object.type, object.level),
                          colour: getColour(object.level, object.type),
                          visible: true,
                      });
                      validCount++;
                  }
              }
           
              log("getMessage => Valid Counts: " + validCount);
              objDwd.sort(sortMessageArr);
           
              for (var c = 0; c < 10; c++) {
                  log("Counter c = " + c + " validCount = " + validCount);
                  var d = c + 1;
                  if (c < validCount) {
                      log("ObjectIsValid");
                      setState("DwdExp.Message" + d + ".start", objDwd[c].start);
                      setState("DwdExp.Message" + d + ".end", objDwd[c].end);
                      setState("DwdExp.Message" + d + ".type", objDwd[c].type);
                      setState("DwdExp.Message" + d + ".level", objDwd[c].level);
                      setState("DwdExp.Message" + d + ".severity", objDwd[c].severity);
                      setState("DwdExp.Message" + d + ".headline", objDwd[c].headline);
                      setState("DwdExp.Message" + d + ".description", objDwd[c].description);
                      setState("DwdExp.Message" + d + ".event", objDwd[c].event);
                      setState("DwdExp.Message" + d + ".instruction", objDwd[c].instruction);
                      setState("DwdExp.Message" + d + ".period", objDwd[c].period);
                      setState("DwdExp.Message" + d + ".icon", objDwd[c].icon);
                      setState("DwdExp.Message" + d + ".colour", objDwd[c].colour);
                      setState("DwdExp.Message" + d + ".visible", objDwd[c].visible);
                  } else {
                      setState("DwdExp.Message" + d + ".start", null);
                      setState("DwdExp.Message" + d + ".end", null);
                      setState("DwdExp.Message" + d + ".type", null);
                      setState("DwdExp.Message" + d + ".level", null);
                      setState("DwdExp.Message" + d + ".severity", 0);
                      setState("DwdExp.Message" + d + ".headline", "");
                      setState("DwdExp.Message" + d + ".description", "");
                      setState("DwdExp.Message" + d + ".event", "");
                      setState("DwdExp.Message" + d + ".instruction", "");
                      setState("DwdExp.Message" + d + ".period", "");
                      setState("DwdExp.Message" + d + ".icon", "");
                      setState("DwdExp.Message" + d + ".colour", arrFarben[0]);
                      setState("DwdExp.Message" + d + ".visible", false);
                  }
              }
          }
          getMessages();
          on("dwd.0.warning.object",function() {getMessages()}, "ne");
          on("dwd.0.warning1.object",function() {getMessages()}, "ne");
          on("dwd.0.warning2.object",function() {getMessages()}, "ne");
          on("dwd.0.warning3.object",function() {getMessages()}, "ne");
          on("dwd.0.warning4.object",function() {getMessages()}, "ne");
          on("dwd.0.warning5.object",function() {getMessages()}, "ne");
          on("dwd.0.warning6.object",function() {getMessages()}, "ne");
          on("dwd.0.warning7.object",function() {getMessages()}, "ne");
          on("dwd.0.warning8.object",function() {getMessages()}, "ne");
          on("dwd.0.warning9.object",function() {getMessages()}, "ne");
          

          Ich bekomme aber immer noch Fehlermeldungen im LOG

          • 19:15:33.425 error javascript.0 script.js.common.DWD: Wrong type of DwdExp.Message1.type.common.def
          • 19:15:33.425 error javascript.0 script.js.common.DWD: Wrong type of DwdExp.Message1.level.common.def
          • 19:15:33.426 error javascript.0 script.js.common.DWD: Wrong type of DwdExp.Message1.severity.common.def
          • 19:15:33.426 error javascript.0 script.js.common.DWD: Wrong type of DwdExp.Message2.type.common.def
          • 19:15:33.426 error javascript.0 script.js.common.DWD: Wrong type of DwdExp.Message2.level.common.def
          • 19:15:33.426 error javascript.0 script.js.common.DWD: Wrong type of DwdExp.Message2.severity.common.def
          • 19:15:33.426 error javascript.0 script.js.common.DWD: Wrong type of DwdExp.Message3.type.common.def
          • 19:15:33.426 error javascript.0 script.js.common.DWD: Wrong type of DwdExp.Message3.level.common.def
          • 19:15:33.426 error javascript.0 script.js.common.DWD: Wrong type of DwdExp.Message3.severity.common.def
          • 19:15:33.427 error javascript.0 script.js.common.DWD: Wrong type of DwdExp.Message4.type.common.def
          • 19:15:33.427 error javascript.0 script.js.common.DWD: Wrong type of DwdExp.Message4.level.common.def
          • 19:15:33.427 error javascript.0 script.js.common.DWD: Wrong type of DwdExp.Message4.severity.common.def
          • 19:15:33.427 error javascript.0 script.js.common.DWD: Wrong type of DwdExp.Message5.type.common.def
          • 19:15:33.427 error javascript.0 script.js.common.DWD: Wrong type of DwdExp.Message5.level.common.def
          • 19:15:33.427 error javascript.0 script.js.common.DWD: Wrong type of DwdExp.Message5.severity.common.def
          • 19:15:33.427 error javascript.0 script.js.common.DWD: Wrong type of DwdExp.Message6.type.common.def
          • 19:15:33.428 error javascript.0 script.js.common.DWD: Wrong type of DwdExp.Message6.level.common.def
          • 19:15:33.428 error javascript.0 script.js.common.DWD: Wrong type of DwdExp.Message6.severity.common.def
          • 19:15:33.428 error javascript.0 script.js.common.DWD: Wrong type of DwdExp.Message7.type.common.def
          • 19:15:33.428 error javascript.0 script.js.common.DWD: Wrong type of DwdExp.Message7.level.common.def
          • 19:15:33.428 error javascript.0 script.js.common.DWD: Wrong type of DwdExp.Message7.severity.common.def
          • 19:15:33.428 error javascript.0 script.js.common.DWD: Wrong type of DwdExp.Message8.type.common.def
          • 19:15:33.429 error javascript.0 script.js.common.DWD: Wrong type of DwdExp.Message8.level.common.def
          • 19:15:33.429 error javascript.0 script.js.common.DWD: Wrong type of DwdExp.Message8.severity.common.def
          • 19:15:33.429 error javascript.0 script.js.common.DWD: Wrong type of DwdExp.Message9.type.common.def
          • 19:15:33.429 error javascript.0 script.js.common.DWD: Wrong type of DwdExp.Message9.level.common.def
          • 19:15:33.429 error javascript.0 script.js.common.DWD: Wrong type of DwdExp.Message9.severity.common.def
          • 19:15:33.429 error javascript.0 script.js.common.DWD: Wrong type of DwdExp.Message10.type.common.def
          • 19:15:33.429 error javascript.0 script.js.common.DWD: Wrong type of DwdExp.Message10.level.common.def
          • 19:15:33.430 error javascript.0 script.js.common.DWD: Wrong type of DwdExp.Message10.severity.common.def
          Homoran 1 Reply Last reply Reply Quote 0
          • Homoran
            Homoran Global Moderator Administrators @JavaMafia last edited by

            @JavaMafia sagte in DWD EXP:

            Es gibt aber noch Fehler in Zeile 128

            Jetzt nicht mehr 😉

            Danke!
            der war mir durch die Lappen gegangen

            J 1 Reply Last reply Reply Quote 0
            • J
              JavaMafia @Homoran last edited by

              @Homoran
              kannst du was mit der LOG Tabelle was anfangen?

              paul53 Homoran 2 Replies Last reply Reply Quote 0
              • paul53
                paul53 @JavaMafia last edited by paul53

                @JavaMafia
                In createState() wird für Zahlen def: null verwendet. Richtig wäre: def: 0, denn null ist ein Objekt.

                Außerdem: Den Typ "datetime" gibt es nicht, es muss "string" lauten und mit def: "" (Leerstring) initialisiert werden.

                1 Reply Last reply Reply Quote 0
                • Homoran
                  Homoran Global Moderator Administrators @JavaMafia last edited by

                  @JavaMafia
                  Legt das Skript Staes unter Objects an?

                  Dann sind dort die Typen für die States falsch.

                  1 Reply Last reply Reply Quote 0
                  • J
                    JavaMafia last edited by

                    danke jetzt klappt alles wieder bei mir.

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

                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    563
                    Online

                    31.8k
                    Users

                    80.0k
                    Topics

                    1.3m
                    Posts

                    3
                    8
                    303
                    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