All changed to ebyte

This commit is contained in:
Daniël Koek 2024-03-27 17:36:11 +00:00
parent 271444b27f
commit 40f6aa34a5
7 changed files with 52 additions and 49 deletions

View file

@ -11,22 +11,25 @@ from esphome.const import (
ENTITY_CATEGORY_NONE, ENTITY_CATEGORY_NONE,
) )
CODEOWNERS = ["@danielkoek"]
DEPENDENCIES = ["uart"] DEPENDENCIES = ["uart"]
AUTO_LOAD = ["uart", "sensor", "text_sensor"] AUTO_LOAD = ["uart", "sensor", "text_sensor"]
lora_ns = cg.esphome_ns.namespace("lora") ebyte_lora_ns = cg.esphome_ns.namespace("ebyte_lora")
LoraComponent = lora_ns.class_("Lora", cg.PollingComponent, uart.UARTDevice) EbyteLoraComponent = ebyte_lora_ns.class_(
"EbyteLora", cg.PollingComponent, uart.UARTDevice
)
CONF_EBYTE_LORA = "ebyte_lora"
CONF_PIN_AUX = "pin_aux" CONF_PIN_AUX = "pin_aux"
CONF_PIN_M0 = "pin_m0" CONF_PIN_M0 = "pin_m0"
CONF_PIN_M1 = "pin_m1" CONF_PIN_M1 = "pin_m1"
CONF_PCF8574 = "pcf8574" CONF_PCF8574 = "pcf8574"
CONF_LORA_MESSAGE = "lora_message" CONF_LORA_MESSAGE = "lora_message"
CONF_LORA_RSSI = "lora_rssi" CONF_LORA_RSSI = "lora_rssi"
CONF_LORA = "lora"
CONFIG_SCHEMA = ( CONFIG_SCHEMA = (
cv.Schema( cv.Schema(
{ {
cv.GenerateID(): cv.declare_id(LoraComponent), cv.GenerateID(): cv.declare_id(EbyteLoraComponent),
# for communication to let us know that we can receive data # for communication to let us know that we can receive data
cv.Required(CONF_PIN_AUX): pins.gpio_input_pin_schema, cv.Required(CONF_PIN_AUX): pins.gpio_input_pin_schema,
# for communication set the mode # for communication set the mode

View file

@ -1,8 +1,8 @@
#include "lora.h" #include "ebyte_lora.h"
namespace esphome { namespace esphome {
namespace lora { namespace ebyte_lora {
void Lora::update() { void EbyteLoraComponent::update() {
can_send_message_(); can_send_message_();
if (!this->update_needed_) if (!this->update_needed_)
return; return;
@ -15,7 +15,7 @@ void Lora::update() {
// reset the updater // reset the updater
this->update_needed_ = false; this->update_needed_ = false;
} }
void Lora::setup() { void EbyteLoraComponent::setup() {
this->pin_aux_->setup(); this->pin_aux_->setup();
this->pin_m0_->setup(); this->pin_m0_->setup();
this->pin_m1_->setup(); this->pin_m1_->setup();
@ -23,9 +23,9 @@ void Lora::setup() {
ESP_LOGD(TAG, "Setup success"); ESP_LOGD(TAG, "Setup success");
} }
ModeType Lora::get_mode_() { ModeType EbyteLoraComponent::get_mode_() {
ModeType internalMode = MODE_INIT; ModeType internalMode = MODE_INIT;
if (!Lora::can_send_message_()) { if (!EbyteLoraComponent::can_send_message_()) {
return internalMode; return internalMode;
} }
@ -54,8 +54,8 @@ ModeType Lora::get_mode_() {
} }
return internalMode; return internalMode;
} }
void Lora::set_mode_(ModeType mode) { void EbyteLoraComponent::set_mode_(ModeType mode) {
if (!Lora::can_send_message_()) { if (!can_send_message_()) {
return; return;
} }
if (this->pin_m0_ == nullptr && this->pin_m1_ == nullptr) { if (this->pin_m0_ == nullptr && this->pin_m1_ == nullptr) {
@ -95,7 +95,7 @@ void Lora::set_mode_(ModeType mode) {
this->mode_ = mode; this->mode_ = mode;
ESP_LOGD(TAG, "Mode is going to be set"); ESP_LOGD(TAG, "Mode is going to be set");
} }
bool Lora::can_send_message_() { bool EbyteLoraComponent::can_send_message_() {
// High means no more information is needed // High means no more information is needed
if (this->pin_aux_->digital_read()) { if (this->pin_aux_->digital_read()) {
if (!this->starting_to_check_ == 0 && !this->time_out_after_ == 0) { if (!this->starting_to_check_ == 0 && !this->time_out_after_ == 0) {
@ -115,7 +115,7 @@ bool Lora::can_send_message_() {
return false; return false;
} }
} }
void Lora::setup_wait_response_(uint32_t timeout) { void EbyteLoraComponent::setup_wait_response_(uint32_t timeout) {
if (this->starting_to_check_ != 0 || this->time_out_after_ != 0) { if (this->starting_to_check_ != 0 || this->time_out_after_ != 0) {
ESP_LOGD(TAG, "Wait response already set!! %u", timeout); ESP_LOGD(TAG, "Wait response already set!! %u", timeout);
} }
@ -123,15 +123,15 @@ void Lora::setup_wait_response_(uint32_t timeout) {
this->starting_to_check_ = millis(); this->starting_to_check_ = millis();
this->time_out_after_ = timeout; this->time_out_after_ = timeout;
} }
void Lora::dump_config() { void EbyteLoraComponent::dump_config() {
ESP_LOGCONFIG(TAG, "Ebyte Lora E220"); ESP_LOGCONFIG(TAG, "Ebyte Lora E220");
LOG_PIN("Aux pin:", this->pin_aux_); LOG_PIN("Aux pin:", this->pin_aux_);
LOG_PIN("M0 Pin:", this->pin_m0_); LOG_PIN("M0 Pin:", this->pin_m0_);
LOG_PIN("M1 Pin:", this->pin_m1_); LOG_PIN("M1 Pin:", this->pin_m1_);
}; };
void Lora::digital_write(uint8_t pin, bool value) { this->send_pin_info_(pin, value); } void EbyteLoraComponent::digital_write(uint8_t pin, bool value) { this->send_pin_info_(pin, value); }
void Lora::send_pin_info_(uint8_t pin, bool value) { void EbyteLoraComponent::send_pin_info_(uint8_t pin, bool value) {
if (!Lora::can_send_message_()) { if (!EbyteLoraComponent::can_send_message_()) {
return; return;
} }
uint8_t data[3]; uint8_t data[3];
@ -145,7 +145,7 @@ void Lora::send_pin_info_(uint8_t pin, bool value) {
this->setup_wait_response_(5000); this->setup_wait_response_(5000);
ESP_LOGD(TAG, "Successfully put in queue"); ESP_LOGD(TAG, "Successfully put in queue");
} }
void Lora::loop() { void EbyteLoraComponent::loop() {
std::string buffer; std::string buffer;
std::vector<uint8_t> data; std::vector<uint8_t> data;
if (!this->available()) if (!this->available())
@ -175,5 +175,5 @@ void Lora::loop() {
ESP_LOGD(TAG, "WEIRD"); ESP_LOGD(TAG, "WEIRD");
} }
} }
} // namespace lora } // namespace ebyte_lora
} // namespace esphome } // namespace esphome

View file

@ -10,9 +10,9 @@
#include "esphome/core/log.h" #include "esphome/core/log.h"
namespace esphome { namespace esphome {
namespace lora { namespace ebyte_lora {
static const char *const TAG = "lora"; static const char *const TAG = "ebyte_lora";
static const uint8_t MAX_SIZE_TX_PACKET = 200; static const uint8_t MAX_SIZE_TX_PACKET = 200;
// the mode the receiver is in // the mode the receiver is in
enum ModeType { enum ModeType {
@ -27,7 +27,7 @@ enum ModeType {
MODE_3_SLEEP = 3, MODE_3_SLEEP = 3,
MODE_INIT = 0xFF MODE_INIT = 0xFF
}; };
class Lora : public PollingComponent, public uart::UARTDevice { class EbyteLoraComponent : public PollingComponent, public uart::UARTDevice {
public: public:
void setup() override; void setup() override;
float get_setup_priority() const override { return setup_priority::HARDWARE; } float get_setup_priority() const override { return setup_priority::HARDWARE; }
@ -69,5 +69,5 @@ class Lora : public PollingComponent, public uart::UARTDevice {
pcf8574::PCF8574Component *pcf8574_{nullptr}; pcf8574::PCF8574Component *pcf8574_{nullptr};
}; };
} // namespace lora } // namespace ebyte_lora
} // namespace esphome } // namespace esphome

View file

@ -1,16 +1,16 @@
import esphome.codegen as cg import esphome.codegen as cg
import esphome.config_validation as cv import esphome.config_validation as cv
from esphome.components import switch from esphome.components import switch
from .. import CONF_LORA, LoraComponent, lora_ns from .. import EbyteLoraComponent, CONF_EBYTE_LORA, ebyte_lora_ns
LoraSwitch = lora_ns.class_("LoraSwitch", switch.Switch, cg.Component) EbyteLoraSwitch = ebyte_lora_ns.class_("LoraSwitch", switch.Switch, cg.Component)
PIN_TO_SEND = "pin_to_send" PIN_TO_SEND = "pin_to_send"
CONFIG_SCHEMA = ( CONFIG_SCHEMA = (
switch.switch_schema(LoraSwitch) switch.switch_schema(EbyteLoraSwitch)
.extend( .extend(
{ {
cv.Required(CONF_LORA): cv.use_id(LoraComponent), cv.Required(CONF_EBYTE_LORA): cv.use_id(EbyteLoraComponent),
cv.Required(PIN_TO_SEND): cv.int_range(min=0, max=3), cv.Required(PIN_TO_SEND): cv.int_range(min=0, max=3),
} }
) )
@ -20,7 +20,7 @@ CONFIG_SCHEMA = (
async def to_code(config): async def to_code(config):
var = await switch.new_switch(config) var = await switch.new_switch(config)
parent = await cg.get_variable(config[CONF_LORA]) parent = await cg.get_variable(config[CONF_EBYTE_LORA])
await cg.register_component(var, config) await cg.register_component(var, config)
cg.add(var.set_parent(parent)) cg.add(var.set_parent(parent))
cg.add(var.set_pin(config[PIN_TO_SEND])) cg.add(var.set_pin(config[PIN_TO_SEND]))

View file

@ -0,0 +1,14 @@
#include "ebyte_lora_switch.h"
namespace esphome {
namespace ebyte_lora {
static const char *const TAG_SWITCH = "ebyte_lora_switch";
void EbyteLoraSwitch::write_state(bool state) {
this->parent_->digital_write(this->pin_, state);
// finally set it
this->publish_state(state);
}
void EbyteLoraSwitch::dump_config() { LOG_SWITCH(TAG_SWITCH, "Ebyte Lora Switch", this); }
} // namespace ebyte_lora
} // namespace esphome

View file

@ -6,20 +6,20 @@
#include "esphome/components/switch/switch.h" #include "esphome/components/switch/switch.h"
#include "esphome/core/helpers.h" #include "esphome/core/helpers.h"
#include "esphome/core/log.h" #include "esphome/core/log.h"
#include "../lora.h" #include "../ebyte_lora.h"
namespace esphome { namespace esphome {
namespace lora { namespace ebyte_lora {
class LoraSwitch : public switch_::Switch, public Component { class EbyteLoraSwitch : public switch_::Switch, public Component {
public: public:
void dump_config() override; void dump_config() override;
void set_parent(Lora *parent) { parent_ = parent; } void set_parent(EbyteLoraComponent *parent) { parent_ = parent; }
void set_pin(uint8_t pin) { pin_ = pin; } void set_pin(uint8_t pin) { pin_ = pin; }
protected: protected:
void write_state(bool state) override; void write_state(bool state) override;
Lora *parent_; EbyteLoraComponent *parent_;
uint8_t pin_; uint8_t pin_;
}; };
} // namespace lora } // namespace ebyte_lora
} // namespace esphome } // namespace esphome

View file

@ -1,14 +0,0 @@
#include "switch_lora.h"
namespace esphome {
namespace lora {
static const char *const TAG_SWITCH = "lora.switch";
void LoraSwitch::write_state(bool state) {
this->parent_->digital_write(this->pin_, state);
// finally set it
this->publish_state(state);
}
void LoraSwitch::dump_config() { LOG_SWITCH(TAG_SWITCH, "Lora Switch", this); }
} // namespace lora
} // namespace esphome