HTML Kachelsammlung (Bewohnerstatus, Wärmepumpe etc...)


/ Beispielstring
$string = 'Das ist "ein" Test\'s String.';

// Entfernen aller doppelten Anführungszeichen
$stringOhneDoppelte = str_replace('"', '', $string);

Gruß
Stephan

ich habe es jetzt so eingebaut:

<?php

$gesamtlaufzeitString = GetValue(34537); // Gesamtlaufzeit im Format HH:MM:SS oder als Minuten
$restlaufzeitString = GetValue(10787); // Restlaufzeit im Format HH:MM:SS oder als Minuten

// String Gesamtlaufzeit
$string1 = 34537;

// Entfernen aller doppelten Anführungszeichen
$stringOhneDoppelte = str_replace('"', '', $string1);

// String Restlaufzeit
$string2 = 10787;

// Entfernen aller doppelten Anführungszeichen
$stringOhneDoppelte = str_replace('"', '', $string2);

// Funktion zur Konvertierung von HH:MM:SS oder Minuten in Sekunden
function konvertiereZeitInSekunden($zeit) {
    if (preg_match('/^(\d{1,2}):(\d{1,2}):(\d{1,2})$/', $zeit, $matches)) {
        // Zeit ist im Format HH:MM:SS
        return (int)$matches[1] * 3600 + (int)$matches[2] * 60 + (int)$matches[3];
    } elseif (is_numeric($zeit)) {
        // Zeit ist in Minuten angegeben
        return (int)$zeit * 60;
    } else {
        // Fehlerfall: Ungültiges Format
        return 0;
    }
}

// Konvertierung der Gesamtlaufzeit und Restlaufzeit in Sekunden
$gesamtlaufzeitInSeconds = konvertiereZeitInSekunden($gesamtlaufzeitString);
$restlaufzeitInSeconds = konvertiereZeitInSekunden($restlaufzeitString);

$abgelaufeneZeit = $gesamtlaufzeitInSeconds - $restlaufzeitInSeconds;

// Berechnung des Prozentsatzes der abgelaufenen Zeit, Sicherstellung, dass keine Division durch Null stattfindet
$prozentsatz = $gesamtlaufzeitInSeconds > 0 ? ($abgelaufeneZeit / $gesamtlaufzeitInSeconds) * 100 : 0;

// Sicherstellung, dass der Prozentsatz im Bereich von 0 bis 100 liegt
$prozentsatz = max(0, min($prozentsatz, 100));

// Schreiben des Prozentwerts in eine Variable
SetValue(43998, $prozentsatz);

passt das so, oder ist das Quatsch? Könntest du es evtl. in dem ursprünglichen Skript oben noch mit einfügen? Hab leider nicht wirklich PHP-Ahnung :wink:

hab es oben ergänzt.

Viele Grüße
Stephan

Danke!
Allerdings kommt jetzt beim Ausführen das Symbol:


und es passiert nichts.
Muss ich noch etwas zusätzlich beachten?

kann ich jetzt leider nicht viel mit anfangen. Bei mir läuft es problemlos durch. Die IDs hast du in dem Skript angepasst?

Gruß Stephan

ja, IDs sind angepasst.
ich starte nachher mal IPS neu - habe mir an anderer Stelle nen Loop eingebaut und jetzt läuft der DutyCircle der CCU Amok xD

@sunnyww
Das stimmt was nicht, diese beiden Zeilen in deinem Code ergeben keinen Sinn.

$string1 = 34537;
$string2 = 10787;

Ich vermute du wolltest sowas bauen:

<?php

$gesamtlaufzeitString = GetValue(34537); // Gesamtlaufzeit im Format HH:MM:SS oder als Minuten
$restlaufzeitString = GetValue(10787); // Restlaufzeit im Format HH:MM:SS oder als Minuten

// Entfernen aller doppelten Anführungszeichen
$gesamtlaufzeitString= str_replace('"', '', $gesamtlaufzeitString);
$restlaufzeitString = str_replace('"', '', $restlaufzeitString );

// Funktion zur Konvertierung von HH:MM:SS oder Minuten in Sekunden
function konvertiereZeitInSekunden($zeit) {
    if (preg_match('/^(\d{1,2}):(\d{1,2}):(\d{1,2})$/', $zeit, $matches)) {
        // Zeit ist im Format HH:MM:SS
        return (int)$matches[1] * 3600 + (int)$matches[2] * 60 + (int)$matches[3];
    } elseif (is_numeric($zeit)) {
        // Zeit ist in Minuten angegeben
        return (int)$zeit * 60;
    } else {
        // Fehlerfall: Ungültiges Format
        return 0;
    }
}

// Konvertierung der Gesamtlaufzeit und Restlaufzeit in Sekunden
$gesamtlaufzeitInSeconds = konvertiereZeitInSekunden($gesamtlaufzeitString);
$restlaufzeitInSeconds = konvertiereZeitInSekunden($restlaufzeitString);

$abgelaufeneZeit = $gesamtlaufzeitInSeconds - $restlaufzeitInSeconds;

// Berechnung des Prozentsatzes der abgelaufenen Zeit, Sicherstellung, dass keine Division durch Null stattfindet
$prozentsatz = $gesamtlaufzeitInSeconds > 0 ? ($abgelaufeneZeit / $gesamtlaufzeitInSeconds) * 100 : 0;

// Sicherstellung, dass der Prozentsatz im Bereich von 0 bis 100 liegt
$prozentsatz = max(0, min($prozentsatz, 100));

// Schreiben des Prozentwerts in eine Variable
SetValue(43998, $prozentsatz);

Danke euch für die Unterstützung!
Jetzt läuft alles wie gewünscht, nachdem ich gestern Abend noch die WaMa FREIWILLIG angeworfen habe und meine Frau völlig erstaunt war, warum ich mich jetzt so brennend fürs Waschen interessieren würde :smiley:

1 „Gefällt mir“

Hab mir die 7.1 geholt und gleich mal dein Modul installiert. Gefällt mir sehr gut, kann aber noch nicht viel sagen, da ich noch am herumprobieren bin.
Was mir aber aufgefallen ist, wenn man eine Kachel maximiert, dann wird nichts angezeigt. Gehört das so? Gerade beim Bild wäre das doch ideal, oder sehe ich da falsch?

Das ist leider so. Da hab ich keinen Einfluss drauf. Du kannst aber Objekte unter die Instanz verlinken, die werden dann beim maximieren als Liste angezeigt. Das macht Sinn um z.b. bei der Waschmaschine Steuerelemente einzubinden. Die Kachel zeigt den Status und Sachen steuern kann man bei maximierter Kachel.

Viele Grüße
Stephan

Ok, der Workaround mit dem verlinken Bild funktioniert. Passt mal so.
Weil die die „Waschmaschinenkachel“ ansprichst :slight_smile:
Meine Waschgeräte liefern nichts. Aber ich wollte das für die Bewässerung verwenden. Nämlich dann, wenn ich manuell bewässere. Da wird nach einer gewissen Restlaufzeit, das Ventil wieder geschlossen. Das funktioniert auch in der Anzeige. Leider kann ich die Variable nicht schalten… Muss ich wohl auch verlinken.

Ich hab eben mal die 7.1 Installiert und direkt deine Kacheln gefunden. Mega sehen die aus. Vielen dank dafür :smiley:
Eine Kurze frage habe ich: Ich hab im RomHeader einen Rollladen in die Menüleiste gelegt. Dabei fährt er nur runter oder stoppt. Hoch fahren geht nicht. Das wird wohl (KNX) an dem langen Tastendruck liegen. Gibt es da zufällig eine Lösung?

Entschuldigt bitte die erneut blöde Frage, wie ich denn an die Kachelsammlung komme? Bei Betas im Module Store kommt es ja auf die Schreibweise an. Hab verschiedene Varianten probiert.
Oder ganz anders?

das musst du momentan noch händisch installieren. Unter Kerninstanzen Module öffnen, unten Links auf das PLUS, da folgende URL eingeben:

https://github.com/da8ter/TileVisu-Kachelsammlung.git

Viele Grüße
Stephan

1 „Gefällt mir“

Das funktioniert nicht, die Button schalten einfach ein Bool-Variable an oder aus.
Da musst du dir vielleicht etwas mit Hilfsvariablen bauen und dann einen Button für Runter und einen für Hoch oder so …

Viele Grüße
Stephan

alles klar, danke. dachte ich mir schon. sollte kein problem sein. will da nur einen rollladen drauf haben. dann ist auch genug platz für 2 veriablen

Hey Stephan,
die Nervensäge schon wieder :wink:
wäre es bei der Wärmepumpen-Kachel denkbar, dass zwei Heizzonen genutzt und hinterlegt werden können?
Ich habe die Zonen wie folgt definiert bzw. in der Wärmepumpe angesteuert:
Heizzone 1 = Fußbodenheizung
Heizzone 2 = „normalen“ Heizkörper
könnte man ja über einen Schalter optional machen bzw. wenn keine Variablen hinterlegt sind, dann wird Zone2 ausgeblendet.
Entsprechend bräuchte ich dann auch bei der Temperatur Vorlauf 1, Vorlauf 2, etc.

ich schreib es mal auf den Wunschzettel. Kann aber etwas dauern…

Viele Grüße
Stephan

Ich hab einen Fehler (neben ein paar Tippfehlern) gefunden.
Bei der Kachel „Roomheader“ hat es dich mit den Variablennamen im Infoberech rechts durcheinander gebracht. Der Name von Rechts 2 wird bei Rechts 1 angezeigt. Einen anderen für Rechts 2 kann man nicht definieren.

Danke fürs melden. Fehler ist gefixt. Bitte mal Update machen…

Tippfehler hab ich auf dem Schirm, ich mach jetzt noch die Wallbox Kachel fertig und dann kommt noch eine englische Übersetzung. In dem Zuge werden auch die deutschen Texte überarbeitet.

Viele Grüße
Stephan

2 „Gefällt mir“