Add files via upload

This commit is contained in:
Jiří Bětuňák 2022-01-24 18:03:53 +01:00 committed by GitHub
parent 725d05bff3
commit ed45d100ff
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 47 additions and 23 deletions

View File

@ -1,4 +1,4 @@
# Victron solar charge controller
#Victron solar charge controller
A configured uart component is required.

View File

@ -1,29 +1,17 @@
import esphome.codegen as cg
import esphome.config_validation as cv
from esphome.components import uart
from esphome.const import CONF_ID
import esphome.codegen as cg import esphome.config_validation as cv from esphome.components import uart from esphome.const import CONF_ID
AUTO_LOAD = ["sensor", "text_sensor"]
AUTO_LOAD =["sensor", "text_sensor"]
DEPENDENCIES = ["uart"]
DEPENDENCIES =["uart"]
CODEOWNERS = ["@KinDR007"]
CODEOWNERS =["@KinDR007"]
MULTI_CONF = True
MULTI_CONF = True
victron_ns = cg.esphome_ns.namespace("victron")
VictronComponent = victron_ns.class_("VictronComponent", uart.UARTDevice, cg.Component)
victron_ns = cg.esphome_ns.namespace("victron") VictronComponent = victron_ns.class_("VictronComponent", uart.UARTDevice, cg.Component)
CONF_VICTRON_ID = "victron_id"
CONF_VICTRON_ID = "victron_id"
CONFIG_SCHEMA = uart.UART_DEVICE_SCHEMA.extend(
{
cv.GenerateID(): cv.declare_id(VictronComponent),
}
)
CONFIG_SCHEMA = uart.UART_DEVICE_SCHEMA.extend({cv.GenerateID() : cv.declare_id(VictronComponent), })
def to_code(config):
var = cg.new_Pvariable(config[CONF_ID])
yield cg.register_component(var, config)
yield uart.register_uart_device(var, config)
def to_code(config) : var = cg.new_Pvariable(config[CONF_ID]) yield cg.register_component(var, config) yield uart.register_uart_device(var, config)

View File

@ -63,6 +63,7 @@ SENSORS = [
CONF_LOAD_CURRENT,
]
CONFIG_SCHEMA = cv.Schema(
{
cv.GenerateID(CONF_VICTRON_ID): cv.use_id(VictronComponent),

View File

@ -16,6 +16,8 @@ CONF_TRACKING_MODE = "tracking_mode"
CONF_DEVICE_MODE = "device_mode"
CONF_FIRMWARE_VERSION = "firmware_version"
CONF_DEVICE_TYPE = "device_type"
CONF_LOAD_STATE = "load_state"
CONF_RELAY_STATE = "relay_state"
TEXT_SENSORS = [
CONF_CHARGING_MODE,
@ -51,10 +53,15 @@ CONFIG_SCHEMA = cv.Schema(
cv.Optional(CONF_DEVICE_TYPE): text_sensor.TEXT_SENSOR_SCHEMA.extend(
{cv.GenerateID(): cv.declare_id(text_sensor.TextSensor)}
),
cv.Optional(CONF_LOAD_STATE): text_sensor.TEXT_SENSOR_SCHEMA.extend(
{cv.GenerateID(): cv.declare_id(text_sensor.TextSensor)}
),
cv.Optional(CONF_RELAY_STATE): text_sensor.TEXT_SENSOR_SCHEMA.extend(
{cv.GenerateID(): cv.declare_id(text_sensor.TextSensor)}
),
}
)
def to_code(config):
hub = yield cg.get_variable(config[CONF_VICTRON_ID])
for key in TEXT_SENSORS:

View File

@ -34,6 +34,8 @@ void VictronComponent::dump_config() {
LOG_TEXT_SENSOR(" ", "Device Mode", device_mode_text_sensor_);
LOG_TEXT_SENSOR(" ", "Firmware Version", firmware_version_text_sensor_);
LOG_TEXT_SENSOR(" ", "Device Type", device_type_text_sensor_);
LOG_TEXT_SENSOR(" ", "Load state", load_state_text_sensor_);
LOG_TEXT_SENSOR(" ", "Relay state", relay_state_text_sensor_);
check_uart_settings(19200);
}
@ -471,6 +473,24 @@ void VictronComponent::handle_value_() {
if ((device_type_text_sensor_ != nullptr) && !device_type_text_sensor_->has_state()) {
device_type_text_sensor_->publish_state(device_type_text(value));
}
} else if (label_ == "LOAD") {
value = atoi(value_.c_str()); // NOLINT(cert-err34-c)
// ESP_LOGD(TAG, "received PID: '%s'", value_.c_str());
// value = strtol(value_.c_str(), nullptr, 0);
// ESP_LOGD(TAG, "received PID: '%04x'", value);
if ((load_state_text_sensor_ != nullptr) && !load_state_text_sensor_->has_state()) {
load_state_text_sensor_->publish_state(value);
}
} else if (label_ == "RELAY") {
value = atoi(value_.c_str()); // NOLINT(cert-err34-c)
// ESP_LOGD(TAG, "received PID: '%s'", value_.c_str());
// value = strtol(value_.c_str(), nullptr, 0);
// ESP_LOGD(TAG, "received PID: '%04x'", value);
if ((relay_state_text_sensor_ != nullptr) && !relay_state_text_sensor_->has_state()) {
relay_state_text_sensor_->publish_state(value);
}
}
}

View File

@ -68,6 +68,12 @@ class VictronComponent : public uart::UARTDevice, public Component {
void set_device_type_text_sensor(text_sensor::TextSensor *device_type_text_sensor) {
device_type_text_sensor_ = device_type_text_sensor;
}
void set_load_state_text_sensor(text_sensor::TextSensor *load_state_text_sensor) {
load_state_text_sensor_ = load_state_text_sensor;
}
void set_relay_state_text_sensor(text_sensor::TextSensor *relay_state_text_sensor) {
relay_state_text_sensor_ = relay_state_text_sensor;
}
void dump_config() override;
void loop() override;
@ -104,6 +110,8 @@ class VictronComponent : public uart::UARTDevice, public Component {
text_sensor::TextSensor *device_mode_text_sensor_{nullptr};
text_sensor::TextSensor *firmware_version_text_sensor_{nullptr};
text_sensor::TextSensor *device_type_text_sensor_{nullptr};
text_sensor::TextSensor *load_state_text_sensor_{nullptr};
text_sensor::TextSensor *relay_state_text_sensor_{nullptr};
int state_{0};
std::string label_;