NEWS
(gelöst)state von DP umbenennen
-
Hi,
möchte ein script erweitern.
der inhalt des neuen DP kannstandart, deep, oder fastenthalten.
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?
-
Hi,
möchte ein script erweitern.
der inhalt des neuen DP kannstandart, deep, oder fastenthalten.
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; } -
@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';
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden