mirror of
https://github.com/esphome/esphome.git
synced 2026-09-27 23:10:21 +00:00
[mk2pvrouter] Add text_sensor platform (#19720)
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
499ce56c2b
commit
04a53264b4
@@ -0,0 +1,27 @@
|
||||
import esphome.codegen as cg
|
||||
from esphome.components import text_sensor
|
||||
from esphome.const import CONF_ID, CONF_TAG
|
||||
from esphome.types import ConfigType
|
||||
|
||||
from .. import (
|
||||
CONF_MK2PVROUTER_ID,
|
||||
MK2PVROUTER_LISTENER_SCHEMA,
|
||||
mk2pvrouter_ns,
|
||||
register_mk2pvrouter_listener,
|
||||
)
|
||||
|
||||
Mk2PVRouterTextSensor = mk2pvrouter_ns.class_(
|
||||
"Mk2PVRouterTextSensor", text_sensor.TextSensor, cg.Component
|
||||
)
|
||||
|
||||
CONFIG_SCHEMA = text_sensor.text_sensor_schema(Mk2PVRouterTextSensor).extend(
|
||||
MK2PVROUTER_LISTENER_SCHEMA
|
||||
)
|
||||
|
||||
|
||||
async def to_code(config: ConfigType) -> None:
|
||||
var = cg.new_Pvariable(config[CONF_ID], config[CONF_TAG])
|
||||
await cg.register_component(var, config)
|
||||
await text_sensor.register_text_sensor(var, config)
|
||||
mk2pvrouter = await cg.get_variable(config[CONF_MK2PVROUTER_ID])
|
||||
await register_mk2pvrouter_listener(mk2pvrouter, var)
|
||||
@@ -0,0 +1,17 @@
|
||||
#include "mk2pvrouter_text_sensor.h"
|
||||
#include "esphome/core/log.h"
|
||||
|
||||
namespace esphome::mk2pvrouter {
|
||||
|
||||
static const char *const TAG = "mk2pvrouter_text_sensor";
|
||||
|
||||
Mk2PVRouterTextSensor::Mk2PVRouterTextSensor(const char *tag) : Mk2PVRouterListener(tag) {}
|
||||
|
||||
void Mk2PVRouterTextSensor::publish_val(const char *val) { this->publish_state(val); }
|
||||
|
||||
void Mk2PVRouterTextSensor::dump_config() {
|
||||
LOG_TEXT_SENSOR(" ", "Mk2PVRouter Text Sensor", this);
|
||||
ESP_LOGCONFIG(TAG, " Tag: %s", this->get_tag());
|
||||
}
|
||||
|
||||
} // namespace esphome::mk2pvrouter
|
||||
@@ -0,0 +1,15 @@
|
||||
#pragma once
|
||||
|
||||
#include "esphome/components/mk2pvrouter/mk2pvrouter.h"
|
||||
#include "esphome/components/text_sensor/text_sensor.h"
|
||||
|
||||
namespace esphome::mk2pvrouter {
|
||||
|
||||
class Mk2PVRouterTextSensor final : public Mk2PVRouterListener, public text_sensor::TextSensor, public Component {
|
||||
public:
|
||||
explicit Mk2PVRouterTextSensor(const char *tag);
|
||||
void publish_val(const char *val) override;
|
||||
void dump_config() override;
|
||||
};
|
||||
|
||||
} // namespace esphome::mk2pvrouter
|
||||
@@ -66,3 +66,15 @@ binary_sensor:
|
||||
name: Relay 2 Binary
|
||||
tag: R2
|
||||
mk2pvrouter_id: test_mk2pvrouter
|
||||
|
||||
text_sensor:
|
||||
- platform: mk2pvrouter
|
||||
name: S per MC
|
||||
tag: S_MC
|
||||
mk2pvrouter_id: test_mk2pvrouter
|
||||
|
||||
# Test another text tag
|
||||
- platform: mk2pvrouter
|
||||
name: Status
|
||||
tag: STATUS
|
||||
mk2pvrouter_id: test_mk2pvrouter
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
#include "esphome/components/mk2pvrouter/text_sensor/mk2pvrouter_text_sensor.h"
|
||||
|
||||
namespace esphome::mk2pvrouter::testing {
|
||||
|
||||
TEST(Mk2PVRouterTextSensorTest, PublishesValueVerbatim) {
|
||||
Mk2PVRouterTextSensor sensor("S_MC");
|
||||
sensor.publish_val("-1234");
|
||||
ASSERT_TRUE(sensor.has_state());
|
||||
EXPECT_EQ(sensor.get_state(), "-1234");
|
||||
}
|
||||
|
||||
TEST(Mk2PVRouterTextSensorTest, ShorterValueReplacesPreviousOne) {
|
||||
Mk2PVRouterTextSensor sensor("S_MC");
|
||||
sensor.publish_val("-1234");
|
||||
sensor.publish_val("5");
|
||||
EXPECT_EQ(sensor.get_state(), "5");
|
||||
}
|
||||
|
||||
} // namespace esphome::mk2pvrouter::testing
|
||||
Reference in New Issue
Block a user