mirror of
https://github.com/esphome/esphome.git
synced 2024-11-28 09:44:12 +01:00
try this
This commit is contained in:
parent
bf59739ebf
commit
cdbbfa47a0
3 changed files with 15 additions and 5 deletions
|
@ -1,7 +1,8 @@
|
||||||
import esphome.codegen as cg
|
import esphome.codegen as cg
|
||||||
import esphome.config_validation as cv
|
import esphome.config_validation as cv
|
||||||
from esphome import pins
|
from esphome import pins
|
||||||
from esphome.components import sensor, text_sensor, uart
|
from esphome.components import sensor, text_sensor, uart, pcf8574
|
||||||
|
|
||||||
from esphome.const import (
|
from esphome.const import (
|
||||||
DEVICE_CLASS_SIGNAL_STRENGTH,
|
DEVICE_CLASS_SIGNAL_STRENGTH,
|
||||||
UNIT_DECIBEL_MILLIWATT,
|
UNIT_DECIBEL_MILLIWATT,
|
||||||
|
@ -14,17 +15,18 @@ DEPENDENCIES = ["uart"]
|
||||||
AUTO_LOAD = ["uart", "sensor", "text_sensor"]
|
AUTO_LOAD = ["uart", "sensor", "text_sensor"]
|
||||||
|
|
||||||
lora_ns = cg.esphome_ns.namespace("lora")
|
lora_ns = cg.esphome_ns.namespace("lora")
|
||||||
Lora = lora_ns.class_("Lora", cg.PollingComponent, uart.UARTDevice)
|
LoraComponent = lora_ns.class_("Lora", cg.PollingComponent, uart.UARTDevice)
|
||||||
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_LORA_MESSAGE = "lora_message"
|
CONF_LORA_MESSAGE = "lora_message"
|
||||||
CONF_LORA_RSSI = "lora_rssi"
|
CONF_LORA_RSSI = "lora_rssi"
|
||||||
CONF_LORA = "lora"
|
CONF_LORA = "lora"
|
||||||
CONFIG_SCHEMA = (
|
CONFIG_SCHEMA = (
|
||||||
cv.Schema(
|
cv.Schema(
|
||||||
{
|
{
|
||||||
cv.GenerateID(): cv.declare_id(Lora),
|
cv.GenerateID(): cv.declare_id(LoraComponent),
|
||||||
# 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
|
||||||
|
@ -35,6 +37,7 @@ CONFIG_SCHEMA = (
|
||||||
cv.Optional(CONF_LORA_MESSAGE): text_sensor.text_sensor_schema(
|
cv.Optional(CONF_LORA_MESSAGE): text_sensor.text_sensor_schema(
|
||||||
entity_category=ENTITY_CATEGORY_NONE,
|
entity_category=ENTITY_CATEGORY_NONE,
|
||||||
),
|
),
|
||||||
|
cv.Optional(CONF_PCF8574): cv.use_id(pcf8574.PCF8574Component),
|
||||||
# if you want to see the rssi
|
# if you want to see the rssi
|
||||||
cv.Optional(CONF_LORA_RSSI): sensor.sensor_schema(
|
cv.Optional(CONF_LORA_RSSI): sensor.sensor_schema(
|
||||||
device_class=DEVICE_CLASS_SIGNAL_STRENGTH,
|
device_class=DEVICE_CLASS_SIGNAL_STRENGTH,
|
||||||
|
@ -66,6 +69,10 @@ async def to_code(config):
|
||||||
sens = await text_sensor.new_text_sensor(config[CONF_LORA_MESSAGE])
|
sens = await text_sensor.new_text_sensor(config[CONF_LORA_MESSAGE])
|
||||||
cg.add(var.set_message_sensor(sens))
|
cg.add(var.set_message_sensor(sens))
|
||||||
|
|
||||||
|
if CONF_LORA_MESSAGE in config:
|
||||||
|
comp = await cg.get_variable(config[CONF_PCF8574])
|
||||||
|
cg.add(var.set_pcf8574(comp))
|
||||||
|
|
||||||
if CONF_LORA_RSSI in config:
|
if CONF_LORA_RSSI in config:
|
||||||
sens = await sensor.new_sensor(config[CONF_LORA_RSSI])
|
sens = await sensor.new_sensor(config[CONF_LORA_RSSI])
|
||||||
cg.add(var.set_rssi_sensor(sens))
|
cg.add(var.set_rssi_sensor(sens))
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
#include <utility>
|
#include <utility>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include "esphome/core/component.h"
|
#include "esphome/core/component.h"
|
||||||
|
#include "esphome/components/pcf8574/pcf8574.h"
|
||||||
#include "esphome/components/sensor/sensor.h"
|
#include "esphome/components/sensor/sensor.h"
|
||||||
#include "esphome/components/text_sensor/text_sensor.h"
|
#include "esphome/components/text_sensor/text_sensor.h"
|
||||||
#include "esphome/core/helpers.h"
|
#include "esphome/core/helpers.h"
|
||||||
|
@ -40,6 +41,7 @@ class Lora : public PollingComponent, public uart::UARTDevice {
|
||||||
void set_pin_aux(GPIOPin *pin_aux) { pin_aux_ = pin_aux; }
|
void set_pin_aux(GPIOPin *pin_aux) { pin_aux_ = pin_aux; }
|
||||||
void set_pin_m0(GPIOPin *pin_m0) { pin_m0_ = pin_m0; }
|
void set_pin_m0(GPIOPin *pin_m0) { pin_m0_ = pin_m0; }
|
||||||
void set_pin_m1(GPIOPin *pin_m1) { pin_m1_ = pin_m1; }
|
void set_pin_m1(GPIOPin *pin_m1) { pin_m1_ = pin_m1; }
|
||||||
|
void set_pcf8574(pcf8574::PCF8574Component *pcf8574) { pcf8574_ = pcf8574; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
ModeType mode_ = MODE_INIT;
|
ModeType mode_ = MODE_INIT;
|
||||||
|
@ -64,6 +66,7 @@ class Lora : public PollingComponent, public uart::UARTDevice {
|
||||||
GPIOPin *pin_aux_;
|
GPIOPin *pin_aux_;
|
||||||
GPIOPin *pin_m0_;
|
GPIOPin *pin_m0_;
|
||||||
GPIOPin *pin_m1_;
|
GPIOPin *pin_m1_;
|
||||||
|
pcf8574::PCF8574Component *pcf8574_{nullptr};
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace lora
|
} // namespace lora
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
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, Lora, lora_ns
|
from .. import CONF_LORA, LoraComponent, lora_ns
|
||||||
|
|
||||||
LoraSwitch = lora_ns.class_("LoraSwitch", switch.Switch, cg.Component)
|
LoraSwitch = lora_ns.class_("LoraSwitch", switch.Switch, cg.Component)
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@ CONFIG_SCHEMA = (
|
||||||
switch.switch_schema(LoraSwitch, block_inverted=True)
|
switch.switch_schema(LoraSwitch, block_inverted=True)
|
||||||
.extend(
|
.extend(
|
||||||
{
|
{
|
||||||
cv.Required(CONF_LORA): cv.use_id(Lora),
|
cv.Required(CONF_LORA): cv.use_id(LoraComponent),
|
||||||
cv.Required(PIN_TO_SEND): cv.int_range(min=1, max=256),
|
cv.Required(PIN_TO_SEND): cv.int_range(min=1, max=256),
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
Loading…
Reference in a new issue