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

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

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.0k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.5k

SONOFF NSPanel mit Lovelace UI

Geplant Angeheftet Gesperrt Verschoben Hardware
lovelace uinspanelsonoff
7.8k Beiträge 272 Kommentatoren 6.7m Aufrufe 254 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.
  • T TT-Tom

    @kerschte_de
    Na dann kann es ja weiter gehen, viel Spaß noch.

    K Offline
    K Offline
    Kerschte_de
    schrieb am zuletzt editiert von
    #6344

    @tt-tom @Armilar
    HERZLICHEN DANK an euch beide, richtig großartig. Allein ist man in dieser Sache schnell "lost". Von daher Hut ab für eure Geduld und euren Fleiß. Hut ab !

    1 Antwort Letzte Antwort
    1
    • ArmilarA Armilar

      @lustig29

      Ist ganz normaler Auslieferungszustand ohne SetOption x

      Das heißt SetOption73 und SetOption114 sind auch aus. Was Du auch in der Tasmota-Konsole eingestellt hast, mach es rückgängig und du hörst die Relais auch schalten…

      L Offline
      L Offline
      lustig29
      schrieb am zuletzt editiert von lustig29
      #6345

      @armilar said in SONOFF NSPanel mit Lovelace UI:

      @lustig29
      Ist ganz normaler Auslieferungszustand ohne SetOption x
      Das heißt SetOption73 und SetOption114 sind auch aus. Was Du auch in der Tasmota-Konsole eingestellt hast, mach es rückgängig und du hörst die Relais auch schalten…

      Wie genau mache ich das rückgängig?
      Über den userdata_Datenpunkt kann ich die Relais an und aus schalten. Per Taste am Gerät passiert aber nichts.

      T 1 Antwort Letzte Antwort
      0
      • L lustig29

        @armilar said in SONOFF NSPanel mit Lovelace UI:

        @lustig29
        Ist ganz normaler Auslieferungszustand ohne SetOption x
        Das heißt SetOption73 und SetOption114 sind auch aus. Was Du auch in der Tasmota-Konsole eingestellt hast, mach es rückgängig und du hörst die Relais auch schalten…

        Wie genau mache ich das rückgängig?
        Über den userdata_Datenpunkt kann ich die Relais an und aus schalten. Per Taste am Gerät passiert aber nichts.

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

        @lustig29
        In dem du die Option auf 0 setzt.

        SetOption73 0 
        

        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

        L 1 Antwort Letzte Antwort
        1
        • T TT-Tom

          @lustig29
          In dem du die Option auf 0 setzt.

          SetOption73 0 
          
          L Offline
          L Offline
          lustig29
          schrieb am zuletzt editiert von
          #6347

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

          SetOption73 0

          Perfekt. Danke für die schnelle Hilfe.

          T 1 Antwort Letzte Antwort
          0
          • L lustig29

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

            SetOption73 0

            Perfekt. Danke für die schnelle Hilfe.

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

            @lustig29
            Musst du mit allen Optionen machen, die du gesetzt 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

            1 Antwort Letzte Antwort
            1
            • GregorSG Online
              GregorSG Online
              GregorS
              schrieb am zuletzt editiert von
              #6349

              Wollte es alleine versuchen, aber es klappt einfach nicht.

              Ich habe 3 elektrische Rolläden.
              Dazu wollte ich eine Seite bauen, wo der Zustand der einzelnen Rolläden dargestellt wird.
              Die Idee war das "blinds-horizontal" Icon zu nutzen. Daneben der Stellwert der Rollade. Dazu noch 2 Pfeile "hoch" und "runter". Das Icon sollte die Farbe wechseln, Grün bei Wert <10%, Rot >75%.
              Als Alias habe ich 4 Werte angelegt.
              Alias.png

              // Rolläden
              let Rolladen: PageType =
              {
                  'type': 'cardEntities',
                  'heading': 'Rolläden',
                  'useColor': true,
                  'subPage': false,
                  'items': [
              //        <PageItem>{ id: 'alias.0.NSPanel.Rolläden.AZ.ACTUAL', icon: 'window-shutter', name: 'Rolladen test', interpolateColor: true},
              //        <PageItem>{ id: 'alias.0.NSPanel.Rolläden.AZ.CLOSE', icon: "'button1Page', name: 'runter'},
              //        <PageItem>{ id: 'alias.0.NSPanel.Rolläden.AZ.OPEN', icon: 'button2Page', name: 'hoch'},
                      <PageItem>{ id: 'alias.0.NSPanel.Rolläden.AZ.ACTUAL', icon: 'blinds-horizontal', name: 'Büro'},
                  ]
              };
              

              Es wird nur die leere Page mit der Überschrift angezeigt.

              INTEL NUC i7, Sonoff, hmIP, AVM, Jeelink, T-Link, Alexa, Saia-Burgess, uvm.

              T 1 Antwort Letzte Antwort
              0
              • GregorSG GregorS

                Wollte es alleine versuchen, aber es klappt einfach nicht.

                Ich habe 3 elektrische Rolläden.
                Dazu wollte ich eine Seite bauen, wo der Zustand der einzelnen Rolläden dargestellt wird.
                Die Idee war das "blinds-horizontal" Icon zu nutzen. Daneben der Stellwert der Rollade. Dazu noch 2 Pfeile "hoch" und "runter". Das Icon sollte die Farbe wechseln, Grün bei Wert <10%, Rot >75%.
                Als Alias habe ich 4 Werte angelegt.
                Alias.png

                // Rolläden
                let Rolladen: PageType =
                {
                    'type': 'cardEntities',
                    'heading': 'Rolläden',
                    'useColor': true,
                    'subPage': false,
                    'items': [
                //        <PageItem>{ id: 'alias.0.NSPanel.Rolläden.AZ.ACTUAL', icon: 'window-shutter', name: 'Rolladen test', interpolateColor: true},
                //        <PageItem>{ id: 'alias.0.NSPanel.Rolläden.AZ.CLOSE', icon: "'button1Page', name: 'runter'},
                //        <PageItem>{ id: 'alias.0.NSPanel.Rolläden.AZ.OPEN', icon: 'button2Page', name: 'hoch'},
                        <PageItem>{ id: 'alias.0.NSPanel.Rolläden.AZ.ACTUAL', icon: 'blinds-horizontal', name: 'Büro'},
                    ]
                };
                

                Es wird nur die leere Page mit der Überschrift angezeigt.

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

                @gregors

                du braucht bei den Seiten nur den Channel angeben, den Rest sucht sich das Script selber.

                alias.0.NSPanel.Rolläden.AZ
                

                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

                GregorSG 1 Antwort Letzte Antwort
                2
                • T TT-Tom

                  @gregors

                  du braucht bei den Seiten nur den Channel angeben, den Rest sucht sich das Script selber.

                  alias.0.NSPanel.Rolläden.AZ
                  
                  GregorSG Online
                  GregorSG Online
                  GregorS
                  schrieb am zuletzt editiert von GregorS
                  #6351

                  @tt-tom

                  Top. Funktioniert.
                  Wie kann ich jetzt noch die Farbe entsprechend der %ualen Rückmeldung ändern?

                  Es wird aber nur das AZ angezeigt.

                  let Rolladen: PageType =
                  {
                      'type': 'cardEntities',
                      'heading': 'Rolläden',
                      'useColor': true,
                      'subPage': false,
                      'items': [
                          <PageItem>{ id: 'alias.0.NSPanel.Rolläden.AZ', name: 'Arbeitszimmer' },
                          <PageItem>{ id: 'alias.0.NSPanel.Rolläden.WZTüre', name: 'Wohnzimmer Türe' },
                          <PageItem>{ id: 'alias.0.NSPanel.Rolläden.WZFenster', name: 'Wohnzimmer Fenster' },
                      ]
                  };
                  

                  Bei jedem Bildwechsel blinkt die Seite kurz 2 mal ???

                  Ich suche ein Script, das hat jemand geschrieben um Temperaturwerte für ein LChart zu übertragen.
                  Leider hab ich darin herumgemehrt und jetzt weiß ich nicht mehr was alles falsch ist und bei über 6300 Threats :confounded:

                  const Debug = false;
                  
                   
                  
                  const NSPanel_Path = '0_userdata.0.NSPanel.';
                  
                  const Path = NSPanel_Path + 'History_Chart.Temp.';
                  
                  let   PathSensor = '';
                  
                   
                  
                  let SensorName = 'Temperatur AZ',
                  let SensorName = 'Temperatur WZ',
                  let SensorName = 'Temperatur Bad',
                  
                  //                  'EG.Gaeste_WC.Temperatur',
                  
                  //                  'EG.Wohnzimmer.Temperatur',
                  
                                  ;
                  
                   
                  
                  const Sensor = [].concat('hm-rpc.1.000A9BE990C516.1.ACTUAL_TEMPERATURE')  // Temperatur Arbeitszimmer
                  const Sensor = [].concat('hm-rpc.1.000A9BE990CFC3.1.ACTUAL_TEMPERATURE')  // Temperatur Wohnzimmer
                  const Sensor = [].concat('hm-rpc.1.000A9BE990C35D.1.ACTUAL_TEMPERATURE')  // Temperatur Badezimmer
                  
                  //                 .concat('deconz.0.Sensors.12.temperature')  // EG.Gaeste_WC.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) console.log(obj.id);
                  
                      if (Debug) console.log(Sensor.indexOf(obj.id));
                  
                      if (Debug) console.log(SensorName[Sensor.indexOf(obj.id)])
                  
                   
                  
                      PathSensor = Path + SensorName[Sensor.indexOf(obj.id)]
                  ...
                  
                  

                  INTEL NUC i7, Sonoff, hmIP, AVM, Jeelink, T-Link, Alexa, Saia-Burgess, uvm.

                  1 Antwort Letzte Antwort
                  0
                  • T Offline
                    T Offline
                    TT-Tom
                    schrieb am zuletzt editiert von TT-Tom
                    #6352

                    @gregors sagte in SONOFF NSPanel mit Lovelace UI:

                    Wie kann ich jetzt noch die Farbe entsprechend der %ualen Rückmeldung ändern?

                    onColor und offColor. hier ein Beispiel. wichtig alles größer 0 ist on und 0 ist off

                    {
                                id: 'alias.0.NSPanel.allgemein.Rollo',
                                onColor: White,
                                offColor: Red,
                                name: 'Test Rollo',
                                secondRow: 'Hier Text für 2. Zeile',
                                minValueLevel: 1,
                                maxValueLevel: 75,
                                minValueTilt: 100,
                                maxValueTilt: 0,
                            },
                    

                    Ich suche ein Script, das hat jemand geschrieben um Temperaturwerte für ein LChart zu übertragen.

                    kannst du es noch mal genauer definieren. Auf meinem Github und in der Wiki gibt es da Beispiele

                    EDIT: zeige mal die beiden Alias

                    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

                    1 Antwort Letzte Antwort
                    2
                    • ArmilarA Offline
                      ArmilarA Offline
                      Armilar
                      Most Active Forum Testing
                      schrieb am zuletzt editiert von
                      #6353

                      @gregors

                      Sieht aus wie das...

                      https://forum.iobroker.net/post/938204

                      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.

                      GregorSG 1 Antwort Letzte Antwort
                      2
                      • ArmilarA Armilar

                        @gregors

                        Sieht aus wie das...

                        https://forum.iobroker.net/post/938204

                        GregorSG Online
                        GregorSG Online
                        GregorS
                        schrieb am zuletzt editiert von GregorS
                        #6354

                        @armilar

                        Das war das richtige Script.
                        Allerdings bekomme ich da immer eine Fehlermeldung, die ich nicht deuten kann:

                        javascript.0	19:06:04.619	error	script.js.NSPanel_LChart_Temp: Invalid call
                        

                        Fehler im Log:

                        javascript.0
                        	2024-09-11 18:58:18.097	error	at processImmediate (node:internal/timers:476:21)
                        javascript.0
                        	2024-09-11 18:58:18.096	error	at Immediate._onImmediate (file:///opt/iobroker/node_modules/@iobroker/db-states-redis/src/lib/states/statesInRedisClient.ts:383:37)
                        javascript.0
                        	2024-09-11 18:58:18.096	error	at change (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/src/lib/adapter/adapter.ts:10886:45)
                        javascript.0
                        	2024-09-11 18:58:18.096	error	at Object.cb (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:3097:38)
                        javascript.0
                        	2024-09-11 18:58:18.096	error	at Object.<anonymous> (script.js.NSPanel_LChart_AZ:62:54)
                        javascript.0
                        	2024-09-11 18:58:18.096	error	Error in callback: TypeError: Cannot read properties of undefined (reading 'ts')
                        javascript.0
                        	2024-09-11 18:58:18.053	error	script.js.NSPanel_LChart_Temp: Invalid call
                        influxdb.0
                        	2024-09-11 18:58:18.052	error	queries: Error: 1 Error happened while processing 1 queries
                        influxdb.0
                        	2024-09-11 18:58:18.052	warn	Error in query "from(bucket: "iobroker")|> range(start: -24h)|> filter(fn: (r) => r["_measurement"] == "hm-rpc.1.000A9BE990C516.1.ACTUAL_TEMPERATURE")|> 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")": HttpError: failed to initialize execute state: could not find bucket "iobroker"
                        

                        InfluxDB läuft in einem lxc-Container.
                        Verbindungstest ist erfolgreich.

                        Brauche ich die DB überhaupt, ich wollte mit der History.0 arbeiten.

                        Hier mein angepasstes Script:

                        const Debug = false;
                        const NSPanel_Path = '0_userdata.0.NSPanel.';
                        const Path = NSPanel_Path + 'History_Chart.Temp.';
                        
                        let   PathSensor = '';
                        
                        let SensorName = ['Temperatur AZ',
                                          'Temperatur WZ',
                                          'Temperatur Bad'];
                        
                        
                        const Sensor = [].concat('hm-rpc.1.000A9BE990C516.1.ACTUAL_TEMPERATURE')  // Temperatur Arbeitszimmer
                                         .concat('hm-rpc.1.000A9BE990CFC3.1.ACTUAL_TEMPERATURE')  // Temperatur Wohnzimmer
                                         .concat('hm-rpc.1.000A9BE990C35D.1.ACTUAL_TEMPERATURE')  // Temperatur Badezimmer
                        
                           
                        
                        let   triggeredSensor = 0;
                        
                        const numberOfHoursAgo = 24;
                        const xAxisTicksEveryM = 60;
                        const xAxisLabelEveryM = 240;
                        
                        const InfluxInstance = 'influxdb.0';
                        // const InfluxInstance = 'influxdb.0';
                        
                        // Ab hier keine Ändeungen
                        let coordinates = ''; 
                        
                        on({ id: Sensor, change: 'any' }, async function (obj) {
                        
                            if (Debug) console.log(obj.id);
                        
                            if (Debug) console.log(Sensor.indexOf(obj.id));
                        
                            if (Debug) console.log(SensorName[Sensor.indexOf(obj.id)])
                        
                             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) console.log('Query: ' + query);
                        
                         
                        
                            sendTo(InfluxInstance, 'query', query, function (result) {
                        
                                if (result.error) {
                        
                                    console.error(result.error);
                        
                                } else {
                        
                                    // show result
                        
                                    if (Debug) console.log(result);
                        
                                    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) console.log(coordinates);
                        
                                    }
                        
                                }
                        
                            });
                        
                         
                        
                            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) 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
                        
                                        {
                        
                                            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) console.log('Ticks & Label: ' + ticksAndLabelsList);
                        
                                    if (Debug) console.log('Coordinates: ' + coordinates);
                        
                                    setState(PathSensor, ticksAndLabelsList.join('+') + '~' + coordinates, true);
                        
                                }, 
                        
                            1500
                        
                            ) ;
                        
                        });
                        

                        INTEL NUC i7, Sonoff, hmIP, AVM, Jeelink, T-Link, Alexa, Saia-Burgess, uvm.

                        1 Antwort Letzte Antwort
                        0
                        • ArmilarA Offline
                          ArmilarA Offline
                          Armilar
                          Most Active Forum Testing
                          schrieb am zuletzt editiert von Armilar
                          #6355

                          @gregors

                          Wenn ich das richtig gesehen habe, hattest du eine Instanz: influxdb.1

                          Zumindest findet er das Bucket nicht.

                          Also Check auf:

                          • Instanznummer ggfs. auf 1
                          • im Query Bucket-Name (könnte bei dir ja abweichend von "iobroker" sein)

                          Aber für history.0 haben wir andere Scripte im Wiki:

                          https://github.com/joBr99/nspanel-lovelace-ui/wiki/ioBroker-Card-Definitionen-(Seiten)#javascript-für-history-adapter-1

                          Ob du nu Influxdb2 oder History nutzen willst, sollte deine Entscheidung sein. Da History nichts anderes als Text auf die Platte (Filezugriffe sind in der Regel langsam) schreiben ist, dürfte Influx wohl um einiges performanter arbeiten.

                          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.

                          GregorSG 1 Antwort Letzte Antwort
                          1
                          • ArmilarA Armilar

                            @gregors

                            Wenn ich das richtig gesehen habe, hattest du eine Instanz: influxdb.1

                            Zumindest findet er das Bucket nicht.

                            Also Check auf:

                            • Instanznummer ggfs. auf 1
                            • im Query Bucket-Name (könnte bei dir ja abweichend von "iobroker" sein)

                            Aber für history.0 haben wir andere Scripte im Wiki:

                            https://github.com/joBr99/nspanel-lovelace-ui/wiki/ioBroker-Card-Definitionen-(Seiten)#javascript-für-history-adapter-1

                            Ob du nu Influxdb2 oder History nutzen willst, sollte deine Entscheidung sein. Da History nichts anderes als Text auf die Platte (Filezugriffe sind in der Regel langsam) schreiben ist, dürfte Influx wohl um einiges performanter arbeiten.

                            GregorSG Online
                            GregorSG Online
                            GregorS
                            schrieb am zuletzt editiert von
                            #6356

                            @armilar

                            Ich habe nur eine influxdb.0
                            Das History-Script nutze ich.
                            Es geht eigendlich um das Script um die Werte der Sensoren zu speichern.

                            INTEL NUC i7, Sonoff, hmIP, AVM, Jeelink, T-Link, Alexa, Saia-Burgess, uvm.

                            T 1 Antwort Letzte Antwort
                            0
                            • GregorSG GregorS

                              @armilar

                              Ich habe nur eine influxdb.0
                              Das History-Script nutze ich.
                              Es geht eigendlich um das Script um die Werte der Sensoren zu speichern.

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

                              @gregors
                              Wenn Du history nutzt, warum speicherst Du das dann in Influx??

                              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

                              GregorSG 1 Antwort Letzte Antwort
                              1
                              • T TT-Tom

                                @gregors
                                Wenn Du history nutzt, warum speicherst Du das dann in Influx??

                                GregorSG Online
                                GregorSG Online
                                GregorS
                                schrieb am zuletzt editiert von
                                #6358

                                @tt-tom
                                Habe das Script so übernommen.
                                Da ich in JS nicht fit bin, wusste ich nicht, was ich brauche und was nicht.
                                Wenn ich da was lösche funktioniert es nicht mehr, bzw ich bekomme Fehler

                                INTEL NUC i7, Sonoff, hmIP, AVM, Jeelink, T-Link, Alexa, Saia-Burgess, uvm.

                                ArmilarA 1 Antwort Letzte Antwort
                                0
                                • GregorSG GregorS

                                  @tt-tom
                                  Habe das Script so übernommen.
                                  Da ich in JS nicht fit bin, wusste ich nicht, was ich brauche und was nicht.
                                  Wenn ich da was lösche funktioniert es nicht mehr, bzw ich bekomme Fehler

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

                                  @gregors

                                  Wie werden denn nun die die Sensordaten gespeichert? Mit history.0 oder mit influx.0?

                                  Fakt ist, wenn keine Daten in einem der beiden abgespeichert werden, dann wird es wohl schwer diese Daten in einem Graphen anzuzeigen.

                                  Wenn in History, dann müssen sie auch mit dem History-Script ausgelesen werden und wenn InfluxDB2 dann natürlich mit dem Influx-Script.

                                  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.

                                  GregorSG 1 Antwort Letzte Antwort
                                  1
                                  • ArmilarA Armilar

                                    @gregors

                                    Wie werden denn nun die die Sensordaten gespeichert? Mit history.0 oder mit influx.0?

                                    Fakt ist, wenn keine Daten in einem der beiden abgespeichert werden, dann wird es wohl schwer diese Daten in einem Graphen anzuzeigen.

                                    Wenn in History, dann müssen sie auch mit dem History-Script ausgelesen werden und wenn InfluxDB2 dann natürlich mit dem Influx-Script.

                                    GregorSG Online
                                    GregorSG Online
                                    GregorS
                                    schrieb am zuletzt editiert von
                                    #6360

                                    @armilar
                                    Ich würde gerne history.0 nutzen.
                                    Es werden auch in History_Chart.Temp. ... Daten gespeichert, aber für alle 3 Temperaturfühler sind die Daten
                                    immer gleich aber unplausibel. Der Timestamp dagegen ist plausibel.
                                    Wie müsste ich dein Script ändern, damit die Daten in History.0 nutzen kann?
                                    Für das NSPanel habe ich das History-Script verwendet. Zeigt halt nur keine Daten an.

                                    const Debug = false;
                                    const NSPanel_Path = '0_userdata.0.NSPanel.';
                                    const Path = NSPanel_Path + 'History_Chart.Temp.';
                                    
                                    let   PathSensor = '';
                                    
                                    let SensorName = ['Temperatur AZ',
                                                      'Temperatur WZ',
                                                      'Temperatur Bad'];
                                    
                                    const Sensor = [].concat('hm-rpc.1.000A9BE990C516.1.ACTUAL_TEMPERATURE')  // Temperatur Arbeitszimmer
                                    
                                                     .concat('hm-rpc.1.000A9BE990CFC3.1.ACTUAL_TEMPERATURE')  // Temperatur Wohnzimmer
                                    
                                                     .concat('hm-rpc.1.000A9BE990C35D.1.ACTUAL_TEMPERATURE')  // Temperatur Badezimmer
                                    
                                    let   triggeredSensor = 0;
                                    const numberOfHoursAgo = 24;
                                    const xAxisTicksEveryM = 60;
                                    const xAxisLabelEveryM = 240;
                                    
                                    // Bis hierher funktioniert es noch !!! 
                                    
                                    const InfluxInstance = 'influxdb.0';
                                    // const InfluxInstance = 'influxdb.0';
                                    
                                    // Ab hier keine Ändeungen
                                    
                                    let coordinates = ''; 
                                    on({ id: Sensor, change: 'any' }, async function (obj) {
                                        if (Debug) console.log(obj.id);
                                        if (Debug) console.log(Sensor.indexOf(obj.id));
                                        if (Debug) console.log(SensorName[Sensor.indexOf(obj.id)])
                                         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) console.log('Query: ' + query);
                                        sendTo(InfluxInstance, 'query', query, function (result) {
                                            if (result.error) {
                                                console.error(result.error);
                                            } else {
                                                // show result
                                                if (Debug) console.log(result);
                                                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) console.log(coordinates);
                                                }
                                            }
                                        });
                                        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) 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
                                                    {
                                                        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) console.log('Ticks & Label: ' + ticksAndLabelsList);
                                                if (Debug) console.log('Coordinates: ' + coordinates);
                                                setState(PathSensor, ticksAndLabelsList.join('+') + '~' + coordinates, true);
                                            }, 
                                        1500
                                        ) ;
                                    });
                                    

                                    INTEL NUC i7, Sonoff, hmIP, AVM, Jeelink, T-Link, Alexa, Saia-Burgess, uvm.

                                    1 Antwort Letzte Antwort
                                    0
                                    • ArmilarA Offline
                                      ArmilarA Offline
                                      Armilar
                                      Most Active Forum Testing
                                      schrieb am zuletzt editiert von
                                      #6361

                                      @gregors sagte in SONOFF NSPanel mit Lovelace UI:

                                      habe das eben nochmal überflogen...

                                      Es geht eigendlich um das Script um die Werte der Sensoren zu speichern.

                                      Sensorwerte werden nicht über das Skript gespeichert, sondern über Einstellungen im jeweiligen Datenpunkt im ioBroker.

                                      Siehe Beispiel eines Sensors unter Objekte... Es gibt am Ende der Zeile ein Zahnrad:
                                      619d861d-f728-479a-96c7-7287efcc5d6b-image.png

                                      Wenn der entsprechende Adapter (InfluxDB oder History) installiert ist, dann kannst du da die Aufzeichnung durch aktivieren starten.

                                      aa6722e0-1e6c-4bd5-9073-de1c14a419f5-image.png

                                      Die Skripte im Wiki dienen nur zur Aufbereitung der jeweiligen (und bereits vorhandenen) Sensordaten der Datenbank für das NSPanel. Danach kann ein Info-ALIAS über den Ergebnis-String im 0_userdata.0. gelegt werden und einer CardLChart zugeordnet werden.

                                      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.

                                      GregorSG 2 Antworten Letzte Antwort
                                      2
                                      • ArmilarA Armilar

                                        @gregors sagte in SONOFF NSPanel mit Lovelace UI:

                                        habe das eben nochmal überflogen...

                                        Es geht eigendlich um das Script um die Werte der Sensoren zu speichern.

                                        Sensorwerte werden nicht über das Skript gespeichert, sondern über Einstellungen im jeweiligen Datenpunkt im ioBroker.

                                        Siehe Beispiel eines Sensors unter Objekte... Es gibt am Ende der Zeile ein Zahnrad:
                                        619d861d-f728-479a-96c7-7287efcc5d6b-image.png

                                        Wenn der entsprechende Adapter (InfluxDB oder History) installiert ist, dann kannst du da die Aufzeichnung durch aktivieren starten.

                                        aa6722e0-1e6c-4bd5-9073-de1c14a419f5-image.png

                                        Die Skripte im Wiki dienen nur zur Aufbereitung der jeweiligen (und bereits vorhandenen) Sensordaten der Datenbank für das NSPanel. Danach kann ein Info-ALIAS über den Ergebnis-String im 0_userdata.0. gelegt werden und einer CardLChart zugeordnet werden.

                                        GregorSG Online
                                        GregorSG Online
                                        GregorS
                                        schrieb am zuletzt editiert von
                                        #6362

                                        @armilar
                                        Ich glaube, ich habe es jetzt.
                                        Werde es heute abend mal umsetzen.

                                        INTEL NUC i7, Sonoff, hmIP, AVM, Jeelink, T-Link, Alexa, Saia-Burgess, uvm.

                                        1 Antwort Letzte Antwort
                                        2
                                        • ArmilarA Armilar

                                          SONOFF NSPanel Touch Display Switch

                                          mit Lovelace UI und TASMOTA Firmware

                                          60848839-53b0-4e2b-a370-28e02960bfcd-image.png

                                          Das Thema https://forum.iobroker.net/topic/50888/sonoff-nspanel/1542 wird hier jetzt fortgesetzt...

                                          An alle begeisterten NSPanel'er

                                          Dieser Thread soll sich jetzt ausschließlich mit den Fragen und Themen rund um das SONOFF NSPanel mit Lovelace UI beschäftigen.

                                          Wie alles begann:

                                          • 22.10.2021
                                            Blakadder's Dokumentation der Dekodierung des NSPanel-Kommunikationsprotokolls und Einrichtung der Steuerung des Nextion-Bildschirms mit benutzerdefinierter Firmware.
                                            https://blakadder.com/nspanel-hacking/
                                          • 01.01.2022
                                            Erste Gehversuche mit Blockly-Scripts auf der Original-Firmware nach einer ersten coolen Anleitung für den ioBroker von @haus-automatisierung.
                                          • ...
                                            Funkstille auf allen Kanälen, da das Panel in der Originalsoftware einfach zu wenig Funktionalität hat. Ein Vergleich mit "Jugend forscht" wäre maßlos übertrieben...
                                          • 15.01.2022
                                            @jobr99 Erstes POC von Lovelace Konzept mit ESPhome Komponente, da Nextion Upload Protcol unter tasmota nicht umsetzbar ist (berry tcpclient crashed ESP, HTTP Libary ist auf viel zu kleine Dateien limitiert)
                                          • 17.01.2022
                                            peepshow-21 Erste implementierung von Nextion Upload Protocol 1.1 mit Workaround für HTTP Libary über Java Converter um tft files für tasmota vorzubereiten
                                          • 20.01.2022
                                            s-hadinger fixt bug in berry tcpclient
                                          • 31.01.2022
                                            Erste Version für HomeAssistant mit Nodered und Tasmota
                                          • 08.02.2022
                                            @joBr99 Erste Implementierung von Nextion Upload Protokoll 1.2 in Berry basiertend auf HTTP Range Header Requests und lokalem Buffer (funktioniert nur mit -nspanel tasmota build uns PSRAM Support)
                                          • 12.02.2022
                                            peepshow-21 Implementierung von Nextion Upload Protocol 1.2 mit vollständigem Download und "streaming" zum Nextion Screen während dem Download
                                          • 05.03.2022
                                            @joBr99 Portierung von Node-Red Flow zu AppDaemon, da AppDaemon sich besser eignet zur Implementierung vom Backend
                                          • 13.03.2022
                                            @joBr99 Erste Version von Lovelace Berry Driver basierend auf Upload Protocol Implementierung von peepshow-21, da diese etwas stabiler läuft mit zusätzlichem Error Handling
                                          • 30.03.2022
                                            @joBr99 kommt mit der Info um die Ecke, dass es ein erstes Script v1.9.0 für den ioBroker von @Britzelpuf gibt. Zu diesem Zeitpunkt gab es bereits den Screensaver die Seitennavigation und die Möglichkeit eine Lampe, einen Dimmer eine Taste und eine Info, sowie die popUps für Licht (Brightness) und Shutter (Position) und einen Thermostaten zur Steuerung einzubinden.
                                          • 10.04.2022
                                            @joBr99 Firmware got bigger and bigger with >15 Minutes Flashing Time for the tft file
                                            Increased Flashing Speed of Berry Driver from 115200 to 921600 and added skipping to the End with HTTP Range Headers, resulted in faster display flashing
                                          • 11.04.2022
                                            @Armilar macht seine ersten Änderungen auf github und hört seit dem nicht mehr auf, weitere Funktionen in das TSScript hinzuzufügen... ;-)
                                            @joBr99 entwickelt die HMI und neue Funktionen für Home Assistant schneller als der Wind - und macht das Panel zur echten Bereicherung für jedes Smart Home :blush: :clap:

                                          heute

                                          • Eine der besten Community's die ich jemals erlebt habe. Hilfsbereit und kompetent wird jeder mit Hilfestellungen und Problemlösungen in kürzester Zeit versorgt.

                                          Es macht großen Spaß zusammen mit euch...

                                          VG
                                          Armilar


                                          Beispiele:

                                          09ae2c13-c606-4ef5-88dc-26fccd14dd85-image.png

                                          cf500331-70d8-4150-ac59-aabff1a27f7f-image.png

                                          a5dbb6f4-403b-4081-b2e9-a17cbc3af26c-image.png

                                          b41e2fed-abaa-4993-ae6f-2344f4e3afc8-image.png

                                          048fc1af-d72e-45fe-9102-688d40b2df18-image.png

                                          08edcab4-03b7-4c0f-923e-0f5b1c639cca-image.png

                                          ad94cddf-a0d0-40a7-971c-16504e8949fd-image.png

                                          263b23cc-d003-4af6-98b6-ed994c244890-image.png

                                          07373515-a92e-4cc9-b717-716e4fd4413f-image.png

                                          7c4a1f2f-26d7-4aeb-987d-3e30a671378d-image.png


                                          Features:

                                          • cardEntities für die Unterstützung diverser Steuerelemente (siehe Beispiele)
                                          • cardGrid (3x2-Raster) für die Unterstützung diverser Steuerelemente (siehe Beispiele)
                                          • cardGrid2 (4x2) für die Unterstützung diverser Steuerelemente (siehe Beispiele)
                                          • cardGrid3 (2x2) für die Unterstützung diverser Steuerelemente (siehe Beispiele)
                                          • cardPower zur Visualisierung der Energieverteilung
                                          • cardAlarm als Seite für Alarmanlagen
                                          • cardMedia - der Media-Player (Diverse Adapter)
                                          • cardThermo - Seite für Thermostat oder Klimaanlage
                                          • cardQR - Seite mit QRCode zur Anzeige von WLAN-Informationen
                                          • cardChart - Balkendiagramme
                                          • Detailseiten für Leuchtmittel (Helligkeit, Temperatur und Farbe)
                                          • Detailseite für Jalousien/Rollos (Position und Tilt)
                                          • Detailseite für Ventilatoren
                                          • Detailseite für Timer
                                          • Auswahl Detailseite für Werteliste
                                          • Bildschirmschonerseite mit Uhrzeit, Datum und Wetterinformationen oder/und Infos
                                          • Multilingual (unterstützt über 40 Sprachen)
                                          • Unbegrenzte Anzahl an Seiten und Unterseiten
                                          • Abfallkalender
                                          • Favoritenseiten
                                          • etc.

                                            ich glaube da ist eine verbesserte "cardMedia" in der Entwicklung - sieht cool aus...
                                            72571469-4a78-4caf-ba0e-7a67865bb13c-image.png

                                          NsPanel Lovelace UI ist eine Firmware für den Nextion-Bildschirm innerhalb des NSPanel.

                                          Die allgemeine Idee ist, dass das Nextion-Display einen Seitenzähler durchläuft und der ESP32 dem Display sagt, was zu tun ist. Alles ist dynamisch durch Alias-Erstellung konfigurierbar, es ist nicht erforderlich, Nextion Editor zu programmieren. Neben der Seiten-Definition sind im ioBroker keine Programmierkenntnisse erforderlich. Es ist im ioBroker ebenfalls kein Lovelace-Adapter erforderlich.

                                          Das Panel arbeitet mit Tasmota und MQTT. Um das Panel zu steuern und mit Inhalten von ioBroker zu aktualisieren, gibt es ein vordefiniertes TypeScript (TS) für den JavaScript-Adapter.


                                          Aktuelle Wiki (Anleitung) für den ioBroker

                                          https://github.com/joBr99/nspanel-lovelace-ui/wiki by @Kuckuckmann

                                          NsPanelTs.ts (TypeScript) für ioBroker v4.9.3.X

                                          zur Steuerung des SONOFF NSPanel mit dem ioBroker by @Armilar und @TT-Tom
                                          https://github.com/joBr99/nspanel-lovelace-ui/tree/main/ioBroker
                                          abgestimmt auf:

                                          • TFT 58 / v4.9.3 ( by @joBr99 / Armilar > 4.4.0)
                                          • BerryDriver 9 ( by peepshow-21 (based on code by blakadder and s-hadinger))
                                          • Tasmota 15.1.0 ( by Theo Arends ) --> Theo-Arends-Sonoff-MQTT-OTA

                                          Projekt:

                                          by @joBr99

                                          • main (Home Assistant - Version und Nextion HMI): https://github.com/joBr99/nspanel-lovelace-ui by @joBr99
                                          • ioBroker: https://github.com/joBr99/nspanel-lovelace-ui/tree/main/ioBroker by @Armilar (HA - Adaption)

                                          Icon-Mapper:

                                          • icon_mapping.ts:
                                            https://github.com/joBr99/nspanel-lovelace-ui/blob/main/ioBroker/icon_mapping.ts
                                            (TypeScript muss in global liegen)

                                          Icons:

                                          unter: https://docs.nspanel.pky.eu/icon-cheatsheet.html

                                          Video-Tutorial:

                                          https://www.youtube.com/watch?v=ZPLJk2ZLo_8 by @haus-automatisierung

                                          ? Offline
                                          ? Offline
                                          Ein ehemaliger Benutzer
                                          schrieb am zuletzt editiert von
                                          #6363

                                          @armilar

                                          Hi, bin gerade dabei, meine restlichen 8 Panels zu flashen und Programmieren..
                                          (flashen hat nach eurer Anleitung einwandfrei geklappt)

                                          Ist es moeglich, ein Display zu sperren, und per Skript frei zu schalten?
                                          Oder ist es moeglich, bestimmte Seiten (z.bsp. bei Anwesenheit) frei zu schalten?

                                          Ich habe im Treppenhaus 2 Panels, die ich gerne, je nach Anwesenheit, einschraenken moechte.. dachte, ich kann ja ein fuer ein Panel mehrere Scripte anlegen, und je nach bedarf, das eine deaktivieren und das andere dann aktivieren.. aber vielleicht gibts ja was schoeneres.. bin nicht so der Freund von de/aktiviert geschalteten Scripten..

                                          T ArmilarA 3 Antworten Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          682

                                          Online

                                          32.4k

                                          Benutzer

                                          81.4k

                                          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