Skip to content

Commit

Permalink
Add device states #18.
Browse files Browse the repository at this point in the history
  • Loading branch information
Your Name committed Dec 26, 2024
1 parent 223e115 commit fa72bcb
Show file tree
Hide file tree
Showing 6 changed files with 49 additions and 0 deletions.
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -268,6 +268,9 @@ The following `type` are supported by the `binary_sensor` component:
| `DEVICE_STATE_REPEATED_ABSORPTION` | | | | | | ? | ? | | | ? | ? | | |
| `DEVICE_STATE_AUTO_EQUALIZE` | X | | | | | ? | ? | | | ? | ? | | |
| `DEVICE_STATE_BATTERY_SAFE` | | | | | | ? | ? | | | ? | ? | | |
| `DEVICE_STATE_LOAD_DETECT` | | | | | | ? | ? | ? | | ? | ? | | |
| `DEVICE_STATE_BLOCKED` | | | | | | ? | ? | ? | | ? | ? | | |
| `DEVICE_STATE_TEST` | | | | | | ? | ? | ? | | ? | ? | | |
| `DEVICE_STATE_EXTERNAL_CONTROL` | X | | | | | ? | ? | | | ? | ? | | |

? - Device submits a device state. Not sure if it can enter this stage.
Expand Down
9 changes: 9 additions & 0 deletions components/victron_ble/binary_sensor/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,15 @@
"DEVICE_STATE_BATTERY_SAFE": {
CONF_TYPE: VICTRON_BINARY_SENSOR_TYPE.DEVICE_STATE_BATTERY_SAFE,
},
"DEVICE_STATE_LOAD_DETECT": {
CONF_TYPE: VICTRON_BINARY_SENSOR_TYPE.DEVICE_STATE_LOAD_DETECT,
},
"DEVICE_STATE_BLOCKED": {
CONF_TYPE: VICTRON_BINARY_SENSOR_TYPE.DEVICE_STATE_BLOCKED,
},
"DEVICE_STATE_TEST": {
CONF_TYPE: VICTRON_BINARY_SENSOR_TYPE.DEVICE_STATE_TEST,
},
"DEVICE_STATE_EXTERNAL_CONTROL": {
CONF_TYPE: VICTRON_BINARY_SENSOR_TYPE.DEVICE_STATE_EXTERNAL_CONTROL,
},
Expand Down
12 changes: 12 additions & 0 deletions components/victron_ble/binary_sensor/victron_binary_sensor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,9 @@ void VictronBinarySensor::setup() {
case VICTRON_BINARY_SENSOR_TYPE::DEVICE_STATE_REPEATED_ABSORPTION:
case VICTRON_BINARY_SENSOR_TYPE::DEVICE_STATE_AUTO_EQUALIZE:
case VICTRON_BINARY_SENSOR_TYPE::DEVICE_STATE_BATTERY_SAFE:
case VICTRON_BINARY_SENSOR_TYPE::DEVICE_STATE_LOAD_DETECT:
case VICTRON_BINARY_SENSOR_TYPE::DEVICE_STATE_BLOCKED:
case VICTRON_BINARY_SENSOR_TYPE::DEVICE_STATE_TEST:
case VICTRON_BINARY_SENSOR_TYPE::DEVICE_STATE_EXTERNAL_CONTROL:
switch (msg->record_type) {
case VICTRON_BLE_RECORD_TYPE::SOLAR_CHARGER:
Expand Down Expand Up @@ -163,6 +166,15 @@ void VictronBinarySensor::publish_state_(VE_REG_DEVICE_STATE device_state) {
case VICTRON_BINARY_SENSOR_TYPE::DEVICE_STATE_BATTERY_SAFE:
this->publish_state(device_state == VE_REG_DEVICE_STATE::BATTERY_SAFE);
break;
case VICTRON_BINARY_SENSOR_TYPE::DEVICE_STATE_LOAD_DETECT:
this->publish_state(device_state == VE_REG_DEVICE_STATE::LOAD_DETECT);
break;
case VICTRON_BINARY_SENSOR_TYPE::DEVICE_STATE_BLOCKED:
this->publish_state(device_state == VE_REG_DEVICE_STATE::BLOCKED);
break;
case VICTRON_BINARY_SENSOR_TYPE::DEVICE_STATE_TEST:
this->publish_state(device_state == VE_REG_DEVICE_STATE::TEST);
break;
case VICTRON_BINARY_SENSOR_TYPE::DEVICE_STATE_EXTERNAL_CONTROL:
this->publish_state(device_state == VE_REG_DEVICE_STATE::EXTERNAL_CONTROL);
break;
Expand Down
9 changes: 9 additions & 0 deletions components/victron_ble/binary_sensor/victron_binary_sensor.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,9 @@ enum class VICTRON_BINARY_SENSOR_TYPE {
DEVICE_STATE_REPEATED_ABSORPTION,
DEVICE_STATE_AUTO_EQUALIZE,
DEVICE_STATE_BATTERY_SAFE,
DEVICE_STATE_LOAD_DETECT,
DEVICE_STATE_BLOCKED,
DEVICE_STATE_TEST,
DEVICE_STATE_EXTERNAL_CONTROL,
};

Expand Down Expand Up @@ -68,6 +71,12 @@ static const char *enum_to_c_str(const VICTRON_BINARY_SENSOR_TYPE val) {
return "DEVICE_STATE_AUTO_EQUALIZE";
case VICTRON_BINARY_SENSOR_TYPE::DEVICE_STATE_BATTERY_SAFE:
return "DEVICE_STATE_BATTERY_SAFE";
case VICTRON_BINARY_SENSOR_TYPE::DEVICE_STATE_LOAD_DETECT:
return "DEVICE_STATE_LOAD_DETECT";
case VICTRON_BINARY_SENSOR_TYPE::DEVICE_STATE_BLOCKED:
return "DEVICE_STATE_BLOCKED";
case VICTRON_BINARY_SENSOR_TYPE::DEVICE_STATE_TEST:
return "DEVICE_STATE_TEST";
case VICTRON_BINARY_SENSOR_TYPE::DEVICE_STATE_EXTERNAL_CONTROL:
return "DEVICE_STATE_EXTERNAL_CONTROL";
default:
Expand Down
9 changes: 9 additions & 0 deletions components/victron_ble/text_sensor/victron_text_sensor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -296,6 +296,15 @@ void VictronTextSensor::publish_state_(VE_REG_DEVICE_STATE val) {
case VE_REG_DEVICE_STATE::BATTERY_SAFE:
this->publish_state("BatterySafe");
break;
case VE_REG_DEVICE_STATE::LOAD_DETECT:
this->publish_state("Load detect");
break;
case VE_REG_DEVICE_STATE::BLOCKED:
this->publish_state("Blocked");
break;
case VE_REG_DEVICE_STATE::TEST:
this->publish_state("Test");
break;
case VE_REG_DEVICE_STATE::EXTERNAL_CONTROL:
this->publish_state("External Control");
break;
Expand Down
7 changes: 7 additions & 0 deletions components/victron_ble/victron_ble.h
Original file line number Diff line number Diff line change
Expand Up @@ -353,6 +353,7 @@ struct VICTRON_BLE_RECORD_TEST { // NOLINT(readability-identifier-naming,altera
// source:
// - https://www.victronenergy.com/upload/documents/VE.Direct-Protocol-3.33.pdf
// - https://github.com/victronenergy/venus-html5-app/blob/master/src/app/utils/constants.js
// - https://github.com/victronenergy/gui-v2/blob/8397825725623a4d15086bef77f67c98aa94a780/src/enums.h#L332C6-L332C7
enum class VE_REG_DEVICE_STATE : u_int8_t {
// Off
OFF = 0x00,
Expand Down Expand Up @@ -388,6 +389,12 @@ enum class VE_REG_DEVICE_STATE : u_int8_t {
AUTO_EQUALIZE = 0xF7,
// BatterySafe
BATTERY_SAFE = 0xF8,
// Load detect
LOAD_DETECT = 0xF9,
// Blocked
BLOCKED = 0xFA,
// Test
TEST = 0xFB,
// External Control
EXTERNAL_CONTROL = 0xFC,

Expand Down

0 comments on commit fa72bcb

Please sign in to comment.