Neues Plugin: LoxoneIcons - integriere die Icons des Touch Pure Flex in Dein Projekt!

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • Prof.Mobilux
    Supermoderator
    • 25.08.2015
    • 5462

    #31
    Naja, "Feature" würde ich das gar nicht nennen - das war ja auch nur eine Krücke, wie man eigene Icons im SVG Format in die App bringt. Die App V17 bringt die Icons selbst mit und holt sie sich nicht mehr vom Miniserver - das ist das Problem aktuell. Ob Loxone das wieder umstellt irgendwann, damit App und Config immer die gleichen icons nutzen, weiß nur Loxone.

    Ich persönlich würde mir endlich wünschen, dass man eigene Icons auch im SVG Format über die Config einspielen kann - so wie das schon seit Jahren mit PNG geht. Das wäre ein wirkliches Feature!
    LoxBerry: https://wiki.loxberry.de/start

    Kommentar

    • Prof.Mobilux
      Supermoderator
      • 25.08.2015
      • 5462

      #32
      Habe die KI mal drüber laufen lassen:

      __________________________________________________ ___________________________________________

      Ergebnis: Ja, die Vermutung stimmt — die App V17 bringt die Icons selbst mit

      Die Loxone App ist eine Electron-App; der komplette App-Code samt Ressourcen steckt in resources\app.asar (~101 MB, 7463 Dateien). Ich habe das ASAR-Archiv per Python-Skript geparst und den JS-Code analysiert.

      Wo die SVG-Icons liegen

      Insgesamt 1725 SVGs im Archiv unter /www/resources/Images/, die drei entscheidenden Ordner:

      Code:
      ┌───────────────────────────────────────┬───────── ─┬──────────────────────────────────────────────── ────────────────────────────────────────────────── ─────────────┐
      │ Pfad im app.asar │ Anzahl │ Inhalt │
      ├───────────────────────────────────────┼───────── ─┼──────────────────────────────────────────────── ────────────────────────────────────────────────── ─────────────┤
      │ www/resources/Images/new/config/ │ 624 SVGs │ Die Icon-Bibliothek, die man in Loxone Config zuweisen kann — das ist der Ersatz für die alte IconLibrary.zip │
      ├───────────────────────────────────────┼───────── ─┼──────────────────────────────────────────────── ────────────────────────────────────────────────── ─────────────┤
      │ www/resources/Images/new/aurora/ │ 726 SVGs │ Das neue „Aurora"-UI-Iconset der App selbst │
      ├───────────────────────────────────────┼───────── ─┼──────────────────────────────────────────────── ────────────────────────────────────────────────── ─────────────┤
      │ www/resources/Images/new/auroraSolid/ │ 101 SVGs │ Gefüllte Varianten │
      └───────────────────────────────────────┴───────── ─┴──────────────────────────────────────────────── ────────────────────────────────────────────────── ─────────────┘
      Dazu kommen kleinere Ordner für einzelne Controls (Jalousie, Wetter, Fronius etc.).

      Wie die App die Icons auflöst

      - Der Begriff „IconLibrary" kommt im gesamten App-Code nicht mehr vor — der V16-Mechanismus (ZIP vom Miniserver holen) wurde komplett entfernt, nicht nur deaktiviert.
      - Die SVGs werden beim Build per Webpack einkompiliert: In comps.js werden alle Dateien aus aurora, config und auroraSolid in Icon-Maps registriert (window.ResourceIcons, ReactIcons, ConfigIcons).
      - Icon-Namen aus der LoxAPP3.json wie IconsFilled/alarm-1.svg werden per sanitizeIconName normalisiert (Prefix Icons//IconsFilled/ und .svg entfernt) und dann über getConfigIconKey/getAuroraIconKey gegen die einkompilierten Enums (ConfigIconEnum, AuroraIconEnum) aufgelöst. Findet die App ein Icon nicht, rendert sie einen Placeholder und loggt WARNING: Aurora icon not found.
      - Einen Miniserver-Fallback gibt es nur noch für Einzeldateien: ImageBox.getImage() lädt unbekannte Bilder (z. B. selbst hochgeladene User-Icons, Kamerabilder) einzeln per Websocket vom Miniserver (CommComp.downloadImage) und cached sie lokal in <Seriennummer>_ImageBox.json — aber kein Bulk-Download einer IconLibrary mehr.

      Praktische Konsequenz

      Wer Icons der App nutzen/extrahieren will, muss sie aus dem app.asar holen — z. B. mit npx @electron/asar extract app.asar zielordner (Node.js ist auf diesem Rechner allerdings nicht installiert) oder mit dem Python-Extraktions-Skript, das ich im Scratchpad erstellt habe (asar_extract.py — kann jede Datei anhand des ASAR-Headers direkt herausschneiden). Sag Bescheid, wenn ich dir z. B. den kompletten config-Icon-Ordner in ein Verzeichnis deiner Wahl entpacken soll.

      __________________________________________________ ___________________________________________

      Heisst: Loxone müsste die Einbindung von SVG Dateien neben den PNG Dateien zulassen (siehe letzter Anstrich "inen Miniserver-Fallback gibt es nur noch für Einzeldateien:".
      LoxBerry: https://wiki.loxberry.de/start

      Kommentar

      • Jan W.
        Lox Guru
        • 30.08.2015
        • 1605

        #33
        Prof.Mobilux: ja, ein Feature war das vorher mit App v16 nicht wirklich. Da das frühere Einbinden von SVGs nie von Loxone offiziell unterstützt wurde, kann man auch nicht von einem Wegfall sprechen. Immerhin sah man alle Icons nach dem einmaligen Patchen sowohl in der Config, als auch in der App. Deine Analyse bestätigt mir, dass es sehr unwahrscheinlich ist, dass das Verhalten zeitnah wieder geändert wird. Der Ladevorgang der App ist sicherlich schneller, wenn keine IconLibrary vom MS geladen werden muss, sondern alle Icons fest im Paket der App enthalten sind.

        Ich befürchte, dass Loxone nur in der eigenen Bubble lebt und daher die Integration von Icons im SVG Format eher als unnötigen Aufwand oder sogar als Bedrohung wg. Kontrollverlust gesehen wird. Features, die Bestandskunden cool finden, scheinen keine Rolle zu spielen. Neukunden dürften solche Anforderungen nicht haben und die alte inoffizielle 'Lösung' über ein Patchen von Libraries ohne offizielle Freigabe von Loxone war für Partner wahrscheinlich kein Thema.

        Hab gerade mal ein Video zu Home Assistant zu dem Thema angesehen. Dort kann man eigene Symbole einbinden und das geht sogar elegant über die GUI. Vielleicht kommt ja noch jemand bei Loxone auf die Idee über den Tellerrand zu schauen?
        Miniserver v14.5.12.7, 2x Ext., 2x Relay Ext., 2x Dimmer Ext., DMX Ext., 1-Wire Ext., Gira KNX Tastsensor 3 Komfort, Gira KNX Präsenzmelder, Fenster- und Türkontakte, Loxone Regen- und Windsensor, Gira Dual Q Rauchmelder vernetzt, 1x Relais-Modul
        Loxberry: SmartMeter, MS Backup, CamConnect, Weather4Lox
        Lüftung: Helios KWL EC 370W ET mit Modbus TCP - via Pico-C
        Heizung: Stiebel Eltron WPF 5 cool (Sole-Wasser WP) mit ISG, FB-Heizung mit 18 Kreisen, Erdsonde - via modbus/TCP
        Node-RED: IKEA Tradfri

        Kommentar

        Lädt...