mirror of
https://github.com/esphome/esphome.git
synced 2024-12-02 19:54:14 +01:00
text sensors
This commit is contained in:
parent
d7e0ca6eed
commit
193a98bfb6
7 changed files with 76 additions and 1 deletions
|
@ -253,6 +253,7 @@ esphome/components/mopeka_std_check/* @Fabian-Schmidt
|
||||||
esphome/components/mpl3115a2/* @kbickar
|
esphome/components/mpl3115a2/* @kbickar
|
||||||
esphome/components/mpu6886/* @fabaff
|
esphome/components/mpu6886/* @fabaff
|
||||||
esphome/components/ms8607/* @e28eta
|
esphome/components/ms8607/* @e28eta
|
||||||
|
esphome/components/msa3xx/* @latonita
|
||||||
esphome/components/network/* @esphome/core
|
esphome/components/network/* @esphome/core
|
||||||
esphome/components/nextion/* @edwardtfn @senexcrenshaw
|
esphome/components/nextion/* @edwardtfn @senexcrenshaw
|
||||||
esphome/components/nextion/binary_sensor/* @senexcrenshaw
|
esphome/components/nextion/binary_sensor/* @senexcrenshaw
|
||||||
|
|
|
@ -15,9 +15,11 @@ from esphome.const import (
|
||||||
CONF_TRANSFORM,
|
CONF_TRANSFORM,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
CODEOWNERS = ["@latonita"]
|
||||||
DEPENDENCIES = ["i2c"]
|
DEPENDENCIES = ["i2c"]
|
||||||
AUTO_LOAD = ["sensor", "binary_sensor", "text_sensor"]
|
AUTO_LOAD = ["sensor", "binary_sensor", "text_sensor"]
|
||||||
|
|
||||||
|
|
||||||
CONF_MSA3XX_ID = "msa3xx_id"
|
CONF_MSA3XX_ID = "msa3xx_id"
|
||||||
|
|
||||||
CONF_MIRROR_Z = "mirror_z"
|
CONF_MIRROR_Z = "mirror_z"
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
import esphome.config_validation as cv
|
import esphome.config_validation as cv
|
||||||
from . import MSA3xxComponent, CONF_MSA3XX_ID
|
from . import MSA3xxComponent, CONF_MSA3XX_ID
|
||||||
|
|
||||||
|
CODEOWNERS = ["@latonita"]
|
||||||
DEPENDENCIES = ["msa3xx"]
|
DEPENDENCIES = ["msa3xx"]
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -171,6 +171,11 @@ void MSA3xxComponent::dump_config() {
|
||||||
LOG_SENSOR(" ", "Acceleration Y", this->acceleration_y_sensor_);
|
LOG_SENSOR(" ", "Acceleration Y", this->acceleration_y_sensor_);
|
||||||
LOG_SENSOR(" ", "Acceleration Z", this->acceleration_z_sensor_);
|
LOG_SENSOR(" ", "Acceleration Z", this->acceleration_z_sensor_);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef USE_TEXT_SENSOR
|
||||||
|
LOG_TEXT_SENSOR(" ", "Orientation XY", this->orientation_xy_text_sensor_);
|
||||||
|
LOG_TEXT_SENSOR(" ", "Orientation Z", this->orientation_z_text_sensor_);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
bool MSA3xxComponent::read_data_() {
|
bool MSA3xxComponent::read_data_() {
|
||||||
|
@ -256,6 +261,19 @@ void MSA3xxComponent::update() {
|
||||||
this->acceleration_z_sensor_->publish_state(this->data_.z);
|
this->acceleration_z_sensor_->publish_state(this->data_.z);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef USE_TEXT_SENSOR
|
||||||
|
if (this->orientation_xy_text_sensor_ != nullptr &&
|
||||||
|
this->status_.orientation.orient_xy != this->status_.orientation_old.orient_xy) {
|
||||||
|
this->orientation_xy_text_sensor_->publish_state(orientation_xy_to_string(this->status_.orientation.orient_xy));
|
||||||
|
}
|
||||||
|
if (this->orientation_z_text_sensor_ != nullptr &&
|
||||||
|
this->status_.orientation.orient_z != this->status_.orientation_old.orient_z) {
|
||||||
|
this->orientation_z_text_sensor_->publish_state(orientation_z_to_string(this->status_.orientation.orient_z));
|
||||||
|
}
|
||||||
|
this->status_.orientation_old = this->status_.orientation;
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
this->status_clear_warning();
|
this->status_clear_warning();
|
||||||
}
|
}
|
||||||
float MSA3xxComponent::get_setup_priority() const { return setup_priority::DATA; }
|
float MSA3xxComponent::get_setup_priority() const { return setup_priority::DATA; }
|
||||||
|
@ -320,8 +338,9 @@ void MSA3xxComponent::setup_offset_(float offset_x, float offset_y, float offset
|
||||||
|
|
||||||
auto offset_g_to_lsb = [](float accel) -> int8_t {
|
auto offset_g_to_lsb = [](float accel) -> int8_t {
|
||||||
float acccel_clamped = clamp(accel, G_OFFSET_MIN, G_OFFSET_MAX);
|
float acccel_clamped = clamp(accel, G_OFFSET_MIN, G_OFFSET_MAX);
|
||||||
return static_cast<int8_t>(accel * LSB_COEFF);
|
return static_cast<int8_t>(acccel_clamped * LSB_COEFF);
|
||||||
};
|
};
|
||||||
|
|
||||||
offset[0] = offset_g_to_lsb(offset_x);
|
offset[0] = offset_g_to_lsb(offset_x);
|
||||||
offset[1] = offset_g_to_lsb(offset_y);
|
offset[1] = offset_g_to_lsb(offset_y);
|
||||||
offset[2] = offset_g_to_lsb(offset_z);
|
offset[2] = offset_g_to_lsb(offset_z);
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
#include "esphome/core/component.h"
|
#include "esphome/core/component.h"
|
||||||
#include "esphome/components/sensor/sensor.h"
|
#include "esphome/components/sensor/sensor.h"
|
||||||
|
#include "esphome/components/text_sensor/text_sensor.h"
|
||||||
#include "esphome/components/i2c/i2c.h"
|
#include "esphome/components/i2c/i2c.h"
|
||||||
#include "esphome/core/automation.h"
|
#include "esphome/core/automation.h"
|
||||||
|
|
||||||
|
@ -226,6 +227,11 @@ class MSA3xxComponent : public PollingComponent, public i2c::I2CDevice {
|
||||||
SUB_SENSOR(acceleration_z)
|
SUB_SENSOR(acceleration_z)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef USE_TEXT_SENSOR
|
||||||
|
SUB_TEXT_SENSOR(orientation_xy)
|
||||||
|
SUB_TEXT_SENSOR(orientation_z)
|
||||||
|
#endif
|
||||||
|
|
||||||
Trigger<> *get_tap_trigger() { return &this->tap_trigger_; }
|
Trigger<> *get_tap_trigger() { return &this->tap_trigger_; }
|
||||||
Trigger<> *get_double_tap_trigger() { return &this->double_tap_trigger_; }
|
Trigger<> *get_double_tap_trigger() { return &this->double_tap_trigger_; }
|
||||||
Trigger<> *get_orientation_trigger() { return &this->orientation_trigger_; }
|
Trigger<> *get_orientation_trigger() { return &this->orientation_trigger_; }
|
||||||
|
@ -256,6 +262,7 @@ class MSA3xxComponent : public PollingComponent, public i2c::I2CDevice {
|
||||||
struct {
|
struct {
|
||||||
RegMotionInterrupt motion_int;
|
RegMotionInterrupt motion_int;
|
||||||
RegOrientationStatus orientation;
|
RegOrientationStatus orientation;
|
||||||
|
RegOrientationStatus orientation_old;
|
||||||
} status_{};
|
} status_{};
|
||||||
|
|
||||||
void setup_odr_(DataRate rate);
|
void setup_odr_(DataRate rate);
|
||||||
|
|
|
@ -12,6 +12,7 @@ from esphome.const import (
|
||||||
)
|
)
|
||||||
from . import MSA3xxComponent, CONF_MSA3XX_ID
|
from . import MSA3xxComponent, CONF_MSA3XX_ID
|
||||||
|
|
||||||
|
CODEOWNERS = ["@latonita"]
|
||||||
DEPENDENCIES = ["msa3xx"]
|
DEPENDENCIES = ["msa3xx"]
|
||||||
|
|
||||||
|
|
||||||
|
|
44
esphome/components/msa3xx/text_sensor.py
Normal file
44
esphome/components/msa3xx/text_sensor.py
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
import esphome.codegen as cg
|
||||||
|
import esphome.config_validation as cv
|
||||||
|
from esphome.components import text_sensor
|
||||||
|
from esphome.const import (
|
||||||
|
CONF_NAME,
|
||||||
|
)
|
||||||
|
from . import MSA3xxComponent, CONF_MSA3XX_ID
|
||||||
|
|
||||||
|
CODEOWNERS = ["@latonita"]
|
||||||
|
DEPENDENCIES = ["msa3xx"]
|
||||||
|
|
||||||
|
CONF_ORIENTATION_XY = "orientation_xy"
|
||||||
|
CONF_ORIENTATION_Z = "orientation_z"
|
||||||
|
|
||||||
|
CONFIG_SCHEMA = cv.All(
|
||||||
|
cv.Schema(
|
||||||
|
{
|
||||||
|
cv.GenerateID(CONF_MSA3XX_ID): cv.use_id(MSA3xxComponent),
|
||||||
|
cv.Optional(CONF_ORIENTATION_XY): cv.maybe_simple_value(
|
||||||
|
text_sensor.text_sensor_schema(),
|
||||||
|
key=CONF_NAME,
|
||||||
|
),
|
||||||
|
cv.Optional(CONF_ORIENTATION_Z): cv.maybe_simple_value(
|
||||||
|
text_sensor.text_sensor_schema(),
|
||||||
|
key=CONF_NAME,
|
||||||
|
),
|
||||||
|
}
|
||||||
|
).extend(cv.COMPONENT_SCHEMA)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
async def setup_conf(config, key, hub):
|
||||||
|
if sensor_config := config.get(key):
|
||||||
|
var = await text_sensor.new_text_sensor(sensor_config)
|
||||||
|
cg.add(getattr(hub, f"set_{key}_text_sensor")(var))
|
||||||
|
|
||||||
|
|
||||||
|
async def to_code(config):
|
||||||
|
hub = await cg.get_variable(config[CONF_MSA3XX_ID])
|
||||||
|
|
||||||
|
SENSORS = [CONF_ORIENTATION_XY, CONF_ORIENTATION_Z]
|
||||||
|
|
||||||
|
for key in SENSORS:
|
||||||
|
await setup_conf(config, key, hub)
|
Loading…
Reference in a new issue