mirror of
https://github.com/esphome/esphome.git
synced 2024-11-28 12:46:22 +01:00
Add templatable characteristic values
This commit is contained in:
parent
ce0ecfe506
commit
ce711a95f3
@ -199,8 +199,11 @@ async def to_code(config):
|
|||||||
|
|
||||||
@automation.register_action("ble_server.characteristic_set_value", BLECharacteristicSetValueAction, cv.Schema({
|
@automation.register_action("ble_server.characteristic_set_value", BLECharacteristicSetValueAction, cv.Schema({
|
||||||
cv.Required(CONF_ID): cv.use_id(BLECharacteristic),
|
cv.Required(CONF_ID): cv.use_id(BLECharacteristic),
|
||||||
cv.Required(CONF_VALUE): CHARACTERISTIC_VALUE_SCHEMA,
|
cv.Required(CONF_VALUE): cv.templatable(cv.string),
|
||||||
}))
|
}))
|
||||||
async def ble_enable_to_code(config, action_id, template_arg, args):
|
async def ble_server_characteristic_set_value(config, action_id, template_arg, args):
|
||||||
char_var = await cg.get_variable(config[CONF_ID])
|
paren = await cg.get_variable(config[CONF_ID])
|
||||||
return cg.new_Pvariable(action_id, template_arg, char_var)
|
var = cg.new_Pvariable(action_id, template_arg, paren)
|
||||||
|
template_ = await cg.templatable(config[CONF_VALUE], args, cg.std_string)
|
||||||
|
cg.add(var.set_value(template_))
|
||||||
|
return var
|
||||||
|
@ -32,11 +32,12 @@ class BLEServerAutomationInterface {
|
|||||||
|
|
||||||
template<typename... Ts> class BLECharacteristicSetValueAction : public Action<Ts...> {
|
template<typename... Ts> class BLECharacteristicSetValueAction : public Action<Ts...> {
|
||||||
public:
|
public:
|
||||||
BLECharacteristicSetValueAction(BLECharacteristic *characteristic) : characteristic_(characteristic) {}
|
BLECharacteristicSetValueAction(BLECharacteristic *characteristic) : parent_(characteristic) {}
|
||||||
void play(Ts... x) override { this->characteristic_->set_value(x...); }
|
TEMPLATABLE_VALUE(std::string, value)
|
||||||
|
void play(Ts... x) override {this->parent_->set_value(this->value_.value(x...)); }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
BLECharacteristic *characteristic_;
|
BLECharacteristic *parent_;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -15,8 +15,12 @@ esp32_ble_server:
|
|||||||
- uuid: 2a24b789-7a1b-4535-af3e-ee76a35cc42d
|
- uuid: 2a24b789-7a1b-4535-af3e-ee76a35cc42d
|
||||||
advertise: false
|
advertise: false
|
||||||
characteristics:
|
characteristics:
|
||||||
- id: test_write_characteristic
|
- id: test_change_characteristic
|
||||||
uuid: 2a24b789-7a1b-4535-af3e-ee76a35cc12d
|
uuid: 2a24b789-7a1b-4535-af3e-ee76a35cc11d
|
||||||
|
properties:
|
||||||
|
- read
|
||||||
|
value: "Initial"
|
||||||
|
- uuid: 2a24b789-7a1b-4535-af3e-ee76a35cc12d
|
||||||
properties:
|
properties:
|
||||||
- read
|
- read
|
||||||
- write
|
- write
|
||||||
@ -25,5 +29,5 @@ esp32_ble_server:
|
|||||||
- lambda: |-
|
- lambda: |-
|
||||||
ESP_LOGD("BLE", "Received: %s", x.c_str());
|
ESP_LOGD("BLE", "Received: %s", x.c_str());
|
||||||
- ble_server.characteristic_set_value:
|
- ble_server.characteristic_set_value:
|
||||||
id: test_write_characteristic
|
id: test_change_characteristic
|
||||||
value: x
|
value: !lambda 'return "Echo " + x + "";'
|
Loading…
Reference in New Issue
Block a user