mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2025-12-06 15:59:52 +03:00
customizations, swap shortname and fullname, using id as unique shortname
This commit is contained in:
@@ -47,7 +47,7 @@ import { DeviceShort, Devices, DeviceEntity, DeviceEntityMask } from './types';
|
|||||||
const SettingsCustomization: FC = () => {
|
const SettingsCustomization: FC = () => {
|
||||||
const { enqueueSnackbar } = useSnackbar();
|
const { enqueueSnackbar } = useSnackbar();
|
||||||
|
|
||||||
const [deviceEntities, setDeviceEntities] = useState<DeviceEntity[]>([{ id: '', v: 0, s: '', m: 0, w: false }]);
|
const [deviceEntities, setDeviceEntities] = useState<DeviceEntity[]>([{ id: '', v: 0, n: '', m: 0, w: false }]);
|
||||||
const [devices, setDevices] = useState<Devices>();
|
const [devices, setDevices] = useState<Devices>();
|
||||||
const [errorMessage, setErrorMessage] = useState<string>();
|
const [errorMessage, setErrorMessage] = useState<string>();
|
||||||
const [selectedDevice, setSelectedDevice] = useState<number>(0);
|
const [selectedDevice, setSelectedDevice] = useState<number>(0);
|
||||||
@@ -200,10 +200,10 @@ const SettingsCustomization: FC = () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function formatName(de: DeviceEntity) {
|
function formatName(de: DeviceEntity) {
|
||||||
if (de.id == de.s) {
|
if (de.n === undefined) {
|
||||||
return de.s;
|
return de.id;
|
||||||
}
|
}
|
||||||
return de.id + ' (' + de.s + ')';
|
return de.n + ' (' + de.id + ')';
|
||||||
}
|
}
|
||||||
|
|
||||||
const getMaskNumber = (newMask: string[]) => {
|
const getMaskNumber = (newMask: string[]) => {
|
||||||
@@ -279,7 +279,7 @@ const SettingsCustomization: FC = () => {
|
|||||||
if (deviceEntities && selectedDevice) {
|
if (deviceEntities && selectedDevice) {
|
||||||
const masked_entities = deviceEntities
|
const masked_entities = deviceEntities
|
||||||
.filter((de) => de.m !== de.om)
|
.filter((de) => de.m !== de.om)
|
||||||
.map((new_de) => new_de.m.toString(16).padStart(2, '0') + new_de.s);
|
.map((new_de) => new_de.m.toString(16).padStart(2, '0') + new_de.id);
|
||||||
|
|
||||||
if (masked_entities.length > 60) {
|
if (masked_entities.length > 60) {
|
||||||
enqueueSnackbar('Selected entities exceeded limit of 60. Please Save in batches', { variant: 'warning' });
|
enqueueSnackbar('Selected entities exceeded limit of 60. Please Save in batches', { variant: 'warning' });
|
||||||
@@ -471,7 +471,7 @@ const SettingsCustomization: FC = () => {
|
|||||||
setMasks(['']);
|
setMasks(['']);
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<ToggleButton value="8" disabled={(de.m & 1) !== 0 || de.id === '' || de.s === de.id}>
|
<ToggleButton value="8" disabled={(de.m & 1) !== 0 || de.id === '' || de.n === undefined}>
|
||||||
<StarIcon sx={{ fontSize: 14 }} />
|
<StarIcon sx={{ fontSize: 14 }} />
|
||||||
</ToggleButton>
|
</ToggleButton>
|
||||||
<ToggleButton value="4" disabled={!de.w || (de.m & 3) === 3}>
|
<ToggleButton value="4" disabled={!de.w || (de.m & 3) === 3}>
|
||||||
@@ -480,7 +480,7 @@ const SettingsCustomization: FC = () => {
|
|||||||
<ToggleButton value="2">
|
<ToggleButton value="2">
|
||||||
<CommentsDisabledOutlinedIcon sx={{ fontSize: 14 }} />
|
<CommentsDisabledOutlinedIcon sx={{ fontSize: 14 }} />
|
||||||
</ToggleButton>
|
</ToggleButton>
|
||||||
<ToggleButton value="1" disabled={de.s === de.id}>
|
<ToggleButton value="1" disabled={de.n === undefined}>
|
||||||
<VisibilityOffOutlinedIcon sx={{ fontSize: 14 }} />
|
<VisibilityOffOutlinedIcon sx={{ fontSize: 14 }} />
|
||||||
</ToggleButton>
|
</ToggleButton>
|
||||||
</ToggleButtonGroup>
|
</ToggleButtonGroup>
|
||||||
|
|||||||
@@ -132,9 +132,9 @@ export interface DeviceData {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export interface DeviceEntity {
|
export interface DeviceEntity {
|
||||||
id: string; // name
|
id: string; // shortname
|
||||||
v: any; // value, in any format
|
v?: any; // value, in any format, optional
|
||||||
s: string; // shortname
|
n?: string; // fullname, optional
|
||||||
m: number; // mask
|
m: number; // mask
|
||||||
om?: number; // original mask before edits
|
om?: number; // original mask before edits
|
||||||
w: boolean; // writeable
|
w: boolean; // writeable
|
||||||
|
|||||||
@@ -337,6 +337,7 @@ settings = {
|
|||||||
pbutton_gpio: 0,
|
pbutton_gpio: 0,
|
||||||
board_profile: 'S32',
|
board_profile: 'S32',
|
||||||
bool_format: 1,
|
bool_format: 1,
|
||||||
|
bool_dashboard: 1,
|
||||||
enum_format: 1,
|
enum_format: 1,
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -575,153 +576,154 @@ const emsesp_devicedata_4 = {
|
|||||||
],
|
],
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// CUSTOMIZATION
|
||||||
|
|
||||||
const emsesp_deviceentities_1 = [
|
const emsesp_deviceentities_1 = [
|
||||||
{
|
{
|
||||||
v: '(0)',
|
v: '(0)',
|
||||||
id: 'error code',
|
n: 'error code',
|
||||||
s: 'errorcode',
|
id: 'errorcode',
|
||||||
m: 0,
|
m: 0,
|
||||||
w: false,
|
w: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
v: '14:54:39 06/06/2021',
|
v: '14:54:39 06/06/2021',
|
||||||
id: 'date/time',
|
n: 'date/time',
|
||||||
s: 'datetime',
|
id: 'datetime',
|
||||||
m: 0,
|
m: 0,
|
||||||
w: false,
|
w: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
v: 'roomTemp',
|
v: 'roomTemp',
|
||||||
id: 'hc1/HA climate config creation',
|
id: 'hc1/HA climate config creation',
|
||||||
s: 'hc1/HA climate config creation',
|
|
||||||
m: 0,
|
m: 0,
|
||||||
w: false,
|
w: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
v: 18.2,
|
v: 18.2,
|
||||||
id: 'hc1 selected room temperature',
|
n: 'hc1 selected room temperature',
|
||||||
s: 'hc1/seltemp',
|
id: 'hc1/seltemp',
|
||||||
m: 0,
|
m: 0,
|
||||||
w: true,
|
w: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
v: 22.6,
|
v: 22.6,
|
||||||
id: 'hc1 current room temperature',
|
n: 'hc1 current room temperature',
|
||||||
s: 'hc1/curtemp',
|
id: 'hc1/curtemp',
|
||||||
m: 0,
|
m: 0,
|
||||||
w: false,
|
w: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
v: 'auto',
|
v: 'auto',
|
||||||
id: 'hc1 mode',
|
n: 'hc1 mode',
|
||||||
s: 'hc1/mode',
|
id: 'hc1/mode',
|
||||||
m: 0,
|
m: 0,
|
||||||
w: true,
|
w: true,
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
const emsesp_deviceentities_2 = [
|
const emsesp_deviceentities_2 = [
|
||||||
{ u: 0, id: 'reset', s: 'reset', m: 8, w: false },
|
{ u: 0, id: 'reset', m: 8, w: false },
|
||||||
{ v: false, id: 'heating active', s: 'heatingactive', m: 8, w: false },
|
{ v: false, n: 'heating active', id: 'heatingactive', m: 8, w: false },
|
||||||
{ v: false, id: 'tapwater active', s: 'tapwateractive', m: 4, w: false },
|
{ v: false, n: 'tapwater active', id: 'tapwateractive', m: 4, w: false },
|
||||||
{ v: 5, id: 'selected flow temperature', s: 'selflowtemp', m: 4, w: true },
|
{ v: 5, n: 'selected flow temperature', id: 'selflowtemp', m: 4, w: true },
|
||||||
{ v: 0, id: 'burner selected max power', s: 'selburnpow', m: 14, w: true },
|
{ v: 0, n: 'burner selected max power', id: 'selburnpow', m: 14, w: true },
|
||||||
{ v: 0, id: 'heating pump modulation', s: 'heatingpumpmod', m: 0, w: false },
|
{ v: 0, n: 'heating pump modulation', id: 'heatingpumpmod', m: 0, w: false },
|
||||||
{ id: 'heating pump 2 modulation', s: 'heatingpump2mod', m: 0, w: false },
|
{ n: 'heating pump 2 modulation', id: 'heatingpump2mod', m: 0, w: false },
|
||||||
{ id: 'outside temperature', s: 'outdoortemp', m: 0, w: false },
|
{ n: 'outside temperature', id: 'outdoortemp', m: 0, w: false },
|
||||||
{ v: 53, id: 'current flow temperature', s: 'curflowtemp', m: 0, w: false },
|
{ v: 53, n: 'current flow temperature', id: 'curflowtemp', m: 0, w: false },
|
||||||
{ v: 51.8, id: 'return temperature', s: 'rettemp', m: 0, w: false },
|
{ v: 51.8, n: 'return temperature', id: 'rettemp', m: 0, w: false },
|
||||||
{ id: 'mixing switch temperature', s: 'switchtemp', m: 0, w: false },
|
{ n: 'mixing switch temperature', id: 'switchtemp', m: 0, w: false },
|
||||||
{ v: 1.3, id: 'system pressure', s: 'syspress', m: 0, w: false },
|
{ v: 1.3, n: 'system pressure', id: 'syspress', m: 0, w: false },
|
||||||
{ v: 54.6, id: 'actual boiler temperature', s: 'boiltemp', m: 0, w: false },
|
{ v: 54.6, n: 'actual boiler temperature', id: 'boiltemp', m: 0, w: false },
|
||||||
{ id: 'exhaust temperature', s: 'exhausttemp', m: 0, w: false },
|
{ n: 'exhaust temperature', id: 'exhausttemp', m: 0, w: false },
|
||||||
{ v: false, id: 'gas', s: 'burngas', m: 0, w: false },
|
{ v: false, n: 'gas', id: 'burngas', m: 0, w: false },
|
||||||
{ v: false, id: 'gas stage 2', s: 'burngas2', m: 0, w: false },
|
{ v: false, n: 'gas stage 2', id: 'burngas2', m: 0, w: false },
|
||||||
{ v: 0, id: 'flame current', s: 'flamecurr', m: 0, w: false },
|
{ v: 0, n: 'flame current', id: 'flamecurr', m: 0, w: false },
|
||||||
{ v: false, id: 'heating pump', s: 'heatingpump', m: 0, w: false },
|
{ v: false, n: 'heating pump', id: 'heatingpump', m: 0, w: false },
|
||||||
{ v: false, id: 'fan', s: 'fanwork', m: 0, w: false },
|
{ v: false, n: 'fan', id: 'fanwork', m: 0, w: false },
|
||||||
{ v: false, id: 'ignition', s: 'ignwork', m: 0, w: false },
|
{ v: false, n: 'ignition', id: 'ignwork', m: 0, w: false },
|
||||||
{ v: false, id: 'oil preheating', s: 'oilpreheat', m: 0, w: false },
|
{ v: false, n: 'oil preheating', id: 'oilpreheat', m: 0, w: false },
|
||||||
{ v: true, id: 'heating activated', s: 'heatingactivated', m: 0, w: false },
|
{ v: true, n: 'heating activated', id: 'heatingactivated', m: 0, w: false },
|
||||||
{ v: 80, id: 'heating temperature', s: 'heatingtemp', m: 0, w: false },
|
{ v: 80, n: 'heating temperature', id: 'heatingtemp', m: 0, w: false },
|
||||||
{ v: 70, id: 'burner pump max power', s: 'pumpmodmax', m: 0, w: false },
|
{ v: 70, n: 'burner pump max power', id: 'pumpmodmax', m: 0, w: false },
|
||||||
{ v: 30, id: 'burner pump min power', s: 'pumpmodmin', m: 0, w: false },
|
{ v: 30, n: 'burner pump min power', id: 'pumpmodmin', m: 0, w: false },
|
||||||
{ v: 1, id: 'pump delay', s: 'pumpdelay', m: 0, w: false },
|
{ v: 1, n: 'pump delay', id: 'pumpdelay', m: 0, w: false },
|
||||||
{ v: 10, id: 'burner min period', s: 'burnminperiod', m: 0, w: false },
|
{ v: 10, n: 'burner min period', id: 'burnminperiod', m: 0, w: false },
|
||||||
{ v: 0, id: 'burner min power', s: 'burnminpower', m: 0, w: false },
|
{ v: 0, n: 'burner min power', id: 'burnminpower', m: 0, w: false },
|
||||||
{ v: 50, id: 'burner max power', s: 'burnmaxpower', m: 0, w: false },
|
{ v: 50, n: 'burner max power', id: 'burnmaxpower', m: 0, w: false },
|
||||||
{ v: -6, id: 'hysteresis on temperature', s: 'boilhyston', m: 0, w: false },
|
{ v: -6, n: 'hysteresis on temperature', id: 'boilhyston', m: 0, w: false },
|
||||||
{ v: 6, id: 'hysteresis off temperature', s: 'boilhystoff', m: 0, w: false },
|
{ v: 6, n: 'hysteresis off temperature', id: 'boilhystoff', m: 0, w: false },
|
||||||
{ v: 0, id: 'set flow temperature', s: 'setflowtemp', m: 0, w: true },
|
{ v: 0, n: 'set flow temperature', id: 'setflowtemp', m: 0, w: true },
|
||||||
{ v: 0, id: 'burner set power', s: 'setburnpow', m: 0, w: false },
|
{ v: 0, n: 'burner set power', id: 'setburnpow', m: 0, w: false },
|
||||||
{ v: 0, id: 'burner current power', s: 'curburnpow', m: 0, w: false },
|
{ v: 0, n: 'burner current power', id: 'curburnpow', m: 0, w: false },
|
||||||
{ v: 326323, id: 'burner starts', s: 'burnstarts', m: 0, w: false },
|
{ v: 326323, n: 'burner starts', id: 'burnstarts', m: 0, w: false },
|
||||||
{ v: 553437, id: 'total burner operating time', s: 'burnworkmin', m: 0, w: false },
|
{ v: 553437, n: 'total burner operating time', id: 'burnworkmin', m: 0, w: false },
|
||||||
{ v: 451286, id: 'total heat operating time', s: 'heatworkmin', m: 0, w: false },
|
{ v: 451286, n: 'total heat operating time', id: 'heatworkmin', m: 0, w: false },
|
||||||
{ v: 4672175, id: 'total UBA operating time', s: 'ubauptime', m: 0, w: false },
|
{ v: 4672175, n: 'total UBA operating time', id: 'ubauptime', m: 0, w: false },
|
||||||
{ v: '1C(210) 06.06.2020 12:07 (0 min)', id: 'last error code', s: 'lastcode', m: 0, w: false },
|
{ v: '1C(210) 06.06.2020 12:07 (0 min)', n: 'last error code', id: 'lastcode', m: 0, w: false },
|
||||||
{ v: '0H', id: 'service code', s: 'servicecode', m: 0, w: false },
|
{ v: '0H', n: 'service code', id: 'servicecode', m: 0, w: false },
|
||||||
{ v: 203, id: 'service code number', s: 'servicecodenumber', m: 0, w: false },
|
{ v: 203, n: 'service code number', id: 'servicecodenumber', m: 0, w: false },
|
||||||
{ v: 'H00', id: 'maintenance message', s: 'maintenancemessage', m: 0, w: false },
|
{ v: 'H00', n: 'maintenance message', id: 'maintenancemessage', m: 0, w: false },
|
||||||
{ v: 'manual', id: 'maintenance scheduled', s: 'maintenance', m: 0, w: false },
|
{ v: 'manual', n: 'maintenance scheduled', id: 'maintenance', m: 0, w: false },
|
||||||
{ v: 6000, id: 'time to next maintenance', s: 'maintenancetime', m: 0, w: false },
|
{ v: 6000, n: 'time to next maintenance', id: 'maintenancetime', m: 0, w: false },
|
||||||
{ v: '01.01.2012', id: 'next maintenance date', s: 'maintenancedate', m: 0, w: false },
|
{ v: '01.01.2012', n: 'next maintenance date', id: 'maintenancedate', m: 0, w: false },
|
||||||
{ v: true, id: 'dhw turn on/off', s: 'wwtapactivated', m: 0, w: false },
|
{ v: true, n: 'dhw turn on/off', id: 'wwtapactivated', m: 0, w: false },
|
||||||
{ v: 62, id: 'dhw set temperature', s: 'wwsettemp', m: 0, w: false },
|
{ v: 62, n: 'dhw set temperature', id: 'wwsettemp', m: 0, w: false },
|
||||||
{ v: 60, id: 'dhw selected temperature', s: 'wwseltemp', m: 0, w: true },
|
{ v: 60, n: 'dhw selected temperature', id: 'wwseltemp', m: 0, w: true },
|
||||||
{ id: 'dhw selected lower temperature', s: 'wwseltemplow', m: 2 },
|
{ n: 'dhw selected lower temperature', id: 'wwseltemplow', m: 2 },
|
||||||
{ id: 'dhw selected temperature for off', s: 'wwseltempoff', m: 2 },
|
{ n: 'dhw selected temperature for off', id: 'wwseltempoff', m: 2 },
|
||||||
{ id: 'dhw single charge temperature', s: 'wwseltempsingle', m: 2 },
|
{ n: 'dhw single charge temperature', id: 'wwseltempsingle', m: 2 },
|
||||||
{ v: 'flow', id: 'dhw type', s: 'wwtype', m: 0, w: false },
|
{ v: 'flow', n: 'dhw type', id: 'wwtype', m: 0, w: false },
|
||||||
{ v: 'hot', id: 'dhw comfort', s: 'wwcomfort', m: 0, w: false },
|
{ v: 'hot', n: 'dhw comfort', id: 'wwcomfort', m: 0, w: false },
|
||||||
{ v: 40, id: 'dhw flow temperature offset', s: 'wwflowtempoffset', m: 0, w: false },
|
{ v: 40, n: 'dhw flow temperature offset', id: 'wwflowtempoffset', m: 0, w: false },
|
||||||
{ v: 100, id: 'dhw max power', s: 'wwmaxpower', m: 0, w: false },
|
{ v: 100, n: 'dhw max power', id: 'wwmaxpower', m: 0, w: false },
|
||||||
{ v: false, id: 'dhw circulation pump available', s: 'wwcircpump', m: 0, w: false },
|
{ v: false, n: 'dhw circulation pump available', id: 'wwcircpump', m: 0, w: false },
|
||||||
{ v: '3-way valve', id: 'dhw charging type', s: 'wwchargetype', m: 0, w: false },
|
{ v: '3-way valve', n: 'dhw charging type', id: 'wwchargetype', m: 0, w: false },
|
||||||
{ v: -5, id: 'dhw hysteresis on temperature', s: 'wwhyston', m: 0, w: false },
|
{ v: -5, n: 'dhw hysteresis on temperature', id: 'wwhyston', m: 0, w: false },
|
||||||
{ v: 0, id: 'dhw hysteresis off temperature', s: 'wwhystoff', m: 0, w: false },
|
{ v: 0, n: 'dhw hysteresis off temperature', id: 'wwhystoff', m: 0, w: false },
|
||||||
{ v: 70, id: 'dhw disinfection temperature', s: 'wwdisinfectiontemp', m: 0, w: false },
|
{ v: 70, n: 'dhw disinfection temperature', id: 'wwdisinfectiontemp', m: 0, w: false },
|
||||||
{ v: 'off', id: 'dhw circulation pump mode', s: 'wwcircmode', m: 0, w: false },
|
{ v: 'off', n: 'dhw circulation pump mode', id: 'wwcircmode', m: 0, w: false },
|
||||||
{ v: false, id: 'dhw circulation active', s: 'wwcirc', m: 0, w: false },
|
{ v: false, n: 'dhw circulation active', id: 'wwcirc', m: 0, w: false },
|
||||||
{ v: 46.4, id: 'dhw current intern temperature', s: 'wwcurtemp', m: 0, w: false },
|
{ v: 46.4, n: 'dhw current intern temperature', id: 'wwcurtemp', m: 0, w: false },
|
||||||
{ id: 'dhw current extern temperature', s: 'wwcurtemp2', m: 2 },
|
{ n: 'dhw current extern temperature', id: 'wwcurtemp2', m: 2 },
|
||||||
{ v: 0, id: 'dhw current tap water flow', s: 'wwcurflow', m: 0, w: false },
|
{ v: 0, n: 'dhw current tap water flow', id: 'wwcurflow', m: 0, w: false },
|
||||||
{ v: 46.3, id: 'dhw storage intern temperature', s: 'wwstoragetemp1', m: 0, w: false },
|
{ v: 46.3, n: 'dhw storage intern temperature', id: 'wwstoragetemp1', m: 0, w: false },
|
||||||
{ id: 'dhw storage extern temperature', s: 'wwstoragetemp2', m: 2 },
|
{ n: 'dhw storage extern temperature', id: 'wwstoragetemp2', m: 2 },
|
||||||
{ v: true, id: 'dhw activated', s: 'wwactivated', m: 0, w: false },
|
{ v: true, n: 'dhw activated', id: 'wwactivated', m: 0, w: false },
|
||||||
{ v: false, id: 'dhw one time charging', s: 'wwonetime', m: 0, w: false },
|
{ v: false, n: 'dhw one time charging', id: 'wwonetime', m: 0, w: false },
|
||||||
{ v: false, id: 'dhw disinfecting', s: 'wwdisinfecting', m: 0, w: false },
|
{ v: false, n: 'dhw disinfecting', id: 'wwdisinfecting', m: 0, w: false },
|
||||||
{ v: false, id: 'dhw charging', s: 'wwcharging', m: 0, w: false },
|
{ v: false, n: 'dhw charging', id: 'wwcharging', m: 0, w: false },
|
||||||
{ v: false, id: 'dhw recharging', s: 'wwrecharging', m: 0, w: false },
|
{ v: false, n: 'dhw recharging', id: 'wwrecharging', m: 0, w: false },
|
||||||
{ v: true, id: 'dhw temperature ok', s: 'wwtempok', m: 0, w: false },
|
{ v: true, n: 'dhw temperature ok', id: 'wwtempok', m: 0, w: false },
|
||||||
{ v: false, id: 'dhw active', s: 'wwactive', m: 0, w: false },
|
{ v: false, n: 'dhw active', id: 'wwactive', m: 0, w: false },
|
||||||
{ v: true, id: 'dhw 3way valve active', s: 'ww3wayvalve', m: 0, w: false },
|
{ v: true, n: 'dhw 3way valve active', id: 'ww3wayvalve', m: 0, w: false },
|
||||||
{ v: 0, id: 'dhw set pump power', s: 'wwsetpumppower', m: 0, w: true },
|
{ v: 0, n: 'dhw set pump power', id: 'wwsetpumppower', m: 0, w: true },
|
||||||
{ id: 'dhw mixer temperature', s: 'wwmixertemp', m: 2 },
|
{ n: 'dhw mixer temperature', id: 'wwmixertemp', m: 2 },
|
||||||
{ id: 'dhw cylinder middle temperature (TS3)', s: 'wwcylmiddletemp', m: 2 },
|
{ n: 'dhw cylinder middle temperature (TS3)', id: 'wwcylmiddletemp', m: 2 },
|
||||||
{ v: 288768, id: 'dhw starts', s: 'wwstarts', m: 0, w: false },
|
{ v: 288768, n: 'dhw starts', id: 'wwstarts', m: 0, w: false },
|
||||||
{ v: 102151, id: 'dhw active time', s: 'wwworkm', m: 0, w: false },
|
{ v: 102151, n: 'dhw active time', id: 'wwworkm', m: 0, w: false },
|
||||||
]
|
]
|
||||||
|
|
||||||
const emsesp_deviceentities_4 = [
|
const emsesp_deviceentities_4 = [
|
||||||
{
|
{
|
||||||
v: 16,
|
v: 16,
|
||||||
id: 'hc2 selected room temperature',
|
n: 'hc2 selected room temperature',
|
||||||
s: 'hc2/seltemp',
|
id: 'hc2/seltemp',
|
||||||
m: 8,
|
m: 8,
|
||||||
w: true,
|
w: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
v: 18.5,
|
v: 18.5,
|
||||||
id: 'hc2 current room temperature',
|
n: 'hc2 current room temperature',
|
||||||
s: 'hc2/curtemp',
|
id: 'hc2/curtemp',
|
||||||
m: 2,
|
m: 2,
|
||||||
w: false,
|
w: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
v: 'off',
|
v: 'off',
|
||||||
id: 'hc2 mode',
|
n: 'hc2 mode',
|
||||||
s: 'hc2/mode',
|
id: 'hc2/mode',
|
||||||
m: 2,
|
m: 2,
|
||||||
w: true,
|
w: true,
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -716,11 +716,9 @@ void EMSdevice::generate_values_web(JsonObject & output) {
|
|||||||
|
|
||||||
auto mask = Helpers::hextoa((uint8_t)(dv.state >> 4), false); // create mask to a 2-char string
|
auto mask = Helpers::hextoa((uint8_t)(dv.state >> 4), false); // create mask to a 2-char string
|
||||||
|
|
||||||
// add name, prefixing the tag if it exists. This is the id used for the table sorting
|
// add name, prefixing the tag if it exists. This is the id used in the WebUI table and must be unique
|
||||||
if ((dv.tag == DeviceValueTAG::TAG_NONE) || tag_to_string(dv.tag).empty()) {
|
if ((dv.tag == DeviceValueTAG::TAG_NONE) || tag_to_string(dv.tag).empty()) {
|
||||||
obj["id"] = mask + read_flash_string(dv.full_name);
|
obj["id"] = mask + read_flash_string(dv.full_name);
|
||||||
} else if (dv.tag < DeviceValueTAG::TAG_HC1) {
|
|
||||||
obj["id"] = mask + tag_to_string(dv.tag) + " " + read_flash_string(dv.full_name);
|
|
||||||
} else {
|
} else {
|
||||||
obj["id"] = mask + tag_to_string(dv.tag) + " " + read_flash_string(dv.full_name);
|
obj["id"] = mask + tag_to_string(dv.tag) + " " + read_flash_string(dv.full_name);
|
||||||
}
|
}
|
||||||
@@ -831,30 +829,27 @@ void EMSdevice::generate_values_web_customization(JsonArray & output) {
|
|||||||
obj["v"] = (divider > 0) ? time_value / divider : time_value * factor; // sometimes we need to divide by 60
|
obj["v"] = (divider > 0) ? time_value / divider : time_value * factor; // sometimes we need to divide by 60
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
obj["v"] = ""; // must always have v for sorting to work in web
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// shortname
|
// id holds the shortname and must always have a value for the WebUI table to work
|
||||||
std::string shortname;
|
|
||||||
if (dv.tag >= DeviceValueTAG::TAG_HC1) {
|
if (dv.tag >= DeviceValueTAG::TAG_HC1) {
|
||||||
shortname = tag_to_string(dv.tag) + "/" + read_flash_string(dv.short_name);
|
obj["id"] = tag_to_string(dv.tag) + "/" + read_flash_string(dv.short_name);
|
||||||
} else {
|
} else {
|
||||||
shortname = read_flash_string(dv.short_name);
|
obj["id"] = read_flash_string(dv.short_name);
|
||||||
}
|
}
|
||||||
obj["s"] = shortname;
|
|
||||||
|
|
||||||
// id is the fullname, or the shortname (it must exist for the web table to work)
|
// n is the fullname, and can be optional
|
||||||
if (dv.full_name) {
|
// don't add the fullname if its a command
|
||||||
if ((dv.tag == DeviceValueTAG::TAG_NONE) || tag_to_string(dv.tag).empty()) {
|
if (dv.type != DeviceValueType::CMD) {
|
||||||
obj["id"] = dv.full_name;
|
if (dv.full_name) {
|
||||||
} else {
|
if ((dv.tag == DeviceValueTAG::TAG_NONE) || tag_to_string(dv.tag).empty()) {
|
||||||
char name[50];
|
obj["n"] = dv.full_name;
|
||||||
snprintf(name, sizeof(name), "%s %s", tag_to_string(dv.tag).c_str(), read_flash_string(dv.full_name).c_str());
|
} else {
|
||||||
obj["id"] = name;
|
char name[50];
|
||||||
|
snprintf(name, sizeof(name), "%s %s", tag_to_string(dv.tag).c_str(), read_flash_string(dv.full_name).c_str());
|
||||||
|
obj["n"] = name;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
obj["id"] = shortname; // fullname/id is same as shortname
|
|
||||||
}
|
}
|
||||||
|
|
||||||
obj["m"] = dv.state >> 4; // send back the mask state. We're only interested in the high nibble
|
obj["m"] = dv.state >> 4; // send back the mask state. We're only interested in the high nibble
|
||||||
|
|||||||
Reference in New Issue
Block a user