NEWS
(gelöst)state von DP umbenennen
-
Hi,
möchte ein script erweitern.
der inhalt des neuen DP kannstandart, deep, oder fast
enthalten.
Die möchte ich instandard = standard (kann also bleiben) deep = tief fast = schnell
ändern
so lese ich die einvar Moppingmode = getState("ecovacs-deebot.0.info.extended.moppingMode").val || "";
und so ist die Ausgabe
var newData = { "Effizienz": Moppingmode };
Wie mache ich das am besten?
-
-
@paul53 sagte in state von DP umbenennen:
Ohne Skript mit Alias Typ "Zeichenkette" und Lesekonvertierung:
Ohne Script?
@chris76e sagte in state von DP umbenennen:
möchte ein script erweitern.
Hier mal das gesamte script
// Variablen für die Zeitmessung var cleaningStartTime = null; // Funktion zum Überwachen von Änderungen im JSON und Speichern in 0_userdata function monitorAndSaveJson() { // Überwache Änderungen im JSON-Datenpunkt on({ id: "ecovacs-deebot.0.cleaninglog.last20Logs", change: "ne", ack: true }, function (obj) { // Überprüfe, ob die Zeitmessung läuft if (cleaningStartTime !== null) { // Beende die Zeitmessung setTimeout(function() { var cleaningEndTime = new Date(); var totalCleaningTimeInSeconds = (cleaningEndTime - cleaningStartTime) / 1000; var totalCleaningTimeFormatted = formatTime(totalCleaningTimeInSeconds); // Lese die aktuellen Daten aus dem JSON-Datenpunkt getState("0_userdata.0.Deebot.JSON", function (err, state) { if (!err && state) { var currentJson = state.val ? JSON.parse(state.val) : []; // Aktuelles JSON oder leeres Array // Lese die Datenpunkte var spotAreaName = getState("ecovacs-deebot.0.map.lastCleanedSpotArea.spotAreaName").val || ""; var lastTimeStamp = getState("ecovacs-deebot.0.cleaninglog.lastCleaningTimestamp").val || ""; var lastCleaningDate = getState("ecovacs-deebot.0.cleaninglog.lastCleaningDate").val || ""; lastCleaningDate = removeTimeFromDate(lastCleaningDate); // Entferne die Uhrzeit aus dem Datum var lastSquareMeters = getState("ecovacs-deebot.0.cleaninglog.lastSquareMeters").val || ""; //var lastTotalTime = getState("ecovacs-deebot.0.map.lastCleanedSpotArea.totalTime").val || ""; var lastTotalSeconds = getState("ecovacs-deebot.0.map.lastCleanedSpotArea.totalSeconds").val || ""; //var cleaningMode = getState("ecovacs-deebot.0.control.extended.cleaningMode").val || ""; var cleaningMode = getState("0_userdata.0.Deebot.lastCleaning.CleanMode").val || ""; var Moppingmode = getState("ecovacs-deebot.0.info.extended.moppingMode").val || ""; // Erstelle das neue Objekt var newData = { "Raum": spotAreaName, "Datum": lastCleaningDate, "Timestamp": lastTimeStamp, "Fläche": lastSquareMeters, "Dauer": formatTime(lastTotalSeconds), // Dauer der letzten Reinigung in m:s "Gesamtdauer": totalCleaningTimeFormatted, // Gesamtdauer der aktuellen Reinigung "Reinigungsmodus": cleaningMode, // Aktueller Reinigungsmodus "Effizienz": Moppingmode, "Startzeit": formatTimeComponents(new Date(cleaningStartTime)), // Startzeit umgewandelt in Zeichenfolge "Endzeit": formatTimeComponents(new Date(cleaningEndTime)) // Endzeit umgewandelt in Zeichenfolge }; // Füge das neue Objekt zum aktuellen JSON hinzu currentJson.unshift(newData); // Hinzufügen an den Anfang des Arrays // Speichere das aktualisierte JSON in 0_userdata setState("0_userdata.0.Deebot.JSON", JSON.stringify(currentJson), function () { log("JSON erfolgreich aktualisiert und gespeichert.", "info"); // Setze die Zeitmessung zurück nach dem Schreiben des JSON cleaningStartTime = null; // Setze zusätzliche Datenpunkte für die letzte Reinigung setState("0_userdata.0.Deebot.lastCleaning.Dauer", formatTime(lastTotalSeconds)); setState("0_userdata.0.Deebot.lastCleaning.Fläche", lastSquareMeters); setState("0_userdata.0.Deebot.lastCleaning.Gesamtdauer", totalCleaningTimeFormatted); setState("0_userdata.0.Deebot.lastCleaning.Raum", spotAreaName); setState("0_userdata.0.Deebot.lastCleaning.Reinigungsmodus", cleaningMode); }); } else { log("Fehler beim Lesen des Datenpunkts 0_userdata.0.Deebot.JSON", "error"); } }); }, 2000); // 2-Sekunden-Verzögerung hinzugefügt } }); // Überwache Änderungen im Reinigungsstatus-Datenpunkt on({ id: "ecovacs-deebot.0.map.currentUsedSpotAreas", change: "ne", ack: true }, function (obj) { // Überprüfe, ob das Reinigungsgerät im Reinigungsmodus ist if (cleaningStartTime === null) { cleaningStartTime = new Date(); } }); } // Starte die Überwachung monitorAndSaveJson(); // Hilfsfunktion zur Formatierung von Zeit in Minuten und Sekunden (m:s) function formatTime(totalSeconds) { var minutes = Math.floor(totalSeconds / 60); var seconds = Math.floor(totalSeconds % 60); // Manuelle Formatierung der Minuten und Sekunden var minutesString = minutes < 10 ? "0" + minutes : minutes.toString(); var secondsString = seconds < 10 ? "0" + seconds : seconds.toString(); return minutesString + ":" + secondsString; } // Hilfsfunktion zur Formatierung von Stunden, Minuten und Sekunden als Zeitzeichenfolge function formatTimeComponents(date) { var hours = pad(date.getHours(), 2); var minutes = pad(date.getMinutes(), 2); var seconds = pad(date.getSeconds(), 2); return hours + ":" + minutes; } // Hilfsfunktion zum Entfernen der Uhrzeit aus dem Datum function removeTimeFromDate(dateString) { // Teilen Sie das Datum in Datum und Uhrzeit auf var parts = dateString.split(" "); // Nur das Datum zurückgeben return parts[0]; } // Hilfsfunktion zum Auffüllen von Zahlen mit führenden Nullen function pad(num, size) { var s = num.toString(); while (s.length < size) s = "0" + s; return s; }
-
@chris76e sagte: das gesamte script
Dann erweitere Zeile 32
var Moppingmode = getState("ecovacs-deebot.0.info.extended.moppingMode").val || ""; if(Moppingmode == 'deep') Moppingmode = 'tief'; else if(Moppingmode == 'fast') Moppingmode = 'schnell';
-
Danke