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;
}