Renamed all occurences of 'maidsite' with 'maidesite'
This commit is contained in:
parent
24e7f16f9e
commit
5da5fe01aa
|
|
@ -2,6 +2,6 @@
|
||||||
|
|
||||||
## Available Components
|
## Available Components
|
||||||
|
|
||||||
* [Maidsite Desk](components/maidsite_desk/)
|
* [Maidesite Desk](components/maidesite_desk/)
|
||||||
|
|
||||||
* [Panasonic Heatpump](components/panasonic_heatpump/)
|
* [Panasonic Heatpump](components/panasonic_heatpump/)
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
# ESPHome Maidsite Desk Component
|
# ESPHome Maidesite Desk Component
|
||||||
|
|
||||||
[ESPHome](https://esphome.io/) component for controlling Maidsite desk controllers via their serial protocol.
|
[ESPHome](https://esphome.io/) component for controlling Maidesite desk controllers via their serial protocol.
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
|
|
@ -44,7 +44,7 @@ external_components:
|
||||||
- source:
|
- source:
|
||||||
type: git
|
type: git
|
||||||
url: https://github.com/ElVit/esphome_components/
|
url: https://github.com/ElVit/esphome_components/
|
||||||
components: [ maidsite_desk ]
|
components: [ maidesite_desk ]
|
||||||
|
|
||||||
uart:
|
uart:
|
||||||
- id: uart_bus
|
- id: uart_bus
|
||||||
|
|
@ -52,22 +52,22 @@ uart:
|
||||||
rx_pin: GPIO4
|
rx_pin: GPIO4
|
||||||
baud_rate: 9600
|
baud_rate: 9600
|
||||||
|
|
||||||
maidsite_desk:
|
maidesite_desk:
|
||||||
id: my_desk
|
id: my_desk
|
||||||
|
|
||||||
sensor:
|
sensor:
|
||||||
- platform: maidsite_desk
|
- platform: maidesite_desk
|
||||||
height_abs:
|
height_abs:
|
||||||
name: "Height"
|
name: "Height"
|
||||||
|
|
||||||
number:
|
number:
|
||||||
- platform: maidsite_desk
|
- platform: maidesite_desk
|
||||||
height_abs:
|
height_abs:
|
||||||
name: "Height"
|
name: "Height"
|
||||||
mode: SLIDER
|
mode: SLIDER
|
||||||
|
|
||||||
button:
|
button:
|
||||||
- platform: maidsite_desk
|
- platform: maidesite_desk
|
||||||
stop:
|
stop:
|
||||||
name: "Stop"
|
name: "Stop"
|
||||||
step_up:
|
step_up:
|
||||||
|
|
@ -8,16 +8,16 @@ CODEOWNERS = ['@elvit']
|
||||||
MULTICONF = True
|
MULTICONF = True
|
||||||
DEPENDENCIES = ['uart']
|
DEPENDENCIES = ['uart']
|
||||||
|
|
||||||
CONF_MAIDSITE_DESK_ID = "maidsite_desk"
|
CONF_MAIDESITE_DESK_ID = "maidesite_desk"
|
||||||
CONF_LOG_UART_MSG = "log_uart_msg"
|
CONF_LOG_UART_MSG = "log_uart_msg"
|
||||||
|
|
||||||
maidsite_desk_ns = cg.esphome_ns.namespace('maidsite_desk')
|
maidesite_desk_ns = cg.esphome_ns.namespace('maidesite_desk')
|
||||||
MaidsiteDeskComponent = maidsite_desk_ns.class_('MaidsiteDeskComponent', cg.Component, uart.UARTDevice)
|
MaidesiteDeskComponent = maidesite_desk_ns.class_('MaidesiteDeskComponent', cg.Component, uart.UARTDevice)
|
||||||
|
|
||||||
CONFIG_SCHEMA = (
|
CONFIG_SCHEMA = (
|
||||||
cv.Schema(
|
cv.Schema(
|
||||||
{
|
{
|
||||||
cv.GenerateID(): cv.declare_id(MaidsiteDeskComponent),
|
cv.GenerateID(): cv.declare_id(MaidesiteDeskComponent),
|
||||||
|
|
||||||
cv.Optional(CONF_LOG_UART_MSG, default=False): cv.boolean,
|
cv.Optional(CONF_LOG_UART_MSG, default=False): cv.boolean,
|
||||||
}
|
}
|
||||||
|
|
@ -4,7 +4,7 @@ from esphome.components import button
|
||||||
from esphome.const import (
|
from esphome.const import (
|
||||||
ENTITY_CATEGORY_CONFIG,
|
ENTITY_CATEGORY_CONFIG,
|
||||||
)
|
)
|
||||||
from .. import CONF_MAIDSITE_DESK_ID, MaidsiteDeskComponent, maidsite_desk_ns
|
from .. import CONF_MAIDESITE_DESK_ID, MaidesiteDeskComponent, maidesite_desk_ns
|
||||||
|
|
||||||
|
|
||||||
CONF_STEP_UP = "step_up"
|
CONF_STEP_UP = "step_up"
|
||||||
|
|
@ -37,64 +37,64 @@ TYPES = [
|
||||||
CONF_SAVE_M4,
|
CONF_SAVE_M4,
|
||||||
]
|
]
|
||||||
|
|
||||||
MaidsiteDeskButton = maidsite_desk_ns.class_("MaidsiteDeskButton", button.Button, cg.Component)
|
MaidesiteDeskButton = maidesite_desk_ns.class_("MaidesiteDeskButton", button.Button, cg.Component)
|
||||||
|
|
||||||
CONFIG_SCHEMA = cv.Schema(
|
CONFIG_SCHEMA = cv.Schema(
|
||||||
{
|
{
|
||||||
cv.GenerateID(CONF_MAIDSITE_DESK_ID): cv.use_id(MaidsiteDeskComponent),
|
cv.GenerateID(CONF_MAIDESITE_DESK_ID): cv.use_id(MaidesiteDeskComponent),
|
||||||
|
|
||||||
cv.Optional(CONF_STEP_UP): button.button_schema(
|
cv.Optional(CONF_STEP_UP): button.button_schema(
|
||||||
MaidsiteDeskButton,
|
MaidesiteDeskButton,
|
||||||
),
|
),
|
||||||
cv.Optional(CONF_STEP_DOWN): button.button_schema(
|
cv.Optional(CONF_STEP_DOWN): button.button_schema(
|
||||||
MaidsiteDeskButton,
|
MaidesiteDeskButton,
|
||||||
),
|
),
|
||||||
cv.Optional(CONF_STOP): button.button_schema(
|
cv.Optional(CONF_STOP): button.button_schema(
|
||||||
MaidsiteDeskButton,
|
MaidesiteDeskButton,
|
||||||
),
|
),
|
||||||
cv.Optional(CONF_GOTO_MAX): button.button_schema(
|
cv.Optional(CONF_GOTO_MAX): button.button_schema(
|
||||||
MaidsiteDeskButton,
|
MaidesiteDeskButton,
|
||||||
),
|
),
|
||||||
cv.Optional(CONF_GOTO_MIN): button.button_schema(
|
cv.Optional(CONF_GOTO_MIN): button.button_schema(
|
||||||
MaidsiteDeskButton,
|
MaidesiteDeskButton,
|
||||||
),
|
),
|
||||||
cv.Optional(CONF_GOTO_M1): button.button_schema(
|
cv.Optional(CONF_GOTO_M1): button.button_schema(
|
||||||
MaidsiteDeskButton,
|
MaidesiteDeskButton,
|
||||||
),
|
),
|
||||||
cv.Optional(CONF_GOTO_M2): button.button_schema(
|
cv.Optional(CONF_GOTO_M2): button.button_schema(
|
||||||
MaidsiteDeskButton,
|
MaidesiteDeskButton,
|
||||||
),
|
),
|
||||||
cv.Optional(CONF_GOTO_M3): button.button_schema(
|
cv.Optional(CONF_GOTO_M3): button.button_schema(
|
||||||
MaidsiteDeskButton,
|
MaidesiteDeskButton,
|
||||||
),
|
),
|
||||||
cv.Optional(CONF_GOTO_M4): button.button_schema(
|
cv.Optional(CONF_GOTO_M4): button.button_schema(
|
||||||
MaidsiteDeskButton,
|
MaidesiteDeskButton,
|
||||||
),
|
),
|
||||||
cv.Optional(CONF_SAVE_M1): button.button_schema(
|
cv.Optional(CONF_SAVE_M1): button.button_schema(
|
||||||
MaidsiteDeskButton,
|
MaidesiteDeskButton,
|
||||||
entity_category=ENTITY_CATEGORY_CONFIG,
|
entity_category=ENTITY_CATEGORY_CONFIG,
|
||||||
),
|
),
|
||||||
cv.Optional(CONF_SAVE_M2): button.button_schema(
|
cv.Optional(CONF_SAVE_M2): button.button_schema(
|
||||||
MaidsiteDeskButton,
|
MaidesiteDeskButton,
|
||||||
entity_category=ENTITY_CATEGORY_CONFIG,
|
entity_category=ENTITY_CATEGORY_CONFIG,
|
||||||
),
|
),
|
||||||
cv.Optional(CONF_SAVE_M3): button.button_schema(
|
cv.Optional(CONF_SAVE_M3): button.button_schema(
|
||||||
MaidsiteDeskButton,
|
MaidesiteDeskButton,
|
||||||
entity_category=ENTITY_CATEGORY_CONFIG,
|
entity_category=ENTITY_CATEGORY_CONFIG,
|
||||||
),
|
),
|
||||||
cv.Optional(CONF_SAVE_M4): button.button_schema(
|
cv.Optional(CONF_SAVE_M4): button.button_schema(
|
||||||
MaidsiteDeskButton,
|
MaidesiteDeskButton,
|
||||||
entity_category=ENTITY_CATEGORY_CONFIG,
|
entity_category=ENTITY_CATEGORY_CONFIG,
|
||||||
),
|
),
|
||||||
}
|
}
|
||||||
).extend(cv.COMPONENT_SCHEMA)
|
).extend(cv.COMPONENT_SCHEMA)
|
||||||
|
|
||||||
async def to_code(config):
|
async def to_code(config):
|
||||||
hub = await cg.get_variable(config[CONF_MAIDSITE_DESK_ID])
|
hub = await cg.get_variable(config[CONF_MAIDESITE_DESK_ID])
|
||||||
for index, key in enumerate(TYPES):
|
for index, key in enumerate(TYPES):
|
||||||
if child_config := config.get(key):
|
if child_config := config.get(key):
|
||||||
var = await button.new_button(child_config)
|
var = await button.new_button(child_config)
|
||||||
await cg.register_component(var, child_config)
|
await cg.register_component(var, child_config)
|
||||||
await cg.register_parented(var, config[CONF_MAIDSITE_DESK_ID])
|
await cg.register_parented(var, config[CONF_MAIDESITE_DESK_ID])
|
||||||
cg.add(getattr(hub, f"set_{key}_button")(var))
|
cg.add(getattr(hub, f"set_{key}_button")(var))
|
||||||
cg.add(var.set_id(index))
|
cg.add(var.set_id(index))
|
||||||
|
|
@ -0,0 +1,22 @@
|
||||||
|
#include "maidesite_desk_button.h"
|
||||||
|
#include "esphome/core/log.h"
|
||||||
|
|
||||||
|
|
||||||
|
namespace esphome
|
||||||
|
{
|
||||||
|
namespace maidesite_desk
|
||||||
|
{
|
||||||
|
static const char *const TAG = "maidesite_desk.button";
|
||||||
|
|
||||||
|
void MaidesiteDeskButton::dump_config()
|
||||||
|
{
|
||||||
|
LOG_BUTTON("", "Maidesite Desk Button", this);
|
||||||
|
delay(10);
|
||||||
|
}
|
||||||
|
|
||||||
|
void MaidesiteDeskButton::press_action()
|
||||||
|
{
|
||||||
|
this->parent_->button_press_action(this);
|
||||||
|
}
|
||||||
|
} // namespace maidesite_desk
|
||||||
|
} // namespace esphome
|
||||||
|
|
@ -1,17 +1,17 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
#include "esphome/components/button/button.h"
|
#include "esphome/components/button/button.h"
|
||||||
#include "esphome/core/component.h"
|
#include "esphome/core/component.h"
|
||||||
#include "../maidsite_desk.h"
|
#include "../maidesite_desk.h"
|
||||||
|
|
||||||
|
|
||||||
namespace esphome
|
namespace esphome
|
||||||
{
|
{
|
||||||
namespace maidsite_desk
|
namespace maidesite_desk
|
||||||
{
|
{
|
||||||
class MaidsiteDeskButton : public button::Button, public Component, public Parented<MaidsiteDeskComponent>
|
class MaidesiteDeskButton : public button::Button, public Component, public Parented<MaidesiteDeskComponent>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
MaidsiteDeskButton() = default;
|
MaidesiteDeskButton() = default;
|
||||||
void dump_config() override;
|
void dump_config() override;
|
||||||
void set_id(int id) { this->id_ = id; }
|
void set_id(int id) { this->id_ = id; }
|
||||||
|
|
||||||
|
|
@ -19,5 +19,5 @@ namespace esphome
|
||||||
void press_action() override;
|
void press_action() override;
|
||||||
int id_;
|
int id_;
|
||||||
};
|
};
|
||||||
} // namespace maidsite_desk
|
} // namespace maidesite_desk
|
||||||
} // namespace esphome
|
} // namespace esphome
|
||||||
|
|
@ -1,21 +1,21 @@
|
||||||
#include "maidsite_desk.h"
|
#include "maidesite_desk.h"
|
||||||
|
|
||||||
|
|
||||||
namespace esphome
|
namespace esphome
|
||||||
{
|
{
|
||||||
namespace maidsite_desk
|
namespace maidesite_desk
|
||||||
{
|
{
|
||||||
static const char *const TAG = "maidsite_desk";
|
static const char *const TAG = "maidesite_desk";
|
||||||
|
|
||||||
void MaidsiteDeskComponent::dump_config()
|
void MaidesiteDeskComponent::dump_config()
|
||||||
{
|
{
|
||||||
ESP_LOGCONFIG(TAG, "Maidsite Desk");
|
ESP_LOGCONFIG(TAG, "Maidesite Desk");
|
||||||
delay(10);
|
delay(10);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MaidsiteDeskComponent::setup()
|
void MaidesiteDeskComponent::setup()
|
||||||
{
|
{
|
||||||
ESP_LOGCONFIG(TAG, "Setting up Maidsite Desk ...");
|
ESP_LOGCONFIG(TAG, "Setting up Maidesite Desk ...");
|
||||||
delay(10);
|
delay(10);
|
||||||
this->check_uart_settings(9600);
|
this->check_uart_settings(9600);
|
||||||
this->request_physical_limits();
|
this->request_physical_limits();
|
||||||
|
|
@ -23,7 +23,7 @@ namespace esphome
|
||||||
this->request_settings();
|
this->request_settings();
|
||||||
}
|
}
|
||||||
|
|
||||||
void MaidsiteDeskComponent::loop()
|
void MaidesiteDeskComponent::loop()
|
||||||
{
|
{
|
||||||
// This is a very simple method of receiving messages from the desk.
|
// This is a very simple method of receiving messages from the desk.
|
||||||
// It will fail on messages that contain the value 0x7E in their payload.
|
// It will fail on messages that contain the value 0x7E in their payload.
|
||||||
|
|
@ -77,7 +77,7 @@ namespace esphome
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MaidsiteDeskComponent::log_uart_hex(std::string prefix, std::vector<uint8_t> bytes, uint8_t separator)
|
void MaidesiteDeskComponent::log_uart_hex(std::string prefix, std::vector<uint8_t> bytes, uint8_t separator)
|
||||||
{
|
{
|
||||||
if (this->log_uart_msg_ == false) return;
|
if (this->log_uart_msg_ == false) return;
|
||||||
|
|
||||||
|
|
@ -97,7 +97,7 @@ namespace esphome
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MaidsiteDeskComponent::decode_response(std::vector<uint8_t> message)
|
void MaidesiteDeskComponent::decode_response(std::vector<uint8_t> message)
|
||||||
{
|
{
|
||||||
// ToDo: Add checksum check
|
// ToDo: Add checksum check
|
||||||
|
|
||||||
|
|
@ -219,7 +219,7 @@ namespace esphome
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
float MaidsiteDeskComponent::byte2float(int high, int low)
|
float MaidesiteDeskComponent::byte2float(int high, int low)
|
||||||
{
|
{
|
||||||
return static_cast<float>((high << 8) + low) / 10;
|
return static_cast<float>((high << 8) + low) / 10;
|
||||||
}
|
}
|
||||||
|
|
@ -227,7 +227,7 @@ namespace esphome
|
||||||
// Write message:
|
// Write message:
|
||||||
// format: 0xF1 0xF1 [command] [param_count] [[param] ...] [checksum] 0x7E
|
// format: 0xF1 0xF1 [command] [param_count] [[param] ...] [checksum] 0x7E
|
||||||
// checksum: sum of [command], [param_count] and all [param]s
|
// checksum: sum of [command], [param_count] and all [param]s
|
||||||
void MaidsiteDeskComponent::send_simple_command(unsigned char cmd)
|
void MaidesiteDeskComponent::send_simple_command(unsigned char cmd)
|
||||||
{
|
{
|
||||||
this->request_message_.clear();
|
this->request_message_.clear();
|
||||||
this->request_message_.insert(this->request_message_.end(), { 0xF1, 0xF1, cmd, 0x00, cmd, 0x7E });
|
this->request_message_.insert(this->request_message_.end(), { 0xF1, 0xF1, cmd, 0x00, cmd, 0x7E });
|
||||||
|
|
@ -236,7 +236,7 @@ namespace esphome
|
||||||
delay(100); // NOLINT
|
delay(100); // NOLINT
|
||||||
}
|
}
|
||||||
|
|
||||||
void MaidsiteDeskComponent::send_2byte_command(unsigned char cmd, unsigned char high_byte, unsigned char low_byte)
|
void MaidesiteDeskComponent::send_2byte_command(unsigned char cmd, unsigned char high_byte, unsigned char low_byte)
|
||||||
{
|
{
|
||||||
// ToDo: make one function of send_simple_command and send_2byte_command
|
// ToDo: make one function of send_simple_command and send_2byte_command
|
||||||
|
|
||||||
|
|
@ -248,22 +248,22 @@ namespace esphome
|
||||||
delay(100); // NOLINT
|
delay(100); // NOLINT
|
||||||
}
|
}
|
||||||
|
|
||||||
void MaidsiteDeskComponent::step_up()
|
void MaidesiteDeskComponent::step_up()
|
||||||
{
|
{
|
||||||
this->send_simple_command(0x01);
|
this->send_simple_command(0x01);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MaidsiteDeskComponent::step_down()
|
void MaidesiteDeskComponent::step_down()
|
||||||
{
|
{
|
||||||
this->send_simple_command(0x02);
|
this->send_simple_command(0x02);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MaidsiteDeskComponent::stop()
|
void MaidesiteDeskComponent::stop()
|
||||||
{
|
{
|
||||||
this->send_simple_command(0x2B);
|
this->send_simple_command(0x2B);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MaidsiteDeskComponent::goto_mem_position(int pos)
|
void MaidesiteDeskComponent::goto_mem_position(int pos)
|
||||||
{
|
{
|
||||||
switch (pos)
|
switch (pos)
|
||||||
{
|
{
|
||||||
|
|
@ -282,7 +282,7 @@ namespace esphome
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MaidsiteDeskComponent::save_mem_position(int pos)
|
void MaidesiteDeskComponent::save_mem_position(int pos)
|
||||||
{
|
{
|
||||||
switch (pos)
|
switch (pos)
|
||||||
{
|
{
|
||||||
|
|
@ -301,37 +301,37 @@ namespace esphome
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MaidsiteDeskComponent::request_physical_limits()
|
void MaidesiteDeskComponent::request_physical_limits()
|
||||||
{
|
{
|
||||||
this->send_simple_command(0x0C);
|
this->send_simple_command(0x0C);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MaidsiteDeskComponent::request_limits()
|
void MaidesiteDeskComponent::request_limits()
|
||||||
{
|
{
|
||||||
this->send_simple_command(0x20);
|
this->send_simple_command(0x20);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MaidsiteDeskComponent::request_settings()
|
void MaidesiteDeskComponent::request_settings()
|
||||||
{
|
{
|
||||||
this->send_simple_command(0x07);
|
this->send_simple_command(0x07);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MaidsiteDeskComponent::request_move_to()
|
void MaidesiteDeskComponent::request_move_to()
|
||||||
{
|
{
|
||||||
this->send_simple_command(0x1B);
|
this->send_simple_command(0x1B);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MaidsiteDeskComponent::goto_max_position()
|
void MaidesiteDeskComponent::goto_max_position()
|
||||||
{
|
{
|
||||||
this->goto_height(limit_max_);
|
this->goto_height(limit_max_);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MaidsiteDeskComponent::goto_min_position()
|
void MaidesiteDeskComponent::goto_min_position()
|
||||||
{
|
{
|
||||||
this->goto_height(limit_min_);
|
this->goto_height(limit_min_);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MaidsiteDeskComponent::goto_height(float height)
|
void MaidesiteDeskComponent::goto_height(float height)
|
||||||
{
|
{
|
||||||
unsigned char high_byte = ((int)height * 10) >> 8;
|
unsigned char high_byte = ((int)height * 10) >> 8;
|
||||||
unsigned char low_byte = ((int)height * 10) & 0xFF;
|
unsigned char low_byte = ((int)height * 10) & 0xFF;
|
||||||
|
|
@ -341,7 +341,7 @@ namespace esphome
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef USE_BUTTON
|
#ifdef USE_BUTTON
|
||||||
void MaidsiteDeskComponent::button_press_action(button::Button* object)
|
void MaidesiteDeskComponent::button_press_action(button::Button* object)
|
||||||
{
|
{
|
||||||
if (object == step_up_button_)
|
if (object == step_up_button_)
|
||||||
this->step_up();
|
this->step_up();
|
||||||
|
|
@ -384,7 +384,7 @@ namespace esphome
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifdef USE_NUMBER
|
#ifdef USE_NUMBER
|
||||||
void MaidsiteDeskComponent::number_control(number::Number* object, float value)
|
void MaidesiteDeskComponent::number_control(number::Number* object, float value)
|
||||||
{
|
{
|
||||||
if (object == height_abs_number_)
|
if (object == height_abs_number_)
|
||||||
this->goto_height(value);
|
this->goto_height(value);
|
||||||
|
|
@ -393,5 +393,5 @@ namespace esphome
|
||||||
this->goto_height((limit_max_ - limit_min_) * value / 100 + limit_min_);
|
this->goto_height((limit_max_ - limit_min_) * value / 100 + limit_min_);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
} // namespace maidsite_desk
|
} // namespace maidesite_desk
|
||||||
} // namespace esphome
|
} // namespace esphome
|
||||||
|
|
@ -20,10 +20,10 @@
|
||||||
|
|
||||||
namespace esphome
|
namespace esphome
|
||||||
{
|
{
|
||||||
namespace maidsite_desk
|
namespace maidesite_desk
|
||||||
{
|
{
|
||||||
|
|
||||||
class MaidsiteDeskComponent : public Component, public uart::UARTDevice
|
class MaidesiteDeskComponent : public Component, public uart::UARTDevice
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
#ifdef USE_SENSOR
|
#ifdef USE_SENSOR
|
||||||
|
|
@ -62,7 +62,7 @@ namespace esphome
|
||||||
void number_control(number::Number* object, float value);
|
void number_control(number::Number* object, float value);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
MaidsiteDeskComponent() = default;
|
MaidesiteDeskComponent() = default;
|
||||||
// base class functions
|
// base class functions
|
||||||
float get_setup_priority() const override { return setup_priority::LATE; }
|
float get_setup_priority() const override { return setup_priority::LATE; }
|
||||||
void dump_config() override;
|
void dump_config() override;
|
||||||
|
|
@ -110,5 +110,5 @@ namespace esphome
|
||||||
float physical_min_ = 0;
|
float physical_min_ = 0;
|
||||||
float physical_max_ = 0;
|
float physical_max_ = 0;
|
||||||
};
|
};
|
||||||
} // namespace maidsite_desk
|
} // namespace maidesite_desk
|
||||||
} // namespace esphome
|
} // namespace esphome
|
||||||
|
|
@ -5,7 +5,7 @@ from esphome.const import (
|
||||||
UNIT_CENTIMETER,
|
UNIT_CENTIMETER,
|
||||||
UNIT_PERCENT,
|
UNIT_PERCENT,
|
||||||
)
|
)
|
||||||
from .. import CONF_MAIDSITE_DESK_ID, MaidsiteDeskComponent, maidsite_desk_ns
|
from .. import CONF_MAIDESITE_DESK_ID, MaidesiteDeskComponent, maidesite_desk_ns
|
||||||
|
|
||||||
|
|
||||||
CONF_HEIGHT_ABS = "height_abs"
|
CONF_HEIGHT_ABS = "height_abs"
|
||||||
|
|
@ -21,25 +21,25 @@ CONF_NUMBERS = [
|
||||||
[ 0, 100, .1, ],
|
[ 0, 100, .1, ],
|
||||||
]
|
]
|
||||||
|
|
||||||
MaidsiteDeskNumber = maidsite_desk_ns.class_("MaidsiteDeskNumber", number.Number, cg.Component)
|
MaidesiteDeskNumber = maidesite_desk_ns.class_("MaidesiteDeskNumber", number.Number, cg.Component)
|
||||||
|
|
||||||
CONFIG_SCHEMA = cv.Schema(
|
CONFIG_SCHEMA = cv.Schema(
|
||||||
{
|
{
|
||||||
cv.GenerateID(CONF_MAIDSITE_DESK_ID): cv.use_id(MaidsiteDeskComponent),
|
cv.GenerateID(CONF_MAIDESITE_DESK_ID): cv.use_id(MaidesiteDeskComponent),
|
||||||
|
|
||||||
cv.Optional(CONF_HEIGHT_ABS): number.number_schema(
|
cv.Optional(CONF_HEIGHT_ABS): number.number_schema(
|
||||||
MaidsiteDeskNumber,
|
MaidesiteDeskNumber,
|
||||||
unit_of_measurement=UNIT_CENTIMETER,
|
unit_of_measurement=UNIT_CENTIMETER,
|
||||||
),
|
),
|
||||||
cv.Optional(CONF_HEIGHT_PCT): number.number_schema(
|
cv.Optional(CONF_HEIGHT_PCT): number.number_schema(
|
||||||
MaidsiteDeskNumber,
|
MaidesiteDeskNumber,
|
||||||
unit_of_measurement=UNIT_PERCENT,
|
unit_of_measurement=UNIT_PERCENT,
|
||||||
),
|
),
|
||||||
}
|
}
|
||||||
).extend(cv.COMPONENT_SCHEMA)
|
).extend(cv.COMPONENT_SCHEMA)
|
||||||
|
|
||||||
async def to_code(config):
|
async def to_code(config):
|
||||||
hub = await cg.get_variable(config[CONF_MAIDSITE_DESK_ID])
|
hub = await cg.get_variable(config[CONF_MAIDESITE_DESK_ID])
|
||||||
for index, key in enumerate(TYPES):
|
for index, key in enumerate(TYPES):
|
||||||
if child_config := config.get(key):
|
if child_config := config.get(key):
|
||||||
var = await number.new_number(
|
var = await number.new_number(
|
||||||
|
|
@ -49,6 +49,6 @@ async def to_code(config):
|
||||||
step=CONF_NUMBERS[index][2]
|
step=CONF_NUMBERS[index][2]
|
||||||
)
|
)
|
||||||
await cg.register_component(var, child_config)
|
await cg.register_component(var, child_config)
|
||||||
await cg.register_parented(var, config[CONF_MAIDSITE_DESK_ID])
|
await cg.register_parented(var, config[CONF_MAIDESITE_DESK_ID])
|
||||||
cg.add(getattr(hub, f"set_{key}_number")(var))
|
cg.add(getattr(hub, f"set_{key}_number")(var))
|
||||||
cg.add(var.set_id(index))
|
cg.add(var.set_id(index))
|
||||||
|
|
@ -0,0 +1,23 @@
|
||||||
|
#include "maidesite_desk_number.h"
|
||||||
|
#include "esphome/core/log.h"
|
||||||
|
|
||||||
|
|
||||||
|
namespace esphome
|
||||||
|
{
|
||||||
|
namespace maidesite_desk
|
||||||
|
{
|
||||||
|
static const char *const TAG = "maidesite_desk.number";
|
||||||
|
|
||||||
|
void MaidesiteDeskNumber::dump_config()
|
||||||
|
{
|
||||||
|
LOG_NUMBER("", "Maidesite Desk Number", this);
|
||||||
|
delay(10);
|
||||||
|
}
|
||||||
|
|
||||||
|
void MaidesiteDeskNumber::control(float value)
|
||||||
|
{
|
||||||
|
this->publish_state(value);
|
||||||
|
this->parent_->number_control(this, value);
|
||||||
|
}
|
||||||
|
} // namespace maidesite_desk
|
||||||
|
} // namespace esphome
|
||||||
|
|
@ -1,17 +1,17 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
#include "esphome/components/number/number.h"
|
#include "esphome/components/number/number.h"
|
||||||
#include "esphome/core/component.h"
|
#include "esphome/core/component.h"
|
||||||
#include "../maidsite_desk.h"
|
#include "../maidesite_desk.h"
|
||||||
|
|
||||||
|
|
||||||
namespace esphome
|
namespace esphome
|
||||||
{
|
{
|
||||||
namespace maidsite_desk
|
namespace maidesite_desk
|
||||||
{
|
{
|
||||||
class MaidsiteDeskNumber : public number::Number, public Component, public Parented<MaidsiteDeskComponent>
|
class MaidesiteDeskNumber : public number::Number, public Component, public Parented<MaidesiteDeskComponent>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
MaidsiteDeskNumber() = default;
|
MaidesiteDeskNumber() = default;
|
||||||
void dump_config() override;
|
void dump_config() override;
|
||||||
void set_id(int id) { this->id_ = id; }
|
void set_id(int id) { this->id_ = id; }
|
||||||
|
|
||||||
|
|
@ -19,5 +19,5 @@ namespace esphome
|
||||||
void control(float value) override;
|
void control(float value) override;
|
||||||
int id_;
|
int id_;
|
||||||
};
|
};
|
||||||
} // namespace maidsite_desk
|
} // namespace maidesite_desk
|
||||||
} // namespace esphome
|
} // namespace esphome
|
||||||
|
|
@ -5,7 +5,7 @@ from esphome.const import (
|
||||||
UNIT_CENTIMETER,
|
UNIT_CENTIMETER,
|
||||||
UNIT_PERCENT,
|
UNIT_PERCENT,
|
||||||
)
|
)
|
||||||
from .. import CONF_MAIDSITE_DESK_ID, MaidsiteDeskComponent, maidsite_desk_ns
|
from .. import CONF_MAIDESITE_DESK_ID, MaidesiteDeskComponent, maidesite_desk_ns
|
||||||
|
|
||||||
CONF_UNIT = "unit"
|
CONF_UNIT = "unit"
|
||||||
CONF_HEIGHT_ABS = "height_abs"
|
CONF_HEIGHT_ABS = "height_abs"
|
||||||
|
|
@ -29,51 +29,51 @@ TYPES = [
|
||||||
CONF_POSITION_M4,
|
CONF_POSITION_M4,
|
||||||
]
|
]
|
||||||
|
|
||||||
MaidsiteDeskSensor = maidsite_desk_ns.class_("MaidsiteDeskSensor", sensor.Sensor, cg.Component)
|
MaidesiteDeskSensor = maidesite_desk_ns.class_("MaidesiteDeskSensor", sensor.Sensor, cg.Component)
|
||||||
|
|
||||||
CONFIG_SCHEMA = cv.Schema(
|
CONFIG_SCHEMA = cv.Schema(
|
||||||
{
|
{
|
||||||
cv.GenerateID(CONF_MAIDSITE_DESK_ID): cv.use_id(MaidsiteDeskComponent),
|
cv.GenerateID(CONF_MAIDESITE_DESK_ID): cv.use_id(MaidesiteDeskComponent),
|
||||||
|
|
||||||
cv.Optional(CONF_UNIT): sensor.sensor_schema(),
|
cv.Optional(CONF_UNIT): sensor.sensor_schema(),
|
||||||
|
|
||||||
cv.Optional(CONF_HEIGHT_ABS): sensor.sensor_schema(
|
cv.Optional(CONF_HEIGHT_ABS): sensor.sensor_schema(
|
||||||
MaidsiteDeskSensor,
|
MaidesiteDeskSensor,
|
||||||
accuracy_decimals=2,
|
accuracy_decimals=2,
|
||||||
unit_of_measurement=UNIT_CENTIMETER,
|
unit_of_measurement=UNIT_CENTIMETER,
|
||||||
),
|
),
|
||||||
cv.Optional(CONF_HEIGHT_PCT): sensor.sensor_schema(
|
cv.Optional(CONF_HEIGHT_PCT): sensor.sensor_schema(
|
||||||
MaidsiteDeskSensor,
|
MaidesiteDeskSensor,
|
||||||
accuracy_decimals=2,
|
accuracy_decimals=2,
|
||||||
unit_of_measurement=UNIT_PERCENT,
|
unit_of_measurement=UNIT_PERCENT,
|
||||||
),
|
),
|
||||||
cv.Optional(CONF_HEIGHT_MIN): sensor.sensor_schema(
|
cv.Optional(CONF_HEIGHT_MIN): sensor.sensor_schema(
|
||||||
MaidsiteDeskSensor,
|
MaidesiteDeskSensor,
|
||||||
accuracy_decimals=2,
|
accuracy_decimals=2,
|
||||||
unit_of_measurement=UNIT_CENTIMETER,
|
unit_of_measurement=UNIT_CENTIMETER,
|
||||||
),
|
),
|
||||||
cv.Optional(CONF_HEIGHT_MAX): sensor.sensor_schema(
|
cv.Optional(CONF_HEIGHT_MAX): sensor.sensor_schema(
|
||||||
MaidsiteDeskSensor,
|
MaidesiteDeskSensor,
|
||||||
accuracy_decimals=2,
|
accuracy_decimals=2,
|
||||||
unit_of_measurement=UNIT_CENTIMETER,
|
unit_of_measurement=UNIT_CENTIMETER,
|
||||||
),
|
),
|
||||||
cv.Optional(CONF_POSITION_M1): sensor.sensor_schema(
|
cv.Optional(CONF_POSITION_M1): sensor.sensor_schema(
|
||||||
MaidsiteDeskSensor,
|
MaidesiteDeskSensor,
|
||||||
accuracy_decimals=2,
|
accuracy_decimals=2,
|
||||||
unit_of_measurement=UNIT_CENTIMETER,
|
unit_of_measurement=UNIT_CENTIMETER,
|
||||||
),
|
),
|
||||||
cv.Optional(CONF_POSITION_M2): sensor.sensor_schema(
|
cv.Optional(CONF_POSITION_M2): sensor.sensor_schema(
|
||||||
MaidsiteDeskSensor,
|
MaidesiteDeskSensor,
|
||||||
accuracy_decimals=2,
|
accuracy_decimals=2,
|
||||||
unit_of_measurement=UNIT_CENTIMETER,
|
unit_of_measurement=UNIT_CENTIMETER,
|
||||||
),
|
),
|
||||||
cv.Optional(CONF_POSITION_M3): sensor.sensor_schema(
|
cv.Optional(CONF_POSITION_M3): sensor.sensor_schema(
|
||||||
MaidsiteDeskSensor,
|
MaidesiteDeskSensor,
|
||||||
accuracy_decimals=2,
|
accuracy_decimals=2,
|
||||||
unit_of_measurement=UNIT_CENTIMETER,
|
unit_of_measurement=UNIT_CENTIMETER,
|
||||||
),
|
),
|
||||||
cv.Optional(CONF_POSITION_M4): sensor.sensor_schema(
|
cv.Optional(CONF_POSITION_M4): sensor.sensor_schema(
|
||||||
MaidsiteDeskSensor,
|
MaidesiteDeskSensor,
|
||||||
accuracy_decimals=2,
|
accuracy_decimals=2,
|
||||||
unit_of_measurement=UNIT_CENTIMETER,
|
unit_of_measurement=UNIT_CENTIMETER,
|
||||||
),
|
),
|
||||||
|
|
@ -81,10 +81,10 @@ CONFIG_SCHEMA = cv.Schema(
|
||||||
).extend(cv.COMPONENT_SCHEMA)
|
).extend(cv.COMPONENT_SCHEMA)
|
||||||
|
|
||||||
async def to_code(config):
|
async def to_code(config):
|
||||||
hub = await cg.get_variable(config[CONF_MAIDSITE_DESK_ID])
|
hub = await cg.get_variable(config[CONF_MAIDESITE_DESK_ID])
|
||||||
for key in TYPES:
|
for key in TYPES:
|
||||||
if child_config := config.get(key):
|
if child_config := config.get(key):
|
||||||
var = await sensor.new_sensor(child_config)
|
var = await sensor.new_sensor(child_config)
|
||||||
await cg.register_component(var, child_config)
|
await cg.register_component(var, child_config)
|
||||||
await cg.register_parented(var, config[CONF_MAIDSITE_DESK_ID])
|
await cg.register_parented(var, config[CONF_MAIDESITE_DESK_ID])
|
||||||
cg.add(getattr(hub, f"set_{key}_sensor")(var))
|
cg.add(getattr(hub, f"set_{key}_sensor")(var))
|
||||||
|
|
@ -0,0 +1,17 @@
|
||||||
|
#include "maidesite_desk_sensor.h"
|
||||||
|
#include "esphome/core/log.h"
|
||||||
|
|
||||||
|
|
||||||
|
namespace esphome
|
||||||
|
{
|
||||||
|
namespace maidesite_desk
|
||||||
|
{
|
||||||
|
static const char *const TAG = "maidesite_desk.sensor";
|
||||||
|
|
||||||
|
void MaidesiteDeskSensor::dump_config()
|
||||||
|
{
|
||||||
|
LOG_SENSOR("", "Maidesite Desk Sensor", this);
|
||||||
|
delay(10);
|
||||||
|
}
|
||||||
|
} // namespace maidesite_desk
|
||||||
|
} // namespace esphome
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
#pragma once
|
||||||
|
#include "esphome/components/sensor/sensor.h"
|
||||||
|
#include "esphome/core/component.h"
|
||||||
|
#include "../maidesite_desk.h"
|
||||||
|
|
||||||
|
|
||||||
|
namespace esphome
|
||||||
|
{
|
||||||
|
namespace maidesite_desk
|
||||||
|
{
|
||||||
|
class MaidesiteDeskSensor : public sensor::Sensor, public Component, public Parented<MaidesiteDeskComponent>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
MaidesiteDeskSensor() = default;
|
||||||
|
void dump_config() override;
|
||||||
|
};
|
||||||
|
} // namespace maidesite_desk
|
||||||
|
} // namespace esphome
|
||||||
|
|
@ -1,22 +0,0 @@
|
||||||
#include "maidsite_desk_button.h"
|
|
||||||
#include "esphome/core/log.h"
|
|
||||||
|
|
||||||
|
|
||||||
namespace esphome
|
|
||||||
{
|
|
||||||
namespace maidsite_desk
|
|
||||||
{
|
|
||||||
static const char *const TAG = "maidsite_desk.button";
|
|
||||||
|
|
||||||
void MaidsiteDeskButton::dump_config()
|
|
||||||
{
|
|
||||||
LOG_BUTTON("", "Maidsite Desk Button", this);
|
|
||||||
delay(10);
|
|
||||||
}
|
|
||||||
|
|
||||||
void MaidsiteDeskButton::press_action()
|
|
||||||
{
|
|
||||||
this->parent_->button_press_action(this);
|
|
||||||
}
|
|
||||||
} // namespace maidsite_desk
|
|
||||||
} // namespace esphome
|
|
||||||
|
|
@ -1,23 +0,0 @@
|
||||||
#include "maidsite_desk_number.h"
|
|
||||||
#include "esphome/core/log.h"
|
|
||||||
|
|
||||||
|
|
||||||
namespace esphome
|
|
||||||
{
|
|
||||||
namespace maidsite_desk
|
|
||||||
{
|
|
||||||
static const char *const TAG = "maidsite_desk.number";
|
|
||||||
|
|
||||||
void MaidsiteDeskNumber::dump_config()
|
|
||||||
{
|
|
||||||
LOG_NUMBER("", "Maidsite Desk Number", this);
|
|
||||||
delay(10);
|
|
||||||
}
|
|
||||||
|
|
||||||
void MaidsiteDeskNumber::control(float value)
|
|
||||||
{
|
|
||||||
this->publish_state(value);
|
|
||||||
this->parent_->number_control(this, value);
|
|
||||||
}
|
|
||||||
} // namespace maidsite_desk
|
|
||||||
} // namespace esphome
|
|
||||||
|
|
@ -1,17 +0,0 @@
|
||||||
#include "maidsite_desk_sensor.h"
|
|
||||||
#include "esphome/core/log.h"
|
|
||||||
|
|
||||||
|
|
||||||
namespace esphome
|
|
||||||
{
|
|
||||||
namespace maidsite_desk
|
|
||||||
{
|
|
||||||
static const char *const TAG = "maidsite_desk.sensor";
|
|
||||||
|
|
||||||
void MaidsiteDeskSensor::dump_config()
|
|
||||||
{
|
|
||||||
LOG_SENSOR("", "Maidsite Desk Sensor", this);
|
|
||||||
delay(10);
|
|
||||||
}
|
|
||||||
} // namespace maidsite_desk
|
|
||||||
} // namespace esphome
|
|
||||||
|
|
@ -1,18 +0,0 @@
|
||||||
#pragma once
|
|
||||||
#include "esphome/components/sensor/sensor.h"
|
|
||||||
#include "esphome/core/component.h"
|
|
||||||
#include "../maidsite_desk.h"
|
|
||||||
|
|
||||||
|
|
||||||
namespace esphome
|
|
||||||
{
|
|
||||||
namespace maidsite_desk
|
|
||||||
{
|
|
||||||
class MaidsiteDeskSensor : public sensor::Sensor, public Component, public Parented<MaidsiteDeskComponent>
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
MaidsiteDeskSensor() = default;
|
|
||||||
void dump_config() override;
|
|
||||||
};
|
|
||||||
} // namespace maidsite_desk
|
|
||||||
} // namespace esphome
|
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
prototypes/maidesite_desk/example_basic.yaml
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
components/maidsite_desk_controller/example_basic.yaml
|
|
||||||
|
|
@ -1,12 +1,12 @@
|
||||||
esphome:
|
esphome:
|
||||||
name: maidsite-desk
|
name: maidesite-desk
|
||||||
friendly_name: Maidsite Desk
|
friendly_name: Maidesite Desk
|
||||||
|
|
||||||
external_components:
|
external_components:
|
||||||
- source:
|
- source:
|
||||||
type: git
|
type: git
|
||||||
url: https://github.com/ElVit/esphome_components/
|
url: https://github.com/ElVit/esphome_components/
|
||||||
components: [ maidsite_desk ]
|
components: [ maidesite_desk ]
|
||||||
|
|
||||||
uart:
|
uart:
|
||||||
- id: uart_bus
|
- id: uart_bus
|
||||||
|
|
@ -14,16 +14,16 @@ uart:
|
||||||
rx_pin: $pin_rx
|
rx_pin: $pin_rx
|
||||||
baud_rate: 9600
|
baud_rate: 9600
|
||||||
|
|
||||||
maidsite_desk_controller:
|
maidesite_desk_controller:
|
||||||
id: my_desk
|
id: my_desk
|
||||||
|
|
||||||
sensor:
|
sensor:
|
||||||
- platform: maidsite_desk
|
- platform: maidesite_desk
|
||||||
height_abs:
|
height_abs:
|
||||||
name: "Height"
|
name: "Height"
|
||||||
|
|
||||||
button:
|
button:
|
||||||
- platform: maidsite_desk
|
- platform: maidesite_desk
|
||||||
stop:
|
stop:
|
||||||
name: "Stop"
|
name: "Stop"
|
||||||
step_up:
|
step_up:
|
||||||
|
|
@ -44,7 +44,7 @@ button:
|
||||||
name: "Move to M4"
|
name: "Move to M4"
|
||||||
|
|
||||||
number:
|
number:
|
||||||
- platform: maidsite_desk
|
- platform: maidesite_desk
|
||||||
height_abs:
|
height_abs:
|
||||||
name: "Height"
|
name: "Height"
|
||||||
mode: SLIDER
|
mode: SLIDER
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
esphome:
|
esphome:
|
||||||
name: maidsite-desk-controller
|
name: maidesite-desk-controller
|
||||||
friendly_name: Maidsite Desk Controller
|
friendly_name: Maidesite Desk Controller
|
||||||
|
|
||||||
external_components:
|
external_components:
|
||||||
- source:
|
- source:
|
||||||
|
|
@ -8,7 +8,7 @@ external_components:
|
||||||
path: esphome_components/components/
|
path: esphome_components/components/
|
||||||
# type: git
|
# type: git
|
||||||
# url: https://github.com/ElVit/esphome_components/
|
# url: https://github.com/ElVit/esphome_components/
|
||||||
components: [ maidsite_desk ]
|
components: [ maidesite_desk ]
|
||||||
|
|
||||||
uart:
|
uart:
|
||||||
- id: uart_bus
|
- id: uart_bus
|
||||||
|
|
@ -16,12 +16,12 @@ uart:
|
||||||
rx_pin: $pin_rx
|
rx_pin: $pin_rx
|
||||||
baud_rate: 9600
|
baud_rate: 9600
|
||||||
|
|
||||||
maidsite_desk_controller:
|
maidesite_desk_controller:
|
||||||
id: my_desk
|
id: my_desk
|
||||||
uart_id: uart_bus
|
uart_id: uart_bus
|
||||||
|
|
||||||
sensor:
|
sensor:
|
||||||
- platform: maidsite_desk
|
- platform: maidesite_desk
|
||||||
height_abs:
|
height_abs:
|
||||||
name: "Height absolut"
|
name: "Height absolut"
|
||||||
height_pct:
|
height_pct:
|
||||||
|
|
@ -40,7 +40,7 @@ sensor:
|
||||||
name: "Position M4"
|
name: "Position M4"
|
||||||
|
|
||||||
button:
|
button:
|
||||||
- platform: maidsite_desk
|
- platform: maidesite_desk
|
||||||
stop:
|
stop:
|
||||||
name: "Stop"
|
name: "Stop"
|
||||||
step_up:
|
step_up:
|
||||||
|
|
@ -69,7 +69,7 @@ button:
|
||||||
name: "Save M4"
|
name: "Save M4"
|
||||||
|
|
||||||
number:
|
number:
|
||||||
- platform: maidsite_desk
|
- platform: maidesite_desk
|
||||||
height_abs:
|
height_abs:
|
||||||
name: "Height absolut"
|
name: "Height absolut"
|
||||||
mode: SLIDER
|
mode: SLIDER
|
||||||
Loading…
Reference in New Issue