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. JavaScript
  5. DWD EXP

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.1k

DWD EXP

Geplant Angeheftet Gesperrt Verschoben JavaScript
8 Beiträge 3 Kommentatoren 466 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.
  • J Offline
    J Offline
    JavaMafia
    schrieb am zuletzt editiert von
    #1

    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.

    HomoranH 1 Antwort Letzte Antwort
    0
    • J JavaMafia

      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.

      HomoranH Nicht stören
      HomoranH Nicht stören
      Homoran
      Global Moderator Administrators
      schrieb am zuletzt editiert von
      #2

      @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

      kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

      Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

      der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

      1 Antwort Letzte Antwort
      0
      • J Offline
        J Offline
        JavaMafia
        schrieb am zuletzt editiert von
        #3

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

          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
          HomoranH Nicht stören
          HomoranH Nicht stören
          Homoran
          Global Moderator Administrators
          schrieb am zuletzt editiert von
          #4

          @JavaMafia sagte in DWD EXP:

          Es gibt aber noch Fehler in Zeile 128

          Jetzt nicht mehr ;-)

          Danke!
          der war mir durch die Lappen gegangen

          kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

          Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

          der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

          J 1 Antwort Letzte Antwort
          0
          • HomoranH Homoran

            @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 Offline
            J Offline
            JavaMafia
            schrieb am zuletzt editiert von
            #5

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

            paul53P HomoranH 2 Antworten Letzte Antwort
            0
            • J JavaMafia

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

              paul53P Offline
              paul53P Offline
              paul53
              schrieb am zuletzt editiert von paul53
              #6

              @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.

              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
              • J JavaMafia

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

                HomoranH Nicht stören
                HomoranH Nicht stören
                Homoran
                Global Moderator Administrators
                schrieb am zuletzt editiert von
                #7

                @JavaMafia
                Legt das Skript Staes unter Objects an?

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

                kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                1 Antwort Letzte Antwort
                0
                • J Offline
                  J Offline
                  JavaMafia
                  schrieb am zuletzt editiert von
                  #8

                  danke jetzt klappt alles wieder bei mir.

                  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

                  973

                  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