Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Hardware
    4. SONOFF NSPanel mit Lovelace UI

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    SONOFF NSPanel mit Lovelace UI

    This topic has been deleted. Only users with topic management privileges can see it.
    • A
      australien @Armilar last edited by

      @armilar
      das Script PV liest nur meine xml in Datenpunkte

      const parser = require('xml2js').parseString;
      const url = 'http://10.68.0.85/measurements.xml';
      const idSolar = '0_userdata.0.SolarFrontier.';
      
      schedule('{"time":{"start":"sunrise","end":"sunset","mode":"minutes","interval":1},"period":{"days":1}}', function() { 
          request(url, function(error, response, result) {
              if(!error) parser(result, function(err, obj) {
                  if(!err) {
                      // log(obj); // Ausgabe posten!
                      const messung = obj.root.Device[0].Measurements[0].Measurement;
      
                      for(let obj of messung) {
                          // log(obj.$.Type + ': ' + parseFloat(obj.$.Value) + ' ' + obj.$.Unit);
                          if (existsState(idSolar + obj.$.Type)) setState(idSolar + obj.$.Type, parseFloat(obj.$.Value), true); 
                          else createState(idSolar + obj.$.Type, {name: obj.$.Type, type: 'number'});
                          }
                      }
              });
          });
      });
      
      
      Armilar T 2 Replies Last reply Reply Quote 0
      • Armilar
        Armilar Most Active Forum Testing @australien last edited by

        @australien

        und das funktioniert? Da fehlt ganz oben:

        const request = require('request');
        

        Du solltest mittelfristig in httpGet oder Axios umbauen...

        A T 2 Replies Last reply Reply Quote 0
        • A
          australien @Armilar last edited by

          @armilar bis jetzt hat es funktioniert, habe jetzt die Zeile eingefügt und die Empfehlung bekommen es auf httpGet umzubauen.

          Kenne mich leider nicht mit javascript aus und bin erst im Anfangstadium. Wo kann ich da etwas darüber (httpGet) nachlesen?

          Das Script wandelt wie gesagt xml in DP um.

          Armilar 1 Reply Last reply Reply Quote 0
          • T
            TT-Tom @Armilar last edited by TT-Tom

            @australien mit der neuen JavaScript Version ist request weggefallen. Stell um auf httpget.

            Gibt eine Menge Thread dazu schon. Schau mal ins JavaScript Verzeichnis

            1 Reply Last reply Reply Quote 1
            • T
              TT-Tom @australien last edited by

              @australien so aus dem stehgreif fällt result weg und response liefert jetzt alle Infos und Daten. response.data

              1 Reply Last reply Reply Quote 0
              • Armilar
                Armilar Most Active Forum Testing @australien last edited by Armilar

                @australien

                Als Ansatz für den Umbau

                httpGet('http://10.68.0.85/measurements.xml', { timeout: 2000, responseType: 'text' }, async (err, response) => {
                    console.info(response.statusCode);
                    console.info(response.data);
                });
                

                EDIT: Innerhalb der for-Schleife dürften auch noch ein paar Klammern rein:

                              for(let obj of messung) {
                                   if (existsState(idSolar + obj.$.Type)) {
                                       setState(idSolar + obj.$.Type, parseFloat(obj.$.Value), true);
                                   } else {
                                       createState(idSolar + obj.$.Type, {name: obj.$.Type, type: 'number'});
                                   }
                               }
                
                A 1 Reply Last reply Reply Quote 0
                • A
                  australien @Armilar last edited by

                  @armilar ich habe jetzt das daraus gemacht, funktioniert.
                  oder kann ich die zweiter ?err auch noch weglassen?

                  const parser = require('xml2js').parseString;
                  const url = 'http://10.68.0.85/measurements.xml';
                  const idSolar = '0_userdata.0.SolarFrontier.';
                  
                  schedule('{"time":{"start":"sunrise","end":"sunset","mode":"minutes","interval":1},"period":{"days":1}}', function() { 
                  	httpGet(url, { timeout: 2000, responseType: 'text' }, async (err, response) => {
                  		// console.info(response.statusCode);
                  		 console.info(response.data);
                  		if(!err) parser(response.data, function(err, obj) {
                  			if(!err) {
                  				const messung = obj.root.Device[0].Measurements[0].Measurement;
                  				for(let obj of messung) {
                  					if (existsState(idSolar + obj.$.Type)) {
                  						setState(idSolar + obj.$.Type, parseFloat(obj.$.Value), true);
                  					   } 
                  					else {createState(idSolar + obj.$.Type, {name: obj.$.Type, type: 'number'});}
                  					   }
                  			}
                  		});
                  	});
                  });
                  
                  Armilar 1 Reply Last reply Reply Quote 0
                  • Armilar
                    Armilar Most Active Forum Testing @australien last edited by

                    @australien

                    macht aus meiner Sicht schon Sinn, da es zwei völlig unterschiedliche Funktionen sind. Wäre jetzt also, wenn erfolgreich abgeholt und geparsed, dann nur verarbeiten... Passt

                    A 1 Reply Last reply Reply Quote 0
                    • A
                      australien @Armilar last edited by

                      @armilar danke! auch and @TT-Tom

                      1 Reply Last reply Reply Quote 1
                      • J
                        Joker @Armilar last edited by

                        @armilar said in SONOFF NSPanel mit Lovelace UI:

                        @joker

                        f75c2150-591c-41df-95ed-fd92e47f7ab3-image.png

                        Nimm da mal das ".ACTUAL" raus. Das ermittelt das Script selbst, sofern der ALIAS korrekt ist.

                        Das hat super geklappt, das war der entscheidene Hinweis, Eine Frage habe ich noch, vielleicht will ich auch zuviel.
                        Wenn ich die PowerCard mit dem Screensaver verwende, aktualisieren sich die Verbrauchswerte nicht, obwohl der Jason Datenpunkt neu beschrieben wird. Bei Screen always on, aktualisieren sich die Verbrauchswerte. Gibt es da einen Befehl für, das sich die Card neu lädt? Oder gibt es die Funktion nicht? Wichtig für die Funktion ist es nicht, sieht aber Schick aus.

                        Viele Grüße

                        Armilar 1 Reply Last reply Reply Quote 0
                        • Armilar
                          Armilar Most Active Forum Testing @Joker last edited by

                          @joker

                          geht nur bei alwaysOn - gibt da auch keinen Befehl. Ansonsten würde die komplette Seite immer wieder gerendert werden. Du brauchst die Seite aber nur wieder verlassen, damit der Screensaver kommt...

                          J 1 Reply Last reply Reply Quote 0
                          • J
                            Joker @Armilar last edited by

                            @armilar said in SONOFF NSPanel mit Lovelace UI:

                            @joker

                            geht nur bei alwaysOn - gibt da auch keinen Befehl. Ansonsten würde die komplette Seite immer wieder gerendert werden. Du brauchst die Seite aber nur wieder verlassen, damit der Screensaver kommt...

                            das heißt, wenn ich das NSPanel nur als Anzeige für den Energiefluss nutzen möchte, brauch ich einen Workaround

                            1. Page Energiefluss -> IoBroker erkennt Screensaver off -> Iobroker Page wechseln auf 2. Page Energiefluss always on
                              -> Iobroker nach ablauf timer -> Iobroker Page wechseln auf 1. Page -> Screensaverzeit NSPanel auf 2sec.

                            Ob das klappt, eigentlich was für lange Winterabende..

                            Trotzdem ist das ein so mächtiges Script, wahnsinn was man aus so einen NSPanel alles rausholen kann - Respekt!

                            1 Reply Last reply Reply Quote 0
                            • A
                              adsfa last edited by adsfa

                              Guten morgen,
                              hat mal jemand versucht einen Snapshot eines Kamerabildes auf dem Display anzuzeigen?
                              Macht das Sinn oder ist die Qualität zu gering?
                              Die Idee ist es, das wenn geklingelt wird (Reolink POE Doorbell) ein Snapshot auf allen NS Panels angezeigt wird. Muss kein Videostream sein, man soll ja nur sehen wer da ist und nicht jede Bewegung.
                              Danke 🙂

                              T 1 Reply Last reply Reply Quote 0
                              • T
                                TT-Tom @adsfa last edited by

                                @adsfa es gehen keine Bilder, ob bewegt oder statisch.

                                A 1 Reply Last reply Reply Quote 2
                                • A
                                  adsfa @TT-Tom last edited by

                                  @tt-tom hmm schade. Danke dir trotzdem

                                  1 Reply Last reply Reply Quote 0
                                  • F
                                    Foradh 0 last edited by Foradh 0

                                    Hallo zusammen,
                                    ich möchte aktuell meine Panels auf den "Advanced Screensaver" umstellen.
                                    Hat soweit auch alles wunderbar funktioniert, nur bei 2 Sachen habe ich so meine Probleme.

                                    Problem 1 in leftScreensaverEntity:
                                    Ich würde hier gerne als ersten Eintrag die Temperatur des Analogsensors angezeigt bekommen wobei die Farbe des Icons in Abhängigkeit des Relais1 grün (Relais aus) und rot (Relais an) sein soll.
                                    Hierbei wollte ich folgenden Code verwenden:

                                                ScreensaverEntity: NSPanel_Path + 'Relay.1', 
                                                ScreensaverEntityFactor: 1,
                                                ScreensaverEntityDecimalPlaces: 1,
                                                ScreensaverEntityIconOn: 'thermometer',
                                                ScreensaverEntityIconOff: 'thermometer',
                                                ScreensaverEntityValue: NSPanel_Path + 'Sensor.ANALOG.Temperature',
                                                ScreensaverEntityValueDecimalPlace : 1,
                                                ScreensaverEntityValueUnit: '°C',
                                                ScreensaverEntityOnColor: Red,
                                                ScreensaverEntityOffColor: Green
                                    

                                    Leider wird hier bereits im Code die Zeile mit "ScreensaverEntityValue: NSPanel_Path + 'Sensor.ANALOG.Temperature" unterringelt da es wohl für diesen Bereich nicht zulässig ist. Gibt es hier eine Lösung das anders umzusetzen?

                                    Problem 2 in indicatorScreensaverEntity:
                                    Hier scheitere ich mir ein rotes Icon anzeigen zu lassen wenn der verknüpfte Datenpunkt auf "true" steht. Bei "false" soll nichts angezeigt werden.
                                    Code:

                                                    ScreensaverEntity: 'robonect.0.status.stopped',
                                                    ScreensaverEntityFactor: 1,
                                                    ScreensaverEntityDecimalPlaces: 0,
                                                    ScreensaverEntityIconOn: 'robot-mower',
                                                    ScreensaverEntityIconOff: null,
                                                    ScreensaverEntityText: 'Rasenmäher',
                                                    ScreensaverEntityUnitText: '',
                                                    ScreensaverEntityIconColor: Red
                                    

                                    Hier wird bei mir im false Zustand immer ein grünes Icon angezeigt und meine laienhaften Versuche das Problem zu lösen sind bisher gescheitert. Bei true wird das Icon wie gewollt rot.

                                    Schonmal Danke vorab für die Hilfe.

                                    Beste Grüße
                                    Foradh

                                    Armilar 1 Reply Last reply Reply Quote 0
                                    • A
                                      AXMLM last edited by

                                      Habe ein Problem mit dem aktuellem Skript. Auf Tasmota13.4 lief alles einwandfrei.

                                      Habe jetzt auf 14.1 aktualisiert. Erst lief der Skript gar nicht, weil im Screensaver die Farbe von einem Icon nicht gepasst hat. Seit ich es gefunden und korrigiert habe, läuft der Skript zwar einige Minuten und steigt dann aus mit ERROR: "1000 anfragen pro Minute" Meldung. Neu hinzugekommen ist ein Shelly Gen2. Den habe ich aus dem Skript geschmissen, hat aber nichts bewirkt. Bin kein Programmierer, arbeite also auf Copy Paste Basis. Es ist also seht schwer für mich nach Fehler zu suchen. Kann mich einer durchlotsen?

                                      icebear 1 Reply Last reply Reply Quote 0
                                      • icebear
                                        icebear @AXMLM last edited by

                                        @axmlm

                                        Hilfreich wäre, wenn du die Fehler hier posten würdest, am besten Copy und Paste und das wichtigste ist das ganze in 'Code-Tags' (siehe oben </>)

                                        A 1 Reply Last reply Reply Quote 2
                                        • Armilar
                                          Armilar Most Active Forum Testing @Foradh 0 last edited by Armilar

                                          @foradh-0 sagte in SONOFF NSPanel mit Lovelace UI:

                                          Leider wird hier bereits im Code die Zeile mit "ScreensaverEntityValue: NSPanel_Path + 'Sensor.ANALOG.Temperature" unterringelt da es wohl für diesen Bereich nicht zulässig ist

                                          zu 1)
                                          Stimmt, Value funktioniert nur bei den MR-Icons. Kannst du über Umwege, wie den Abfall-Alias, realisieren.

                                          zu 2)

                                          ScreensaverEntityIconOff: '',
                                          
                                          F 1 Reply Last reply Reply Quote 1
                                          • F
                                            Foradh 0 @Armilar last edited by Foradh 0

                                            @armilar
                                            Super, vielen Dank für die schnelle Hilfe. Funktioniert beides einwandfrei.
                                            Könntest du mir vl. noch den Farbcode für das Grün geben welches standardmäßig für die Icons verwendet wird? 2016 vom Abfallkalender ist doch etwas zu grell 😉
                                            Bzw. welche Art Farbcode wird hier verwendet?

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            859
                                            Online

                                            31.8k
                                            Users

                                            79.9k
                                            Topics

                                            1.3m
                                            Posts

                                            lovelace ui nspanel sonoff
                                            265
                                            7292
                                            5000626
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo