Aufzählung von Stunden per Script

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

Antworten
Wichtelmann007
Beiträge: 222
Registriert: 26.02.2013, 21:11
Hat sich bedankt: 39 Mal

Aufzählung von Stunden per Script

Beitrag von Wichtelmann007 » 20.12.2023, 23:16

Hi, ich habe ein Problem mit der Aufaddierung von Stunden in einem Script.
Ich logge die Brennerleufzeiten und gebe die Brennerstunden Aktuell, ganzer Tag und Gesamt aus.
Beim Gesamt hängt es. das Script im besagten Bereich sieht so aus:

Code: Alles auswählen

string SBrennerHeuteKum = (((("1970-01-01 " #SBrennerLetzte ).ToTime() + (("1970-01-01 " #SBrennerHeute).ToTime() + 3600))).Format("%H:%M"));
Die Ausgabe erfolgt dabei natürlich als 00:00 (Beispiel) Die Stunden/Minuten sollen jedoch nicht im 24h Modus ausgegeben werden sondern Gesamt. Also zB 138h 15min, wenn es über 24h hinaus geht. Was muss ich ändern?
Zuletzt geändert von Roland M. am 03.01.2024, 12:12, insgesamt 1-mal geändert.
Grund: Thema verschoben

Benutzeravatar
Henke
Beiträge: 1536
Registriert: 27.06.2022, 20:51
System: CCU
Hat sich bedankt: 144 Mal
Danksagung erhalten: 309 Mal

Re: Aufzählung von Stunden per Script

Beitrag von Henke » 21.12.2023, 08:08

Das läuft nicht über ToTime() sondern muss von Hand berechnet werden. Im Forum ist garantiert ein Beispiel dazu. Das hatten wir schon mal.

Fonzo
Beiträge: 6829
Registriert: 22.05.2012, 08:40
System: CCU
Hat sich bedankt: 25 Mal
Danksagung erhalten: 499 Mal

Re: Aufzählung von Stunden per Script

Beitrag von Fonzo » 21.12.2023, 12:45

Wichtelmann007 hat geschrieben:
20.12.2023, 23:16
Ich logge die Brennerleufzeiten und gebe die Brennerstunden Aktuell, ganzer Tag und Gesamt aus.
Ich würde so was ja eher mit PHP oder Javascript lösen. Bei JavaScript kannst Du so was z.B. im NEO Server der CCU3 ausführen.
Beispiel:

Code: Alles auswählen

// Annahme: Du hast zwei Werte für bisher und heute
const bisher = 17720; // Beispielwert für bisher (in Minuten)
const heute = 480;    // Beispielwert für heute (in Minuten)

// Summe der beiden Werte berechnen
const gesamt = bisher + heute;

// Konvertiere die Gesamtzeit in Wochen, Tage, Stunden und Minuten
const wochen = Math.floor(gesamt / (60 * 24 * 7));
const tage = Math.floor((gesamt % (60 * 24 * 7)) / (60 * 24));
const stunden = Math.floor((gesamt % (60 * 24)) / 60);
const minuten = gesamt % 60;

// Erstelle die Ausgabe
let ausgabe = '';

if (wochen > 0) {
    ausgabe += wochen + (wochen === 1 ? ' Woche ' : ' Wochen ');
}

if (tage > 0) {
    ausgabe += tage + (tage === 1 ? ' Tag ' : ' Tage ');
}

ausgabe += stunden + ' Stunden ' + minuten + ' Minuten';

console.log(ausgabe);
Ansonsten müsstet Du das halt auf die Möglichkeiten adaptieren die Homematic Skript bietet, das nutzte ich persönlich aber nicht und kenne mich damit nicht aus.

Benutzeravatar
Black
Beiträge: 5534
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 432 Mal
Danksagung erhalten: 1094 Mal
Kontaktdaten:

Re: Aufzählung von Stunden per Script

Beitrag von Black » 21.12.2023, 15:03

Na Fonzo, wiedermal noch schnell Werbung plaziert ?

Der TO hat nicht nach deiner Advertising Lösung gefragt. Und wenn du zum Thema HM Script nichts zur Lösung der Fragestellung beitragen kannst... (hier stünde jetzt das Zitat von Dieter Nuhr)

Black
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg

Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann

Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W

technical contribution against annoying advertising

Benutzeravatar
Baxxy
Beiträge: 11000
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 629 Mal
Danksagung erhalten: 2280 Mal

Re: Aufzählung von Stunden per Script

Beitrag von Baxxy » 21.12.2023, 22:45

Da ja nur Stunden Minuten gefragt sind...

Code: Alles auswählen

!// Annahme: Du hast zwei Werte für bisher und heute
var bisher = 17720; !// Beispielwert für bisher (in Minuten)
var heute = 480;    !// Beispielwert für heute (in Minuten)

!// Summe der beiden Werte berechnen
integer iRuntimeMinutes = bisher + heute;

!// Berechnung und Ausgabe
integer iHours = iRuntimeMinutes / 60;
integer iMins =  iRuntimeMinutes % 60;
WriteLine("Laufzeit: "#iRuntimeMinutes#" Minuten, das entspricht: "#iHours#"h "#iMins#"min");

Code: Alles auswählen

Laufzeit: 18200 Minuten, das entspricht: 303h 20min

Wichtelmann007
Beiträge: 222
Registriert: 26.02.2013, 21:11
Hat sich bedankt: 39 Mal

Re: Aufzählung von Stunden per Script

Beitrag von Wichtelmann007 » 03.01.2024, 13:05

soweit so gut, ich scheitere aber schon daran, wie ich die derzeitigen String Zeitangaben zB "02:54 h" in Minuten umwandele, um damit weiter zu rechnen...

Fonzo
Beiträge: 6829
Registriert: 22.05.2012, 08:40
System: CCU
Hat sich bedankt: 25 Mal
Danksagung erhalten: 499 Mal

Re: Aufzählung von Stunden per Script

Beitrag von Fonzo » 03.01.2024, 13:23

Wichtelmann007 hat geschrieben:
03.01.2024, 13:05
ich scheitere aber schon daran, wie ich die derzeitigen String Zeitangaben zB "02:54 h" in Minuten umwandele, um damit weiter zu rechnen...
Mit Javascript z.B. so:

Code: Alles auswählen

// Zeitangabe als String
var zeitString = "02:54 h";

// Aufteilen des Strings in Stunden und Minuten
var zeitTeile = zeitString.split(":");
var stunden = parseInt(zeitTeile[0], 10); // 10 gibt die Basis für die Umwandlung an
var minuten = parseInt(zeitTeile[1], 10);

// Umrechnung in Minuten
var gesamtMinuten = stunden * 60 + minuten;

// Ausgabe des Ergebnisses
console.log("Die Zeit " + zeitString + " entspricht " + gesamtMinuten + " Minuten.");

Tyfys
Beiträge: 580
Registriert: 17.04.2021, 17:12
System: CCU
Hat sich bedankt: 29 Mal
Danksagung erhalten: 136 Mal

Re: Aufzählung von Stunden per Script

Beitrag von Tyfys » 03.01.2024, 13:24

mit HM-Skript z,B, so:

Code: Alles auswählen

string zeiten = "02:54 h";
integer std = (zeiten.StrValueByIndex(":",  0 ).ToInteger() * 60);
integer min = (zeiten.StrValueByIndex(":", 1 ).RTrim("h")).ToInteger(); 
integer gesmin = std + min;
WriteLine(gesmin);
Gruß
Harry

Wichtelmann007
Beiträge: 222
Registriert: 26.02.2013, 21:11
Hat sich bedankt: 39 Mal

Re: Aufzählung von Stunden per Script

Beitrag von Wichtelmann007 » 03.01.2024, 21:46

Tyfys hat geschrieben:
03.01.2024, 13:24
mit HM-Skript z,B, so:
danke, so hab ich's hinbekommen

Antworten

Zurück zu „HomeMatic Zentrale (CCU / CCU2 / CCU3 / Charly)“