NEWS
[gelöst] Datenpunkt in Script neu einlesen
-
Ich steh gerade ein wenig auf dem Schlauch, ich definiere am Anfang meines Scripts eine Variable via getState und Verarbeite sie im Script weiter.
Wenn ich nun händisch den Wert der Variablen im Datenpunkt bspw. von true auf false ändere und mir die Variable ausgeben lasse hat sich deren Wert nicht geändert. Starte ich das Script neu hat die Variable den neuen Wert.
Das ganze leuchtet mir auch ein nur wie mache ich das ganze automatisch? Ist es möglich ein Script neu zu laden oder lediglich die Variablen?
Vielleicht liegts an der Uhrzeit dass mir das nicht gelingen will.
Bin für jeden Tipp dankbar
-
Dir wird wohl der trigger fehlen, hier mal ein Beispiel aus Blockly konvertiert:
on({id: "hm-rpc.0.NEQ1508508.1.STATE"/*Bad_unten.STATE*/, change: "ne"}, function (obj) {
Das muss jetzt nicht vollständig sein, ich kann nur Blockly!
Enrico
-
Erstellt eine Subscription mit on() auf den Datenpunkt und hol den Aktuellen wert in die Variable.
So wird sie immer Aktualisiert wenn sich was ändert.
Gesendet von meinem m8 mit Tapatalk
-
Ich habe das schlecht beschrieben :lol:
Hier mal der Kopf meines Scripts:
var Backup = []; // Array für die Definition der Backuptypen und deren Details // Konfigurationen für das Standard-IoBroker Backup Backup[0] = []; Backup[0][0] = 'minimal'; // Backup Typ (nicht verändern!) Backup[0][1] = getState(instanz + pfad0 + 'Konfiguration.minimal.NamensZusatz').val; // Names Zusatz, wird an den Dateinamen angehängt bspw. Master/Slave (falls gewünscht, ansonsten leer lassen) Backup[0][2] = getState(instanz + pfad0 + 'Konfiguration.minimal.BackupLoeschenNach').val; // Alte Backups löschen nach X Tagen (falls gewünscht, ansonsten leer lassen) Backup[0][3] = getState(instanz + pfad0 + 'Konfiguration.minimal.FtpHost').val; // FTP-Host Backup[0][4] = getState(instanz + pfad0 + 'Konfiguration.minimal.FtpDir').val; // genaue Verzeichnissangabe bspw. /volume1/Backup/ auf FTP-Server (falls gewünscht, ansonsten leer lassen) Backup[0][5] = getState(instanz + pfad0 + 'Konfiguration.minimal.FtpUser').val; // Username für FTP Server - Verbindung Backup[0][6] = getState(instanz + pfad0 + 'Konfiguration.minimal.FtpPw').val; // Passwort für FTP Server - Verbindung Backup[0][7] = ''; // Nicht benötigt bei diesem BKP-Typ (nicht verändern!) Backup[0][8] = ''; // Nicht benötigt bei diesem BKP-Typ (nicht verändern!) Backup[0][9] = ''; // Nicht benötigt bei diesem BKP-Typ (nicht verändern!) Backup[0][10] = getState(instanz + pfad0 + 'Konfiguration.minimal.CifsMount').val; // Festlegen ob CIFS-Mount genutzt werden soll Backup[0][11] = ''; // Nicht benötigt bei diesem BKP-Typ (nicht verändern!) // Konfigurationen für das Komplette-IoBroker Backup Backup[1] = []; Backup[1][0] = 'komplett'; // Backup Typ (nicht verändern) Backup[1][1] = getState(instanz + pfad0 + 'Konfiguration.komplett.NamensZusatz').val; // Names Zusatz, wird an den Dateinamen angehängt bspw. Master/Slave (falls gewünscht, ansonsten leer lassen) Backup[1][2] = getState(instanz + pfad0 + 'Konfiguration.komplett.BackupLoeschenNach').val; // Alte Backups löschen nach X Tagen (falls gewünscht, ansonsten leer lassen) Backup[1][3] = getState(instanz + pfad0 + 'Konfiguration.komplett.FtpHost').val; // FTP-Host Backup[1][4] = getState(instanz + pfad0 + 'Konfiguration.komplett.FtpDir').val; // genaue Verzeichnissangabe bspw. /volume1/Backup/ auf FTP-Server (falls gewünscht, ansonsten leer lassen) Backup[1][5] = getState(instanz + pfad0 + 'Konfiguration.komplett.FtpUser').val; // Username für FTP Server - Verbindung Backup[1][6] = getState(instanz + pfad0 + 'Konfiguration.komplett.FtpPw').val; // Passwort für FTP Server - Verbindung Backup[1][7] = ''; // Nicht benötigt bei diesem BKP-Typ (nicht verändern!) Backup[1][8] = ''; // Nicht benötigt bei diesem BKP-Typ (nicht verändern!) Backup[1][9] = ''; // Nicht benötigt bei diesem BKP-Typ (nicht verändern!) Backup[1][10] = getState(instanz + pfad0 + 'Konfiguration.minimal.CifsMount').val; // Festlegen ob CIFS-Mount genutzt werden soll Backup[1][11] = getState(instanz + pfad0 + 'Konfiguration.komplett.IoStopStart').val; // Festlegen ob IoBroker gestoppt/gestartet wird // Konfiguration für das CCU / pivCCU / Raspberrymatic Backup Backup[2] = []; Backup[2][0] = 'ccu'; // Backup Typ (nicht verändern) Backup[2][1] = ''; // Nicht benötigt bei diesem BKP-Typ (nicht verändern!) Backup[2][2] = getState(instanz + pfad0 + 'Konfiguration.ccu.BackupLoeschenNach').val; // Alte Backups löschen nach X Tagen (falls gewünscht, ansonsten leer lassen) Backup[2][3] = getState(instanz + pfad0 + 'Konfiguration.ccu.FtpHost').val; // FTP-Host Backup[2][4] = getState(instanz + pfad0 + 'Konfiguration.ccu.FtpDir').val; // genaue Verzeichnissangabe bspw. /volume1/Backup/ auf FTP-Server (falls gewünscht, ansonsten leer lassen) Backup[2][5] = getState(instanz + pfad0 + 'Konfiguration.ccu.FtpUser').val; // Username für FTP Server - Verbindung Backup[2][6] = getState(instanz + pfad0 + 'Konfiguration.ccu.FtpPw').val; // Passwort für FTP Server - Verbindung Backup[2][7] = getState(instanz + pfad0 + 'Konfiguration.ccu.CcuIp').val; // IP-Adresse der CCU Backup[2][8] = getState(instanz + pfad0 + 'Konfiguration.ccu.CcuUser').val; // Username der CCU Backup[2][9] = getState(instanz + pfad0 + 'Konfiguration.ccu.CcuPw').val; // Passwort der CCU Backup[2][10] = getState(instanz + pfad0 + 'Konfiguration.minimal.CifsMount').val; // Festlegen ob CIFS-Mount genutzt werden soll Backup[2][11] = ''; // Nicht benötigt bei diesem BKP-Typ (nicht verändern!) var Mysql_DBname = getState(instanz + pfad0 + 'Konfiguration.Mysql.DbName').val; // Name der Datenbank (wenn nicht verwendet leer lassen!) var Mysql_User = getState(instanz + pfad0 + 'Konfiguration.Mysql.DbUser').val; // Benutzername für Datenbank (wenn nicht verwendet leer lassen!) var Mysql_PW = getState(instanz + pfad0 + 'Konfiguration.Mysql.DbPw').val; // Passwort für Datenbank (wenn nicht verwendet leer lassen!) var Mysql_LN = getState(instanz + pfad0 + 'Konfiguration.Mysql.BackupLoeschenNach').val; // DB-Backup löschen nach (wenn nicht verwendet leer lassen!)
Ich lese die Werte der verschiedenen Datenpunkte in ein Array ein, welches ich im Nachgang in anderen Funktionen weiter auswerte /verwende.
Mir geht es nun darum, dass die Werte des Arrays bei Änderung des Datenpunktwertes neu eingelesen werden.
Alle Datenpunkte sind in den enum.functions aufgelistet und diese überwache ich via:
$('state(functions=BackItUp)').on(function(obj) { BackupStellen(); });
Wenn es nun möglich wäre bei Änderung das Script automatisch zu stoppen und wieder zu Starten so wie wenn ich auf das Pause/Play Symbol drücke wären die Werte aktuell.
Ich habe auch überlegt den Zwischenweg über eine weitere Funktion zu gehen:
function werteinlesen(){ var1 = getState(blabla) var2 = getState(blabla) usw. } var Backup =[] Backup[0][1] =var1 Backup[0][2]=var2 Bei scriptstart werteeinlesen()
Aber ich hoffte das alles ein wenig schöner lösen zu können
-
Du kannst das Skript neu starten, schau mal in den Objekt Baum deiner JS Instanz unter "script.enabled"
Gesendet von meinem m8 mit Tapatalk
-
Genau das habe ich gesucht
Tausend Dank!
Zwei kurze Fragen noch, den Datenpunkt via setState auf false und true setzen oder besser setStateDelayed? Und umsetzen muss ich das ganze wahrscheinlich in einem seperaten Script da das laufenden ja gestoppt wird oder?