Roland_F hat geschrieben: ↑16.01.2024, 13:13
Wie schon gesagt ich war auch etwas "unsicher" bezüglich der hohen Call-Frequenz (ca alle 3 Sekunden) des Programms.
Wozu brauchst Du überhaupt ein Programm auf der CCU, wenn es Deinem Freund bei dem Sonderwunsch doch offensichtlich nur darum geht, die Restlaufzeit zusätzlich angezeigt zu bekommen? Eine richtigen Timer, der die reale Restlaufzeit ständig vorhält, braucht man eigentlich nur dann, wenn dann mit diesem Wert auch etwas in einem komplexeren Ablauf automatisiert werden soll.
Roland_F hat geschrieben: ↑16.01.2024, 13:13
Die Systemvariable wird natürlich, extern (von der Fernbedienung) nicht im Sekundentakt abgefragt!
Wenn doch der Wunsch von dem Freund bestehen sollte auf ein geringeres Intervall zu aktualisieren, dann sollte dies nicht per Anfrage an die HmIP-CCU3 erfolgen, sondern statt dessen per Push der Status durch ein aktualisieren des Popups bzw. der Remoteseite erfolgen. Einen Wert zyklisch an die Remote zu pushen, ohne das eine Anfrage an die HmIP-CCU3 gestellt wird, funktioniert z.B. mit einem Popup zur Anzeige der Restlaufzeit, das Popup kann per Push zyklisch auch in einem geringen Intervall z.B. vom NEO Server der HmIP-CCU3 oder IP-Symcon oder einem System, das eben Push mit der Remote unterstützt, neu geladen werden, um den aktuellen Wert kontinuierlich zu aktualisieren.
Roland_F hat geschrieben: ↑16.01.2024, 13:13
Die interne Update-Frequenz belastet die CCU3, das steht außer Frage
Das auf der CCU selber zu aktualisieren ist wie gesagt nicht zwingend notwendig, wenn an sich der Wunsch bzw. die Anforderung von dem Freund gar nicht gegeben ist, mit dem Wert überhaupt weiter innerhalb einer Automation zu arbeiten, sondern dieser nur primär der Anzeige bzw. der persönlichen Information dient.
Dann reicht es an sich auch aus, so was direkt im HTML Gerüst eines Webseitenelements innerhalb der Remote zu setzen.
Als Beispiel zum anpassen hier mal ein Code für den Body (Hauptbereich) des HTML Gerüsts:
Code: Alles auswählen
<label for="duration">Dauer (in Sekunden): </label>
<input type="number" id="duration" min="1" step="1">
<button onclick="startTimer()">Start</button>
<p id="countdown">Restlaufzeit: </p>
<script>
// Funktion, die den Countdown startet
function startTimer() {
// Eingabefeld für die Dauer
var durationInput = document.getElementById('duration');
// Umwandlung der eingegebenen Dauer in Sekunden
var durationInSeconds = parseInt(durationInput.value);
// Aktuelle Zeit in Millisekunden
var currentTime = new Date().getTime();
// Berechnung der Endzeit in Millisekunden
var endTime = currentTime + durationInSeconds * 1000;
// Aktualisierung der Restlaufzeit alle 1000 Millisekunden (1 Sekunde)
var timerInterval = setInterval(function() {
// Aktuelle Zeit in Millisekunden
var now = new Date().getTime();
// Berechnung der verbleibenden Zeit in Millisekunden
var remainingTime = endTime - now;
// Umrechnung der verbleibenden Zeit in Sekunden
var remainingSeconds = Math.ceil(remainingTime / 1000);
// Anzeige der Restlaufzeit im HTML-Dokument
document.getElementById('countdown').innerText = 'Restlaufzeit: ' + remainingSeconds + ' Sekunden';
// Überprüfung, ob der Countdown abgelaufen ist
if (remainingTime <= 0) {
clearInterval(timerInterval); // Timer stoppen
document.getElementById('countdown').innerText = 'Countdown abgelaufen!';
}
}, 1000); // Aktualisierung alle 1000 Millisekunden (1 Sekunde)
}
</script>
Roland_F hat geschrieben: ↑16.01.2024, 13:13
Ein Lösung mit einem "echten" externen Timer (als ein externer Prozess der die Aufgabe von ON_TIME übernimmt und das Gerät/Steckdose ein und ausschaltet) möchte ich eigentlich nicht implementieren.
Einen "echten" Timer bzw. das berechnen der realen Restzeit in einem System ist auch nur dann sinnvoll, wenn man mit diesem Wert dann auch etwas komplexeres automatisieren will. Auch wenn man einen "echten " Timer benutzen sollte, dient der lediglich dazu die Restzeit eben auch als Wert innerhalb einer Automation zur Verfügung zur haben, den Aktor sollte man stets mit ON_TIME über einen längeren Zeitraum schalten, dann geht der Homematic IP Aktor nämlich auch wieder selbstständig aus, ohne von einem externen Timer ausgeschaltet zu werden, das ist immer ausfallsicherer.