mirror of
https://github.com/IoTManagerProject/IoTManager.git
synced 2026-03-26 22:22:16 +03:00
начал писать систему формирования виджетов
This commit is contained in:
@@ -61,7 +61,7 @@
|
|||||||
"type": "Reading",
|
"type": "Reading",
|
||||||
"subtype": "InputValue",
|
"subtype": "InputValue",
|
||||||
"id": "txt",
|
"id": "txt",
|
||||||
"widget": "input",
|
"widget": "inputDigit",
|
||||||
"page": "Лимиты",
|
"page": "Лимиты",
|
||||||
"descr": "Порог"
|
"descr": "Порог"
|
||||||
},
|
},
|
||||||
|
|||||||
6
data_svelte/widgets/alarm.json
Normal file
6
data_svelte/widgets/alarm.json
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"widget": "anydata",
|
||||||
|
"icon": "body",
|
||||||
|
"color": "red",
|
||||||
|
"descrColor": "red"
|
||||||
|
}
|
||||||
5
data_svelte/widgets/anydata.json
Normal file
5
data_svelte/widgets/anydata.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"widget": "anydata",
|
||||||
|
"after": "",
|
||||||
|
"icon": ""
|
||||||
|
}
|
||||||
6
data_svelte/widgets/anydataAlarm.json
Normal file
6
data_svelte/widgets/anydataAlarm.json
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"widget": "anydata",
|
||||||
|
"after": "",
|
||||||
|
"color":"red",
|
||||||
|
"icon": "walk"
|
||||||
|
}
|
||||||
5
data_svelte/widgets/anydataAmp.json
Normal file
5
data_svelte/widgets/anydataAmp.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"widget": "anydata",
|
||||||
|
"after": "Amp",
|
||||||
|
"icon": "speedometer"
|
||||||
|
}
|
||||||
5
data_svelte/widgets/anydataHtz.json
Normal file
5
data_svelte/widgets/anydataHtz.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"widget": "anydata",
|
||||||
|
"after": "Htz",
|
||||||
|
"icon": "speedometer"
|
||||||
|
}
|
||||||
6
data_svelte/widgets/anydataHum.json
Normal file
6
data_svelte/widgets/anydataHum.json
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"widget": "anydata",
|
||||||
|
"after": "%",
|
||||||
|
"icon": "water",
|
||||||
|
"color": "#88AADF"
|
||||||
|
}
|
||||||
5
data_svelte/widgets/anydataPpb.json
Normal file
5
data_svelte/widgets/anydataPpb.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"widget": "anydata",
|
||||||
|
"after": "ppb",
|
||||||
|
"icon": "body"
|
||||||
|
}
|
||||||
5
data_svelte/widgets/anydataPpm.json
Normal file
5
data_svelte/widgets/anydataPpm.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"widget": "anydata",
|
||||||
|
"after": "ppm",
|
||||||
|
"icon": "body"
|
||||||
|
}
|
||||||
5
data_svelte/widgets/anydataPress.json
Normal file
5
data_svelte/widgets/anydataPress.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"widget": "anydata",
|
||||||
|
"after": "mm",
|
||||||
|
"icon": "speedometer"
|
||||||
|
}
|
||||||
16
data_svelte/widgets/anydataTemp.json
Normal file
16
data_svelte/widgets/anydataTemp.json
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
"widget": "anydata",
|
||||||
|
"after": "°С",
|
||||||
|
"icon": "thermometer",
|
||||||
|
"font": "OCR A Std",
|
||||||
|
"color": [
|
||||||
|
{ "level": -20, "value": "#0000CC" },
|
||||||
|
{ "level": -10, "value": "#0000CC" },
|
||||||
|
{ "level": 0, "value": "#0000CC" },
|
||||||
|
{ "level": 12, "value": "#3366FF" },
|
||||||
|
{ "level": 16, "value": "#33CCFF" },
|
||||||
|
{ "level": 18, "value": "#009933" },
|
||||||
|
{ "level": 30, "value": "#FF9900" },
|
||||||
|
{ "level": 40, "value": "red" }
|
||||||
|
]
|
||||||
|
}
|
||||||
5
data_svelte/widgets/anydataTime.json
Normal file
5
data_svelte/widgets/anydataTime.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"widget": "anydata",
|
||||||
|
"after": "",
|
||||||
|
"icon": "speedometer"
|
||||||
|
}
|
||||||
5
data_svelte/widgets/anydataVlt.json
Normal file
5
data_svelte/widgets/anydataVlt.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"widget": "anydata",
|
||||||
|
"after": "Vlt",
|
||||||
|
"icon": "speedometer"
|
||||||
|
}
|
||||||
5
data_svelte/widgets/anydataWhr.json
Normal file
5
data_svelte/widgets/anydataWhr.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"widget": "anydata",
|
||||||
|
"after": "Whr",
|
||||||
|
"icon": "speedometer"
|
||||||
|
}
|
||||||
5
data_svelte/widgets/anydataWtt.json
Normal file
5
data_svelte/widgets/anydataWtt.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"widget": "anydata",
|
||||||
|
"after": "Wtt",
|
||||||
|
"icon": "speedometer"
|
||||||
|
}
|
||||||
6
data_svelte/widgets/btn.json
Normal file
6
data_svelte/widgets/btn.json
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"widget": "btn",
|
||||||
|
"size": "large",
|
||||||
|
"color": "green",
|
||||||
|
"send": "test"
|
||||||
|
}
|
||||||
5
data_svelte/widgets/chart.json
Normal file
5
data_svelte/widgets/chart.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"widget": "chart",
|
||||||
|
"dateFormat": "HH:mm",
|
||||||
|
"pointRadius": 0
|
||||||
|
}
|
||||||
4
data_svelte/widgets/chart2.json
Normal file
4
data_svelte/widgets/chart2.json
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"widget": "chart",
|
||||||
|
"dateFormat": "HH:mm"
|
||||||
|
}
|
||||||
5
data_svelte/widgets/chart3.json
Normal file
5
data_svelte/widgets/chart3.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"widget": "chart",
|
||||||
|
"dateFormat": "DD.MM.YYYY",
|
||||||
|
"type":"bar"
|
||||||
|
}
|
||||||
4
data_svelte/widgets/chart4.json
Normal file
4
data_svelte/widgets/chart4.json
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"widget": "chart",
|
||||||
|
"dateFormat": "DD.MM.YYYY"
|
||||||
|
}
|
||||||
7
data_svelte/widgets/fillgauge.json
Normal file
7
data_svelte/widgets/fillgauge.json
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"widget": "fillgauge",
|
||||||
|
"circleColor": "#00FFFF",
|
||||||
|
"textColor": "#FFFFFF",
|
||||||
|
"waveTextColor": "#000000",
|
||||||
|
"waveColor": "#00FFFF"
|
||||||
|
}
|
||||||
6
data_svelte/widgets/inputDate.json
Normal file
6
data_svelte/widgets/inputDate.json
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"widget" : "input",
|
||||||
|
"size" : "small",
|
||||||
|
"color" : "orange",
|
||||||
|
"type" : "date"
|
||||||
|
}
|
||||||
5
data_svelte/widgets/inputDigit.json
Normal file
5
data_svelte/widgets/inputDigit.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"widget" : "input",
|
||||||
|
"color" : "blue",
|
||||||
|
"type" : "number"
|
||||||
|
}
|
||||||
7
data_svelte/widgets/inputDigitTemp.json
Normal file
7
data_svelte/widgets/inputDigitTemp.json
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"widget" : "input",
|
||||||
|
"color" : "green",
|
||||||
|
"type" : "number",
|
||||||
|
"size" : "small",
|
||||||
|
"icon": "thermometer"
|
||||||
|
}
|
||||||
6
data_svelte/widgets/inputText.json
Normal file
6
data_svelte/widgets/inputText.json
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"widget" : "input",
|
||||||
|
"size" : "small",
|
||||||
|
"color" : "orange",
|
||||||
|
"type" : "text"
|
||||||
|
}
|
||||||
5
data_svelte/widgets/inputTime.json
Normal file
5
data_svelte/widgets/inputTime.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"widget" : "input",
|
||||||
|
"color" : "blue",
|
||||||
|
"type" : "time"
|
||||||
|
}
|
||||||
7
data_svelte/widgets/inputTimeClock.json
Normal file
7
data_svelte/widgets/inputTimeClock.json
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"widget" : "input",
|
||||||
|
"color" : "orange",
|
||||||
|
"type" : "time",
|
||||||
|
"size" : "small",
|
||||||
|
"icon": "alarm-outline"
|
||||||
|
}
|
||||||
12
data_svelte/widgets/progress-line.json
Normal file
12
data_svelte/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_svelte/widgets/progress-round.json
Normal file
11
data_svelte/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_svelte/widgets/range.json
Normal file
9
data_svelte/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_svelte/widgets/select.json
Normal file
8
data_svelte/widgets/select.json
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"widget": "select",
|
||||||
|
"options": [
|
||||||
|
"Выключен",
|
||||||
|
"Включен"
|
||||||
|
],
|
||||||
|
"status": 0
|
||||||
|
}
|
||||||
5
data_svelte/widgets/toggle.json
Normal file
5
data_svelte/widgets/toggle.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"widget": "toggle",
|
||||||
|
"icon": "",
|
||||||
|
"iconOff": ""
|
||||||
|
}
|
||||||
5
data_svelte/widgets/toggleSunMoon.json
Normal file
5
data_svelte/widgets/toggleSunMoon.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"widget": "toggle",
|
||||||
|
"icon": "sunny",
|
||||||
|
"iconOff": "moon"
|
||||||
|
}
|
||||||
8
include/CreateWidget.h
Normal file
8
include/CreateWidget.h
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "Global.h"
|
||||||
|
|
||||||
|
extern void createWidget(String& parameters);
|
||||||
|
|
||||||
|
extern bool loadWidget(const String& filename, String& buf);
|
||||||
|
|
||||||
|
extern const String getWidgetFile(const String& name);
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
#include "Global.h"
|
#include "Global.h"
|
||||||
#include "Classes/IoTSensor.h"
|
#include "Classes/IoTSensor.h"
|
||||||
|
#include "CreateWidget.h"
|
||||||
|
|
||||||
extern std::vector<IoTSensor*> iotSensors; // вектор ссылок базового класса IoTSensor - список всех запущенных сенсоров
|
extern std::vector<IoTSensor*> iotSensors; // вектор ссылок базового класса IoTSensor - список всех запущенных сенсоров
|
||||||
|
|
||||||
|
|||||||
@@ -7,3 +7,4 @@ extern const String writeFile(const String& filename, const String& str);
|
|||||||
extern const String readFile(const String& filename, size_t max_size);
|
extern const String readFile(const String& filename, size_t max_size);
|
||||||
extern const String filepath(const String& filename);
|
extern const String filepath(const String& filename);
|
||||||
extern bool cutFile(const String& src, const String& dst);
|
extern bool cutFile(const String& src, const String& dst);
|
||||||
|
extern const String addFileLn(const String& filename, const String& str);
|
||||||
47
src/CreateWidget.cpp
Normal file
47
src/CreateWidget.cpp
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
#include "CreateWidget.h"
|
||||||
|
|
||||||
|
void createWidget(String& parameters) {
|
||||||
|
String id = jsonReadStr(parameters, "id");
|
||||||
|
String widget = jsonReadStr(parameters, "widget");
|
||||||
|
String order = jsonReadStr(parameters, "order");
|
||||||
|
String page = jsonReadStr(parameters, "page");
|
||||||
|
String descr = jsonReadStr(parameters, "descr");
|
||||||
|
|
||||||
|
if (widget != "na") {
|
||||||
|
String buf = "{}";
|
||||||
|
if (!loadWidget(widget, buf)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// if (_cnt != "") {
|
||||||
|
// if (widget.indexOf("chart") != -1) jsonWriteStr(buf, "maxCount", _cnt);
|
||||||
|
// }
|
||||||
|
|
||||||
|
#ifdef GATE_MODE
|
||||||
|
jsonWriteStr(buf, "info", " ");
|
||||||
|
#endif
|
||||||
|
|
||||||
|
jsonWriteStr(buf, "page", page);
|
||||||
|
jsonWriteStr(buf, "order", order);
|
||||||
|
jsonWriteStr(buf, "descr", descr);
|
||||||
|
jsonWriteStr(buf, "topic", prex + "/" + id);
|
||||||
|
|
||||||
|
#ifdef LAYOUT_IN_RAM
|
||||||
|
all_widgets += widget + "\r\n";
|
||||||
|
#else
|
||||||
|
addFileLn("layout.txt", buf);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool loadWidget(const String& widget, String& buf) {
|
||||||
|
buf = readFile(getWidgetFile(widget), 2048);
|
||||||
|
bool res = !(buf == "Failed" || buf == "Large");
|
||||||
|
if (!res) {
|
||||||
|
SerialPrint("E", "module", "on load" + widget);
|
||||||
|
}
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
const String getWidgetFile(const String& name) {
|
||||||
|
return "/widgets/" + name + ".json";
|
||||||
|
}
|
||||||
@@ -20,6 +20,7 @@ void configure(String path) {
|
|||||||
myIoTSensor = (IoTSensor*)getAPI_AnalogAdc(jsonArrayElement);
|
myIoTSensor = (IoTSensor*)getAPI_AnalogAdc(jsonArrayElement);
|
||||||
if (myIoTSensor) {
|
if (myIoTSensor) {
|
||||||
iotSensors.push_back(myIoTSensor);
|
iotSensors.push_back(myIoTSensor);
|
||||||
|
createWidget(jsonArrayElement);
|
||||||
}
|
}
|
||||||
//================================================================================================================
|
//================================================================================================================
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -64,3 +64,14 @@ bool cutFile(const String& src, const String& dst) {
|
|||||||
FileFS.remove(srcPath);
|
FileFS.remove(srcPath);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const String addFileLn(const String& filename, const String& str) {
|
||||||
|
String path = filepath(filename);
|
||||||
|
auto file = FileFS.open(path, "a");
|
||||||
|
if (!file) {
|
||||||
|
return "failed";
|
||||||
|
}
|
||||||
|
file.println(str);
|
||||||
|
file.close();
|
||||||
|
return "sucсess";
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user