Anmerkungen/Fragen zum SDK für Kacheln

Der Hintergrund ist, dass eigene Kacheln so standardmäßig das Standardpadding wie alle anderen Karten haben. Aber man kann sich als Entwickler bei Bedarf darüber hinweg setzen.

Okay, verstehe und kann ich am Bild nachvollziehen. Aber warum ist dann zwischen „HTML“-Modulen und Textausgabe ein unterschiedliches Padding?

PS: Nicht falsch verstehen - will es nur verstehen! Wäre da nicht eine Einheitlichkeit sinnvoller?

Gruß Heiko

Vielen Dank für deine ausführlichen Erläuterungen. Sie machen das Ganze nun schon klarer.

Sehr schön, dass „allgemeingültige Visualisierungen“ noch kommen sollen. In die Richtung gehen im Grunde meine Vorschläge. Vor (Anwender-)Augen habe ich etwas wie den Medienplayer: ich lege mir eine Instanz an und verlinke die passenden Variablen darunter. Das System erkennt, ob die Variablen geeignet sind und stellt die Kachel dar. Wenn ich als Anwender in die Vollansicht gehe, dann bekomme ich wie gewohnt die Listenansicht. Auch ein Umbenennen, Positionieren und Verstecken funktioniert wie gewohnt. Ebenso das Anzeigen von Archivwerten. Auch zusätzliche verlinkte Variablen sollten in der Listenansicht mit angezeigt werden.

Das ist super. Das macht es Modulentwicklern leichter, den Weg weiter auszubauen.

Die Fragen waren aus Anwendersicht gestellt und am Wärmepumpenbeispiel gespiegelt. Sie sollten zeigen, um was der Modulentwickler sich alles kümmern muss und welche Erwartungen vielleicht kommen. Wie du ja auch sagst, ist da die Arbeit vom Modulentwicker gefordert.

Ja, für anspruchsvollere Module mit eigener Logik ist die Lösung sicherlich geeignet. Vielleicht ist das Beispiel „Wärmepumpe“ nicht so passend. Denn hier geht es ja ausschließlich um die Darstellung. Da sollte aus Anwendersicht alles so funktionieren wie man es von anderen Kacheln gewohnt ist (automatische Erkennung). Aus Modulentwicklersicht möchte ich mich da eigentlich nur um die Darstellung kümmern. Bislang reichten da ein „paar harmlose“ Zeilen Code, der Rest ist „kreatives“ HTML. So gesehen ist die jetzige Modullösung etwas oversized für die Darstellung von Wärmepumpe, Waschmaschine, Trockner etc.

Da ist vielleicht eher eine „allgemeingültige Visualisierung“ geeignet, bei der mehr Dinge vom System erledigt werden. Es ist gut zu lesen, dass ihr die auch im Fokus habt.

Wobei genau das in den HTMLBox’en (und anderen Themen) bisher gewünscht war. Eine optimierte Darstellung von bereits vorhandenen Variablen. Der aktuelle Ansatz liefern jetzt Mittel und Wege dies auch „sicher“ abzubilden. Der bisherige Ansatz über den WebSocket Kanal reißt ja Löcher in die Sicherheitsarchitektur. Und ich denke, wenn Niels das Beispiel noch etwas anpasst (ohne Variablen sondern eher Verknüpfung von Variablen), dass die ganze Lösung einfacher und anfassbarer wird. Die Wärmepumpe ist, durch die vielen Datenpunkte, natürlich ein komplexes Beispiel - trotzdem wollten wir damit zeigen, dass es geht :slight_smile: Kleiner geht ja immer :smiley:

Zu beachten ist übrigens immer noch, dass die Profile „passen“ müssen. Oder das Modul mit der Kacheldarstellung muss mit Profilen dynamischer umgehen können. Nicht jeder Trockner hat ja die selbe Programmauswahl. Dort liefert der aktuelle Ansatz aber sehr viele Freiheiten.

paresy

Ich freue mich natürlich, dass es jetzt überhaupt eine Möglichkeit gibt. Und den Sicherheitsaspekt hatte ich bislang komplett übersehen.
Ich hatte die Anforderungen als Anwender vor Augen und sehe, wie hoch der Aufwand im Modul ist. Da hatte ich im ersten Moment an etwas mehr Unterstützung vom System gedacht. Aber nicht schlimm, es geht voran :slight_smile:

Ich freue mich schon auf das ausgebaute Beispiel. Wichtig wäre für mich als Anwender, dass ich mir nicht nur die aktuellen Werte ansehen kann, sondern auch die archivierten Daten. Gerade bei der Wärmepumpe wichtig :slight_smile:

Dafür gibt es im Prinzip zwei Möglichkeiten:
a) Sobald die Variable im Modul ausgewählt wurde (per SelectVariable) erstellt das Modul einen Link direkt unterhalb der Instanz automatisch
b) Wir bauen einen weiteren Befehl ein, mit dem man einfach den Diagramm Dialog öffnet

paresy

Mir gefällt eigentlich die Idee mit den Links unterhalb der Instanz.

  • ich kann den Links einen selbst gewählten Namen geben (z.B. habe ich keine Lüfterdrehzahl, sondern eine Invertermodulation)
  • ich kann mir das Archiv anzeigen lassen
  • ich kann eigene Links hinzufügen

Voraussetzung ist natürlich, dass die Listenansicht aufrufbar ist.

Tatsächlich finde ich die neue Lösung viel einfacher. Möchtest du einfach nur etwas ohne Interaktion anzeigen gibst du den Inhalt, den du sonst in die HTML-Box packst, einfach bei GetVisualizationTile raus.

Für Interaktivität musstest du dir vorher irgendwie einen Zugang legen und via JSON die Befehle rausschicken, jetzt führst du einfach nur requestAction aus. Auch den Rückkanal musste man vorher aufwendig selbst abbonieren und dergleichen. Jetzt registrierst du dich einfach an die gewünschten Nachrichten innerhalb des Moduls. Diese kannst du dann ja auch beispielsweise direkt ans HTML weiterleiten, welche dann nur eine Funktion handleMessage zum Bearbeiten der Nachricht braucht.

Insgesamt finde ich also, es ist eher einfacher als komplizierter geworden. Aber es ist sicher noch ungewohnt und man muss sich erstmal an das neue Konzept gewöhnen. Ein neues Beispielmodul ist jetzt auch der nächste Punkt auf meiner Tagesordnung.

1 „Gefällt mir“

So, wie versprochen einmal ein neues Beispiel:

Definitiv nicht so schick wie die Pumpe, aber ich glaube es erklärt noch einmal einige Feinheiten. Sowohl HTML als auch PHP sind reichleich kommentiert. Diesmal könnt ihr bis zu drei Variablen per Eigenschaft registrieren und diese können via Button erhöht oder gesenkt werden. Das Modul aktualisiert den Wert und den Namen der gewählten Variablen. Außerdem könnt ihr eine Hintergrundfarbe einstellen und das Standardpadding zu den Seiten wurde auf 0 überschrieben.

Bei Fragen immer gerne raus damit.

3 „Gefällt mir“

Auf Wunsch habe ich das Beispiel nochmal aktualisiert. Jetzt wird auch noch ein Bild aus einem Medienobjekt optional angezeigt.

3 „Gefällt mir“

Und wer nicht nur Bilder, sondern z.B. auch SVGs oder Audio ausliefern will;
die Mime Typen liefert IPS mit.
Folgende Funktion (glaube irgendwo von @paresy gepostet) sollte helfen:

    private function GetMimeType($extension)
    {
        $lines = file(IPS_GetKernelDirEx() . 'mime.types');
        foreach ($lines as $line) {
            $type = explode("\t", $line, 2);
            if (count($type) == 2) {
                $types = explode(' ', trim($type[1]));
                foreach ($types as $ext) {
                    if ($ext == $extension) {
                        return $type[0];
                    }
                }
            }
        }
        return 'text/plain';
    }

Michael

für alle Furchtlosen gibts hier die erste Version meiner HTML-Kachelsammlung:

Enthalten sind bisher folgende Kacheln:

  • Wärmepumpe (Farben, max. und min. Leistungswerte werden aus den Profilen ausgelesen und sind deshalb Voraussetzung für eine korrekte Abbildung, nicht konfigurierte Variablen werden in der Kachel ausgeblendet)
  • Bewohnerstatus
  • Kachel mit Bild und Listenansicht beim Vergrößern.

Funktion ist soweit gegeben, Code ist noch Kraut und Rüben, Übersetzung und die Doku fehlt noch…
Zeit ist leider gerade knapp…

@paresy vielleicht haben die Jungs ja bock den Code zu checken und die schlimmsten Patzer zu korrigieren :wink:

Viele Grüße
Stephan

2 „Gefällt mir“

Ich fürchte mich nicht :slight_smile:

Gleich mal die Wärmepumpe ausprobiert

Gefällt mir gut!

Machst du für Anmerkungen einen eigenen Thread auf?

Burkhard

Auf jeden Fall. Möchte nur vorher noch grob die Doku stehen haben…

Gruß
Stephan