mirror of
https://github.com/esphome/esphome.git
synced 2025-09-05 21:02:20 +01:00
Merge branch 'esp32_ble_co' into integration
This commit is contained in:
8
.github/workflows/release.yml
vendored
8
.github/workflows/release.yml
vendored
@@ -102,12 +102,12 @@ jobs:
|
|||||||
uses: docker/setup-buildx-action@v3.11.1
|
uses: docker/setup-buildx-action@v3.11.1
|
||||||
|
|
||||||
- name: Log in to docker hub
|
- name: Log in to docker hub
|
||||||
uses: docker/login-action@v3.4.0
|
uses: docker/login-action@v3.5.0
|
||||||
with:
|
with:
|
||||||
username: ${{ secrets.DOCKER_USER }}
|
username: ${{ secrets.DOCKER_USER }}
|
||||||
password: ${{ secrets.DOCKER_PASSWORD }}
|
password: ${{ secrets.DOCKER_PASSWORD }}
|
||||||
- name: Log in to the GitHub container registry
|
- name: Log in to the GitHub container registry
|
||||||
uses: docker/login-action@v3.4.0
|
uses: docker/login-action@v3.5.0
|
||||||
with:
|
with:
|
||||||
registry: ghcr.io
|
registry: ghcr.io
|
||||||
username: ${{ github.actor }}
|
username: ${{ github.actor }}
|
||||||
@@ -182,13 +182,13 @@ jobs:
|
|||||||
|
|
||||||
- name: Log in to docker hub
|
- name: Log in to docker hub
|
||||||
if: matrix.registry == 'dockerhub'
|
if: matrix.registry == 'dockerhub'
|
||||||
uses: docker/login-action@v3.4.0
|
uses: docker/login-action@v3.5.0
|
||||||
with:
|
with:
|
||||||
username: ${{ secrets.DOCKER_USER }}
|
username: ${{ secrets.DOCKER_USER }}
|
||||||
password: ${{ secrets.DOCKER_PASSWORD }}
|
password: ${{ secrets.DOCKER_PASSWORD }}
|
||||||
- name: Log in to the GitHub container registry
|
- name: Log in to the GitHub container registry
|
||||||
if: matrix.registry == 'ghcr'
|
if: matrix.registry == 'ghcr'
|
||||||
uses: docker/login-action@v3.4.0
|
uses: docker/login-action@v3.5.0
|
||||||
with:
|
with:
|
||||||
registry: ghcr.io
|
registry: ghcr.io
|
||||||
username: ${{ github.actor }}
|
username: ${{ github.actor }}
|
||||||
|
@@ -69,7 +69,7 @@ esphome/components/bl0939/* @ziceva
|
|||||||
esphome/components/bl0940/* @tobias-
|
esphome/components/bl0940/* @tobias-
|
||||||
esphome/components/bl0942/* @dbuezas @dwmw2
|
esphome/components/bl0942/* @dbuezas @dwmw2
|
||||||
esphome/components/ble_client/* @buxtronix @clydebarrow
|
esphome/components/ble_client/* @buxtronix @clydebarrow
|
||||||
esphome/components/bluetooth_proxy/* @jesserockz
|
esphome/components/bluetooth_proxy/* @bdraco @jesserockz
|
||||||
esphome/components/bme280_base/* @esphome/core
|
esphome/components/bme280_base/* @esphome/core
|
||||||
esphome/components/bme280_spi/* @apbodrov
|
esphome/components/bme280_spi/* @apbodrov
|
||||||
esphome/components/bme680_bsec/* @trvrnrth
|
esphome/components/bme680_bsec/* @trvrnrth
|
||||||
@@ -144,9 +144,10 @@ esphome/components/es8156/* @kbx81
|
|||||||
esphome/components/es8311/* @kahrendt @kroimon
|
esphome/components/es8311/* @kahrendt @kroimon
|
||||||
esphome/components/es8388/* @P4uLT
|
esphome/components/es8388/* @P4uLT
|
||||||
esphome/components/esp32/* @esphome/core
|
esphome/components/esp32/* @esphome/core
|
||||||
esphome/components/esp32_ble/* @Rapsssito @jesserockz
|
esphome/components/esp32_ble/* @Rapsssito @bdraco @jesserockz
|
||||||
esphome/components/esp32_ble_client/* @jesserockz
|
esphome/components/esp32_ble_client/* @bdraco @jesserockz
|
||||||
esphome/components/esp32_ble_server/* @Rapsssito @clydebarrow @jesserockz
|
esphome/components/esp32_ble_server/* @Rapsssito @clydebarrow @jesserockz
|
||||||
|
esphome/components/esp32_ble_tracker/* @bdraco
|
||||||
esphome/components/esp32_camera_web_server/* @ayufan
|
esphome/components/esp32_camera_web_server/* @ayufan
|
||||||
esphome/components/esp32_can/* @Sympatron
|
esphome/components/esp32_can/* @Sympatron
|
||||||
esphome/components/esp32_hosted/* @swoboda1337
|
esphome/components/esp32_hosted/* @swoboda1337
|
||||||
|
@@ -122,9 +122,13 @@ def choose_upload_log_host(
|
|||||||
resolved: list[str] = []
|
resolved: list[str] = []
|
||||||
for device in defaults:
|
for device in defaults:
|
||||||
if device == "SERIAL":
|
if device == "SERIAL":
|
||||||
|
serial_ports = get_serial_ports()
|
||||||
|
if not serial_ports:
|
||||||
|
_LOGGER.warning("No serial ports found, skipping SERIAL device")
|
||||||
|
continue
|
||||||
options = [
|
options = [
|
||||||
(f"{port.path} ({port.description})", port.path)
|
(f"{port.path} ({port.description})", port.path)
|
||||||
for port in get_serial_ports()
|
for port in serial_ports
|
||||||
]
|
]
|
||||||
resolved.append(choose_prompt(options, purpose=purpose))
|
resolved.append(choose_prompt(options, purpose=purpose))
|
||||||
elif device == "OTA":
|
elif device == "OTA":
|
||||||
|
@@ -11,7 +11,7 @@ from esphome.log import AnsiFore, color
|
|||||||
|
|
||||||
AUTO_LOAD = ["esp32_ble_client", "esp32_ble_tracker"]
|
AUTO_LOAD = ["esp32_ble_client", "esp32_ble_tracker"]
|
||||||
DEPENDENCIES = ["api", "esp32"]
|
DEPENDENCIES = ["api", "esp32"]
|
||||||
CODEOWNERS = ["@jesserockz"]
|
CODEOWNERS = ["@jesserockz", "@bdraco"]
|
||||||
|
|
||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
@@ -11,7 +11,7 @@ from esphome.core.config import CONF_NAME_ADD_MAC_SUFFIX
|
|||||||
import esphome.final_validate as fv
|
import esphome.final_validate as fv
|
||||||
|
|
||||||
DEPENDENCIES = ["esp32"]
|
DEPENDENCIES = ["esp32"]
|
||||||
CODEOWNERS = ["@jesserockz", "@Rapsssito"]
|
CODEOWNERS = ["@jesserockz", "@Rapsssito", "@bdraco"]
|
||||||
|
|
||||||
|
|
||||||
class BTLoggers(Enum):
|
class BTLoggers(Enum):
|
||||||
|
@@ -2,7 +2,7 @@ import esphome.codegen as cg
|
|||||||
from esphome.components import esp32_ble_tracker
|
from esphome.components import esp32_ble_tracker
|
||||||
|
|
||||||
AUTO_LOAD = ["esp32_ble_tracker"]
|
AUTO_LOAD = ["esp32_ble_tracker"]
|
||||||
CODEOWNERS = ["@jesserockz"]
|
CODEOWNERS = ["@jesserockz", "@bdraco"]
|
||||||
DEPENDENCIES = ["esp32"]
|
DEPENDENCIES = ["esp32"]
|
||||||
|
|
||||||
esp32_ble_client_ns = cg.esphome_ns.namespace("esp32_ble_client")
|
esp32_ble_client_ns = cg.esphome_ns.namespace("esp32_ble_client")
|
||||||
|
@@ -36,6 +36,7 @@ from esphome.types import ConfigType
|
|||||||
|
|
||||||
AUTO_LOAD = ["esp32_ble"]
|
AUTO_LOAD = ["esp32_ble"]
|
||||||
DEPENDENCIES = ["esp32"]
|
DEPENDENCIES = ["esp32"]
|
||||||
|
CODEOWNERS = ["@bdraco"]
|
||||||
|
|
||||||
KEY_ESP32_BLE_TRACKER = "esp32_ble_tracker"
|
KEY_ESP32_BLE_TRACKER = "esp32_ble_tracker"
|
||||||
KEY_USED_CONNECTION_SLOTS = "used_connection_slots"
|
KEY_USED_CONNECTION_SLOTS = "used_connection_slots"
|
||||||
|
@@ -13,6 +13,7 @@ from esphome.const import (
|
|||||||
CONF_PIN,
|
CONF_PIN,
|
||||||
CONF_RMT_SYMBOLS,
|
CONF_RMT_SYMBOLS,
|
||||||
CONF_USE_DMA,
|
CONF_USE_DMA,
|
||||||
|
CONF_VALUE,
|
||||||
PlatformFramework,
|
PlatformFramework,
|
||||||
)
|
)
|
||||||
from esphome.core import CORE
|
from esphome.core import CORE
|
||||||
@@ -22,11 +23,17 @@ AUTO_LOAD = ["remote_base"]
|
|||||||
CONF_EOT_LEVEL = "eot_level"
|
CONF_EOT_LEVEL = "eot_level"
|
||||||
CONF_ON_TRANSMIT = "on_transmit"
|
CONF_ON_TRANSMIT = "on_transmit"
|
||||||
CONF_ON_COMPLETE = "on_complete"
|
CONF_ON_COMPLETE = "on_complete"
|
||||||
|
CONF_TRANSMITTER_ID = remote_base.CONF_TRANSMITTER_ID
|
||||||
|
|
||||||
remote_transmitter_ns = cg.esphome_ns.namespace("remote_transmitter")
|
remote_transmitter_ns = cg.esphome_ns.namespace("remote_transmitter")
|
||||||
RemoteTransmitterComponent = remote_transmitter_ns.class_(
|
RemoteTransmitterComponent = remote_transmitter_ns.class_(
|
||||||
"RemoteTransmitterComponent", remote_base.RemoteTransmitterBase, cg.Component
|
"RemoteTransmitterComponent", remote_base.RemoteTransmitterBase, cg.Component
|
||||||
)
|
)
|
||||||
|
DigitalWriteAction = remote_transmitter_ns.class_(
|
||||||
|
"DigitalWriteAction",
|
||||||
|
automation.Action,
|
||||||
|
cg.Parented.template(RemoteTransmitterComponent),
|
||||||
|
)
|
||||||
|
|
||||||
MULTI_CONF = True
|
MULTI_CONF = True
|
||||||
CONFIG_SCHEMA = cv.Schema(
|
CONFIG_SCHEMA = cv.Schema(
|
||||||
@@ -63,6 +70,25 @@ CONFIG_SCHEMA = cv.Schema(
|
|||||||
}
|
}
|
||||||
).extend(cv.COMPONENT_SCHEMA)
|
).extend(cv.COMPONENT_SCHEMA)
|
||||||
|
|
||||||
|
DIGITAL_WRITE_ACTION_SCHEMA = cv.maybe_simple_value(
|
||||||
|
{
|
||||||
|
cv.GenerateID(CONF_TRANSMITTER_ID): cv.use_id(RemoteTransmitterComponent),
|
||||||
|
cv.Required(CONF_VALUE): cv.templatable(cv.boolean),
|
||||||
|
},
|
||||||
|
key=CONF_VALUE,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@automation.register_action(
|
||||||
|
"remote_transmitter.digital_write", DigitalWriteAction, DIGITAL_WRITE_ACTION_SCHEMA
|
||||||
|
)
|
||||||
|
async def digital_write_action_to_code(config, action_id, template_arg, args):
|
||||||
|
var = cg.new_Pvariable(action_id, template_arg)
|
||||||
|
await cg.register_parented(var, config[CONF_TRANSMITTER_ID])
|
||||||
|
template_ = await cg.templatable(config[CONF_VALUE], args, bool)
|
||||||
|
cg.add(var.set_value(template_))
|
||||||
|
return var
|
||||||
|
|
||||||
|
|
||||||
async def to_code(config):
|
async def to_code(config):
|
||||||
pin = await cg.gpio_pin_expression(config[CONF_PIN])
|
pin = await cg.gpio_pin_expression(config[CONF_PIN])
|
||||||
|
18
esphome/components/remote_transmitter/automation.h
Normal file
18
esphome/components/remote_transmitter/automation.h
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "esphome/components/remote_transmitter/remote_transmitter.h"
|
||||||
|
#include "esphome/core/automation.h"
|
||||||
|
#include "esphome/core/component.h"
|
||||||
|
#include "esphome/core/helpers.h"
|
||||||
|
|
||||||
|
namespace esphome {
|
||||||
|
namespace remote_transmitter {
|
||||||
|
|
||||||
|
template<typename... Ts> class DigitalWriteAction : public Action<Ts...>, public Parented<RemoteTransmitterComponent> {
|
||||||
|
public:
|
||||||
|
TEMPLATABLE_VALUE(bool, value)
|
||||||
|
void play(Ts... x) override { this->parent_->digital_write(this->value_.value(x...)); }
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace remote_transmitter
|
||||||
|
} // namespace esphome
|
@@ -30,10 +30,11 @@ class RemoteTransmitterComponent : public remote_base::RemoteTransmitterBase,
|
|||||||
|
|
||||||
void set_carrier_duty_percent(uint8_t carrier_duty_percent) { this->carrier_duty_percent_ = carrier_duty_percent; }
|
void set_carrier_duty_percent(uint8_t carrier_duty_percent) { this->carrier_duty_percent_ = carrier_duty_percent; }
|
||||||
|
|
||||||
|
void digital_write(bool value);
|
||||||
|
|
||||||
#if defined(USE_ESP32)
|
#if defined(USE_ESP32)
|
||||||
void set_with_dma(bool with_dma) { this->with_dma_ = with_dma; }
|
void set_with_dma(bool with_dma) { this->with_dma_ = with_dma; }
|
||||||
void set_eot_level(bool eot_level) { this->eot_level_ = eot_level; }
|
void set_eot_level(bool eot_level) { this->eot_level_ = eot_level; }
|
||||||
void digital_write(bool value);
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
Trigger<> *get_transmit_trigger() const { return this->transmit_trigger_; };
|
Trigger<> *get_transmit_trigger() const { return this->transmit_trigger_; };
|
||||||
|
@@ -73,6 +73,8 @@ void RemoteTransmitterComponent::space_(uint32_t usec) {
|
|||||||
this->target_time_ += usec;
|
this->target_time_ += usec;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void RemoteTransmitterComponent::digital_write(bool value) { this->pin_->digital_write(value); }
|
||||||
|
|
||||||
void RemoteTransmitterComponent::send_internal(uint32_t send_times, uint32_t send_wait) {
|
void RemoteTransmitterComponent::send_internal(uint32_t send_times, uint32_t send_wait) {
|
||||||
ESP_LOGD(TAG, "Sending remote code");
|
ESP_LOGD(TAG, "Sending remote code");
|
||||||
uint32_t on_time, off_time;
|
uint32_t on_time, off_time;
|
||||||
|
@@ -75,6 +75,8 @@ void RemoteTransmitterComponent::space_(uint32_t usec) {
|
|||||||
this->target_time_ += usec;
|
this->target_time_ += usec;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void RemoteTransmitterComponent::digital_write(bool value) { this->pin_->digital_write(value); }
|
||||||
|
|
||||||
void RemoteTransmitterComponent::send_internal(uint32_t send_times, uint32_t send_wait) {
|
void RemoteTransmitterComponent::send_internal(uint32_t send_times, uint32_t send_wait) {
|
||||||
ESP_LOGD(TAG, "Sending remote code");
|
ESP_LOGD(TAG, "Sending remote code");
|
||||||
uint32_t on_time, off_time;
|
uint32_t on_time, off_time;
|
||||||
|
@@ -204,3 +204,9 @@ button:
|
|||||||
command: 0xEC
|
command: 0xEC
|
||||||
rc_code_1: 0x0D
|
rc_code_1: 0x0D
|
||||||
rc_code_2: 0x0D
|
rc_code_2: 0x0D
|
||||||
|
- platform: template
|
||||||
|
name: Digital Write
|
||||||
|
on_press:
|
||||||
|
- remote_transmitter.digital_write: true
|
||||||
|
- remote_transmitter.digital_write:
|
||||||
|
value: false
|
||||||
|
Reference in New Issue
Block a user