mirror of
https://github.com/IoTManagerProject/IoTManager.git
synced 2026-03-27 14:42:18 +03:00
first
This commit is contained in:
37
data/config.json
Normal file
37
data/config.json
Normal file
@@ -0,0 +1,37 @@
|
||||
{
|
||||
"name": "IoTmanager",
|
||||
"chipID": "",
|
||||
"apssid": "IoTmanager",
|
||||
"appass": "",
|
||||
"routerssid": "rise",
|
||||
"routerpass": "hostel3333",
|
||||
"timezone": 1,
|
||||
"ntp": "pool.ntp.org",
|
||||
"mqttServer": "91.204.228.124",
|
||||
"mqttPort": 1883,
|
||||
"mqttPrefix": "/iotTest",
|
||||
"mqttUser": "rise",
|
||||
"mqttPass": "23ri22se32",
|
||||
"mqttServer2": "",
|
||||
"mqttPort2": 1883,
|
||||
"mqttPrefix2": "/iotTest",
|
||||
"mqttUser2": "",
|
||||
"mqttPass2": "",
|
||||
"scen": "1",
|
||||
"telegramApi": "1416711569:AAEI0j83GmXqwzb_gnK1B0Am0gDwZoJt5xo",
|
||||
"telegonof": "0",
|
||||
"teleginput": "0",
|
||||
"autos": "1",
|
||||
"weblogin": "admin",
|
||||
"webpass": "admin",
|
||||
"MqttIn": "0",
|
||||
"MqttOut": "0",
|
||||
"blink": "0",
|
||||
"oneWirePin": "2",
|
||||
"serverip": "http://206.189.49.244",
|
||||
"uart": "0",
|
||||
"uartS": "9600",
|
||||
"uartTX": "12",
|
||||
"uartRX": "13",
|
||||
"grafmax": "0"
|
||||
}
|
||||
BIN
data/css/build.css.gz
Normal file
BIN
data/css/build.css.gz
Normal file
Binary file not shown.
0
data/dev_conf.txt
Normal file
0
data/dev_conf.txt
Normal file
BIN
data/edit.htm.gz
Normal file
BIN
data/edit.htm.gz
Normal file
Binary file not shown.
BIN
data/favicon.ico
Normal file
BIN
data/favicon.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.1 KiB |
BIN
data/index.htm.gz
Normal file
BIN
data/index.htm.gz
Normal file
Binary file not shown.
BIN
data/index.json.gz
Normal file
BIN
data/index.json.gz
Normal file
Binary file not shown.
25
data/items/items.txt
Normal file
25
data/items/items.txt
Normal file
@@ -0,0 +1,25 @@
|
||||
0;button-out;btnid;toggle;Кнопки;Освещение;order;gpio*
|
||||
0;button-out;btnid;toggle;Кнопки;Освещение;order;gpio;inv[1]*
|
||||
0;button-out;btnid;toggle;Кнопки;Освещение;order*
|
||||
0;button-in;btnid;toggle;Кнопки;Освещение;order;gpio;db[20]*
|
||||
0;pwm-out;pwmid;range;Ползунки;Яркость;order;gpio*
|
||||
0;inoutput;dgtid;inputDigit;Ввод;Введите#цифру;order*
|
||||
0;inoutput;tmid;inputTime;Ввод;Введите#время;order*
|
||||
0;inoutput;txtid;anydata;Вывод;Сигнализация;order*
|
||||
0;analog-adc;adcid;fillgauge;Сенсоры;Аналоговый;order;pin[0];map[0,1024,0,100];c[1];int[10]*
|
||||
0;dallas-temp;tmpid;anydataTemp;Сенсоры;Температура;order;pin[2];index[0];int[10]*
|
||||
0;ultrasonic-cm;cmid;anydata;Сенсоры;Расстояние;order;pin[12,13];map[0,500,0,100];c[1];int[10]*
|
||||
0;dht;tmpid;anydataTemp;Сенсоры;Температура;1;c[1]
|
||||
0;dht;humid;anydataHum;Сенсоры;Влажность;2;c[1];pin[2];type[dht11];int[10]*
|
||||
0;dht;tmpid;anydataTemp;Сенсоры;Температура;1;c[1]
|
||||
0;dht;humid;anydataHum;Сенсоры;Влажность;2;c[1];pin[2];type[dht22];int[10]*
|
||||
0;bme280;tmpid;anydataTemp;Сенсоры;Температура;1;c[1]
|
||||
0;bme280;humid;anydataHum;Сенсоры;Влажность;2;c[1]
|
||||
0;bme280;prsid;anydataPress;Сенсоры;Давление;3;c[1];addr[0x76];int[10]*
|
||||
0;bmp280;tmpid;anydataTemp;Сенсоры;Температура;1;c[1]
|
||||
0;bmp280;prsid;anydataPress;Сенсоры;Давление;3;c[1];addr[0x76];int[10]*
|
||||
0;impuls-out;impid;na;na;na;order;gpio*
|
||||
0;count-down;cntid;anydata;Таймер;Обратный#отчет;order*
|
||||
0;inoutput;txtid;anydata;Вывод;Вывод#uart;order*
|
||||
0;logging;crtid;chart;Графики;История;order;val[any];int[60];cnt[100]*
|
||||
0;uptime;uptid;anydataTime;Системные;%name%#uptime;order*
|
||||
BIN
data/js/build.chart.js.gz
Normal file
BIN
data/js/build.chart.js.gz
Normal file
Binary file not shown.
BIN
data/js/function.js.gz
Normal file
BIN
data/js/function.js.gz
Normal file
Binary file not shown.
39
data/lang/lang.ru.json
Normal file
39
data/lang/lang.ru.json
Normal file
@@ -0,0 +1,39 @@
|
||||
{
|
||||
"SetDevConf": "Конфигурация устройства",
|
||||
"SetDevPreset": "Выберите из списка подходящий пресет кофигурации",
|
||||
|
||||
"ButSave":"Сохранить",
|
||||
"ButMainPage":"Главная",
|
||||
|
||||
|
||||
"SetUDPList": "Список других устройств в сети:",
|
||||
"SetUDPWarn1": "После нажатия на кнопку <b>переформировать список устройств</b> ждите примерно минуту, а затем обновите страницу и список появится вновь",
|
||||
|
||||
"SetUDPUpdateList":"Переформировать список устройств",
|
||||
"SetUDPUpdatePage":"Обновить страницу",
|
||||
"SetUDPNameOfDev":"Имя этого устройства:",
|
||||
"SetUDPDateExchange":"Включить обмен данными между устройствами",
|
||||
"SetUDPWarn2":"Если обмен данными включен, то устройства будут обмениваться широковещательными пакетами udp для формирования списка устройств и для осуществления посылки настроек mqtt. Данный обмен создает дополнительную нагрузку на wifi сеть.",
|
||||
|
||||
"SetWiFiNameOfDev":"Имя устройства:",
|
||||
"SetWiFiRouterConnect":"Подключение к WiFi роутеру:",
|
||||
"SetWiFiAccessPoint":"Точка доступа:",
|
||||
"SetWiFiWeb":"Логин и пароль web interface:",
|
||||
"SetWiFiTimeZone":"Временная зона:",
|
||||
"SetWiFiNTP":"Сервер NTP:",
|
||||
"SetWiFiWarn1":"Имя устройства должно состоять из английских букв и иметь длинну от 6 до 12 символов",
|
||||
"SetWiFiWarn2":"После того как вы введете логин пароль от вашего wifi роутера необходимо нажать кнопку сохранить, а затем обязательно нажать кнопку <b>перезагрузить устройство</b> внизу этой страницы",
|
||||
"SetWiFiWarn3":"Устройство постоянно сканирует сеть на наличие wifi. Если роутер отключен, то устройство автоматически перейдет в режим точки доступа. Когда wifi появится устройство автоматически подключится к роутеру снова, и выключит точку доступа",
|
||||
"SetWiFiWarn4":"После изменения поля <b>NTP сервер</b> необходимо перезагрузить устройство",
|
||||
"SetWiFiWarn5":"Светодиод статуса подключения показывает четыре состояния подключения: <br><b>1. мигает редко</b> - идет подключение к wifi <br><b>2. мигает часто</b> - идет подключение к серверу mqtt <br><b>3. горит постоянно</b> - модуль в режиме точки доступа, <br><b>4. не горит</b> - модуль подключен к wifi и к mqtt. <br>Светодиод подключен к gpio2. Если галочка стоит - то использовать этот пин нельзя",
|
||||
|
||||
"SetMQTTServerName":"Имя сервера:",
|
||||
"SetMQTTPort":"Номер порта:",
|
||||
"SetMQTTPrefix":"Префикс:",
|
||||
"SetMQTTUserName":"Имя пользователя:",
|
||||
"SetMQTTPassword":"Пароль:",
|
||||
|
||||
"SetMQTTSendSettings":"Отправить настройки MQTT с этого устройства на все остальные",
|
||||
"SetMQTTWarn1":"Обратите внимание что поле префикс может состоять только из одного слова и одного разделителя: <b>/prefix</b>, вариант вида: <b>/prefix1/prefix2</b> работать не будет. После изменения поля prefix необходимо перезагрузить устройство",
|
||||
"SetMQTTWarn2":"Прежде чем нажимать на кнопку <b>Отправить настройки MQTT</b> сохрание их, если Вы их меняли. Настройки получат и перезапишут все устройства в локальной сети"
|
||||
}
|
||||
47
data/presets/presets.c.txt
Normal file
47
data/presets/presets.c.txt
Normal file
@@ -0,0 +1,47 @@
|
||||
0;dallas-temp;t1;anydataTemp;Термостат1;Температура;1;pin[2];index[0];int[10]
|
||||
0;logging;log1;chart;Термостат1;История;2;val[t1];int[60];cnt[100]
|
||||
0;inoutput;tUp1;inputDigit;Термостат1;Верхний#порог;3
|
||||
0;inoutput;tLow1;inputDigit;Термостат1;Нижний#порог;4
|
||||
0;button-out;btn1;toggle;Термостат1;Нагрев;5;pin[12]*
|
||||
0;dallas-temp;t2;anydataTemp;Термостат2;Температура;1;pin[2];index[0];int[10]
|
||||
0;logging;log2;chart;Термостат2;История;2;val[t2];int[10];cnt[100]
|
||||
0;inoutput;threshold;inputDigitTemp;Термостат2;Заданная#температура;3
|
||||
0;button-out;heater2;toggle;Термостат2;Нагреватель;7;pin[5]
|
||||
0;inoutput;time21;inputTimeClock;Расписание2;Утренний#период;8
|
||||
0;inoutput;threshold1;inputDigitTemp;Расписание2;Температура;9
|
||||
0;inoutput;time22;inputTimeClock;Расписание2;Дневной#период;10
|
||||
0;inoutput;threshold2;inputDigitTemp;Расписание2;Температура;11
|
||||
0;inoutput;time23;inputTimeClock;Расписание2;Вечерний#период;12
|
||||
0;inoutput;threshold3;inputDigitTemp;Расписание2;Температура;13
|
||||
0;inoutput;time24;inputTimeClock;Расписание2;Ночной#период;14
|
||||
0;inoutput;threshold4;inputDigitTemp;Расписание2;Температура;15*
|
||||
0;dht;t3;anydataTemp;Теплица3;Температура;1;c[1]
|
||||
0;dht;h3;anydataHum;Теплица3;Влажность;2;c[1];pin[2];type[dht11];int[10]
|
||||
0;logging;log3;chart;Теплица3;История;3;val[h3];int[60];cnt[100]
|
||||
0;inoutput;hUp3;inputDigit;Теплица3;Верхний#порог;4
|
||||
0;inoutput;hLow3;inputDigit;Теплица3;Нижний#порог;5
|
||||
0;button-out;hUp3;toggle;Теплица3;Полив;6;pin[12]*
|
||||
0;button-out;btn41;toggle;Реле4;Освещение;1;pin[12]
|
||||
0;button-out;btn42;toggle;Реле4;Освещение;2;pin[13]
|
||||
0;inoutput;time41;inputTime;Реле4;Введите#время#включения;3
|
||||
0;inoutput;time42;inputTime;Реле4;Введите#время#выключения;4*
|
||||
0;button-out;btn51;toggle;Свет5;Выключить#все;1
|
||||
0;button-out;btn52;toggle;Свет5;Гостинная;2;pin[12]
|
||||
0;button-out;btn53;toggle;Свет5;Спальня;3;pin[13]
|
||||
0;button-out;btn54;toggle;Свет5;Прихожая;4;pin[14]
|
||||
0;pwm-out;pwm51;range;Свет5;Яркость;5;pin[15]
|
||||
0;pwm-out;pwm52;range;Свет5;Яркость;6;pin[16]
|
||||
0;inoutput;txt5;anydata;Свет5;Статус;7*
|
||||
0;button-out;button;toggle;Таймер;Освещение;1;pin[12]
|
||||
0;count-down;count;anydata;Таймер;Обратный#отчет;2
|
||||
0;inoutput;input;inputDigit;Таймер;Введите#цифру;3*
|
||||
0;inoutput;text;anydataAlarm;Сигнализация;Движение:;1
|
||||
0;inoutput;time;anydataTime;Сигнализация;Время:;2
|
||||
0;button-in;sensor;na;na;na;3;pin[0];db[20]
|
||||
0;button-out;reset;toggle;Сигнализация;Сбросить;4*
|
||||
0;button-in;sensor;na;na;na;1;pin[0];db[20]
|
||||
0;button-out;light;toggle;Освещение;Освещение;2;pin[13]
|
||||
0;count-down;count;anydata;Освещение;Обратный#отчет;3
|
||||
0;inoutput;period;inputDigit;Освещение;Период#включения;4*
|
||||
0;button-out;light;toggle;Кнопки;Освещение;1;pin[13]
|
||||
0;button-in;switch;na;na;na;2;pin[0];db[20]*
|
||||
84
data/presets/presets.s.txt
Normal file
84
data/presets/presets.s.txt
Normal file
@@ -0,0 +1,84 @@
|
||||
t1 > tUp1
|
||||
btn1 0
|
||||
telegram Гостинная нагрев#выключен
|
||||
end
|
||||
t1 < tLow1
|
||||
btn1 1
|
||||
telegram Гостинная нагрев#включен
|
||||
end*
|
||||
t2 > threshold+-2
|
||||
heater2 0
|
||||
end
|
||||
t2 < threshold+-2
|
||||
heater2 1
|
||||
end
|
||||
timenow = time21
|
||||
threshold threshold1
|
||||
end
|
||||
timenow = time22
|
||||
threshold threshold2
|
||||
end
|
||||
timenow = time23
|
||||
threshold threshold3
|
||||
end
|
||||
timenow = time24
|
||||
threshold threshold4
|
||||
end*
|
||||
h3 > hUp3
|
||||
hUp3 0
|
||||
telegram Теплица полив#выключен
|
||||
end
|
||||
h3 < hLow3
|
||||
hUp3 1
|
||||
telegram Теплица полив#включен
|
||||
end*
|
||||
timenow = time41
|
||||
btn41 1
|
||||
btn42 0
|
||||
end
|
||||
timenow = time42
|
||||
btn41 0
|
||||
btn42 1
|
||||
end*
|
||||
btn51 = 1
|
||||
btn52 1
|
||||
btn53 1
|
||||
btn54 1
|
||||
pwm51 200
|
||||
pwm52 800
|
||||
txt5 включено
|
||||
end
|
||||
btn51 = 0
|
||||
btn52 0
|
||||
btn53 0
|
||||
btn54 0
|
||||
pwm51 800
|
||||
pwm52 200
|
||||
txt5 выключено
|
||||
end*
|
||||
button = 1
|
||||
count input
|
||||
end
|
||||
count = 0
|
||||
button 0
|
||||
end*
|
||||
sensor = 1
|
||||
text обнаружено
|
||||
time %date%
|
||||
telegram often Обнаружено#движение
|
||||
end
|
||||
reset = 1
|
||||
text не#обнаружено
|
||||
time %date%
|
||||
reset 0
|
||||
end*
|
||||
sensor = 1
|
||||
light 1
|
||||
count period
|
||||
end
|
||||
count = 0
|
||||
light 0
|
||||
end*
|
||||
switch = 1
|
||||
light change
|
||||
end*
|
||||
1
data/s.conf.csv
Normal file
1
data/s.conf.csv
Normal file
@@ -0,0 +1 @@
|
||||
Удалить;Тип элемента;Id;Виджет;Имя вкладки;Имя виджета;Позиция виджета
|
||||
|
1
data/s.scen.txt
Normal file
1
data/s.scen.txt
Normal file
@@ -0,0 +1 @@
|
||||
//
|
||||
BIN
data/set.dev.json.gz
Normal file
BIN
data/set.dev.json.gz
Normal file
Binary file not shown.
BIN
data/set.device.json.gz
Normal file
BIN
data/set.device.json.gz
Normal file
Binary file not shown.
BIN
data/set.manual.json.gz
Normal file
BIN
data/set.manual.json.gz
Normal file
Binary file not shown.
BIN
data/set.mqtt.json.gz
Normal file
BIN
data/set.mqtt.json.gz
Normal file
Binary file not shown.
BIN
data/set.telegram.json.gz
Normal file
BIN
data/set.telegram.json.gz
Normal file
Binary file not shown.
BIN
data/set.udp.json.gz
Normal file
BIN
data/set.udp.json.gz
Normal file
Binary file not shown.
BIN
data/set.utilities.json.gz
Normal file
BIN
data/set.utilities.json.gz
Normal file
Binary file not shown.
BIN
data/set.wifi.json.gz
Normal file
BIN
data/set.wifi.json.gz
Normal file
Binary file not shown.
6
data/widgets/alarm.json
Normal file
6
data/widgets/alarm.json
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"widget": "anydata",
|
||||
"icon": "body",
|
||||
"color": "red",
|
||||
"descrColor": "red"
|
||||
}
|
||||
5
data/widgets/anydata.json
Normal file
5
data/widgets/anydata.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"widget": "anydata",
|
||||
"after": "",
|
||||
"icon": ""
|
||||
}
|
||||
6
data/widgets/anydataAlarm.json
Normal file
6
data/widgets/anydataAlarm.json
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"widget": "anydata",
|
||||
"after": "",
|
||||
"color":"red",
|
||||
"icon": "walk"
|
||||
}
|
||||
5
data/widgets/anydataHum.json
Normal file
5
data/widgets/anydataHum.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"widget": "anydata",
|
||||
"after": "%",
|
||||
"icon": "water"
|
||||
}
|
||||
5
data/widgets/anydataPress.json
Normal file
5
data/widgets/anydataPress.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"widget": "anydata",
|
||||
"after": "mm",
|
||||
"icon": "speedometer"
|
||||
}
|
||||
5
data/widgets/anydataTemp.json
Normal file
5
data/widgets/anydataTemp.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"widget": "anydata",
|
||||
"after": "°С",
|
||||
"icon": "thermometer"
|
||||
}
|
||||
5
data/widgets/anydataTime.json
Normal file
5
data/widgets/anydataTime.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"widget": "anydata",
|
||||
"after": "",
|
||||
"icon": "speedometer"
|
||||
}
|
||||
6
data/widgets/btn.json
Normal file
6
data/widgets/btn.json
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"widget": "btn",
|
||||
"size": "large",
|
||||
"color": "green",
|
||||
"send": "test"
|
||||
}
|
||||
5
data/widgets/chart.json
Normal file
5
data/widgets/chart.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"widget": "chart",
|
||||
"dateFormat": "HH:mm",
|
||||
"pointRadius": 0
|
||||
}
|
||||
4
data/widgets/chart2.json
Normal file
4
data/widgets/chart2.json
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"widget": "chart",
|
||||
"dateFormat": "HH:mm"
|
||||
}
|
||||
7
data/widgets/fillgauge.json
Normal file
7
data/widgets/fillgauge.json
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"widget": "fillgauge",
|
||||
"circleColor": "#00FFFF",
|
||||
"textColor": "#FFFFFF",
|
||||
"waveTextColor": "#000000",
|
||||
"waveColor": "#00FFFF"
|
||||
}
|
||||
6
data/widgets/inputDate.json
Normal file
6
data/widgets/inputDate.json
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"widget" : "input",
|
||||
"size" : "small",
|
||||
"color" : "orange",
|
||||
"type" : "date"
|
||||
}
|
||||
5
data/widgets/inputDigit.json
Normal file
5
data/widgets/inputDigit.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"widget" : "input",
|
||||
"color" : "blue",
|
||||
"type" : "number"
|
||||
}
|
||||
7
data/widgets/inputDigitTemp.json
Normal file
7
data/widgets/inputDigitTemp.json
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"widget" : "input",
|
||||
"color" : "green",
|
||||
"type" : "number",
|
||||
"size" : "small",
|
||||
"icon": "thermometer"
|
||||
}
|
||||
6
data/widgets/inputText.json
Normal file
6
data/widgets/inputText.json
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"widget" : "input",
|
||||
"size" : "small",
|
||||
"color" : "orange",
|
||||
"type" : "text"
|
||||
}
|
||||
5
data/widgets/inputTime.json
Normal file
5
data/widgets/inputTime.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"widget" : "input",
|
||||
"color" : "blue",
|
||||
"type" : "time"
|
||||
}
|
||||
7
data/widgets/inputTimeClock.json
Normal file
7
data/widgets/inputTimeClock.json
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"widget" : "input",
|
||||
"color" : "orange",
|
||||
"type" : "time",
|
||||
"size" : "small",
|
||||
"icon": "alarm-outline"
|
||||
}
|
||||
12
data/widgets/progress-line.json
Normal file
12
data/widgets/progress-line.json
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"widget": "progress-line",
|
||||
"icon": "sunny",
|
||||
"descrColor": "",
|
||||
"color": "",
|
||||
"max": "100",
|
||||
"background": "",
|
||||
"stroke": "10",
|
||||
"disabled": "",
|
||||
"before": "",
|
||||
"after": ""
|
||||
}
|
||||
11
data/widgets/progress-round.json
Normal file
11
data/widgets/progress-round.json
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"widget": "progress-round",
|
||||
"descrColor": "",
|
||||
"max": "100",
|
||||
"stroke": "20",
|
||||
"color": "#45ccce",
|
||||
"background": "#777",
|
||||
"before": "",
|
||||
"semicircle": "1",
|
||||
"after": ""
|
||||
}
|
||||
9
data/widgets/range.json
Normal file
9
data/widgets/range.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"widget" : "range",
|
||||
"descrColor": "red",
|
||||
"after" : "%",
|
||||
"k" : 0.0977,
|
||||
"min" : 0,
|
||||
"max" : 100,
|
||||
"debounce": 500
|
||||
}
|
||||
8
data/widgets/select.json
Normal file
8
data/widgets/select.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"widget": "select",
|
||||
"options": [
|
||||
"Выключен",
|
||||
"Включен"
|
||||
],
|
||||
"status": 0
|
||||
}
|
||||
5
data/widgets/toggle.json
Normal file
5
data/widgets/toggle.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"widget": "toggle",
|
||||
"icon": "",
|
||||
"iconOff": ""
|
||||
}
|
||||
5
data/widgets/toggleSunMoon.json
Normal file
5
data/widgets/toggleSunMoon.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"widget": "toggle",
|
||||
"icon": "sunny",
|
||||
"iconOff": "moon"
|
||||
}
|
||||
Reference in New Issue
Block a user