NEWS
Script aufrufen um Sichtbarkeit eines Objekts zu steuern
-
Ich bin noch Anfängerin im ioBroker.
Ich möchte in VIS ein Objekt uhrzeitabhängig Ein- bzw. Ausblenden. Also beispielsweise zwischen 10 und 11 Uhr soll es eingeblendet sein, ansonsten nicht.
Dazu habe ich eine Scriptvorlage gefunden. (siehe unten)
Dem Script kann man Startzeit und Endzeit übergeben. Liegt die Uhrzeit dazwischen ist der Rückgabewert true.
Jetzt war meine Idee dieses Script im Feld Sichtbarkeit, Object ID aufzurufen mit der Bedingung == true. Aber das scheint so nicht zu funktionieren.javascript.0.scriptEnabled.common.Zeitbereich("10:00:00", "11:00:00")
wie kann ich das Script aus VIS aufrufen, um das Feld dann Uhrzeitabhängig auszublenben?
/* * @copyright 2020 Stephan Kreyenborg <stephan@kreyenborg.koeln> * * @author 2020 Stephan Kreyenborg <stephan@kreyenborg.koeln> * * Dieses Skript dient zur freien Verwendung in ioBroker zur Verbrauchserfassung der Shelly Geräte. * Jegliche Verantwortung liegt beim Benutzer. Das Skript wurde unter Berücksichtigung der bestmöglichen Nutzung * und Performance entwickelt. * Der Entwickler versichert, das keine böswilligen Systemeingriffe im originalen Skript vorhanden sind. * * Sollte das Skript wider Erwarten nicht korrekt funktionieren, so hast Du jederzeit die Möglichkeit, Dich auf * https://www.kreyenborg.koeln * für Unterstützung zu melden. Jedes Skript besitzt seine eigene Kommentarseite, auf der, * nach zeitlicher Möglichkeit des Autors, Hilfe angeboten wird. Ein Anrecht hierauf besteht nicht! * * Ansprüche gegenüber Dritten bestehen nicht. * * Skript Name: Zeitbereich * Skript Version: 1.0 * Erstell-Datum: 16. April 2020 * */ function Zeitbereich(startTime,endTime) { // Aktuelles Datum abholen var currentDate = new Date(); // Startdatum formatieren var startDate = new Date(currentDate.getTime()); startDate.setHours(startTime.split(":")[0]); startDate.setMinutes(startTime.split(":")[1]); if (startTime.split(":")[2]) { startDate.setSeconds(startTime.split(":")[2]); } // Enddatum formatieren var endDate = new Date(currentDate.getTime()); endDate.setHours(endTime.split(":")[0]); endDate.setMinutes(endTime.split(":")[1]); if (endTime.split(":")[2]) { endDate.setSeconds(endTime.split(":")[2]); } //Setze Zeitbereich zurück var valid_time_frame = false if (endTime > startTime) { // Zeitbereich ist im gleichen Tag valid_time_frame = (currentDate >= startDate && currentDate <= endDate) ? true : false; } else { // Zeitbereich endet im nächsten Tag valid_time_frame = (currentDate >= endDate && currentDate <= startDate) ? false : true; } return valid_time_frame; }
-
@paige1998 sagte in Script aufrufen um Sichtbarkeit eines Objekts zu steuern:
Jetzt war meine Idee dieses Script im Feld Sichtbarkeit, Object ID aufzurufen mit der Bedingung == true. Aber das scheint so nicht zu funktionieren.
ich weiss nicht genau was du tust.
@paige1998 sagte in Script aufrufen um Sichtbarkeit eines Objekts zu steuern:
javascript.0.scriptEnabled.common.Zeitbereich("10:00:00", "11:00:00")
in dem Verzeichnis solltest du nur Skripte (de)aktivieren, sonst nichts.
(ob dieser Skriptname mit Sonderzeichen sinnvoll ist, erstmal außen vor)@paige1998 sagte in Script aufrufen um Sichtbarkeit eines Objekts zu steuern:
Ich möchte in VIS ein Objekt uhrzeitabhängig Ein- bzw. Ausblenden. Also beispielsweise zwischen 10 und 11 Uhr soll es eingeblendet sein, ansonsten nicht.
läuft viel einfacher
Ein kurzes Script/Blockly/wasAuchImmer schaltet einen eigenen Datenpunkt vom typ Bool auf false oder true, je nach Uhrzeit.
Diesen nutzt du für die Sichtbarkeit -
javascript.0.scriptEnabled.common.Zeitbereich("10:00:00", "11:00:00")
In dem Scriptnamen sind keine Sonderzeichen. In der Klammer stehen übergabeparameter an das Script. Startzeit und Endzeit. Ist es nicht möglich ein Script aus VIS für meinen genannten Zweck aufzurufen?
-
@paige1998 sagte in Script aufrufen um Sichtbarkeit eines Objekts zu steuern:
Ist es nicht möglich ein Script aus VIS für meinen genannten Zweck aufzurufen?
warum denn?
Passt der Vorschlag nicht?Wenn es unbedingt sein muss schaltest du einen Datenpunkt über die Vis, und das Skript triggert darauf.
Javascript arbeitet eventbasiert. Da werden Skripte nicht an- und abgeschaltet