Prepare for service utilities_group_refresh
This commit is contained in:
40
components/nspanel_ha_blueprint/utilities.cpp
Normal file
40
components/nspanel_ha_blueprint/utilities.cpp
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
// utilities.cpp
|
||||||
|
#include "utilities.h"
|
||||||
|
#include <cstdint>
|
||||||
|
#include <cstring>
|
||||||
|
|
||||||
|
namespace nspanel_ha_blueprint {
|
||||||
|
|
||||||
|
// Definition and initialization of the global variable
|
||||||
|
UtilitiesGroupValues UtilitiesGroups[8] = {
|
||||||
|
{ "grid", "\0", "\0", 0 },
|
||||||
|
{ "group01", "\0", "\0", 0 },
|
||||||
|
{ "group02", "\0", "\0", 0 },
|
||||||
|
{ "group03", "\0", "\0", 0 },
|
||||||
|
{ "group04", "\0", "\0", 0 },
|
||||||
|
{ "group05", "\0", "\0", 0 },
|
||||||
|
{ "group06", "\0", "\0", 0 },
|
||||||
|
{ "home", "\0", "\0", 0 }
|
||||||
|
};
|
||||||
|
|
||||||
|
uint8_t findUtilitiesGroupIndex(const char* group_id) {
|
||||||
|
int low = 0;
|
||||||
|
int high = sizeof(UtilitiesGroups) / sizeof(UtilitiesGroups[0]) - 1;
|
||||||
|
|
||||||
|
while (low <= high) {
|
||||||
|
int mid = low + (high - low) / 2;
|
||||||
|
int cmp = strcmp(UtilitiesGroups[mid].group_id, group_id);
|
||||||
|
|
||||||
|
if (cmp < 0) {
|
||||||
|
low = mid + 1;
|
||||||
|
} else if (cmp > 0) {
|
||||||
|
high = mid - 1;
|
||||||
|
} else {
|
||||||
|
return static_cast<uint8_t>(mid); // Found
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return UINT8_MAX; // Not found
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace nspanel_ha_blueprint
|
||||||
19
components/nspanel_ha_blueprint/utilities.h
Normal file
19
components/nspanel_ha_blueprint/utilities.h
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
// utilities.h
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <cstdint>
|
||||||
|
|
||||||
|
namespace nspanel_ha_blueprint {
|
||||||
|
|
||||||
|
struct UtilitiesGroupValues {
|
||||||
|
char group_id[8]; // 7 characters + null terminator
|
||||||
|
char value1[11]; // 10 characters + null terminator
|
||||||
|
char value2[11]; // 11 characters + null terminator
|
||||||
|
int8_t direction;
|
||||||
|
};
|
||||||
|
|
||||||
|
extern UtilitiesGroupValues UtilitiesGroups[8];
|
||||||
|
|
||||||
|
uint8_t findUtilitiesGroupIndex(const char* group_id);
|
||||||
|
|
||||||
|
} // namespace nspanel_ha_blueprint
|
||||||
@@ -775,6 +775,16 @@ api:
|
|||||||
then:
|
then:
|
||||||
- lambda: if (!id(is_uploading_tft)) buzzer->play(tone);
|
- lambda: if (!id(is_uploading_tft)) buzzer->play(tone);
|
||||||
|
|
||||||
|
# Utilities group refresh
|
||||||
|
- service: utilities_group_refresh
|
||||||
|
variables:
|
||||||
|
group_id: string
|
||||||
|
value1: string
|
||||||
|
value2: string
|
||||||
|
direction: int
|
||||||
|
then:
|
||||||
|
# Do nothing for now
|
||||||
|
|
||||||
# Updates an entity to display specific values with dynamic icons, names, and color codes.
|
# Updates an entity to display specific values with dynamic icons, names, and color codes.
|
||||||
- service: value
|
- service: value
|
||||||
variables:
|
variables:
|
||||||
|
|||||||
Reference in New Issue
Block a user