NEWS
gewünschte Zeit mit gewünschter Temperatur
-
Moin zusammen,
das ist glaub ich mein erster Beitrag hier. Habe mir einen Raspberry angeschafft zur Steuerung meiner Smart Home Geräte. Habe viel hier im Forum gelesen und mich quasi weitergebildet. Nun bin ich aber am verzweifeln, weil ich auch keine Ahnung von Javaskript habe.
Folgendes Projekt wollte ich umsetzen. Ich habe im Wohnzimmer ein Fritz!DECT 301 Thermostat. Das soll zu gewissen Zeiten auf eine bestimmte Temperatur stellen. Damit meine Freundin diese Zeiten auch ändern kann, wollte ich es in der Vis darstellen. Dafür habe ich für jeden Tag vier Zeitdatenpunkte angelegt (montagZeit1, montagZeit2 usw.) und vier Temperaturdatenpunkte angelegt (montagTemp1, montagTemp2 usw.) Also montagZeit1 gehört zu montagTemp1. Jetzt wollte ich anhand eines Skript festlegen welche Zeit gerade aktuell ist und welche Temperatur aktuell ist. Dafür habe ich zwei weitere Datenpunkte angelegt. lastReachedTime und lastReachedTemp. Nun ist es so, dass ich im Protokoll keine Fehlermeldung bekomme und das Skript immer die Zeit von sonntagZeit4 und die dazugehörige Temperatur von sonntagTemp4 nimmt.// Die folgenden Datenpunkt-Namen anpassen entsprechend Ihrer Bezeichnungen const daysOfWeek = ['montag', 'dienstag', 'mittwoch', 'donnerstag', 'freitag', 'samstag', 'sonntag']; const timeDataPoints = []; const tempDataPoints = []; // Zeit- und Temperaturdatenpunkte für jeden Tag for (const day of daysOfWeek) { for (let i = 1; i <= 4; i++) { timeDataPoints.push(`0_userdata.0.Heizung.Wohnzimmer.${day}Zeit${i}`); tempDataPoints.push(`0_userdata.0.Heizung.Wohnzimmer.${day}Temp${i}`); } } // Funktion, um die zuletzt erreichte Zeit und Temperatur zu ermitteln function updateLastReachedTimeAndTemp() { let lastReachedTime = null; let lastReachedTemp = null; // Aktuelle Zeit im "HH:MM"-Format const currentTime = new Date().toLocaleTimeString('de-DE', { hour: '2-digit', minute: '2-digit' }); console.log('Aktuelle Zeit:', currentTime); for (let i = 0; i < timeDataPoints.length; i++) { const timeString = getState(timeDataPoints[i]).val; if (timeString) { // Direkt als Zeichenkette übernehmen lastReachedTime = timeString; // Temperaturwert als Zahl konvertieren lastReachedTemp = parseFloat(getState(tempDataPoints[i]).val); } } console.log('Zuletzt erreichte Zeit:', lastReachedTime); console.log('Zuletzt erreichte Temperatur:', lastReachedTemp); // Datenpunkte für die zuletzt erreichte Zeit und Temperatur aktualisieren setState('0_userdata.0.Heizung.Wohnzimmer.lastReachedTime', lastReachedTime, true); setState('0_userdata.0.Heizung.Wohnzimmer.lastReachedTemp', lastReachedTemp, true); } // Schleife mit Zeitintervall für regelmäßige Aktualisierung setInterval(updateLastReachedTimeAndTemp, 60000); // Aktualisiert alle 60 Sekunden (kann angepasst werden)
Kann mir da jemand helfen? Im übrigen, das alles hab ich mit ChatGPT versucht zu meistern. Also ich hab ChatGPT alle meine Infos gegeben und gesagt was ich möchte.
Node.js: 18.18.2
npm:9.8.1Schon mal Danke für eure Hilfe
Gruß Sascha
-
@sasa1887
timeString soll doch mit der aktuellen Zeit verglichen werden oder?
Da muss aber auch noch der Tag mit eingearbeitet werden.
Das kann so nicht funktionieren.
Später mal weiter.Dafür gibt es den Adapter heatingcontrol.
-
@mcu Vielen Dank für deine Antwort.
Ich hab deine Antwort mal bei ChatGPT eingegeben. Der hat sich gleich entschuldigt und gesagt, dass du Recht hast
Ich hab mir den Adapter HeatingControl mal angeschaut. Damit komm ich ja garnicht klar. Gibt es da ne Anleitung auf deutsch. Finde alles nur auf Englisch. -
ach gäbe es nur so etwas wie ein übersetzungstool im internet....
huch!!!!
ist zwar nicht immer perfekt, aber soweit sollte man das schon verstehen können
-
@oliverio Vielen Dank, auf die Idee war ich auch schon gekommen. Ich hab trotzdem fast nur Bahnhof verstanden. Nun hab ich aber die ganzen Datenpunkte für die Perioden gefunden. Da komm ich auf jeden Fall weiter.
Ich danke euch erstmal für eure Hilfe.