Einleitung
Dieser Adapter ermöglicht es dem Benutzer, Geräte mithilfe von Zeitplänen ein-/auszuschalten oder 100/0. Die Zeitpläne können vollständig über ein Vis- oder Vis-2-Widget konfiguriert werden. Ein Zeitplan wechselt einen oder mehrere ioBroker-Zustände und besteht aus einem oder mehreren Auslösern, die definieren, wann und wie der Zustand gewechselt werden soll. Es kann konfiguriert werden, zu welcher Uhrzeit und an welchen Wochentagen der Trigger ausgelöst werden soll. Es können auch Astro-Trigger oder Countdowns erstellt werden.
Zusammenfassung
- Instanz Einstellungen
- Objekte
- Beispiel Trigger Events als JSON
- Beispiel Trigger als JSON
- Beispiel sendTo Trigger nur Experten
- Beispiel Widget als JSON
- Beispiel Historie als JSON
- Widget anlegen
- Namen ändern
- Bedingungen hinzufügen
- Text ersetzen
- CSS Icons und Pfad
- Trigger anlegen
- Astrotrigger anlegen
- Einmaltrigger anlegen
- Astro Icons
- Übersicht Widgets
- HTML Einstellung
- HTML Funktion NUR VIS-2
- CSS
Instanz Einstellung schedule-switcher
-
+ Zeichen: Neuen Zeitplan hinzufügen -
Schaltplandaten Id: Erstellte Objekte -
Name: Name vom Widget -
Anzahl Auslöser: Anzahl der Auslöser -
Aktiv: Aktiv -
Löschen: Zeitplan löschen -
Verzögerung zwischen 2 Schaltvorgängen in ms: Verhindert zeitgleiches setzen von States -
Historie Umschaltung als JSON (max. 100/0 für Aus)Max. Speicherung der Historie -
HTML für VIS und VIS-2 erstellen (VIS-2 siehe Beschreibung)Aktivierung HTML Übersicht

States
- onoff
schedule-switcher.0.onoff.6.dataAlle Auslöser als JSONschedule-switcher.0.onoff.6.enabledAktiv oder Inaktivschedule-switcher.0.onoff.6.viewsWo wurden Widgets für die Objekte angelegt- Status
schedule-switcher.0.counterTriggerAnzahl Trigger (aktive und inaktive)schedule-switcher.0.historyHisterie der Schaltungenschedule-switcher.0.nextEventsNächste Schaltvorgänge als JSON Tableschedule-switcher.0.sendtoBei VIS-2 werden Änderungen über dieses Objekt an den Adapter übergebenschedule-switcher.0.widgetOverviewÜbersicht aller Widgets um Fehler zu finden

Beispiel Triggerevents JSON
[
{
"type": "TimeTrigger", // TimeTrigger, AstroTrigger oder OneTimeTrigger
"name": "Rollloade Wohn", // Name
"triggerid": 0, // Trigger ID
"action": "OnOffStateAction", // OnOffStateAction oder Condition
"states": ["0_userdata.0.test", "0_userdata.0.test5"], // States
"active": true, // enabled true oder false
"hour": 16, // Stunde
"minute": 22, // Minute
"day": 6, // Tag
"valueCheck": false, // States vergleichen
"dateISO": "2024-11-09T15:22:00.000Z", // Zeit ohne Zeitzone
"timestamp": 1731165720000, // Timestamp ohne Zeitzone
"objectId": 1 // ObejektId schedule-switcher.0.onoff.<objectid>.data
}
]
Beispiel Auslöser JSON
{
"type": "OnOffSchedule",
"name": "Rolllade Wohn", // Name vom letzten erstellte Widget
"active": false, // Alle 24h wird geprüft, ob es ein Widget gibt. Wird keins gefunden wird der Zeitplan deaktiviert. Mit TRUE wird nicht deaktiviert.
"onAction": {
// Action für On
"type": "OnOffStateAction",
"valueType": "number",
"onValue": 0,
"offValue": 100,
"booleanValue": true,
"idsOfStatesToSet": ["0_userdata.0.test4"] // States max. 10
},
"offAction": {
// Action für Off
"type": "OnOffStateAction",
"valueType": "number",
"onValue": 0,
"offValue": 100,
"booleanValue": false,
"idsOfStatesToSet": ["0_userdata.0.test4"] // States max. 10
},
"triggers": [
{
"type": "AstroTrigger", // Trigger - AstroTrigger - OneTimeTrigger
"astroTime": "sunrise",
"shiftInMinutes": 0,
"weekdays": [1, 2, 3, 4, 5, 6],
"valueCheck": false,
"id": "0",
"action": {
"type": "ConditionAction",
"condition": {
"type": "StringStateAndConstantCondition",
"constant": "true",
"stateId": "0_userdata.0.test",
"sign": "=="
},
"action": {
"type": "OnOffStateAction",
"name": "On"
}
}
}
]
}
Beispiel Widgets JSON
{
"vis-2.0": {
// Welche VIS Version
"main": {
// Projekt
"w000005": {
// Widget ID
"prefix": "main", // Projekt
"namespace": "vis-2.0", // Welche VIS Version
"view": "Rollladen", // Welche View
"widgetId": "w000005", // Widget ID
"newId": "schedule-switcher.0.onoff.6.data", // Neues Objekt
"oldId": "timer-switch.0.onoff.1.data", // Altes Objekt
"enabled": "schedule-switcher.0.onoff.6.enabled", // Enabled Objekt
"stateCount": 1, // Counter Zustände
"state": [
// Zustände
{
"oid-stateId1": "0_userdata.0.test5"
}
],
"conditionCount": 1, // Counter Bedingung
"condition": [
// Zustände Bedingungen
{
"oid-conditionStateId1": "0_userdata.0.test"
}
],
"valueType": "number", // Wertetyp
"offValue": "100", // Wert für An - Fehlt wenn nicht gesetzt
"onValue": "0", // Wert für Aus - Fehlt wenn nicht gesetzt
"newOff": "Hoch", // Ersetzt AN - Fehlt wenn nicht gesetzt
"newOn": "Runter" // Ersetzt AUS - Fehlt wenn nicht gesetzt
},
"w000006": {
// Widget ID
"prefix": "main", // Projekt
"namespace": "vis-2.0", // Welche VIS Version
"view": "Test", // Welche View
"widgetId": "w000006", // Widget ID
"newId": "schedule-switcher.0.onoff.6.data", // Neues Objekt
"oldId": "timer-switch.0.onoff.1.data", // Altes Objekt
"enabled": "schedule-switcher.0.onoff.6.enabled", // Enabled Objekt
"stateCount": 1, // Counter Zustände
"state": [
// Zustände
{
"oid-stateId1": "0_userdata.0.test4"
}
],
"conditionCount": 1, // Counter Bedingung
"condition": [], // Zustände Bedingungen
"valueType": "boolean" // Wertetyp
}
}
}
}
Beispiel Auslöser mit sendTo anlegen oder editieren (Experten)
sendTo("schedule-switcher.0", "add-trigger", { // Neuen Auslöser anlegen
"dataId":"schedule-switcher.0.onoff.6.data",
"triggerType":"TimeTrigger",
"actionType":"OnOffStateAction"
});
sendTo("schedule-switcher.0", "update-trigger", { // Aktion für den neuen Auslöser festlegen
"dataId":"schedule-switcher.0.onoff.6.data",
"trigger":{
"type":"TimeTrigger",
"hour":12,
"minute":32,
"weekdays":[1,2,3,4,5],
"valueCheck": false,
"id":"0", // ID abgleichen
"action":{
"type":"OnOffStateAction",
"name":"On"
}
}
});
sendTo("schedule-switcher.0", "add-trigger", { // Neuen Astrotrigger anlegen
"dataId":"schedule-switcher.0.onoff.6.data",
"triggerType":"AstroTrigger",
"actionType":"OnOffStateAction"
});
sendTo("schedule-switcher.0", "update-trigger", { // Aktion für den neuen Auslöser festlegen
"dataId":"schedule-switcher.0.onoff.6.data",
"trigger":{
"type":"AstroTrigger",
"astroTime":"sunrise", // sunrise, sunset or solarNoon
"shiftInMinutes":0,
"weekdays":[1,2,3,4,5],
"valueCheck": false,
"id":"0", // ID abgleichen
"action":{
"type":"OnOffStateAction",
"name":"On"
}
}
});
sendTo("schedule-switcher.0", "disable-schedule", { // Auslöser deaktivieren
"dataId":"schedule-switcher.0.onoff.6.data"
});
sendTo("schedule-switcher.0", "enable-schedule", { // Auslöser aktivieren
"dataId":"schedule-switcher.0.onoff.6.data"
});
sendTo("schedule-switcher.0", "add-one-time-trigger", { // Einmalauslöser anlegen
"dataId":"schedule-switcher.0.onoff.6.data",
"trigger":"{\"type\":\"OneTimeTrigger\",\"date\":\"2024-10-17T06:14:22.660Z\",\"valueCheck\": false,\"timedate\":false,\"action\":{\"type\":\"OnOffStateAction\",\"name\":\"On\"}}"
});
sendTo("schedule-switcher.0", "delete-trigger", { // Auslöser mit bekannter ID löschen
"dataId":"schedule-switcher.0.onoff.6.data",
"triggerId":"0"
});
sendTo("schedule-switcher.0", "change-active", { // Zeitplan ohne Widget aktiv lassen (wird bei restart oder alle 24h geprüft)
"dataId":"schedule-switcher.0.onoff.6.data",
"active":false, // false: Automatische Deaktivierung wenn kein Widget vorhanden ist
});
sendTo("schedule-switcher.0", "change-active", { // Zeitplan ohne Widget aktiv lassen (wird bei restart oder alle 24h geprüft)
"dataId":"schedule-switcher.0.onoff.6.data",
"active":true, // true: Zeitplan wird nicht deaktiviert wenn kein Widget vorhanden ist
});
Beispiel Historie JSON
[
{
"setObjectId": "0_userdata.0.test4",
"objectId": 0,
"actualValue": true,
"oldValue": false,
"checkValue": false,
"object": "0_userdata.0.test4",
"trigger": "TimeTrigger",
"astroTime": "unknown",
"shiftInMinutes": 0,
"date": 0,
"hour": 20,
"minute": 48,
"weekdays": [
[
1,
2,
3,
4,
5,
6,
0
]
],
"timestamp": 1761384780017,
"dateTime": "2025-10-25T09:33:00.017Z",
"dateTimeWithTimezone": "2025-10-25T11:33:00.017Z"
},
{
"setObjectId": "0_userdata.0.test4",
"objectId": 0,
"actualValue": true,
"oldValue": false,
"checkValue": false,
"object": "0_userdata.0.test4",
"astroTime": "unknown",
"shiftInMinutes": 0,
"date": 0,
"hour": 20,
"minute": 47,
"weekdays": [
[
1,
2,
3,
4,
5,
6,
0
]
],
"timestamp": 1761383520527,
"dateTime": "2025-10-25T09:12:00.527Z",
"dateTimeWithTimezone": "2025-10-25T11:12:00.527Z"
}
]
Beispiel Widget View JSON
{
"vis-2.0": {
"main": {
"w000004": {
"prefix": "main", // Projekt
"namespace": "vis-2.0", // VIS
"view": "default", // View
"widgetId": "w000004", // Widget ID
"newId": "schedule-switcher.0.onoff.3.data" // Objekt ID
}
}
},
"vis.0": {
"main": {
"w00001": {
"prefix": "main",
"namespace": "vis.0",
"view": "Rollo",
"widgetId": "w00001",
"newId": "schedule-switcher.0.onoff.3.data"
}
}
}
}
Widget anlegen
- Widget in einer View einfügen

- ID für Schaltplandaten auswählen
- Zeitplan Aktivierungs ID auswählen
- ID vom geschaltenen State auswählen (max. 10 möglich)

- Wertetype festlegen und die Werte die gesetzt werden sollen

- Nun einen Schaltplan erstellen

Namen ändern
- Namen ändern - Wird in den Objekten auch übernommen

Bedingung hinzufügen
- Eine Bedingung festellen.

Text ersetzen
- Text an/aus und alles an/alles aus ändern

CSS anwenden Beschreibung siehe css
- Verwende
CSS aktivierenum den Style anzupassen









Icongrößen und eigene Icons

Für den Pfad zu den eigenen Icons muss CSS aktivieren nicht aktiviert werden. Bei vorhandenen Widgets muss die Dateiendung einmalig gewechselt werden sonst wird das Attribut nicht angelegt. Das gleiche gilt auch für die Breite/Höhe Einstellungen.
Die Icons können über Upload hochgeladen werden oder in ein eigenes Verzeichnis kopieren.
Beispiel Pfad über Dateien:
- http://192.168.2.18:8081/files/0_userdata.0/
- /opt/iobroker/iobroker-data/files/0_userdata.0/
Oder ein eigenes Verzeichnis.
- /home/iobroker//
Die Widgets müssen wie folgt bennant werden. Es müssen ALLE Icons in das Verzeichnis angelegt werden:
| Icon | Dateiname |
|---|---|
| sunrise | |
| solarNoon | |
| sunset | |
| sunriseEnd | |
| goldenHourEnd | |
| goldenHour | |
| sunsetStart | |
| dusk | |
| nauticalDusk | |
| night | |
| nadir | |
| nightEnd | |
| nauticalDawn | |
| dawn | |
| add | |
| cancel | |
| edit | |
| delete | |
| onetime | |
| remove_circle_outline | |
| save | |
| time | |
| valueCheck | |
| valueNoCheck | |
| unknown |

Trigger
- Den Stift anklicken um die Zeit einzutragen oder die Mülltonne um den Trigger zu löschen

- Schaltzustand auswählen
- Eine Bedingung auswählen (optional)
- Wert nur setzen wenn er ungleich ist
- Zeit eintragen (hh:mm)
⚠ Zeigt in Firefox kein Uhrzeit-Feld an!

- Wochentag auswählen
- Oben rechts speichern anklicken

- Fertig

Astro Trigger
- Den Stift anklicken um die Astrozeit auszuwählen oder die Mülltonne um den Trigger zu löschen

- Schaltzustand auswählen
- Eine Bedingung auswählen (optional)
- Wert nur setzen wenn er ungleich ist
- Astrozeit auswählen (Sonnenaufgang, Sonnenuntergang oder Mittag)

- Offset in Minuten eintragen (optional)
- Wochentag auswählen
- Oben rechts speichern anklicken

- Fertig

Astro Icons
| Icon | Description |
|---|---|
| sunrise | |
| solarNoon | |
| sunset | |
| sunriseEnd | |
| goldenHourEnd | |
| goldenHour | |
| sunsetStart | |
| dusk | |
| nauticalDusk | |
| night | |
| nadir | |
| nightEnd | |
| nauticalDawn | |
| dawn |
One Time Trigger
- Schaltzustand auswählen
- Eine Bedingung auswählen (optional)
- Wert nur setzen wenn er ungleich ist
- Zeit eintragen (hh:mm:ss)
- Oben rechts speichern anklicken

- Fertig

- Schaltzustand auswählen
- Eine Bedingung auswählen (optional)
- Wert nur setzen wenn er ungleich ist
- Zeit eintragen/auswählen (dd.mm.yyyy hh:mm:ss)
- Oben rechts speichern anklicken
⚠ Zeigt in Firefox kein Uhrzeit-Feld an!


- Fertig

HTML Übersicht der Widgets

HTML für VIS und VIS-2
html.background_color_bodyHintergrundfarbe vom Body. Bei VIS komplett und bei VIS-2 nur das Widget - Standard #000000html.background_color_evenHintergrundfarbe Trigger gerade Zahl - Standard #1E1E1Ehtml.background_color_oddHintergrundfarbe Trigger ungerade Zahl - Standard #18171Chtml.background_color_triggerHintergrundfarbe Trigger Objekt - Standard #000000html.background_color_weekdays_hoverHintergrundfarbe bei Mouseover der Wochentage - Klick für aktivieren/deaktivieren - Standard bluehtml.column_align_01Kopftextausrichtung Spalte 1 - Standard centerhtml.column_align_02Kopftextausrichtung Spalte 2 - Standard centerhtml.column_align_03Kopftextausrichtung Spalte 3 - Standard centerhtml.column_align_04Kopftextausrichtung Spalte 4 - Standard centerhtml.column_align_05Kopftextausrichtung Spalte 5 - Standard centerhtml.column_align_06Kopftextausrichtung Spalte 6 - Standard centerhtml.column_align_07Kopftextausrichtung Spalte 7 - Standard centerhtml.column_align_08Kopftextausrichtung Spalte 8 - Standard centerhtml.column_align_09Kopftextausrichtung Spalte 9 - Standard centerhtml.column_align_10Kopftextausrichtung Spalte 10 - Standard centerhtml.column_text_01Kopftext Spalte 1 - Standard Schedulehtml.column_text_02Kopftext Spalte 2 - Standard Deviceshtml.column_text_03Kopftext Spalte 3 - Standard Switchhtml.column_text_04Kopftext Spalte 4 - Standard Mohtml.column_text_05Kopftext Spalte 5 - Standard Tuhtml.column_text_06Kopftext Spalte 6 - Standard Wehtml.column_text_07Kopftext Spalte 7 - Standard Thhtml.column_text_08Kopftext Spalte 8 - Standard Frhtml.column_text_09Kopftext Spalte 9 - Standard Sahtml.column_text_10Kopftext Spalte 10 - Standard Suhtml.column_width_01Breite der Spalte 1 - Standard autohtml.column_width_02Breite der Spalte 2 - Standard autohtml.column_width_03Breite der Spalte 3 - Standard autohtml.column_width_04Breite der Spalte 4 - Standard autohtml.column_width_05Breite der Spalte 5 - Standard autohtml.column_width_06Breite der Spalte 6 - Standard autohtml.column_width_07Breite der Spalte 7 - Standard autohtml.column_width_08Breite der Spalte 8 - Standard autohtml.column_width_09Breite der Spalte 9 - Standard autohtml.column_width_70Breite der Spalte 10 - Standard autohtml.font_color_text_disabledTextfarbe vom deaktivierten Objekt - Standard redhtml.font_color_text_enabledTextfarbe vom aktivierten Objekt - Standard yellowhtml.font_color_weekdays_disabledTextfarbe von deaktivierten Wochentagen - Standard redhtml.font_color_weekdays_enabledTextfarbe von aktivierten Wochentagen - Standard yellowhtml.header_borderKopfrand in Pixel - Standard 2html.header_font_familyKopf Schriftfamilie - Standard Helveticahtml.header_font_sizeKopf Schriftgöße - Standard 15html.header_linear_color_1Kopf Hintergrundbild: linearer Farbverlauf 1 - Standard #BDBDBDhtml.header_linear_color_2Kopf Hintergrundbild: linearer Farbverlauf 2 - Standard #BDBDBDhtml.header_tag_border_colorKopf HTML TAG<td>Randfarbe - Standard #424242html.header_widthKopf TAG<table>Größe Standard autohtml.column_align_row_01Textausrichtung der Zeilen in Spalte 1 - Standard lefthtml.column_align_row_02Textausrichtung der Zeilen in Spalte 2 - Standard lefthtml.column_align_row_03Textausrichtung der Zeilen in Spalte 3 - Standard lefthtml.column_align_row_04Textausrichtung der Zeilen in Spalte 4 - Standard lefthtml.column_align_row_05Textausrichtung der Zeilen in Spalte 5 - Standard lefthtml.column_align_row_06Textausrichtung der Zeilen in Spalte 6 - Standard lefthtml.column_align_row_07Textausrichtung der Zeilen in Spalte 7 - Standard lefthtml.column_align_row_08Textausrichtung der Zeilen in Spalte 8 - Standard lefthtml.column_align_row_09Textausrichtung der Zeilen in Spalte 9 - Standard lefthtml.column_align_row_10Textausrichtung der Zeilen in Spalte 10 - Standard lefthtml.headline_colorKopf Schriftfarbe (schedule, device ...) - Standard #ffffffhtml.headline_font_sizeKopf Schriftgröße in Pixel - Standard 16html.headline_heightKopf Zeilenhöhe in Pixel - Standard 35html.headline_underlinedKopf Rand unten in Pixel - Standard 3html.headline_underlined_colorKopf Randfarbe unten - Standard #ffffffhtml.headline_weightKopf Schriftstärke - Standard normalhtml.html_codeHTML Code für VIS, VIS-2, Jarvis, IQontrol usw.html.icon_falseIcon Schaltzustand aus - Standard ⚪html.icon_state_check_noStatusvergleich deaktiviert 🔴html.icon_state_check_yesZustandsvergleich aktiviert 🟢html.icon_switch_symbolIcon Schalter um die Zeitschaltuhr zu aktivieren/deaktivieren - Standard ⏱html.icon_trueIcon Schaltzustand an - Standard 🟡html.jarvisKompatibel für Jarvis - Standard falsehtml.p_tag_text_alginHTML<p>Textausrichtung (Letzte Aktualisierung und Fußzeile) - Standard centerhtml.table_tag_border_colorRandfarbe vom TAG<table>- Standard #424242html.table_tag_cellGrenzabstand vom TAG<table>in Pixel - Standard 6html.table_tag_text_alignTextausrichtung vom TAG<table>- Standard centerhtml.table_tag_widthGröße vom TAG<table>- Standard autohtml.td_tag_border_bottomRand unten vom TAG<td>in Pixel - Standard 1html.td_tag_border_colorRandfarbe unten vom TAG<td>- Standard #424242html.td_tag_border_rightRand rechts vom TAG<td>in Pixel - Standard 1html.td_tag_cellPlatz um den Text vom TAG<td>in Pixel (padding) - Standard 6html.top_font_familySchriftfamilie von Kopfzeile und Fußzeile - Standard Helveticahtml.top_font_sizeSchriftgröße von Kopfzeile und Fußzeile in Pixel - Standard 20html.top_font_weightSchriftstärke von Kopfzeile und Fußzeile - Standard normal"html.top_textEigener Text für die Kopfzeile - Standard your texthtml.top_text_colorSchriftfarbe von Kopfzeile und Fußzeile - Standard #ffffffhtml.updateManuelles Update starten

- Ein HTML Widget anlegen und unter HTML das Objekt eintragen
{schedule-switcher.0.html.html_code} - Klick auf den Schriftzug
Letzte Aktualisierungum ein manuelles Update durchzuführen - Icon anklicken um das Widget zu aktivieren/deaktivieren
- Um ein Auslöser zu löschen muss man erst einen Haken setzen und dann den Button
deletedrücken - Zeiten/Astro ändern und den Button
savedrücken um die Änderungen zu übernehmen - Wochentag anklicken um diesen zu aktivieren/deaktivieren
- Zeile Triggername wird unter Wochentage der nächste Event on/off angezeigt

Function NUR für VIS-2!!!
NUR bei VIS-2 müssen leider die unten aufgeführten Funktionen manuell eingefügt werden (siehe Bilder)


function deleteTrigger(stateId, command, id, dataid, count) {
var checked = document.getElementById('delete' + count).checked;
if (checked) {
var data = {
"command": command,
"message": {
"triggerId": id,
"dataId": dataid,
}
};
vis.conn.setState(stateId + '.sendto', { val: JSON.stringify(data), ack: false });
}
}
function changeweekdays(stateId, command, dataid, id, changeid, type) {
if (type === "OneTimeTrigger") return;
var data = {
"command": command,
"message": {
"changeid": changeid,
"triggerid": id,
"dataid": dataid
}
};
vis.conn.setState(stateId + '.sendto', { val: JSON.stringify(data), ack: false });
}
function changeValueCheck(stateId, command, dataid, id, value) {
var data = {
"command": command,
"message": {
"changeval": value,
"triggerid": id,
"dataid": dataid
}
};
vis.conn.setState(stateId + '.sendto', { val: JSON.stringify(data), ack: false });
}
function updateTrigger(stateId) {
vis.conn.setState(stateId + '.html.update', { val: true, ack: false });
}
function setState(stateId, value) {
vis.conn.setState(stateId, { val: value == 'false' ? false : true, ack: false });
}
function sendToAstro(stateId, command, dataid, id, count) {
var timeselect = document.getElementById('timeselect' + count).value;
var shift = document.getElementById('shift' + count).value;
var data = {
"command": command,
"message": {
"astrotime": timeselect,
"shift": shift,
"triggerid": id,
"dataid": dataid
}
};
vis.conn.setState(stateId + '.sendto', { val: JSON.stringify(data), ack: false });
}
function sendToDateTime(stateId, command, id, dataid, count) {
var value = document.getElementById('datetime' + count).value;
var data = {
"command": command,
"message": {
"time": value,
"triggerid": id,
"dataid": dataid
}
};
vis.conn.setState(stateId + '.sendto', { val: JSON.stringify(data), ack: false });
}
function sendToTime(stateId, command, id, dataid, count) {
var value = document.getElementById('nexttime' + count).value;
var data = {
"command": command,
"message": {
"time": value,
"triggerid": id,
"dataid": dataid
}
};
vis.conn.setState(stateId + '.sendto', { val: JSON.stringify(data), ack: false });
}
CSS
app-on-off-schedules-widget {
/* Primary color (button background, toggle switch color) */
--ts-widget-primary-color: #337ab7;
/* Background color of the widget */
--ts-widget-bg-color: #424242;
/* Background color of the triggers */
--ts-widget-trigger-bg-color: #272727;
/* Foreground color (font color and scrollbar color) */
--ts-widget-fg-color: white;
/* Font color of the switched states id */
--ts-widget-oid-fg-color: #a5a5a5;
/* Font color in buttons */
--ts-widget-btn-fg-color: white;
/* Font color of a disabled weekday */
--ts-widget-weekdays-disabled-fg-color: #5D5D5D;
/* Font color of an enabled weekday */
--ts-widget-weekdays-enabled-fg-color: white;
/* Font color of the name of the widget (defaults to --ts-widget-fg-color) */
--ts-widget-name-fg-color: white;
/* Font color of switched time (defaults to --ts-widget-fg-color) */
--ts-widget-switched-time-fg-color: white;
/* Font color of switched value (defaults to --ts-widget-fg-color)*/
--ts-widget-switched-value-fg-color: white;
/* Font color of the astro time (defaults to --ts-widget-fg-color) */
--ts-widget-astro-time-fg-color: black;
/* Font color of the astro time's shift */
--ts-widget-astro-shift-fg-color: #5d5d5d;
/* Font color of condition (defaults to --ts-widget-fg-color) */
--ts-widget-condition-fg-color: white;
/* Font color of toogle button off */
--ts-widget-off-color: #c0c0c0;
/* Color background toogle button off */
--ts-widget-off-color-container: #808080;
/* Color of next astro switching time */
--ts-widget-astro-next-fg-color: white;
/* Font family used in the whole widget */
--ts-widget-font-family: 'Roboto', 'Segoe UI', BlinkMacSystemFont, system-ui, -apple-system;
/* Font size of the name of the widget */
--ts-widget-name-font-size: 2em;
/* Font size of the switched oid */
--ts-widget-oid-font-size: 30px;
/* Font size of switch text */
--ts-widget-state-action-width: 65px;
/* Font size of next astro switching time */
--ts-widget-astro-next-font-size: 2em;
/* Width of date time input */
--ts-widget-datetime-width: 230px;
/* Display of edit name button. Use 'none' to hide the button and 'block' to show it
--ts-widget-edit-name-button-display: block;
/* Display of condition. Use 'none' to hide the condition and 'block' to show it
-ts-widget-condition-display: block;
/* Display of time icon. Use 'none' to hide the button and 'block' to show it
--ts-widget-time-icon-display: none;
/* Applies a filter to icons used in buttons (safe, edit, remove, cancel), for
white use invert(1) and for black invert(0) */
--ts-widget-img-btn-filter: invert(1);
/* Add trigger dropdown background color */
--ts-widget-add-trigger-dropdown-bg-color: #f1f1f1;
/* Add trigger dropdown font color */
--ts-widget-add-trigger-dropdown-fg-color: black;
/* Add trigger dropdown hover background color */
--ts-widget-add-trigger-dropdown-hover-bg-color: #ddd;
/* ! Changing these may break the layout, change at your own risk */
/* Font size of weekdays */
--ts-widget-weekdays-font-size: 23px;
/* Font size of switched value (on/off) */
--ts-widget-switched-value-font-size: 2em;
/* Font size of switched time */
--ts-widget-switched-time-font-size: 2em;
/* Font size of the astro time (e.g. Sunrise, ...) */
--ts-widget-astro-time-font-size: 1.5em;
/* Font size of the astro time's shift */
--ts-widget-astro-shift-font-size: 1em;
/* Font size of condition */
--ts-widget-condition-font-size: 1em;
/* Icons width and height in px */
/* Astro icons */
--ts-widget-astro-icon-width, 42px;
--ts-widget-astro-icon-height, 42px;
/* Display icons (rename and add icon) */
--ts-widget-display-icon-width, 28px;
--ts-widget-display-icon-height, 28px;
/* Trigger view icons */
--ts-widget-trigger-view-icon-width, 28px;
--ts-widget-trigger-view-icon-height, 28px;
/* Trigger edit icons */
--ts-widget-trigger-edit-icon-width, 28px;
--ts-widget-trigger-edit-icon-height, 28px;
}
Changelog
0.2.1 (2026-07-09)
- (Lucky-ESA) Fixed refresh astrotime
0.2.0 (2026-05-30)
- (copilot) Adapter requires node.js >= 22 now
- (Lucky-ESA) Code optimized
- (Lucky-ESA) Adapter requires admin >= 7.7.22 now
0.1.0 (2025-11-25)
- (Lucky-ESA) Fixed warn log (Cannot read dir...)
- (Lucky-ESA) Added state comparison enabled/disabled
- (Lucky-ESA) Fixed small some bugs
- (Lucky-ESA) History JSON changed
- (Lucky-ESA) Using your own icons
0.0.12 (2025-08-27)
- (Lucky-ESA) Astro time in widget fixed
0.0.11 (2025-08-16)
- (Lucky-ESA) Admin 7.6.17 required
- (Lucky-ESA) Node 20 required
License
MIT License
Copyright (c) 2024-2026 Lucky_ESA github@luckyskills.de
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.