Ankündigung

Einklappen
Keine Ankündigung bisher.

Eigenes Widget für Energieflussanalyse

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Eigenes Widget für Energieflussanalyse

    Hallo,

    für die Feiertage hatte ich mir vorgenommen, mal ein eigenes Widget für die PV Visualisierung zu schreiben. Genauer der Energiefluss. Leider scheitert es bei mir an der Verbindung zwischen "Standard HTML / SVG" und smartVISU. Ach ja, die Idee habe ich aus dem SMA Portal.

    Ich weiß auch, dass es schon Versuche gibt, aber wie es so ist, hat man eigene Vorstellungen.

    Vielleicht könnte Ihr mir auf dem Weg helfen die technischen Hürden zu lösen.

    Zum Vorgehen. Ich habe ein großes SVG für die fünf Mitspieler: PV, Grid, Home, Vehicle und Battery. Es gibt Energyfluss zwischen fast allen Elementen:
    grafik.png
    (Hier nur Screenshot, SVG wollte er nicht hochladen. Die Schwarzen Boxen werden durch Icon ersetzt)
    Darüber habe ich jetzt zum Testen vier Eingabefelder für die momentaten Leistungswerte. Bei Buttonklick schalte ich per jQuery die Sichtbarkeiten der Pfeile.
    (Der Code ich leider schon länger, als HTML abspeichern reicht aber zum ausführen)

    => Wie kriege ich das jetzt mit den Items für die Werte verbunden, geupdated und als Teil von smartVisu bei mir verteilt?

    HTML-Code:
    <html>
    <body>
    <label>PV</label>
    <input type="number" id="pv" name="pv"><br><br>
    <label>Grid</label>
    <input type="number" id="grid" name="grid"><br><br>
    <label>Vehicle</label>
    <input type="number" id="vehicle" name="vehicle"><br><br>
    <label>Battery</label>
    <input type="number" id="battery" name="battery"><br><br>
    <button onclick="myFunction()">Click me</button>
    <svg width="500" height="500" xmlns="http://www.w3.org/2000/svg">
    <defs>
        <path id="pathPvToGrid" d="M212.5,110 v80 a20,20 0 0 1 -20,20 h-82.5"/>
        <linearGradient id="pathPvToGridColor" x1="100%" y1="0%" x2="0%" y2="100%">
            <stop offset="0" stop-color="orange" />
            <stop offset="1" stop-color="#00aa00" />
        </linearGradient>
        <path id="pathPvToHome" d="M237.5,110 v100 a20,20 0 0 1 -20,20 h-22.5 a20,20 0 0 0 -20, 20 v140"/>
        <linearGradient id="pathPvToHomeColor" x1="0%" y1="0%" x2="0%" y2="100%">
            <stop offset="0" stop-color="orange" />
            <stop offset="1" stop-color="black" />
        </linearGradient>
        <path id="pathPvToVehicle" d="M262.5,110 v100 a20,20 0 0 0 20,20 h22.5 a20,20 0 0 1 20, 20 v140"/>
        <linearGradient id="pathPvToVehicleColor" x1="0%" y1="0%" x2="0%" y2="100%">
            <stop offset="0" stop-color="orange" />
            <stop offset="1" stop-color="#cccccc" />
        </linearGradient>
        <path id="pathPvToBattery" d="M287.5,110 v82.5 a20,20 0 0 0 20,20 h82.5"/>
        <linearGradient id="pathPvToBatteryColor" x1="0%" y1="0%" x2="100%" y2="100%">
            <stop offset="0" stop-color="orange" />
            <stop offset="1" stop-color="#00ffff" />
        </linearGradient>    
        <path id="pathGridToBattery" d="M110,230 L390,230.002"/>
        <linearGradient id="pathGridToBatteryColor" x1="0%" y1="0%" x2="100%" y2="0%">
            <stop offset="0" stop-color="red" />
            <stop offset="1" stop-color="#00ffff" />
        </linearGradient>
        <path id="pathBatteryToGrid" d="M390,250 L110,250.002"/>
        <linearGradient id="pathBatteryToGridColor" x1="100%" y1="0%" x2="0%" y2="0%">
            <stop offset="0" stop-color="#ffff00" />
            <stop offset="1" stop-color="#00aa00" />
        </linearGradient>    
        <path id="pathGridToHome" d="M110,290 h11.667 a20,20 0 0 1 20,20 v80"/>
        <linearGradient id="pathGridToHomeColor" x1="0%" y1="0%" x2="100%" y2="100%">
            <stop offset="0" stop-color="red" />
            <stop offset="1" stop-color="black" />
        </linearGradient>
        <path id="pathGridToVehicle" d="M110,270 h161.667 a20,20 0 0 1 20,20 v100"/>
        <linearGradient id="pathGridToVehicleColor" x1="0%" y1="0%" x2="100%" y2="100%">
            <stop offset="0" stop-color="red" />
            <stop offset="1" stop-color="#cccccc" />
        </linearGradient>
        <path id="pathBatteryToHome" d="M390,270 h-161.667 a20,20 0 0 0 -20,20 v100"/>
        <linearGradient id="pathBatteryToHomeColor" x1="100%" y1="0%" x2="0%" y2="100%">
            <stop offset="0" stop-color="#ffff00" />
            <stop offset="1" stop-color="black" />
        </linearGradient>
        <path id="pathBatteryToVehicle" d="M390,290 h-11.667 a20,20 0 0 0 -20,20 v80"/>
        <linearGradient id="pathBatteryToVehicleColor" x1="100%" y1="0%" x2="0%" y2="100%">
            <stop offset="0" stop-color="#ffff00" />
            <stop offset="1" stop-color="#cccccc" />
        </linearGradient>
        <marker id="arrowGrid" viewBox="0 0 10 10" refX="10" refY="5" markerWidth="5" markerHeight="5" orient="auto">
            <path d="M 0 0 L 10 5 L 0 10" stroke="#00aa00" fill="transparent" stroke-width="2" />
        </marker>
        <marker id="arrowHome" viewBox="0 0 10 10" refX="10" refY="5" markerWidth="5" markerHeight="5" orient="auto">
            <path d="M 0 0 L 10 5 L 0 10" stroke="black" fill="transparent" stroke-width="2" />
        </marker>
        <marker id="arrowVehicle" viewBox="0 0 10 10" refX="10" refY="5" markerWidth="5" markerHeight="5" orient="auto">
            <path d="M 0 0 L 10 5 L 0 10" stroke="#cccccc" fill="transparent" stroke-width="2" />
        </marker>
        <marker id="arrowBattery" viewBox="0 0 10 10" refX="10" refY="5" markerWidth="5" markerHeight="5" orient="auto">
            <path d="M 0 0 L 10 5 L 0 10" stroke="#00ffff" fill="transparent" stroke-width="2" />
        </marker>
    </defs>
    <rect x="0" y="0" width="500" height="500" fill="#666" />
    <rect x="200" y="0" width="100" height="100"/>
    <rect x="0" y="200" width="100" height="100"/>
    <rect x="400" y="200" width="100" height="100"/>
    <rect x="125" y="400" width="100" height="100"/>
    <rect x="275" y="400" width="100" height="100"/>
    <g id="pvToGrid">
        <use href="#pathPvToGrid" fill="none" stroke="url('#pathPvToGridColor')" stroke-width="2" marker-end='url(#arrowGrid)'/>
        <circle cx="0" cy="0" r="5">
            <animateMotion begin="0s" dur="3s" repeatCount="indefinite" >
                <mpath href="#pathPvToGrid"/>
            </animateMotion>
            <animate attributeName="fill" from="orange" to="#00aa00" dur="3s" repeatCount="indefinite" />
        </circle>
        <circle cx="0" cy="0" r="4">
            <animateMotion begin="0.25s" dur="3s" repeatCount="indefinite" >
                <mpath href="#pathPvToGrid"/>
            </animateMotion>
            <animate attributeName="fill" from="orange" to="#00aa00" begin="0.25s" dur="3s" repeatCount="indefinite" />
        </circle>
        <circle cx="0" cy="0" r="3">
            <animateMotion begin="0.5s" dur="3s" repeatCount="indefinite" >
                <mpath href="#pathPvToGrid"/>
            </animateMotion>
            <animate attributeName="fill" from="orange" to="#00aa00" begin="0.5s" dur="3s" repeatCount="indefinite" />
        </circle>
    </g>
    <g id="pvToHome">
        <use href="#pathPvToHome" fill="none" stroke="url('#pathPvToHomeColor')" stroke-width="2" marker-end='url(#arrowHome)'/>
        <circle cx="0" cy="0" r="5">
            <animateMotion begin="0s" dur="5s" repeatCount="indefinite" >
                <mpath href="#pathPvToHome"/>
            </animateMotion>
            <animate attributeName="fill" from="orange" to="black" dur="5s" repeatCount="indefinite" />
        </circle>
        <circle cx="0" cy="0" r="4">
            <animateMotion begin="0.25s" dur="5s" repeatCount="indefinite" >
                <mpath href="#pathPvToHome"/>
            </animateMotion>
            <animate attributeName="fill" from="orange" to="black" begin="0.25s" dur="5s" repeatCount="indefinite" />
        </circle>
        <circle cx="0" cy="0" r="3">
            <animateMotion begin="0.5s" dur="5s" repeatCount="indefinite" >
                <mpath href="#pathPvToHome"/>
            </animateMotion>
            <animate attributeName="fill" from="orange" to="black" begin="0.5s" dur="5s" repeatCount="indefinite" />
        </circle>
    </g>
    <g id="pvToVehicle">
        <use href="#pathPvToVehicle" fill="none" stroke="url('#pathPvToVehicleColor')" stroke-width="2" marker-end='url(#arrowVehicle)'/>
        <circle cx="0" cy="0" r="5">
            <animateMotion begin="0s" dur="5s" repeatCount="indefinite" >
                <mpath href="#pathPvToVehicle"/>
            </animateMotion>
            <animate attributeName="fill" from="orange" to="#cccccc" dur="5s" repeatCount="indefinite" />
        </circle>
        <circle cx="0" cy="0" r="4">
            <animateMotion begin="0.25s" dur="5s" repeatCount="indefinite" >
                <mpath href="#pathPvToVehicle"/>
            </animateMotion>
            <animate attributeName="fill" from="orange" to="#cccccc" begin="0.25s" dur="5s" repeatCount="indefinite" />
        </circle>
        <circle cx="0" cy="0" r="3">
            <animateMotion begin="0.5s" dur="5s" repeatCount="indefinite" >
                <mpath href="#pathPvToVehicle"/>
            </animateMotion>
            <animate attributeName="fill" from="orange" to="#cccccc" begin="0.5s" dur="5s" repeatCount="indefinite" />
        </circle>
    </g>
    <g id="pvToBattery">
        <use href="#pathPvToBattery" fill="none" stroke="url('#pathPvToBatteryColor')" stroke-width="2" marker-end='url(#arrowBattery)'/>
        <circle cx="0" cy="0" r="5">
            <animateMotion begin="0s" dur="3s" repeatCount="indefinite" >
                <mpath href="#pathPvToBattery"/>
            </animateMotion>
            <animate attributeName="fill" from="orange" to="#00ffff" dur="3s" repeatCount="indefinite" />
        </circle>
        <circle cx="0" cy="0" r="4">
            <animateMotion begin="0.25s" dur="3s" repeatCount="indefinite" >
                <mpath href="#pathPvToBattery"/>
            </animateMotion>
            <animate attributeName="fill" from="orange" to="#00ffff" begin="0.25s" dur="3s" repeatCount="indefinite" />
        </circle>
        <circle cx="0" cy="0" r="3">
            <animateMotion begin="0.5s" dur="3s" repeatCount="indefinite" >
                <mpath href="#pathPvToBattery"/>
            </animateMotion>
            <animate attributeName="fill" from="orange" to="#00ffff" begin="0.5s" dur="3s" repeatCount="indefinite" />
        </circle>
    </g>
    <g id="gridToBattery">
        <use href="#pathGridToBattery" fill="none" stroke="url(#pathGridToBatteryColor)" stroke-width="2" marker-end='url(#arrowBattery)'/>
        <circle cx="0" cy="0" r="5">
            <animateMotion begin="0s" dur="4s" repeatCount="indefinite" >
                <mpath href="#pathGridToBattery"/>
            </animateMotion>
            <animate attributeName="fill" from="red" to="#00ffff" dur="4s" repeatCount="indefinite" />
        </circle>
        <circle cx="0" cy="0" r="4">
            <animateMotion begin="0.25s" dur="4s" repeatCount="indefinite" >
                <mpath href="#pathGridToBattery"/>
            </animateMotion>
            <animate attributeName="fill" from="red" to="#00ffff" begin="0.25s" dur="4s" repeatCount="indefinite" />
        </circle>
        <circle cx="0" cy="0" r="3">
            <animateMotion begin="0.5s" dur="4s" repeatCount="indefinite" >
                <mpath href="#pathGridToBattery"/>
            </animateMotion>
            <animate attributeName="fill" from="red" to="#00ffff" begin="0.5s" dur="4s" repeatCount="indefinite" />
        </circle>
    </g>
    <g id="batteryToGrid">
        <use href="#pathBatteryToGrid" fill="none" stroke="url(#pathBatteryToGridColor)" stroke-width="2" marker-end='url(#arrowGrid)'/>
        <circle cx="0" cy="0" r="5">
            <animateMotion begin="0s" dur="4s" repeatCount="indefinite" >
                <mpath href="#pathBatteryToGrid"/>
            </animateMotion>
            <animate attributeName="fill" from="#ffff00" to="#00aa00" dur="4s" repeatCount="indefinite" />
        </circle>
        <circle cx="0" cy="0" r="4">
            <animateMotion begin="0.25s" dur="4s" repeatCount="indefinite" >
                <mpath href="#pathBatteryToGrid"/>
            </animateMotion>
            <animate attributeName="fill" from="#ffff00" to="#00aa00" begin="0.25s" dur="4s" repeatCount="indefinite" />
        </circle>
        <circle cx="0" cy="0" r="3">
            <animateMotion begin="0.5s" dur="4s" repeatCount="indefinite" >
                <mpath href="#pathBatteryToGrid"/>
            </animateMotion>
            <animate attributeName="fill" from="#ffff00" to="#00aa00" begin="0.5s" dur="4s" repeatCount="indefinite" />
        </circle>
    </g>
    <g id="gridToHome">
        <use href="#pathGridToHome" fill="none" stroke="url(#pathGridToHomeColor)" stroke-width="2" marker-end='url(#arrowHome)'/>
        <circle cx="0" cy="0" r="5">
            <animateMotion begin="0s" dur="2s" repeatCount="indefinite" >
                <mpath href="#pathGridToHome"/>
            </animateMotion>
            <animate attributeName="fill" from="red" to="black" dur="2s" repeatCount="indefinite" />
        </circle>
        <circle cx="0" cy="0" r="4">
            <animateMotion begin="0.25s" dur="2s" repeatCount="indefinite" >
                <mpath href="#pathGridToHome"/>
            </animateMotion>
            <animate attributeName="fill" from="red" to="black" begin="0.25s" dur="2s" repeatCount="indefinite" />
        </circle>
        <circle cx="0" cy="0" r="3">
            <animateMotion begin="0.5s" dur="2s" repeatCount="indefinite" >
                <mpath href="#pathGridToHome"/>
            </animateMotion>
            <animate attributeName="fill" from="red" to="black" begin="0.5s" dur="2s" repeatCount="indefinite" />
        </circle>
    </g>
    <g id="gridToVehicle">
        <use href="#pathGridToVehicle" fill="none" stroke="url(#pathGridToVehicleColor)" stroke-width="2" marker-end='url(#arrowVehicle)'/>
        <circle cx="0" cy="0" r="5">
            <animateMotion begin="0s" dur="4s" repeatCount="indefinite" >
                <mpath href="#pathGridToVehicle"/>
            </animateMotion>
            <animate attributeName="fill" from="red" to="#cccccc" dur="4s" repeatCount="indefinite" />
        </circle>
        <circle cx="0" cy="0" r="4">
            <animateMotion begin="0.25s" dur="4s" repeatCount="indefinite" >
                <mpath href="#pathGridToVehicle"/>
            </animateMotion>
            <animate attributeName="fill" from="red" to="#cccccc" begin="0.25s" dur="4s" repeatCount="indefinite" />
        </circle>
        <circle cx="0" cy="0" r="3">
            <animateMotion begin="0.5s" dur="4s" repeatCount="indefinite" >
                <mpath href="#pathGridToVehicle"/>
            </animateMotion>
            <animate attributeName="fill" from="red" to="#cccccc" begin="0.5s" dur="4s" repeatCount="indefinite" />
        </circle>
    </g>
    <g id="batteryToHome">
        <use href="#pathBatteryToHome" fill="none" stroke="url(#pathBatteryToHomeColor)" stroke-width="2" marker-end='url(#arrowHome)'/>
        <circle cx="0" cy="0" r="5">
            <animateMotion begin="0s" dur="4s" repeatCount="indefinite" >
                <mpath href="#pathBatteryToHome"/>
            </animateMotion>
            <animate attributeName="fill" from="#ffff00" to="black" dur="4s" repeatCount="indefinite" />
        </circle>
        <circle cx="0" cy="0" r="4">
            <animateMotion begin="0.25s" dur="4s" repeatCount="indefinite" >
                <mpath href="#pathBatteryToHome"/>
            </animateMotion>
            <animate attributeName="fill" from="#ffff00" to="black" begin="0.25s" dur="4s" repeatCount="indefinite" />
        </circle>
        <circle cx="0" cy="0" r="3">
            <animateMotion begin="0.5s" dur="4s" repeatCount="indefinite" >
                <mpath href="#pathBatteryToHome"/>
            </animateMotion>
            <animate attributeName="fill" from="#ffff00" to="black" begin="0.5s" dur="4s" repeatCount="indefinite" />
        </circle>
    </g>
    <g id="batteryToVehicle">
        <use href="#pathBatteryToVehicle" fill="none" stroke="url(#pathBatteryToVehicleColor)" stroke-width="2" marker-end='url(#arrowVehicle)'/>
        <circle cx="0" cy="0" r="5">
            <animateMotion begin="0s" dur="2s" repeatCount="indefinite" >
                <mpath href="#pathBatteryToVehicle"/>
            </animateMotion>
            <animate attributeName="fill" from="#ffff00" to="#cccccc" dur="2s" repeatCount="indefinite" />
        </circle>
        <circle cx="0" cy="0" r="4">
            <animateMotion begin="0.25s" dur="2s" repeatCount="indefinite" >
                <mpath href="#pathBatteryToVehicle"/>
            </animateMotion>
            <animate attributeName="fill" from="#ffff00" to="#cccccc" begin="0.25s" dur="2s" repeatCount="indefinite" />
        </circle>
        <circle cx="0" cy="0" r="3">
            <animateMotion begin="0.5s" dur="2s" repeatCount="indefinite" >
                <mpath href="#pathBatteryToVehicle"/>
            </animateMotion>
            <animate attributeName="fill" from="#ffff00" to="#cccccc" begin="0.5s" dur="2s" repeatCount="indefinite" />
        </circle>
    </g>
    </svg>
    
    </body>
    <script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
    <script>
    function myFunction() {
        let pv = $("#pv").val();
        let grid = $("#grid").val();
        let vehicle = $("#vehicle").val();
        let battery = $("#battery").val();
        update(pv, grid, vehicle, battery);
    };
    function update(pv, grid, vehicle, battery)
    {
        let home = - pv - grid - vehicle - battery;
        $('#pvToGrid').toggle(pv > 0 && grid < 0);
        $('#pvToHome').toggle(pv > 0 && home < 0);
        $('#pvToVehicle').toggle(pv > 0 && vehicle < 0);
        $('#pvToBattery').toggle(pv > 0 && battery < 0);
        $('#gridToHome').toggle(grid > 0 && home < 0);
        $('#gridToVehicle').toggle(grid > 0 && vehicle < 0);
        $('#gridToBattery').toggle(grid > 0 && battery < 0);
        $('#batteryToGrid').toggle(battery > 0 && grid < 0);
        $('#batteryToHome').toggle(battery > 0 && home < 0);
        $('#batteryToVehicle').toggle(battery > 0 && vehicle < 0);
    };
    </script>
    </html>
    Zuletzt geändert von aldaris; 08.01.2025, 18:35.

    #2
    Moin aldaris,

    hier gibt es eine Beschreibung, wie man eigene Widgets erstellt. Im Code oben kann man alles vor dem <svg... löschen und durch die Macro-Definition ersetzen. Dort werden pv, grid, vehicle und battery als items übergeben und in "data-item" zusammengefasst, wie im Wiki-Artikel beschrieben. Dann die update-Funktion in eine .js-Datei mit der beschriebenen Widget-Struktur auslagern.

    Als Vorlage können die Inverter-Widgets hier dienen.

    Gruß
    Wolfram

    Kommentar


      #3
      Hi Wolfram,

      vielen Dank für deine Infos. Ich bin tatsächlich ein gutes Stück weiter. Leider bleibe ich an zwei "Unschönheiten" hängen:
      1) Ich habe erstmal die Signatur der inverter_overview widgets übernommen zum probieren
      Code:
      sv_widget: "{{inverter.inverter_overview('1', 'Haus.Zentral.Zentral.PhotovoltaikPower.PV', 'Haus.Zentral.Zentral.PhotovoltaikPower.Netz', 'Haus.Zentral.Zentral.PhotovoltaikPower.Auto', 'Haus.Zentral.Zentral.PhotovoltaikPower.Akku') }>
      ​
      Dazu dann den Code aus dem js Teil von "inverter"
      Code:
      var items = this.options.item.explode();
              var values = new Array(this.items.length);
              var j=0;
              for (var i = 0; i < items.length; i++) {
                  if (items[i] != '') {
                      values[i] = response[j];
                      j++;
                  } else
                      values[i] = this.defaults[i];
              };    ​
      Wenn ich das debugge, sind die Werte und eine Stelle verrutscht:
      grafik.png
      Ich sehe gerade nicht, wo das "", vorne herkommt. Ich kann den Index einen hochdrehen, aber im Sinne des Erfinders ist das ja nicht

      2) Das funktioniert in meinem Desktop Browser. Auf dem Handy laufen alle Pfeile, das ist der Default. Also klappt auf dem Handy vermutlich der js Code nicht.
      Sieht jemand das oder kann mir einen Tipp geben, wie man das auf Android debuggt?

      Besten Gruß
      Aldaris

      Kommentar


        #4
        Hi aldaris,

        das "" kommt daher, dass das Widget im Data-Item fünf Werte erwartet :

        Code:
        data-item="{{ gad_soc }}, {{ gad_pv_power }}, {{ gad_grid_power }}, {{ gad_house_power }}, {{ gad_battery_power }}">
        steht so in der " inverter.html".

        Um auf dem Android-Device zu debuggen musst Du adb-Debugging verwenden. Unter Windows die Android Debug Bridge (ADB) und ein geeignetes Entwicklertool installieren. Siehe auch hier

        Wenn Deine Seite von extern erreichbar ist (reverse Proxy), kannst Du auch Online mit Browserstack debuggen. Wir haben dort für die smartVisu einen Opensource
        Account. Bei Bedarf kann ich dich dort als User eintragen. Dazu würde ich Deine mail-Adresse benötigen - gerne per PN senden.

        Viele Grüße
        Andre

        Kommentar


          #5
          Moin @Aldaris,

          im Widget inverter_overview stimmt die Reihenfolge der items in den Widget-Parametern nicht mit der Reihenfolge im Attribut „data-item“ überein. Da Du weniger Parameter verwendest, ist „gad_soc“ leer und schiebt den leeren String vorne ins data-item. Das musst du umsortieren, also „gad_soc“ vorne aus data-item wegnehmen.

          EDIT: Wenn Du die inverter.js komplett übernommen hast, wird der Fall allerdings in der for-Schleife abgefangen und durch defaults ersetzt. Das musst Du dann mit anpassen,

          Gruß
          Wolfram
          Zuletzt geändert von wvhn; 27.12.2024, 11:31.

          Kommentar


            #6
            Hey, ja ich habe das mit Euren Hinweisen korrigieren können. Das zweite Problem tritt bei "Samsung Internet" auf, Chrome geht auch auf dem Handy. Firefox macht komische Sachen. Ich werde es mal mit Standard js statt jQuery versuchen, bevor ich das mit dem Debugger versuche

            Kommentar


              #7
              So, aktueller Status ist erstmal: funktioniert.
              Ich werde den Code mal aufräumen und evtl. bei newstuff hochladen, wenn jemand Interesse hat:
              Screenshot_20241228_094122_Samsung Internet.jpg
              Angehängte Dateien

              Kommentar


                #8
                Hi,
                hier wie angekündigt der Code. Freue mich über konstruktive Kritik - will ja was lernen.

                Angehängte Dateien

                Kommentar


                  #9
                  Super. Ich habe das mal hier hochgeladen.

                  Gruß
                  Wolfram

                  Kommentar


                    #10
                    Hi aldaris,

                    das sieht gut aus,
                    ich habe dein Widget bei mir mal eingebunden. Es scheint noch ein Bug in Zeile 113 der power.html zu geben. Hier soll, so weit ich das verstehe der SOC der Batterie angezeigt werden. Der fehlt aber.
                    Wenn ich
                    Code:
                    {{ basic.print('', item_batteryPower, '%,0f W', '', '', 'icon0') }}
                    durch
                    Code:
                    {{ basic.print('', item_batterySoC, '%,0f W', '', '', 'icon0') }}
                    ersetze passt es.


                    Da ich keine Wallbox und E-Auto habe, dafür aber eine WP stellt sich die Frage ob es irgendwo ein Icon für Luft/Wasser-Wärmepumpen gibt ?
                    Dann könnte ich statt der Wallbox die WP anzeigen.

                    BTW : Da ich Kostal-WR im Einsatz habe, hatte ich dafür auf Basis der Kostal APP/Portals im Kostal-Look für mehrere Kostal WR was nachgebaut. Ich stelle mal in den nächsten Tagen einen PR gegen smartVISU-newstuff . Es ist bereits eine Wallbox vorgesehen, wenn das Item konfiguriert ist wird diese auch angezeigt ( in der Mitte unter dem Smartmeter). Leider ist hier außer "Netz-Bezug" im Moment nichts zu sehen. Die Flußrichtung ändert sich je nach Fluß, die Pfeile drehen sich je nach Fluß,
                    Ist relativ "kitschig" aber so ist das Original bei Kostal eben. (nur ohne Darstellung von 2 WR- da gibts immer nur einen)

                    Spoiler_Kostal.gif

                    Viele Grüße
                    Andre

                    Kommentar


                      #11
                      Hi, an der Stelle soll tatsächlich die Leistung angezeigt werden. Lade bzw. Entladeleistung. Den SoC wollte ich demnächst darunter bauen.

                      Das mit der Wärmepumpe wäre spannend. Bin selbst mit den Icons noch nicht zufrieden. Lieber wäre mir ein einfaches Haus und ein Auto, optisch auf gleicher Höhe. Wollte mal shopicons prüfen.

                      Kommentar


                        #12
                        Hallo aldaris,

                        danke für die Info,ich werde das bei mir entsprechend ändern. Ich habe mich mal mit ein wenig an "Grafik" versucht (Das ist sicher nicht meine Welt). Ein erster Versuch für eine Luft-Wasser-WP auf Basis von sani_earch_heat_pump.svg ergab das :

                        Spoiler_air_heat_pump.gif

                        Icons hier in WS und SW : air_heatpump.zip.

                        Ich habe dazu Inkscape benutzt.

                        Viele Grüße
                        Andre
                        Angehängte Dateien
                        Zuletzt geändert von AndreK; 31.12.2024, 15:43. Grund: Typo

                        Kommentar


                          #13
                          So, ich habe etwas weiter gearbeitet. Wenn es am Ende fertig ist, werde ich es auch in dem Repo Updaten. Vorher würde ich aber nochmal hier eine Iteration machen wollen.

                          1) Ich brauche zwei neue Icons. Die habe ich versucht "vernünftig" zu machen. Vielleicht können die auch (nach Review) ist das Standardrepo ausgenommen werden:
                          grafik.png
                          Das Auto hab ich aus fts_garage "ausgeparkt" und das Haus gezeichnet. Jeweils in ws und sw

                          2) Das widget habe ich etwas aufgeräumt. SoC für Auto und Battery ist auch jetzt drin
                          grafik.png

                          3) Habe ich ein weiters widget gebaut. Das hilft die Verteilung zu erkennen (Idee von EVCC)
                          grafik.png
                          Die Idee hierbei ist, oben den Input Balken und unten den Output Balken zu sehen. Beide gleich lang, entsprechend der Quellen aufgeteilt.

                          Ich fixe jetzt noch was an den scripten, Ausblenden von Icons, Ausblenden von Pfeilen wenn zu wenig. Dann kann ich noch die Farben (die bei mir recht speziell sind) konfigurierbar machen.

                          Für die Wärmepumpe von AndreK reinzunehmen, müssten man entweder das "Auto" konfigurierbar machen oder einen weiteren Verbraucher (optional) dazumachen.

                          Freue mich über Feedback
                          Angehängte Dateien

                          Kommentar


                            #14
                            Zitat von aldaris Beitrag anzeigen
                            Ich brauche zwei neue Icons. Die habe ich versucht "vernünftig" zu machen. Vielleicht können die auch (nach Review) ist das Standardrepo ausgenommen werden
                            Die Icons sehen auch im inneren Aufbau des SVG-Codes sehr vernünftig aus und ich kann sie gerne ins Standard-Repertoire aufnehmen.

                            Für Elektroautos gibt es schon die icons veh_car_*, die etwas moderner aussehen.

                            grafik.png​​​

                            Gruß
                            Wolfram
                            Zuletzt geändert von wvhn; 05.01.2025, 21:49. Grund: Bild korrigiert

                            Kommentar


                              #15
                              Die Icons kannte ich noch nicht, habe auf der Doku Seite auf 3.3 gesucht. Das Auto mit Kabel nehm ich . Ich habe den Code per PR nach newstuff gebracht.

                              Danke für den Support.

                              Kommentar

                              Lädt...
                              X