mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2025-12-06 07:49:52 +03:00
Merge pull request #422 from proddy/dev
Michael's PR merged (dv sort, remove id)
This commit is contained in:
@@ -37,7 +37,7 @@ import CancelIcon from '@mui/icons-material/Cancel';
|
|||||||
import SendIcon from '@mui/icons-material/TrendingFlat';
|
import SendIcon from '@mui/icons-material/TrendingFlat';
|
||||||
import SaveIcon from '@mui/icons-material/Save';
|
import SaveIcon from '@mui/icons-material/Save';
|
||||||
import RemoveIcon from '@mui/icons-material/RemoveCircleOutline';
|
import RemoveIcon from '@mui/icons-material/RemoveCircleOutline';
|
||||||
import FavoriteIcon from '@mui/icons-material/Favorite';
|
import FavoriteBorderIcon from '@mui/icons-material/FavoriteBorder';
|
||||||
import PlayArrowIcon from '@mui/icons-material/PlayArrow';
|
import PlayArrowIcon from '@mui/icons-material/PlayArrow';
|
||||||
|
|
||||||
import DeviceIcon from './DeviceIcon';
|
import DeviceIcon from './DeviceIcon';
|
||||||
@@ -500,7 +500,7 @@ const DashboardData: FC = () => {
|
|||||||
return (
|
return (
|
||||||
<StyledTableCell component="th" scope="row">
|
<StyledTableCell component="th" scope="row">
|
||||||
{name}
|
{name}
|
||||||
<PlayArrowIcon color="primary" sx={{ fontSize: 10 }} />
|
<PlayArrowIcon color="primary" sx={{ fontSize: 12 }} />
|
||||||
</StyledTableCell>
|
</StyledTableCell>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -509,7 +509,7 @@ const DashboardData: FC = () => {
|
|||||||
return (
|
return (
|
||||||
<StyledTableCell component="th" scope="row">
|
<StyledTableCell component="th" scope="row">
|
||||||
{name}
|
{name}
|
||||||
<FavoriteIcon color="error" sx={{ fontSize: 10 }} />
|
<FavoriteBorderIcon color="success" sx={{ fontSize: 10 }} />
|
||||||
</StyledTableCell>
|
</StyledTableCell>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -213,7 +213,7 @@ const SettingsCustomization: FC = () => {
|
|||||||
</TableHead>
|
</TableHead>
|
||||||
<TableBody>
|
<TableBody>
|
||||||
{deviceEntities.map((de) => (
|
{deviceEntities.map((de) => (
|
||||||
<TableRow key={de.i} hover>
|
<TableRow key={de.s} hover>
|
||||||
<StyledTableCell padding="checkbox">
|
<StyledTableCell padding="checkbox">
|
||||||
<ToggleButtonGroup
|
<ToggleButtonGroup
|
||||||
size="small"
|
size="small"
|
||||||
|
|||||||
@@ -148,7 +148,6 @@ export interface DeviceEntity {
|
|||||||
s: string; // shortname
|
s: string; // shortname
|
||||||
m: number; // mask
|
m: number; // mask
|
||||||
w?: boolean; // writeable
|
w?: boolean; // writeable
|
||||||
i: number; // unique id
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface MaskedEntities {
|
export interface MaskedEntities {
|
||||||
|
|||||||
@@ -593,21 +593,21 @@ const emsesp_devicedata_4 = {
|
|||||||
const emsesp_deviceentities_1 = [
|
const emsesp_deviceentities_1 = [
|
||||||
{
|
{
|
||||||
v: '(0)',
|
v: '(0)',
|
||||||
n: '00error code',
|
n: 'error code',
|
||||||
s: 'errorcode',
|
s: 'errorcode',
|
||||||
m: 0,
|
m: 0,
|
||||||
i: 1,
|
i: 1,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
v: '14:54:39 06/06/2021',
|
v: '14:54:39 06/06/2021',
|
||||||
n: '00date/time',
|
n: 'date/time',
|
||||||
s: 'datetime',
|
s: 'datetime',
|
||||||
m: 0,
|
m: 0,
|
||||||
i: 2,
|
i: 2,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
v: 18.22,
|
v: 18.22,
|
||||||
n: '00hc1 selected room temperature',
|
n: 'hc1 selected room temperature',
|
||||||
s: 'hc1/seltemp',
|
s: 'hc1/seltemp',
|
||||||
m: 0,
|
m: 0,
|
||||||
w: true,
|
w: true,
|
||||||
@@ -615,14 +615,14 @@ const emsesp_deviceentities_1 = [
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
v: 22.6,
|
v: 22.6,
|
||||||
n: '00hc1 current room temperature',
|
n: 'hc1 current room temperature',
|
||||||
s: 'hc1/curtemp',
|
s: 'hc1/curtemp',
|
||||||
m: 0,
|
m: 0,
|
||||||
i: 4,
|
i: 4,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
v: 'auto',
|
v: 'auto',
|
||||||
n: '00hc1 mode',
|
n: 'hc1 mode',
|
||||||
s: 'hc1/mode',
|
s: 'hc1/mode',
|
||||||
m: 0,
|
m: 0,
|
||||||
w: true,
|
w: true,
|
||||||
|
|||||||
@@ -395,9 +395,6 @@ void EMSdevice::register_device_value(uint8_t tag,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// this is the unique id set for the device entity. it's a simple sequence number
|
|
||||||
uint8_t dv_id = get_next_dv_id();
|
|
||||||
|
|
||||||
// determine state
|
// determine state
|
||||||
uint8_t state = DeviceValueState::DV_DEFAULT;
|
uint8_t state = DeviceValueState::DV_DEFAULT;
|
||||||
|
|
||||||
@@ -418,7 +415,7 @@ void EMSdevice::register_device_value(uint8_t tag,
|
|||||||
});
|
});
|
||||||
|
|
||||||
// add the device
|
// add the device
|
||||||
devicevalues_.emplace_back(device_type_, tag, value_p, type, options, options_size, short_name, full_name, uom, 0, has_cmd, min, max, state, dv_id);
|
devicevalues_.emplace_back(device_type_, tag, value_p, type, options, options_size, short_name, full_name, uom, 0, has_cmd, min, max, state);
|
||||||
}
|
}
|
||||||
|
|
||||||
// function with min and max values
|
// function with min and max values
|
||||||
@@ -637,11 +634,15 @@ void EMSdevice::generate_values_web(JsonObject & output) {
|
|||||||
output["label"] = to_string_short();
|
output["label"] = to_string_short();
|
||||||
JsonArray data = output.createNestedArray("data");
|
JsonArray data = output.createNestedArray("data");
|
||||||
|
|
||||||
// do two passes. First for all entities marked as favourites, then for all others. This sorts the list.
|
// do two passes. First for all entities marked as favorites, then for all others. This sorts the list.
|
||||||
for (uint8_t i = 0; i < 2; i++) {
|
for (int8_t fav = 1; fav >= 0; fav--) {
|
||||||
for (auto & dv : devicevalues_) {
|
for (auto & dv : devicevalues_) {
|
||||||
bool state = (!i && dv.has_state(DeviceValueState::DV_FAVORITE)) || (i && !dv.has_state(DeviceValueState::DV_FAVORITE));
|
// check conditions:
|
||||||
if (state && (!dv.has_state(DeviceValueState::DV_WEB_EXCLUDE) && dv.full_name && (dv.hasValue() || (dv.type == DeviceValueType::CMD)))) {
|
// 1. full_name cannot be empty
|
||||||
|
// 2. it must have a valid value, if it is not a command like 'reset'
|
||||||
|
// 3. show favorites first
|
||||||
|
bool show = (fav && dv.has_state(DeviceValueState::DV_FAVORITE)) || (!fav && !dv.has_state(DeviceValueState::DV_FAVORITE));
|
||||||
|
if (show && !dv.has_state(DeviceValueState::DV_WEB_EXCLUDE) && dv.full_name && (dv.hasValue() || (dv.type == DeviceValueType::CMD))) {
|
||||||
JsonObject obj = data.createNestedObject(); // create the object, we know there is a value
|
JsonObject obj = data.createNestedObject(); // create the object, we know there is a value
|
||||||
uint8_t fahrenheit = 0;
|
uint8_t fahrenheit = 0;
|
||||||
|
|
||||||
@@ -842,7 +843,6 @@ void EMSdevice::generate_values_web_all(JsonArray & output) {
|
|||||||
|
|
||||||
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
|
||||||
obj["w"] = dv.has_cmd; // if writable
|
obj["w"] = dv.has_cmd; // if writable
|
||||||
obj["i"] = dv.id; // add the unique ID
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -383,11 +383,6 @@ class EMSdevice {
|
|||||||
|
|
||||||
// device values
|
// device values
|
||||||
std::vector<DeviceValue> devicevalues_;
|
std::vector<DeviceValue> devicevalues_;
|
||||||
|
|
||||||
uint8_t dv_index_ = 0; // unique counter for each added device value
|
|
||||||
uint8_t get_next_dv_id() {
|
|
||||||
return (dv_index_++);
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace emsesp
|
} // namespace emsesp
|
||||||
|
|||||||
@@ -137,7 +137,6 @@ class DeviceValue {
|
|||||||
int16_t min; // min range
|
int16_t min; // min range
|
||||||
uint16_t max; // max range
|
uint16_t max; // max range
|
||||||
uint8_t state; // DeviceValueState::*
|
uint8_t state; // DeviceValueState::*
|
||||||
uint8_t id; // internal unique counter
|
|
||||||
|
|
||||||
DeviceValue(uint8_t device_type,
|
DeviceValue(uint8_t device_type,
|
||||||
uint8_t tag,
|
uint8_t tag,
|
||||||
@@ -152,8 +151,7 @@ class DeviceValue {
|
|||||||
bool has_cmd,
|
bool has_cmd,
|
||||||
int16_t min,
|
int16_t min,
|
||||||
uint16_t max,
|
uint16_t max,
|
||||||
uint8_t state,
|
uint8_t state)
|
||||||
uint8_t id)
|
|
||||||
: device_type(device_type)
|
: device_type(device_type)
|
||||||
, tag(tag)
|
, tag(tag)
|
||||||
, value_p(value_p)
|
, value_p(value_p)
|
||||||
@@ -167,8 +165,7 @@ class DeviceValue {
|
|||||||
, has_cmd(has_cmd)
|
, has_cmd(has_cmd)
|
||||||
, min(min)
|
, min(min)
|
||||||
, max(max)
|
, max(max)
|
||||||
, state(state)
|
, state(state) {
|
||||||
, id(id) {
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool hasValue();
|
bool hasValue();
|
||||||
|
|||||||
Reference in New Issue
Block a user