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. Hardware
  4. SONOFF NSPanel mit Lovelace UI

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

SONOFF NSPanel mit Lovelace UI

Geplant Angeheftet Gesperrt Verschoben Hardware
lovelace uinspanelsonoff
7.8k Beiträge 273 Kommentatoren 6.8m Aufrufe 256 Watching
  • Ä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.
  • ArmilarA Armilar

    @rene55

    Jo, warum 3 unterschiedliche Scripte?

    Macht die Sache nicht so wissenschaftlich und setzt alle Sensoren in ein Script:

    Beispiel (läuft bei mir genau so und nicht anders - und das seit Monaten):

    const Debug = false;
    
    const NSPanel_Path = '0_userdata.0.NSPanel.';
    const Path = NSPanel_Path + 'Influx2NSPanel.cardLChart.';
    let   PathSensor = '';
    
    let SensorName = ['EG.Buero.Temperatur',
                      'EG.Gaeste_WC.Temperatur',
                      'EG.Wohnzimmer.Temperatur',
                      'EG.Hauswirtschaftsraum.Temperatur',
                      'EG.Flur_vorne.Temperatur',
                      'EG.Flur_hinten.Temperatur',
                      'EG.Esszimmer.Temperatur',
                      'EG.Kaminzimmer.Temperatur',
                      'EG.Badezimmer.Temperatur',
                      'EG.Kueche.Temperatur',
                      'OG.Schlafzimmer_1.Temperatur',
                      'OG.Gaestezimmer.Temperatur',
                      'OG.Hobbyraum.Temperatur',
                      'Gartenhaus.Temperatur'];
    
    const Sensor = [].concat('deconz.0.Sensors.5.temperature')  // EG.Buero.Temperatur
                     .concat('deconz.0.Sensors.12.temperature')  // EG.Gaeste_WC.Temperatur
                     .concat('deconz.0.Sensors.53.temperature')  // EG.Wohnzimmer.Temperatur
                     .concat('deconz.0.Sensors.19.temperature')  // EG.Hauswirtschaftsraum.Temperatur
                     .concat('deconz.0.Sensors.9.temperature')   // EG.Flur_vorne.Temperatur
                     .concat('deconz.0.Sensors.27.temperature')  // EG.Flur_hinten.Temperatur
                     .concat('deconz.0.Sensors.40.temperature')  // EG.Esszimmer.Temperatur
                     .concat('deconz.0.Sensors.37.temperature')  // EG.Kaminzimmer.Temperatur
                     .concat('deconz.0.Sensors.45.temperature')  // EG.Badezimmer.Temperatur
                     .concat('deconz.0.Sensors.25.temperature')  // EG.Kueche.Temperature
                     .concat('deconz.0.Sensors.57.temperature')  // OG.Schlafzimmer_1.Temperatur
                     .concat('deconz.0.Sensors.60.temperature')  // OG.Gaestezimmer.Temperatur
                     .concat('deconz.0.Sensors.63.temperature')  // OG.Hobbyraum.Temperatur
                     .concat('deconz.0.Sensors.30.temperature'); // Gartenhaus.Temperatur
                     
    let   triggeredSensor = 0;
    
    const numberOfHoursAgo = 24;
    const xAxisTicksEveryM = 60;
    const xAxisLabelEveryM = 240;
    
    const InfluxInstance = 'influxdb.1';
    
    // Ab hier keine Ändeungen
    
    let coordinates = ''; 
    
    on({ id: Sensor, change: 'any' }, async function (obj) {
        
        if (Debug) log(obj.id, 'info');
        if (Debug) log(SensorName[Sensor.indexOf(obj.id)], 'info')
    
        PathSensor = Path + SensorName[Sensor.indexOf(obj.id)]
    
        if (existsObject(PathSensor) == false) {
            createState(PathSensor, 0, {
                name: 'SensorGrid',
                desc: 'Sensor Values [~<time>:<value>]*',
                type: 'string',
                role: 'value',
            });
        }
    
        let query =[
            'from(bucket: "iobroker")',
            '|> range(start: -' + numberOfHoursAgo + 'h)',
            '|> filter(fn: (r) => r["_measurement"] == "' + obj.id + '")',
            '|> filter(fn: (r) => r["_field"] == "value")',
            '|> drop(columns: ["from", "ack", "q"])',
            '|> aggregateWindow(every: 1h, fn: last, createEmpty: false)',
            '|> map(fn: (r) => ({ r with _rtime: int(v: r._time) - int(v: r._start)}))',
            '|> yield(name: "_result")'].join('');
    
        if (Debug) log('Query: ' + query, 'info');
    
        sendTo(InfluxInstance, 'query', query, function (result) {
            if (result.error) {
                console.error(result.error);
            } else {
                // show result
                if (Debug) log(result, 'info');
                let numResults = result.result.length;
                for (let r = 0; r < numResults; r++) 
                {
                    let list = []
                    let numValues = result.result[r].length;
    
                    for (let i = 0; i < numValues; i++) 
                    {
                        let time = Math.round(result.result[r][i]._rtime/1000/1000/1000/60);
                        let value = Math.round(result.result[r][i]._value * 10);
                        list.push(time + ":" + value);
                    }
    
                    coordinates = list.join("~");
    
                    if (Debug) log(coordinates, 'info');
                }
            }
        });
    
        let timeOut = setTimeout (
            function () {
                let ticksAndLabelsList = []
                let date = new Date();
                date.setMinutes(0, 0, 0);
                let ts = Math.round(date.getTime() / 1000);
                let tsYesterday = ts - (numberOfHoursAgo * 3600);
                if (Debug) log('Iterate from ' + tsYesterday + ' to ' + ts + ' stepsize=' + (xAxisTicksEveryM * 60), 'info');
                for (let x = tsYesterday, i = 0; x < ts; x += (xAxisTicksEveryM * 60), i += xAxisTicksEveryM)
                {
                    if ((i % xAxisLabelEveryM))
                        ticksAndLabelsList.push(i);
                    else
                    {
                        let currentDate = new Date(x * 1000);
                        // Hours part from the timestamp
                        let hours = '0' + String(currentDate.getHours());
                        // Minutes part from the timestamp
                        let minutes = '0' + String(currentDate.getMinutes());
                        let formattedTime = hours.slice(-2) + ':' + minutes.slice(-2);
    
                        ticksAndLabelsList.push(String(i) + '^' + formattedTime);
                    }
                }
                if (Debug) log('Ticks & Label: ' + ticksAndLabelsList, 'info');
                if (Debug) log('Coordinates: ' + coordinates, 'info');
                setState(PathSensor, ticksAndLabelsList.join('+') + '~' + coordinates, true);
            }, 
        1500
        ) ;
    });
    

    Und wie immer sind eurer Phantasie keine Grenzen gesetzt, daraus ein Flugzeug zu bauen...

    Rene55R Offline
    Rene55R Offline
    Rene55
    schrieb am zuletzt editiert von
    #5239

    @armilar Naja, fliegen wollte ich nicht. Ich suche eigentlich nur nach einer einfachen, benutzerfreundlichen Lösung. Aber wir kommen der Sache näher.

    Was macht eigentlich triggeredSensor ?

    Host: Fujitsu Intel(R) Pentium(R) CPU G4560T, 32 GB RAM, Proxmox 8.x + lxc Ubuntu 22.04
    ioBroker (8 GB RAM) Node.js: 20.19.1, NPM: 10.8.2, js-Controller: 7.0.6, Admin: 7.6.3
    Wetterstation: Froggit WH3000SE V1.6.6

    ArmilarA 1 Antwort Letzte Antwort
    0
    • Rene55R Rene55

      @armilar Naja, fliegen wollte ich nicht. Ich suche eigentlich nur nach einer einfachen, benutzerfreundlichen Lösung. Aber wir kommen der Sache näher.

      Was macht eigentlich triggeredSensor ?

      ArmilarA Offline
      ArmilarA Offline
      Armilar
      Most Active Forum Testing
      schrieb am zuletzt editiert von Armilar
      #5240

      @rene55 sagte in SONOFF NSPanel mit Lovelace UI:

      Was macht eigentlich triggeredSensor ?

      Speicher verbrauchen, da ungenutzt... ;-)

      obj.id hat ja die Infos

      Mache mir bei den funktionalen Scripten nicht immer die Arbeit alles überflüssige zu entfernen... Ist ja nur ein Beispiel - nicht das Bestreben damit einen Preis zu gewinnen :blush:

      Installationsanleitung, Tipps, Alias-Definitionen, FAQ für das Sonoff NSPanel mit lovelace UI unter ioBroker
      https://github.com/joBr99/nspanel-lovelace-ui/wiki

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

      Rene55R 3 Antworten Letzte Antwort
      0
      • ArmilarA Armilar

        @rene55 sagte in SONOFF NSPanel mit Lovelace UI:

        Was macht eigentlich triggeredSensor ?

        Speicher verbrauchen, da ungenutzt... ;-)

        obj.id hat ja die Infos

        Mache mir bei den funktionalen Scripten nicht immer die Arbeit alles überflüssige zu entfernen... Ist ja nur ein Beispiel - nicht das Bestreben damit einen Preis zu gewinnen :blush:

        Rene55R Offline
        Rene55R Offline
        Rene55
        schrieb am zuletzt editiert von
        #5241

        @armilar Mercy, ich versuche nur, alles zu verstehen :flushed:

        Host: Fujitsu Intel(R) Pentium(R) CPU G4560T, 32 GB RAM, Proxmox 8.x + lxc Ubuntu 22.04
        ioBroker (8 GB RAM) Node.js: 20.19.1, NPM: 10.8.2, js-Controller: 7.0.6, Admin: 7.6.3
        Wetterstation: Froggit WH3000SE V1.6.6

        T 1 Antwort Letzte Antwort
        0
        • Rene55R Rene55

          @armilar Mercy, ich versuche nur, alles zu verstehen :flushed:

          T Nicht stören
          T Nicht stören
          ticaki
          schrieb am zuletzt editiert von ticaki
          #5242

          @rene55
          Ich denke so alt wird keiner :) aber versuchen kann mans ja.

          Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

          Spenden

          1 Antwort Letzte Antwort
          0
          • ArmilarA Armilar

            @rene55 sagte in SONOFF NSPanel mit Lovelace UI:

            Was macht eigentlich triggeredSensor ?

            Speicher verbrauchen, da ungenutzt... ;-)

            obj.id hat ja die Infos

            Mache mir bei den funktionalen Scripten nicht immer die Arbeit alles überflüssige zu entfernen... Ist ja nur ein Beispiel - nicht das Bestreben damit einen Preis zu gewinnen :blush:

            Rene55R Offline
            Rene55R Offline
            Rene55
            schrieb am zuletzt editiert von Rene55
            #5243

            @armilar @theknut @ticaki Um dieses Thema abzuschließen habe ich das Script jetzt soweit angepasst, dass es für mich passt. Es wäre schön, wenn einer von Euch mal drübergucken könnte.

            /*
               *   Grundgedanke von //https://github.com/joBr99/nspanel-lovelace-ui/blob/main/ioBroker/Blockly/CardLChart_Influx2.ts
               *   Anpassungen für InfluxDB-Aliase by Rene55 [02.02.2024]
               *
            */
            const Debug = false;
            //
            const NSPanel_Path = '0_userdata.0.NSPanel.';
            const Path = NSPanel_Path + 'Influx2NSPanel.cardLChart.';
            const InfluxInstance = 'influxdb.0';
            const influxDbBucket = 'storage_short';
            const numberOfHoursAgo = 24;
            const xAxisTicksEveryM = 60;
            const xAxisLabelEveryM = 240;
            //
            
            const sensors : Record<string, Record<string,string>> = {};
            /*      ↓ Id of the sensor     ↓ Id of the data source for the charts  [↓ Alias for measurement]  */
            sensors['mqtt.0.arexx.bad'] = {'target':'EG.Bad_Temperatur'}
            sensors['mqtt.0.arexx.badH'] = {'target':'EG.Bad_Luftfeuchte'}
            sensors['mqtt.0.arexx.vorne'] = {'target':'aussen_temperature', 'dbAlias':'Temperatur_vorne'}
            
            //  #####   ab hier keine Änderungen mehr nötig   #####
            
            //___________________________
            // Beschreibe diese Funktion: create data source for NsPanel on script startup
            Object.keys(sensors).forEach(async id => {
               await generateDateAsync(id);
            });
            
            //___________________________
            // Beschreibe diese Funktion: listen to the sensors and update the data source states accordingly
            on({ id: Object.keys(sensors), change: 'any' }, async function (obj) {
               if (!obj.id) {
                   return;
               }
               await generateDateAsync(obj.id);
            });
            
            //___________________________
            // Beschreibe diese Funktion: Daten generieren
            async function generateDateAsync(sensorId: string) {
               let measurement:string = sensors[sensorId].dbAlias
               if (measurement =='' ||measurement == undefined) {measurement = sensorId}
               const dataPointId:string = Path + sensors[sensorId].target +'.ACTUAL'
               if (Debug) log(`(f) generateDateAsync: ${sensorId} ${dataPointId} > ${measurement}`)
               
               const query =[
                   'from(bucket: "' + influxDbBucket + '")',
                   '|> range(start: -' + numberOfHoursAgo + 'h)',
                   '|> filter(fn: (r) => r["_measurement"] == "' + measurement + '")',
                   '|> filter(fn: (r) => r["_field"] == "value")',
                   '|> drop(columns: ["from", "ack", "q"])',
                   '|> aggregateWindow(every: 1h, fn: last, createEmpty: false)',
                   '|> map(fn: (r) => ({ r with _rtime: int(v: r._time) - int(v: r._start)}))',
                   '|> yield(name: "_result")'].join('');
            
               if (Debug) console.log('Query: ' + query);
            
               const result : any = await sendToAsync(InfluxInstance, 'query', query);
               if (result.error) {
                   console.error(result.error);
                   return;
               }
               if (Debug) console.log(result);
               const numResults = result.result.length;
               let coordinates : string = '';
               for (let r = 0; r < numResults; r++) 
               {
                   const list : string[] = []
                   const numValues = result.result[r].length;
            
                   for (let i = 0; i < numValues; i++) 
                   {
                       const time = Math.round(result.result[r][i]._rtime/1000/1000/1000/60);
                       const value = Math.round(result.result[r][i]._value * 10);
                       list.push(time + ":" + value);
                   }
            
                   coordinates = list.join("~");
                   if (Debug) console.log(coordinates);
               }
            
               const ticksAndLabelsList : string[] = []
               const date = new Date();
               date.setMinutes(0, 0, 0);
               const ts = Math.round(date.getTime() / 1000) 
               const tsYesterday = ts - (numberOfHoursAgo * 3600)
               if (Debug) console.log('Iterate from ' + tsYesterday + ' to ' + ts + ' stepsize=' + (xAxisTicksEveryM * 60));
               for (let x = tsYesterday, i = 0; x < ts; x += (xAxisTicksEveryM * 60), i += xAxisTicksEveryM)
               {
                   if ((i % xAxisLabelEveryM))
                       ticksAndLabelsList.push('' + i);
                   else
                   {
                       const currentDate = new Date(x * 1000);
                       // Hours part from the timestamp
                       const hours = "0" + String(currentDate.getHours());
                       // Minutes part from the timestamp
                       const minutes = "0" + String(currentDate.getMinutes());
                       const formattedTime = hours.slice(-2) + ':' + minutes.slice(-2);
            
                       ticksAndLabelsList.push(String(i) + "^" + formattedTime);
                   }
               }
               if (Debug) console.log('Ticks & Label: ' + ticksAndLabelsList);
               if (Debug) console.log('Coordinates: ' + coordinates);
               await setOrCreate(dataPointId, ticksAndLabelsList.join("+") + '~' + coordinates, true);
            }
            
            //___________________________
            // Beschreibe diese Funktion: Datenpunkte anlegen bzw. schreiben
            async function setOrCreate(id : string, value : any, ack : boolean) {
               if (!(await existsStateAsync(id))) {
                    await createStateAsync(id, value, {
                       name: id.split('.').reverse()[0],
                       desc: 'Sensor Values [~<time>:<value>]*',
                       type: 'string',
                       role: 'value',
                   });
               } else {
                   await setStateAsync(id, value, ack);
               }
            }
            //
            //   E N D E
            //
            


            Das mit const sensors : Record<string, string> passt dann bei mir nicht so richtig. Ich hoffe, es ist trotzdem noch TS-Konform.

            Host: Fujitsu Intel(R) Pentium(R) CPU G4560T, 32 GB RAM, Proxmox 8.x + lxc Ubuntu 22.04
            ioBroker (8 GB RAM) Node.js: 20.19.1, NPM: 10.8.2, js-Controller: 7.0.6, Admin: 7.6.3
            Wetterstation: Froggit WH3000SE V1.6.6

            T 1 Antwort Letzte Antwort
            0
            • Rene55R Rene55

              @armilar @theknut @ticaki Um dieses Thema abzuschließen habe ich das Script jetzt soweit angepasst, dass es für mich passt. Es wäre schön, wenn einer von Euch mal drübergucken könnte.

              /*
                 *   Grundgedanke von //https://github.com/joBr99/nspanel-lovelace-ui/blob/main/ioBroker/Blockly/CardLChart_Influx2.ts
                 *   Anpassungen für InfluxDB-Aliase by Rene55 [02.02.2024]
                 *
              */
              const Debug = false;
              //
              const NSPanel_Path = '0_userdata.0.NSPanel.';
              const Path = NSPanel_Path + 'Influx2NSPanel.cardLChart.';
              const InfluxInstance = 'influxdb.0';
              const influxDbBucket = 'storage_short';
              const numberOfHoursAgo = 24;
              const xAxisTicksEveryM = 60;
              const xAxisLabelEveryM = 240;
              //
              
              const sensors : Record<string, Record<string,string>> = {};
              /*      ↓ Id of the sensor     ↓ Id of the data source for the charts  [↓ Alias for measurement]  */
              sensors['mqtt.0.arexx.bad'] = {'target':'EG.Bad_Temperatur'}
              sensors['mqtt.0.arexx.badH'] = {'target':'EG.Bad_Luftfeuchte'}
              sensors['mqtt.0.arexx.vorne'] = {'target':'aussen_temperature', 'dbAlias':'Temperatur_vorne'}
              
              //  #####   ab hier keine Änderungen mehr nötig   #####
              
              //___________________________
              // Beschreibe diese Funktion: create data source for NsPanel on script startup
              Object.keys(sensors).forEach(async id => {
                 await generateDateAsync(id);
              });
              
              //___________________________
              // Beschreibe diese Funktion: listen to the sensors and update the data source states accordingly
              on({ id: Object.keys(sensors), change: 'any' }, async function (obj) {
                 if (!obj.id) {
                     return;
                 }
                 await generateDateAsync(obj.id);
              });
              
              //___________________________
              // Beschreibe diese Funktion: Daten generieren
              async function generateDateAsync(sensorId: string) {
                 let measurement:string = sensors[sensorId].dbAlias
                 if (measurement =='' ||measurement == undefined) {measurement = sensorId}
                 const dataPointId:string = Path + sensors[sensorId].target +'.ACTUAL'
                 if (Debug) log(`(f) generateDateAsync: ${sensorId} ${dataPointId} > ${measurement}`)
                 
                 const query =[
                     'from(bucket: "' + influxDbBucket + '")',
                     '|> range(start: -' + numberOfHoursAgo + 'h)',
                     '|> filter(fn: (r) => r["_measurement"] == "' + measurement + '")',
                     '|> filter(fn: (r) => r["_field"] == "value")',
                     '|> drop(columns: ["from", "ack", "q"])',
                     '|> aggregateWindow(every: 1h, fn: last, createEmpty: false)',
                     '|> map(fn: (r) => ({ r with _rtime: int(v: r._time) - int(v: r._start)}))',
                     '|> yield(name: "_result")'].join('');
              
                 if (Debug) console.log('Query: ' + query);
              
                 const result : any = await sendToAsync(InfluxInstance, 'query', query);
                 if (result.error) {
                     console.error(result.error);
                     return;
                 }
                 if (Debug) console.log(result);
                 const numResults = result.result.length;
                 let coordinates : string = '';
                 for (let r = 0; r < numResults; r++) 
                 {
                     const list : string[] = []
                     const numValues = result.result[r].length;
              
                     for (let i = 0; i < numValues; i++) 
                     {
                         const time = Math.round(result.result[r][i]._rtime/1000/1000/1000/60);
                         const value = Math.round(result.result[r][i]._value * 10);
                         list.push(time + ":" + value);
                     }
              
                     coordinates = list.join("~");
                     if (Debug) console.log(coordinates);
                 }
              
                 const ticksAndLabelsList : string[] = []
                 const date = new Date();
                 date.setMinutes(0, 0, 0);
                 const ts = Math.round(date.getTime() / 1000) 
                 const tsYesterday = ts - (numberOfHoursAgo * 3600)
                 if (Debug) console.log('Iterate from ' + tsYesterday + ' to ' + ts + ' stepsize=' + (xAxisTicksEveryM * 60));
                 for (let x = tsYesterday, i = 0; x < ts; x += (xAxisTicksEveryM * 60), i += xAxisTicksEveryM)
                 {
                     if ((i % xAxisLabelEveryM))
                         ticksAndLabelsList.push('' + i);
                     else
                     {
                         const currentDate = new Date(x * 1000);
                         // Hours part from the timestamp
                         const hours = "0" + String(currentDate.getHours());
                         // Minutes part from the timestamp
                         const minutes = "0" + String(currentDate.getMinutes());
                         const formattedTime = hours.slice(-2) + ':' + minutes.slice(-2);
              
                         ticksAndLabelsList.push(String(i) + "^" + formattedTime);
                     }
                 }
                 if (Debug) console.log('Ticks & Label: ' + ticksAndLabelsList);
                 if (Debug) console.log('Coordinates: ' + coordinates);
                 await setOrCreate(dataPointId, ticksAndLabelsList.join("+") + '~' + coordinates, true);
              }
              
              //___________________________
              // Beschreibe diese Funktion: Datenpunkte anlegen bzw. schreiben
              async function setOrCreate(id : string, value : any, ack : boolean) {
                 if (!(await existsStateAsync(id))) {
                      await createStateAsync(id, value, {
                         name: id.split('.').reverse()[0],
                         desc: 'Sensor Values [~<time>:<value>]*',
                         type: 'string',
                         role: 'value',
                     });
                 } else {
                     await setStateAsync(id, value, ack);
                 }
              }
              //
              //   E N D E
              //
              


              Das mit const sensors : Record<string, string> passt dann bei mir nicht so richtig. Ich hoffe, es ist trotzdem noch TS-Konform.

              T Nicht stören
              T Nicht stören
              ticaki
              schrieb am zuletzt editiert von ticaki
              #5244

              @rene55
              alles geschriebene von mir ist unnötig. Mit record gehts auch - zumindest in vscode. Wieder was gelernt.

              Ok nach genauerem Hinsehen müsste das wohl so ausssehen:

              Record<string, Record<string,string>>
              

              Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

              Spenden

              Rene55R 1 Antwort Letzte Antwort
              0
              • icebearI Offline
                icebearI Offline
                icebear
                schrieb am zuletzt editiert von
                #5245

                Hallo zusammen

                Ich hab grad auf die V4.3.3.39 das update gemacht (vorher v4.3.3.31), jetzt bekomm ich beim Start folgenden Fehler:

                
                javascript.0
                2024-02-02 13:32:47.495	error	script.js.NSPanel.NSPanelTS_1_v4_3_3_39: TypeScript compilation failed:let WLAN: PageType = { ^ERROR: Type '{ type: "cardQR"; heading: string; subPage: true; prev: string; home: string; homeIcon: string; items: [{ id: string; hidePassword: true; autoCreateALias: true; }, { id: string; }]; }' is not assignable to type 'PageType'. Types of property ''items'' are incompatible. Type '[{ id: string; hidePassword: true; autoCreateALias: true; }, { id: string; }]' is not assignable to type '[PageItem] & PageItem[]'. Type '[{ id: string; hidePassword: true; autoCreateALias: true; }, { id: string; }]' is not assignable to type '[PageItem]'. Source has 2 element(s) but target allows only 1
                

                Hab ich irgendwas verpasst?

                T T 2 Antworten Letzte Antwort
                0
                • icebearI icebear

                  Hallo zusammen

                  Ich hab grad auf die V4.3.3.39 das update gemacht (vorher v4.3.3.31), jetzt bekomm ich beim Start folgenden Fehler:

                  
                  javascript.0
                  2024-02-02 13:32:47.495	error	script.js.NSPanel.NSPanelTS_1_v4_3_3_39: TypeScript compilation failed:let WLAN: PageType = { ^ERROR: Type '{ type: "cardQR"; heading: string; subPage: true; prev: string; home: string; homeIcon: string; items: [{ id: string; hidePassword: true; autoCreateALias: true; }, { id: string; }]; }' is not assignable to type 'PageType'. Types of property ''items'' are incompatible. Type '[{ id: string; hidePassword: true; autoCreateALias: true; }, { id: string; }]' is not assignable to type '[PageItem] & PageItem[]'. Type '[{ id: string; hidePassword: true; autoCreateALias: true; }, { id: string; }]' is not assignable to type '[PageItem]'. Source has 2 element(s) but target allows only 1
                  

                  Hab ich irgendwas verpasst?

                  T Offline
                  T Offline
                  TT-Tom
                  schrieb am zuletzt editiert von TT-Tom
                  #5246

                  @icebear

                  zeige mal die config von der Page.

                  sieht aus als ob due 2 pageItem hast

                  Gruß Tom
                  https://github.com/tt-tom17
                  Wenn meine Hilfe erfolgreich war, benutze bitte das Voting unten rechts im Beitrag

                  NSPanel Script Wiki
                  https://github.com/joBr99/nspanel-lovelace-ui/wiki

                  NSPanel Adapter Wiki
                  https://github.com/ticaki/ioBroker.nspanel-lovelace-ui/wiki

                  icebearI 1 Antwort Letzte Antwort
                  0
                  • T TT-Tom

                    @icebear

                    zeige mal die config von der Page.

                    sieht aus als ob due 2 pageItem hast

                    icebearI Offline
                    icebearI Offline
                    icebear
                    schrieb am zuletzt editiert von
                    #5247

                    @tt-tom

                    let WLAN: PageType = 
                    {
                        'type': 'cardQR',
                        'heading': 'Gäste WLAN',
                        'subPage': true,
                    	'prev': 'Abfall',
                    	'home': 'Grundstueck',
                    	'homeIcon': 'home-roof',
                        'items': [
                    		{ id: 'alias.0.NSPanel.GuestWifi', hidePassword: true, autoCreateALias: true },
                            { id: 'alias.0.NSPanel.GuestWifi.SWITCH'},
                    	
                    	]
                    };
                    
                    T 1 Antwort Letzte Antwort
                    0
                    • icebearI icebear

                      Hallo zusammen

                      Ich hab grad auf die V4.3.3.39 das update gemacht (vorher v4.3.3.31), jetzt bekomm ich beim Start folgenden Fehler:

                      
                      javascript.0
                      2024-02-02 13:32:47.495	error	script.js.NSPanel.NSPanelTS_1_v4_3_3_39: TypeScript compilation failed:let WLAN: PageType = { ^ERROR: Type '{ type: "cardQR"; heading: string; subPage: true; prev: string; home: string; homeIcon: string; items: [{ id: string; hidePassword: true; autoCreateALias: true; }, { id: string; }]; }' is not assignable to type 'PageType'. Types of property ''items'' are incompatible. Type '[{ id: string; hidePassword: true; autoCreateALias: true; }, { id: string; }]' is not assignable to type '[PageItem] & PageItem[]'. Type '[{ id: string; hidePassword: true; autoCreateALias: true; }, { id: string; }]' is not assignable to type '[PageItem]'. Source has 2 element(s) but target allows only 1
                      

                      Hab ich irgendwas verpasst?

                      T Nicht stören
                      T Nicht stören
                      ticaki
                      schrieb am zuletzt editiert von
                      #5248

                      @icebear sagte in SONOFF NSPanel mit Lovelace UI:

                      Source has 2 element(s) but target allows only 1

                      Denke mal 1 Pageitem zuviel angegeben -> [{ id: string; hidePassword: true; autoCreateALias: true; }, { id: string; }]

                      Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                      Spenden

                      1 Antwort Letzte Antwort
                      2
                      • icebearI icebear

                        @tt-tom

                        let WLAN: PageType = 
                        {
                            'type': 'cardQR',
                            'heading': 'Gäste WLAN',
                            'subPage': true,
                        	'prev': 'Abfall',
                        	'home': 'Grundstueck',
                        	'homeIcon': 'home-roof',
                            'items': [
                        		{ id: 'alias.0.NSPanel.GuestWifi', hidePassword: true, autoCreateALias: true },
                                { id: 'alias.0.NSPanel.GuestWifi.SWITCH'},
                        	
                        	]
                        };
                        
                        T Offline
                        T Offline
                        TT-Tom
                        schrieb am zuletzt editiert von
                        #5249

                        @icebear sagte in SONOFF NSPanel mit Lovelace UI:

                        { id: 'alias.0.NSPanel.GuestWifi.SWITCH'},

                        der kann weg. den Switch sucht er sich alleine.

                        Gruß Tom
                        https://github.com/tt-tom17
                        Wenn meine Hilfe erfolgreich war, benutze bitte das Voting unten rechts im Beitrag

                        NSPanel Script Wiki
                        https://github.com/joBr99/nspanel-lovelace-ui/wiki

                        NSPanel Adapter Wiki
                        https://github.com/ticaki/ioBroker.nspanel-lovelace-ui/wiki

                        icebearI 1 Antwort Letzte Antwort
                        2
                        • T TT-Tom

                          @icebear sagte in SONOFF NSPanel mit Lovelace UI:

                          { id: 'alias.0.NSPanel.GuestWifi.SWITCH'},

                          der kann weg. den Switch sucht er sich alleine.

                          icebearI Offline
                          icebearI Offline
                          icebear
                          schrieb am zuletzt editiert von
                          #5250

                          @tt-tom said in SONOFF NSPanel mit Lovelace UI:

                          @icebear sagte in SONOFF NSPanel mit Lovelace UI:

                          { id: 'alias.0.NSPanel.GuestWifi.SWITCH'},

                          der kann weg. den Switch sucht er sich alleine.

                          Ich danke dir, das wars.

                          1 Antwort Letzte Antwort
                          0
                          • T ticaki

                            @rene55
                            alles geschriebene von mir ist unnötig. Mit record gehts auch - zumindest in vscode. Wieder was gelernt.

                            Ok nach genauerem Hinsehen müsste das wohl so ausssehen:

                            Record<string, Record<string,string>>
                            
                            Rene55R Offline
                            Rene55R Offline
                            Rene55
                            schrieb am zuletzt editiert von
                            #5251

                            @ticaki Jepp, det funzt. Ich muss mich noch schwer in TS reinfuchsen. Danke.

                            Host: Fujitsu Intel(R) Pentium(R) CPU G4560T, 32 GB RAM, Proxmox 8.x + lxc Ubuntu 22.04
                            ioBroker (8 GB RAM) Node.js: 20.19.1, NPM: 10.8.2, js-Controller: 7.0.6, Admin: 7.6.3
                            Wetterstation: Froggit WH3000SE V1.6.6

                            1 Antwort Letzte Antwort
                            3
                            • ArmilarA Armilar

                              @rene55 sagte in SONOFF NSPanel mit Lovelace UI:

                              Was macht eigentlich triggeredSensor ?

                              Speicher verbrauchen, da ungenutzt... ;-)

                              obj.id hat ja die Infos

                              Mache mir bei den funktionalen Scripten nicht immer die Arbeit alles überflüssige zu entfernen... Ist ja nur ein Beispiel - nicht das Bestreben damit einen Preis zu gewinnen :blush:

                              Rene55R Offline
                              Rene55R Offline
                              Rene55
                              schrieb am zuletzt editiert von
                              #5252

                              @armilar Gibt es für cardChart auch ein Script für die Aufbereitung der Daten? Ich wollte auch so etwas umsetzen wie 'ChartsDemo' für Gas oder 'Stromzähler L1+L2+L3'.

                              Host: Fujitsu Intel(R) Pentium(R) CPU G4560T, 32 GB RAM, Proxmox 8.x + lxc Ubuntu 22.04
                              ioBroker (8 GB RAM) Node.js: 20.19.1, NPM: 10.8.2, js-Controller: 7.0.6, Admin: 7.6.3
                              Wetterstation: Froggit WH3000SE V1.6.6

                              ArmilarA T 2 Antworten Letzte Antwort
                              0
                              • Rene55R Rene55

                                @armilar Gibt es für cardChart auch ein Script für die Aufbereitung der Daten? Ich wollte auch so etwas umsetzen wie 'ChartsDemo' für Gas oder 'Stromzähler L1+L2+L3'.

                                ArmilarA Offline
                                ArmilarA Offline
                                Armilar
                                Most Active Forum Testing
                                schrieb am zuletzt editiert von Armilar
                                #5253

                                @rene55

                                https://github.com/joBr99/nspanel-lovelace-ui/wiki/ioBroker-Card-Definitionen-(Seiten)#cardchart-ab-ts-script-v370

                                etwas unterhalb ist ein abgebildetes Blockly für influxDB2

                                darunter der Link zum Blockly

                                yAxisTicks sind im Gegensatz zur cardLChart nicht automatisiert und müssen definiert werden.

                                Der Daten-String ist anders aufgebaut, da er keine Koordinaten, sondern Werte zum Zeitpunkt X enthält...

                                Installationsanleitung, Tipps, Alias-Definitionen, FAQ für das Sonoff NSPanel mit lovelace UI unter ioBroker
                                https://github.com/joBr99/nspanel-lovelace-ui/wiki

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

                                theknutT 1 Antwort Letzte Antwort
                                1
                                • Rene55R Rene55

                                  @armilar Gibt es für cardChart auch ein Script für die Aufbereitung der Daten? Ich wollte auch so etwas umsetzen wie 'ChartsDemo' für Gas oder 'Stromzähler L1+L2+L3'.

                                  T Offline
                                  T Offline
                                  TT-Tom
                                  schrieb am zuletzt editiert von
                                  #5254

                                  @rene55
                                  offiziell im Wiki für Influx nur als Blockly. BalkenChart oder auf meinem git als TypeScript.

                                  Gruß Tom
                                  https://github.com/tt-tom17
                                  Wenn meine Hilfe erfolgreich war, benutze bitte das Voting unten rechts im Beitrag

                                  NSPanel Script Wiki
                                  https://github.com/joBr99/nspanel-lovelace-ui/wiki

                                  NSPanel Adapter Wiki
                                  https://github.com/ticaki/ioBroker.nspanel-lovelace-ui/wiki

                                  Rene55R 1 Antwort Letzte Antwort
                                  1
                                  • T TT-Tom

                                    @rene55
                                    offiziell im Wiki für Influx nur als Blockly. BalkenChart oder auf meinem git als TypeScript.

                                    Rene55R Offline
                                    Rene55R Offline
                                    Rene55
                                    schrieb am zuletzt editiert von
                                    #5255

                                    @tt-tom Oh, sehr gut - schau ich mir sofort an.

                                    Host: Fujitsu Intel(R) Pentium(R) CPU G4560T, 32 GB RAM, Proxmox 8.x + lxc Ubuntu 22.04
                                    ioBroker (8 GB RAM) Node.js: 20.19.1, NPM: 10.8.2, js-Controller: 7.0.6, Admin: 7.6.3
                                    Wetterstation: Froggit WH3000SE V1.6.6

                                    1 Antwort Letzte Antwort
                                    0
                                    • ArmilarA Armilar

                                      @rene55

                                      https://github.com/joBr99/nspanel-lovelace-ui/wiki/ioBroker-Card-Definitionen-(Seiten)#cardchart-ab-ts-script-v370

                                      etwas unterhalb ist ein abgebildetes Blockly für influxDB2

                                      darunter der Link zum Blockly

                                      yAxisTicks sind im Gegensatz zur cardLChart nicht automatisiert und müssen definiert werden.

                                      Der Daten-String ist anders aufgebaut, da er keine Koordinaten, sondern Werte zum Zeitpunkt X enthält...

                                      theknutT Offline
                                      theknutT Offline
                                      theknut
                                      schrieb am zuletzt editiert von theknut
                                      #5256

                                      @armilar said in SONOFF NSPanel mit Lovelace UI:

                                      @rene55

                                      https://github.com/joBr99/nspanel-lovelace-ui/wiki/ioBroker-Card-Definitionen-(Seiten)#cardchart-ab-ts-script-v370

                                      etwas unterhalb ist ein abgebildetes Blockly für influxDB2

                                      darunter der Link zum Blockly

                                      yAxisTicks sind im Gegensatz zur cardLChart nicht automatisiert und müssen definiert werden.

                                      Der Daten-String ist anders aufgebaut, da er keine Koordinaten, sondern Werte zum Zeitpunkt X enthält...

                                      gäbe es einen Grund, dass man/ich das nicht noch so umschreiben könnte, dass es auch berechnet wird?

                                      ☕ @ https://ko-fi.com/theknut

                                      Rene55R T 2 Antworten Letzte Antwort
                                      0
                                      • theknutT theknut

                                        @armilar said in SONOFF NSPanel mit Lovelace UI:

                                        @rene55

                                        https://github.com/joBr99/nspanel-lovelace-ui/wiki/ioBroker-Card-Definitionen-(Seiten)#cardchart-ab-ts-script-v370

                                        etwas unterhalb ist ein abgebildetes Blockly für influxDB2

                                        darunter der Link zum Blockly

                                        yAxisTicks sind im Gegensatz zur cardLChart nicht automatisiert und müssen definiert werden.

                                        Der Daten-String ist anders aufgebaut, da er keine Koordinaten, sondern Werte zum Zeitpunkt X enthält...

                                        gäbe es einen Grund, dass man/ich das nicht noch so umschreiben könnte, dass es auch berechnet wird?

                                        Rene55R Offline
                                        Rene55R Offline
                                        Rene55
                                        schrieb am zuletzt editiert von
                                        #5257

                                        @theknut Das würde ich auch gerne in Anspruch nehmen. Meine aktuell generierten Balken zeigen alle ins Minus! :face_with_head_bandage: . Vielleicht hab ich auch noch nicht gerafft, welchen Datenpunkt ich nehmen muss.

                                        Host: Fujitsu Intel(R) Pentium(R) CPU G4560T, 32 GB RAM, Proxmox 8.x + lxc Ubuntu 22.04
                                        ioBroker (8 GB RAM) Node.js: 20.19.1, NPM: 10.8.2, js-Controller: 7.0.6, Admin: 7.6.3
                                        Wetterstation: Froggit WH3000SE V1.6.6

                                        T 1 Antwort Letzte Antwort
                                        0
                                        • Rene55R Rene55

                                          @theknut Das würde ich auch gerne in Anspruch nehmen. Meine aktuell generierten Balken zeigen alle ins Minus! :face_with_head_bandage: . Vielleicht hab ich auch noch nicht gerafft, welchen Datenpunkt ich nehmen muss.

                                          T Offline
                                          T Offline
                                          TT-Tom
                                          schrieb am zuletzt editiert von
                                          #5258

                                          @rene55
                                          das kann auch der Bug bei der Card sein.

                                          https://github.com/joBr99/nspanel-lovelace-ui/issues/934

                                          Gruß Tom
                                          https://github.com/tt-tom17
                                          Wenn meine Hilfe erfolgreich war, benutze bitte das Voting unten rechts im Beitrag

                                          NSPanel Script Wiki
                                          https://github.com/joBr99/nspanel-lovelace-ui/wiki

                                          NSPanel Adapter Wiki
                                          https://github.com/ticaki/ioBroker.nspanel-lovelace-ui/wiki

                                          Rene55R 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

                                          730

                                          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