Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Skript zur Visualisierung von Sendungen (Parcel-Adapter)

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Skript zur Visualisierung von Sendungen (Parcel-Adapter)

    This topic has been deleted. Only users with topic management privileges can see it.
    • Ro75
      Ro75 @Rene55 last edited by

      @rene55 oh schitt. Ja, ich liefere die heute, im Laufe vom Vormittag nach, bzw. ändere es auf CreateState ab.

      Ro75

      Rene55 1 Reply Last reply Reply Quote 0
      • Rene55
        Rene55 @Ro75 last edited by

        @ro75 Mercy, kein Problem. Hat keine Eile.

        1 Reply Last reply Reply Quote 0
        • sigi234
          sigi234 Forum Testing Most Active @Ro75 last edited by sigi234

          @ro75
          Hinweis:
          Material Design Widgets funktionieren nicht mit VIS2.

          1 Reply Last reply Reply Quote 0
          • Negalein
            Negalein Global Moderator @Ro75 last edited by

            @sigi234 sagte in Skript zur Visualisierung von Sendungen (Parcel-Adapter):

            @ro75
            Hinweis:
            Material Design Widgets funktionieren nicht mit VIS2.

            siehe Hinweis von @Ro75

            @ro75 sagte in Skript zur Visualisierung von Sendungen (Parcel-Adapter):

            Und noch einmal der Hinweis. Ich kann keine VIS-2 Unterstützung geben, mangels Nutzung und Erfahrung.

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

              Änderungen im Post 1. Siehe ganz unten im 1. Post - Nachtrag 1: 10.11.2024

              Ro75.

              1 Reply Last reply Reply Quote 0
              • Nashra
                Nashra Most Active Forum Testing last edited by

                Moin, bekomme beim Aufruf folgende Warnung

                javascript.0	10:31:20.180	info	Start JavaScript script.js.Allerlei.Parcel-Ro75 (Javascript/js)
                javascript.0	10:31:20.192	warn	at ParcelListGenerator (script.js.Allerlei.Parcel-Ro75:127:5)
                javascript.0	10:31:20.192	warn	at script.js.Allerlei.Parcel-Ro75:206:1
                javascript.0	10:31:20.192	warn	at script.js.Allerlei.Parcel-Ro75:211:3
                javascript.0	10:31:20.192	info	script.js.Allerlei.Parcel-Ro75: registered 2 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
                
                Ro75 M 2 Replies Last reply Reply Quote 0
                • Ro75
                  Ro75 @Nashra last edited by

                  @nashra starte das Skript einmal neu. Ich habe aber keine Zeilen 206 oder 211?

                  Ro75.

                  Nashra 1 Reply Last reply Reply Quote 0
                  • Nashra
                    Nashra Most Active Forum Testing @Ro75 last edited by

                    @ro75 sagte in Skript zur Visualisierung von Sendungen (Parcel-Adapter):

                    @nashra starte das Skript einmal neu. Ich habe aber keine Zeilen 206 oder 211?

                    Ro75.

                    Hatte ich schon, aber immer 206 und 211 obwohl nicht vorhanden, seltsam.

                    Ro75 1 Reply Last reply Reply Quote 0
                    • Ro75
                      Ro75 @Nashra last edited by

                      @nashra wurden die Datenpunkte angelegt? Parcel-Adapter funktioniert? Sind alle Voraussetzungen (wie oben genannt) erfüllt?

                      Ro75.

                      Nashra 1 Reply Last reply Reply Quote 0
                      • Nashra
                        Nashra Most Active Forum Testing @Ro75 last edited by Nashra

                        @ro75 sagte in Skript zur Visualisierung von Sendungen (Parcel-Adapter):

                        @nashra wurden die Datenpunkte angelegt? Parcel-Adapter funktioniert? Sind alle Voraussetzungen (wie oben genannt) erfüllt?

                        Ro75.

                        Ja, DP vorhanden, Parcel 0.2.8, MD 0.5.94, NPM-Modul eingetragen, Javascript-Adapter 8.8.3
                        Script gerade nochmal neu angelegt, jetzt meldet er 207 und 212, ist der bekloppt.

                        Nachtrag:
                        Ist mir gerade aufgefallen. Wenn ich die einzelnen Tasten anwähle dann kommt

                        javascript.0	10:49:05.102	warn	at Object.ParcelListGenerator (script.js.Allerlei.Parcel-Ro75:128:5)
                        
                        Ro75 1 Reply Last reply Reply Quote 0
                        • Ro75
                          Ro75 @Nashra last edited by

                          @nashra parcel-adapter eingerichtet und liefert dieser auch Daten?

                          Ro75.

                          Nashra 1 Reply Last reply Reply Quote 0
                          • Nashra
                            Nashra Most Active Forum Testing @Ro75 last edited by

                            @ro75 sagte in Skript zur Visualisierung von Sendungen (Parcel-Adapter):

                            @nashra parcel-adapter eingerichtet und liefert dieser auch Daten?

                            Ro75.

                            Ja, Daten sind vorhanden. Siehe noch Nachtrag letzter Eintrag

                            Ro75 1 Reply Last reply Reply Quote 0
                            • Ro75
                              Ro75 @Nashra last edited by

                              @nashra sagte in Skript zur Visualisierung von Sendungen (Parcel-Adapter):

                              Ja, Daten sind vorhanden. Siehe noch Nachtrag letzter Eintrag

                              ich sehe nichts! Von wann hast du das Skript genommen? Gestern, Nacht oder heute nach 9 Uhr?

                              Ro75.

                              1 Reply Last reply Reply Quote 0
                              • Nashra
                                Nashra Most Active Forum Testing last edited by

                                Screenshot 2024-11-10 105257.png

                                Ro75 1 Reply Last reply Reply Quote 0
                                • Ro75
                                  Ro75 @Nashra last edited by

                                  @nashra das sieht alles gut aus. Damit sollte in der VIS auch alles kommen. Warum du Warnmeldungen bekommst, keine Ahnung.

                                  Ro75.

                                  Nashra 1 Reply Last reply Reply Quote 0
                                  • Nashra
                                    Nashra Most Active Forum Testing @Ro75 last edited by

                                    @ro75 sagte in Skript zur Visualisierung von Sendungen (Parcel-Adapter):

                                    @nashra das sieht alles gut aus. Damit sollte in der VIS auch alles kommen. Warum du Warnmeldungen bekommst, keine Ahnung.

                                    Ro75.

                                    Wirklich seltsam, DP ok und in VIS wird auch alles sauber angezeigt 🤔

                                    Ro75 1 Reply Last reply Reply Quote 0
                                    • Ro75
                                      Ro75 @Nashra last edited by

                                      @nashra zeig mir nochmal dein einkopiertes Skript.

                                      Ro75.

                                      Nashra 1 Reply Last reply Reply Quote 0
                                      • Nashra
                                        Nashra Most Active Forum Testing @Ro75 last edited by

                                        @ro75 sagte in Skript zur Visualisierung von Sendungen (Parcel-Adapter):

                                        @nashra zeig mir nochmal dein einkopiertes Skript.

                                        Ro75.

                                        //Version 1.0.0
                                        //09.11.2024
                                        //Ersteller Ro75.
                                         
                                        //Voraussetzungen (Version 1.0.0 getestet mit)
                                        //NodeJS: 20.x
                                        //Javascript-Adapter: 8.7.6
                                        //Admin-Adapter: 7.0.23
                                        //JS-Controller: 6.0.11
                                         
                                        var pixelWidth = require('string-pixel-width');
                                         
                                        const sMainDataPath         = '0_userdata.0.Parcel.';
                                        const JSONParcelAlt         = sMainDataPath+'Alt';
                                        const JSONParcelDelivery    = sMainDataPath+'Delivery';
                                        const JSONParcelInDelivery  = sMainDataPath+'InDelivery';
                                        const JSONParcelReturn      = sMainDataPath+'Return';
                                        const JSONParcelAktuell     = sMainDataPath+'Aktuell';
                                        const JSONColor             = sMainDataPath+'AktuellColor';
                                         
                                        const Delivery              = sMainDataPath+'Delivery';
                                        const inDelivery            = sMainDataPath+'inDelivery';
                                        const oldDelivery           = sMainDataPath+'oldDelivery';
                                        const ReturnDelivery        = sMainDataPath+'ReturnDelivery';
                                        const sumDelivery           = sMainDataPath+'sumDelivery';
                                        const AllDelivery           = sMainDataPath+'AllDelivery';
                                         
                                        CreateDP(JSONParcelAlt, '', 'JSON');
                                        CreateDP(JSONParcelDelivery, '', 'JSON');
                                        CreateDP(JSONParcelInDelivery, '', 'JSON');
                                        CreateDP(JSONParcelReturn, '', 'JSON');
                                        CreateDP(JSONParcelAktuell, '', 'JSON');
                                        CreateDP(JSONColor, '', 'string');
                                         
                                        CreateDP(Delivery, '', 'number');
                                        CreateDP(inDelivery, '', 'number');
                                        CreateDP(oldDelivery, '', 'number');
                                        CreateDP(ReturnDelivery, '', 'number');
                                        CreateDP(sumDelivery, '', 'number');
                                        CreateDP(AllDelivery, '', 'number');
                                        CreateDP(sMainDataPath+'Switch', '', 'number');
                                         
                                         
                                        function TextNorm(sText, sFonts, vFontSize, bBold, bItalic, vPixel) {
                                            if(vPixel == 0) {
                                                return sText;
                                            } else {
                                                let nText;
                                                for (let i = 0; i < sText.length; i++) {
                                                    nText = sText.slice(0,i+1);
                                                    const width = pixelWidth(nText, { font: sFonts, size: vFontSize, bold: bBold, italic: bItalic });
                                                    if(width >= vPixel) {
                                                        break;
                                                    }
                                                }
                                                return nText;
                                            }
                                        }
                                         
                                        function TextFilter(sText = '') {
                                            return sText.replace(' undefined Stopps','').replace('00:00:00-00:00:00','').replace(' Paket ist in der letzten Lieferstation angekommen','');
                                        }
                                         
                                        function ParcelListGenerator() {
                                            let Liste_Neu       = [];
                                            let Liste_Alt       = [];
                                            let Liste_In        = [];
                                            let Liste_Return    = [];
                                         
                                            var CountDelivery       = 0;
                                            var CountinDelivery     = 0;
                                            var CountoldDelivery    = 0;
                                            var CountReturnDelivery = 0;
                                         
                                            const arr = JSON.parse(getState('parcel.0.allProviderJson').val);
                                            for (let i = 0; i < arr.length; i++) {
                                                let sLogo = '/vis.0/parcel/'+arr[i].source.toLowerCase()+'.svg';
                                                let sText = arr[i].id+'<br>'+TextNorm(arr[i].name, 'Georgia', 12, false, false, 330)+'<br>'+TextNorm(TextFilter(arr[i].status), 'Georgia', 12, false, false, 330);
                                         
                                                if(arr[i].delivery_status == 1) {
                                                    CountoldDelivery++;
                                                    Liste_Alt.push({
                                                        Logo: sLogo,
                                                        Text: sText,
                                                        Info: 'zugestellt'
                                                    })
                                                } else if(arr[i].delivery_status == 5) {
                                                    CountReturnDelivery++;
                                                    Liste_Return.push({
                                                        Logo: sLogo,
                                                        Text: sText,
                                                        Info: 'Rücksendung'
                                                    })
                                                } else if(arr[i].delivery_status == 20) {
                                                    CountDelivery++;
                                                    Liste_Neu.push({
                                                        Logo: sLogo,
                                                        Text: sText,
                                                        Info: 'bestellt'
                                                    })
                                                } else if(arr[i].delivery_status == 30) {
                                                    CountDelivery++;
                                                    Liste_Neu.push({
                                                        Logo: sLogo,
                                                        Text: sText,
                                                        Info: 'versendet'
                                                    })
                                                } else if(arr[i].delivery_status >= 40) {
                                                    CountinDelivery++;
                                                    Liste_In.push({
                                                        Logo: sLogo,
                                                        Text: sText,
                                                        Info: 'in Zustellung'
                                                    })
                                                } else {
                                                    CountDelivery++;
                                                    Liste_Neu.push({
                                                        Logo: sLogo,
                                                        Text: sText,
                                                        Info: 'unbekannt'
                                                    })
                                                }
                                            }
                                            setState(JSONParcelAlt, JSON.stringify(Liste_Alt), true);
                                            setState(JSONParcelReturn, JSON.stringify(Liste_Return), true);
                                            setState(Delivery, CountDelivery, true);
                                            setState(inDelivery, CountinDelivery, true);
                                            setState(oldDelivery, CountoldDelivery, true);
                                            setState(ReturnDelivery, CountReturnDelivery, true);
                                            setState(sumDelivery, CountDelivery+CountinDelivery, true);
                                         
                                            let ListAnzeige = getState(sMainDataPath+'Switch').val; //0 = automatik, ansonsten die gewählte (alles über VIS)
                                            if (ListAnzeige == 0) {
                                                setState(AllDelivery, CountDelivery+CountinDelivery+CountReturnDelivery, true);
                                                if (CountinDelivery >= 1) {
                                                    if(getState(JSONParcelAktuell).val != JSON.stringify(Liste_In)) {
                                                        setState(JSONParcelAktuell, JSON.stringify(Liste_In), true);
                                                        setState(JSONColor, 'rgba(31, 96, 196, 0.2)', true);
                                                    }
                                                } else if (CountDelivery >= 1) {
                                                    if(getState(JSONParcelAktuell).val != JSON.stringify(Liste_Neu)) {
                                                        setState(JSONParcelAktuell, JSON.stringify(Liste_Neu), true);
                                                        setState(JSONColor, 'rgba(117, 117, 117, 0.2)', true);
                                                    }
                                                } else if (CountDelivery+CountinDelivery == 0 && CountReturnDelivery >= 1) {
                                                    if(getState(JSONParcelAktuell).val != JSON.stringify(Liste_Return)) {
                                                        setState(JSONParcelAktuell, JSON.stringify(Liste_Return), true);
                                                        setState(JSONColor, 'rgba(55, 135, 45, 0.2)', true);
                                                    }
                                                } else {
                                                    if(getState(JSONParcelAktuell).val != JSON.stringify(Liste_Alt)) {
                                                        setState(JSONParcelAktuell, JSON.stringify(Liste_Alt), true);
                                                        setState(JSONColor, 'rgba(96, 22, 42, 0.2)', true);
                                                    }
                                                }
                                            } else if (ListAnzeige == 1) {
                                                setState(AllDelivery, CountDelivery, true);
                                                if(getState(JSONParcelAktuell).val != JSON.stringify(Liste_Neu)) {
                                                    setState(JSONParcelAktuell, JSON.stringify(Liste_Neu), true);
                                                    setState(JSONColor, 'rgba(117, 117, 117, 0.2)', true);
                                                }
                                            } else if (ListAnzeige == 2) {
                                                setState(AllDelivery, CountinDelivery, true);
                                                if(getState(JSONParcelAktuell).val != JSON.stringify(Liste_In)) {
                                                    setState(JSONParcelAktuell, JSON.stringify(Liste_In), true);
                                                    setState(JSONColor, 'rgba(31, 96, 196, 0.2)', true);
                                                }
                                            } else if (ListAnzeige == 3) {
                                                setState(AllDelivery, CountoldDelivery, true);
                                                if(getState(JSONParcelAktuell).val != JSON.stringify(Liste_Alt)) {
                                                    setState(JSONParcelAktuell, JSON.stringify(Liste_Alt), true);
                                                    setState(JSONColor, 'rgba(96, 22, 42, 0.2)', true);
                                                }
                                            } else if (ListAnzeige == 4) {
                                                setState(AllDelivery, CountReturnDelivery, true);
                                                if(getState(JSONParcelAktuell).val != JSON.stringify(Liste_Return)) {
                                                    setState(JSONParcelAktuell, JSON.stringify(Liste_Return), true);
                                                    setState(JSONColor, 'rgba(55, 135, 45, 0.2)', true);
                                                }
                                            }
                                         
                                            Liste_Neu       = [];
                                            Liste_Alt       = [];
                                            Liste_In        = [];
                                            Liste_Return    = [];
                                        }
                                         
                                        function CreateDP(sDP='',sDPName='', sType='', sUnit='') {
                                            if (!existsState(sDP)) {
                                                if(sType == 'number') {
                                                    createState(sDP, 0, {name: sDPName, type: 'number', unit: sUnit, read: true, write: true});
                                                } else if (sType == 'string') {
                                                    createState(sDP, '', {name: sDPName, type: 'string', unit: sUnit, read: true, write: true});
                                                } else if (sType == 'boolean') {
                                                    createState(sDP, false, {name: sDPName, type: 'boolean', read: true, write: true});
                                                } else if (sType == 'JSON') {
                                                    createState(sDP, '[]', {read: true, write: true, desc: 'JSON String for Widget', type: 'string', def: '[]'});
                                                }
                                            }
                                        }
                                         
                                        on({id: 'parcel.0.allProviderJson', change: 'ne'}, ParcelListGenerator);
                                        on({id: sMainDataPath+'Switch', change: 'ne'}, ParcelListGenerator);
                                         
                                        ParcelListGenerator();
                                        
                                        Ro75 1 Reply Last reply Reply Quote 0
                                        • Ro75
                                          Ro75 @Nashra last edited by

                                          @nashra alles OK. Ich kann jetzt zu den Warnungen nichts finden. Welche Logstufe hat der JS-Adapter? Ggfs. mal auf Info und dann schauen was kommt.

                                          Ro75.

                                          Nashra 1 Reply Last reply Reply Quote 0
                                          • Nashra
                                            Nashra Most Active Forum Testing @Ro75 last edited by

                                            @ro75 sagte in Skript zur Visualisierung von Sendungen (Parcel-Adapter):

                                            @nashra alles OK. Ich kann jetzt zu den Warnungen nichts finden. Welche Logstufe hat der JS-Adapter? Ggfs. mal auf Info und dann schauen was kommt.

                                            Ro75.

                                            Der JS steht auf Info, ich stell mal auf Debug und schau ws da kommt

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            937
                                            Online

                                            31.6k
                                            Users

                                            79.6k
                                            Topics

                                            1.3m
                                            Posts

                                            6
                                            51
                                            2258
                                            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