This commit is contained in:
Otto Winter 2019-05-08 11:31:06 +02:00
parent a07a835eb0
commit 968ff4b619
No known key found for this signature in database
GPG key ID: DB66C0BE6013F97E
11 changed files with 70 additions and 35 deletions

View file

@ -9,7 +9,7 @@
# pylint: disable=unused-import # pylint: disable=unused-import
from esphome.cpp_generator import ( # noqa from esphome.cpp_generator import ( # noqa
Expression, RawExpression, TemplateArguments, Expression, RawExpression, RawStatement, TemplateArguments,
StructInitializer, ArrayInitializer, safe_exp, Statement, StructInitializer, ArrayInitializer, safe_exp, Statement,
progmem_array, statement, variable, Pvariable, new_Pvariable, progmem_array, statement, variable, Pvariable, new_Pvariable,
add, add_global, add_library, add_build_flag, add_define, add, add_global, add_library, add_build_flag, add_define,

View file

@ -1,18 +0,0 @@
import esphome.config_validation as cv
import esphome.codegen as cg
from esphome.components import esp32_ble_tracker
from esphome.const import CONF_ID
DEPENDENCIES = ['esp32_ble_tracker']
ble_ibeacon_ns = cg.esphome_ns.namespace('ble_ibeacon')
IBeaconListener = ble_ibeacon_ns.class_('IBeaconListener', esp32_ble_tracker.ESPBTDeviceListener)
CONFIG_SCHEMA = cv.Schema({
cv.GenerateID(): cv.declare_id(IBeaconListener),
}).extend(esp32_ble_tracker.ESP_BLE_DEVICE_SCHEMA)
def to_code(config):
var = cg.new_Pvariable(config[CONF_ID])
yield esp32_ble_tracker.register_ble_device(var, config)

View file

@ -21,5 +21,4 @@ def to_code(config):
var = cg.variable(config[CONF_ID], rhs) var = cg.variable(config[CONF_ID], rhs)
for i, conf in enumerate(config[CONF_SENSORS]): for i, conf in enumerate(config[CONF_SENSORS]):
sens = cg.Pvariable(conf[CONF_ID], var.get_sensor(i)) sens = cg.Pvariable(conf[CONF_ID], var.get_sensor(i))
cg.add(sens.set_name(conf[CONF_NAME]))
yield sensor.register_sensor(sens, conf) yield sensor.register_sensor(sens, conf)

View file

@ -24,6 +24,5 @@ def to_code(config):
rhs = CustomSwitchConstructor(template_) rhs = CustomSwitchConstructor(template_)
var = cg.variable(config[CONF_ID], rhs) var = cg.variable(config[CONF_ID], rhs)
for i, conf in enumerate(config[CONF_SWITCHES]): for i, conf in enumerate(config[CONF_SWITCHES]):
switch_ = cg.new_Pvariable(conf[CONF_ID], var.get_switch(i)) switch_ = cg.Pvariable(conf[CONF_ID], var.get_switch(i))
cg.add(switch_.set_name(conf[CONF_NAME]))
yield switch.register_switch(switch_, conf) yield switch.register_switch(switch_, conf)

View file

@ -24,6 +24,5 @@ def to_code(config):
var = cg.variable(config[CONF_ID], rhs) var = cg.variable(config[CONF_ID], rhs)
for i, conf in enumerate(config[CONF_TEXT_SENSORS]): for i, conf in enumerate(config[CONF_TEXT_SENSORS]):
text = cg.new_Pvariable(conf[CONF_ID], var.get_text_sensor(i)) text = cg.Pvariable(conf[CONF_ID], var.get_text_sensor(i))
cg.add(text.set_name(conf[CONF_NAME]))
yield text_sensor.register_text_sensor(text, conf) yield text_sensor.register_text_sensor(text, conf)

View file

@ -4,7 +4,7 @@ from esphome.const import CONF_ID, CONF_SCAN_INTERVAL, ESP_PLATFORM_ESP32
from esphome.core import coroutine from esphome.core import coroutine
ESP_PLATFORMS = [ESP_PLATFORM_ESP32] ESP_PLATFORMS = [ESP_PLATFORM_ESP32]
AUTO_LOAD = ['xiaomi_ble', 'ble_ibeacon'] AUTO_LOAD = ['xiaomi_ble']
CONF_ESP32_BLE_ID = 'esp32_ble_id' CONF_ESP32_BLE_ID = 'esp32_ble_id'
esp32_ble_tracker_ns = cg.esphome_ns.namespace('esp32_ble_tracker') esp32_ble_tracker_ns = cg.esphome_ns.namespace('esp32_ble_tracker')

View file

@ -33,6 +33,7 @@ class ESPBTUUID {
class ESPBLEiBeacon { class ESPBLEiBeacon {
public: public:
ESPBLEiBeacon() { memset(&this->beacon_data_, 0, sizeof(this->beacon_data_)); }
ESPBLEiBeacon(const uint8_t *data); ESPBLEiBeacon(const uint8_t *data);
static optional<ESPBLEiBeacon> from_manufacturer_data(const std::string &data); static optional<ESPBLEiBeacon> from_manufacturer_data(const std::string &data);
@ -98,9 +99,7 @@ class ESPBTDeviceListener {
public: public:
virtual void on_scan_end() {} virtual void on_scan_end() {}
virtual bool parse_device(const ESPBTDevice &device) = 0; virtual bool parse_device(const ESPBTDevice &device) = 0;
void set_parent(ESP32BLETracker *parent) { void set_parent(ESP32BLETracker *parent) { parent_ = parent; }
parent_ = parent;
}
protected: protected:
ESP32BLETracker *parent_{nullptr}; ESP32BLETracker *parent_{nullptr};

View file

@ -152,7 +152,7 @@ def add_includes(includes):
for include in includes: for include in includes:
path = CORE.relative_config_path(include) path = CORE.relative_config_path(include)
res = os.path.relpath(path, CORE.relative_build_path('src')).replace(os.path.sep, '/') res = os.path.relpath(path, CORE.relative_build_path('src')).replace(os.path.sep, '/')
cg.add_global(cg.RawExpression(u'#include "{}"'.format(res))) cg.add_global(cg.RawStatement(u'#include "{}"'.format(res)))
@coroutine_with_priority(100.0) @coroutine_with_priority(100.0)

View file

@ -12,5 +12,5 @@ fi
set -x set -x
script/clang-tidy.py -c --fix script/clang-tidy.py -c --fix --all-headers
script/clang-format.py -c -i script/clang-format.py -c -i

38
tests/custom.h Normal file
View file

@ -0,0 +1,38 @@
class CustomSensor : public Component, public Sensor {
public:
void loop() override {
publish_state(42.0);
}
};
class CustomTextSensor : public Component, public TextSensor {
public:
void loop() override {
publish_state("Hello World");
}
};
class CustomBinarySensor : public Component, public BinarySensor {
public:
void loop() override {
publish_state(false);
}
};
class CustomSwitch : public Switch {
protected:
void write_state(bool state) override {
ESP_LOGD("custom_switch", "Setting %s", ONOFF(state));
}
};
class CustomComponent : public PollingComponent {
public:
void setup() override {
ESP_LOGD("custom_component", "Setup");
}
void update() override {
ESP_LOGD("custom_component", "Update");
}
};

View file

@ -7,6 +7,8 @@ esphome:
- wait_until: - wait_until:
- api.connected - api.connected
- wifi.connected - wifi.connected
includes:
- custom.h
substitutions: substitutions:
devicename: test3 devicename: test3
@ -65,6 +67,7 @@ ota:
logger: logger:
hardware_uart: UART1 hardware_uart: UART1
level: DEBUG level: DEBUG
esp8266_store_log_strings_in_flash: false
web_server: web_server:
@ -124,7 +127,8 @@ sensor:
gain: 60x gain: 60x
- platform: custom - platform: custom
lambda: |- lambda: |-
auto s = new sensor::Sensor(); auto s = new CustomSensor();
App.register_component(s);
return {s}; return {s};
sensors: sensors:
- id: custom_sensor - id: custom_sensor
@ -187,9 +191,10 @@ binary_sensor:
name: TTP229 LSF Test name: TTP229 LSF Test
- platform: custom - platform: custom
lambda: |- lambda: |-
auto s = new binary_sensor::BinarySensor(); auto s = new CustomBinarySensor();
App.register_component(s);
return {s}; return {s};
sensors: binary_sensors:
- id: custom_binary_sensor - id: custom_binary_sensor
name: Custom Binary Sensor name: Custom Binary Sensor
@ -225,6 +230,14 @@ text_sensor:
- platform: homeassistant - platform: homeassistant
entity_id: sensor.hello_world2 entity_id: sensor.hello_world2
id: ha_hello_world2 id: ha_hello_world2
- platform: custom
lambda: |-
auto s = new CustomTextSensor();
App.register_component(s);
return {s};
text_sensors:
- id: custom_text_sensor
name: Custom Text Sensor
script: script:
- id: my_script - id: my_script
@ -249,12 +262,18 @@ switch:
interlock: *interlock interlock: *interlock
- platform: custom - platform: custom
lambda: |- lambda: |-
auto s = new switch::Switch(); auto s = new CustomSwitch();
return {s}; return {s};
sensors: switches:
- id: custom_switch - id: custom_switch
name: Custom Switch name: Custom Switch
custom_component:
lambda: |-
auto s = new CustomComponent();
s->set_update_interval(15000);
return {s};
stepper: stepper:
- platform: uln2003 - platform: uln2003
id: my_stepper id: my_stepper