mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-30 22:53:59 +00:00 
			
		
		
		
	Merge branch 'dev' into ci_impact_analysis
This commit is contained in:
		| @@ -1056,6 +1056,52 @@ async def sony_action(var, config, args): | ||||
|     cg.add(var.set_nbits(template_)) | ||||
|  | ||||
|  | ||||
| # Symphony | ||||
| SymphonyData, SymphonyBinarySensor, SymphonyTrigger, SymphonyAction, SymphonyDumper = ( | ||||
|     declare_protocol("Symphony") | ||||
| ) | ||||
| SYMPHONY_SCHEMA = cv.Schema( | ||||
|     { | ||||
|         cv.Required(CONF_DATA): cv.hex_uint32_t, | ||||
|         cv.Required(CONF_NBITS): cv.int_range(min=1, max=32), | ||||
|         cv.Optional(CONF_COMMAND_REPEATS, default=2): cv.uint8_t, | ||||
|     } | ||||
| ) | ||||
|  | ||||
|  | ||||
| @register_binary_sensor("symphony", SymphonyBinarySensor, SYMPHONY_SCHEMA) | ||||
| def symphony_binary_sensor(var, config): | ||||
|     cg.add( | ||||
|         var.set_data( | ||||
|             cg.StructInitializer( | ||||
|                 SymphonyData, | ||||
|                 ("data", config[CONF_DATA]), | ||||
|                 ("nbits", config[CONF_NBITS]), | ||||
|             ) | ||||
|         ) | ||||
|     ) | ||||
|  | ||||
|  | ||||
| @register_trigger("symphony", SymphonyTrigger, SymphonyData) | ||||
| def symphony_trigger(var, config): | ||||
|     pass | ||||
|  | ||||
|  | ||||
| @register_dumper("symphony", SymphonyDumper) | ||||
| def symphony_dumper(var, config): | ||||
|     pass | ||||
|  | ||||
|  | ||||
| @register_action("symphony", SymphonyAction, SYMPHONY_SCHEMA) | ||||
| async def symphony_action(var, config, args): | ||||
|     template_ = await cg.templatable(config[CONF_DATA], args, cg.uint32) | ||||
|     cg.add(var.set_data(template_)) | ||||
|     template_ = await cg.templatable(config[CONF_NBITS], args, cg.uint32) | ||||
|     cg.add(var.set_nbits(template_)) | ||||
|     template_ = await cg.templatable(config[CONF_COMMAND_REPEATS], args, cg.uint8) | ||||
|     cg.add(var.set_repeats(template_)) | ||||
|  | ||||
|  | ||||
| # Raw | ||||
| def validate_raw_alternating(value): | ||||
|     assert isinstance(value, list) | ||||
|   | ||||
							
								
								
									
										120
									
								
								esphome/components/remote_base/symphony_protocol.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										120
									
								
								esphome/components/remote_base/symphony_protocol.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,120 @@ | ||||
| #include "symphony_protocol.h" | ||||
| #include "esphome/core/log.h" | ||||
|  | ||||
| namespace esphome { | ||||
| namespace remote_base { | ||||
|  | ||||
| static const char *const TAG = "remote.symphony"; | ||||
|  | ||||
| // Reference implementation and timing details: | ||||
| // IRremoteESP8266 ir_Symphony.cpp | ||||
| // https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Symphony.cpp | ||||
| // The implementation below mirrors the constant bit-time mapping and | ||||
| // footer-gap handling used there. | ||||
|  | ||||
| // Symphony protocol timing specifications (tuned to handset captures) | ||||
| static const uint32_t BIT_ZERO_HIGH_US = 460;  // short | ||||
| static const uint32_t BIT_ZERO_LOW_US = 1260;  // long | ||||
| static const uint32_t BIT_ONE_HIGH_US = 1260;  // long | ||||
| static const uint32_t BIT_ONE_LOW_US = 460;    // short | ||||
| static const uint32_t CARRIER_FREQUENCY = 38000; | ||||
|  | ||||
| // IRremoteESP8266 reference: kSymphonyFooterGap = 4 * (mark + space) | ||||
| static const uint32_t FOOTER_GAP_US = 4 * (BIT_ZERO_HIGH_US + BIT_ZERO_LOW_US); | ||||
| // Typical inter-frame gap (~34.8 ms observed) | ||||
| static const uint32_t INTER_FRAME_GAP_US = 34760; | ||||
|  | ||||
| void SymphonyProtocol::encode(RemoteTransmitData *dst, const SymphonyData &data) { | ||||
|   dst->set_carrier_frequency(CARRIER_FREQUENCY); | ||||
|   ESP_LOGD(TAG, "Sending Symphony: data=0x%0*X nbits=%u repeats=%u", (data.nbits + 3) / 4, (uint32_t) data.data, | ||||
|            data.nbits, data.repeats); | ||||
|   // Each bit produces a mark+space (2 entries). We fold the inter-frame/footer gap | ||||
|   // into the last bit's space of each frame to avoid over-length gaps. | ||||
|   dst->reserve(data.nbits * 2u * data.repeats); | ||||
|  | ||||
|   for (uint8_t repeats = 0; repeats < data.repeats; repeats++) { | ||||
|     // Data bits (MSB first) | ||||
|     for (uint32_t mask = 1UL << (data.nbits - 1); mask != 0; mask >>= 1) { | ||||
|       const bool is_last_bit = (mask == 1); | ||||
|       const bool is_last_frame = (repeats == (data.repeats - 1)); | ||||
|       if (is_last_bit) { | ||||
|         // Emit last bit's mark; replace its space with the proper gap | ||||
|         if (data.data & mask) { | ||||
|           dst->mark(BIT_ONE_HIGH_US); | ||||
|         } else { | ||||
|           dst->mark(BIT_ZERO_HIGH_US); | ||||
|         } | ||||
|         dst->space(is_last_frame ? FOOTER_GAP_US : INTER_FRAME_GAP_US); | ||||
|       } else { | ||||
|         if (data.data & mask) { | ||||
|           dst->item(BIT_ONE_HIGH_US, BIT_ONE_LOW_US); | ||||
|         } else { | ||||
|           dst->item(BIT_ZERO_HIGH_US, BIT_ZERO_LOW_US); | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| } | ||||
|  | ||||
| optional<SymphonyData> SymphonyProtocol::decode(RemoteReceiveData src) { | ||||
|   auto is_valid_len = [](uint8_t nbits) -> bool { return nbits == 8 || nbits == 12 || nbits == 16; }; | ||||
|  | ||||
|   RemoteReceiveData s = src;  // copy | ||||
|   SymphonyData out{0, 0, 1}; | ||||
|  | ||||
|   for (; out.nbits < 32; out.nbits++) { | ||||
|     if (s.expect_mark(BIT_ONE_HIGH_US)) { | ||||
|       if (!s.expect_space(BIT_ONE_LOW_US)) { | ||||
|         // Allow footer gap immediately after the last mark | ||||
|         if (s.peek_space_at_least(FOOTER_GAP_US)) { | ||||
|           uint8_t bits_with_this = out.nbits + 1; | ||||
|           if (is_valid_len(bits_with_this)) { | ||||
|             out.data = (out.data << 1UL) | 1UL; | ||||
|             out.nbits = bits_with_this; | ||||
|             return out; | ||||
|           } | ||||
|         } | ||||
|         return {}; | ||||
|       } | ||||
|       // Successfully consumed a '1' bit (mark + space) | ||||
|       out.data = (out.data << 1UL) | 1UL; | ||||
|       continue; | ||||
|     } else if (s.expect_mark(BIT_ZERO_HIGH_US)) { | ||||
|       if (!s.expect_space(BIT_ZERO_LOW_US)) { | ||||
|         // Allow footer gap immediately after the last mark | ||||
|         if (s.peek_space_at_least(FOOTER_GAP_US)) { | ||||
|           uint8_t bits_with_this = out.nbits + 1; | ||||
|           if (is_valid_len(bits_with_this)) { | ||||
|             out.data = (out.data << 1UL) | 0UL; | ||||
|             out.nbits = bits_with_this; | ||||
|             return out; | ||||
|           } | ||||
|         } | ||||
|         return {}; | ||||
|       } | ||||
|       // Successfully consumed a '0' bit (mark + space) | ||||
|       out.data = (out.data << 1UL) | 0UL; | ||||
|       continue; | ||||
|     } else { | ||||
|       // Completed a valid-length frame followed by a footer gap | ||||
|       if (is_valid_len(out.nbits) && s.peek_space_at_least(FOOTER_GAP_US)) { | ||||
|         return out; | ||||
|       } | ||||
|       return {}; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   if (is_valid_len(out.nbits) && s.peek_space_at_least(FOOTER_GAP_US)) { | ||||
|     return out; | ||||
|   } | ||||
|  | ||||
|   return {}; | ||||
| } | ||||
|  | ||||
| void SymphonyProtocol::dump(const SymphonyData &data) { | ||||
|   const int32_t hex_width = (data.nbits + 3) / 4;  // pad to nibble width | ||||
|   ESP_LOGI(TAG, "Received Symphony: data=0x%0*X, nbits=%d", hex_width, (uint32_t) data.data, data.nbits); | ||||
| } | ||||
|  | ||||
| }  // namespace remote_base | ||||
| }  // namespace esphome | ||||
							
								
								
									
										44
									
								
								esphome/components/remote_base/symphony_protocol.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								esphome/components/remote_base/symphony_protocol.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,44 @@ | ||||
| #pragma once | ||||
|  | ||||
| #include "esphome/core/component.h" | ||||
| #include "remote_base.h" | ||||
|  | ||||
| #include <cinttypes> | ||||
|  | ||||
| namespace esphome { | ||||
| namespace remote_base { | ||||
|  | ||||
| struct SymphonyData { | ||||
|   uint32_t data; | ||||
|   uint8_t nbits; | ||||
|   uint8_t repeats{1}; | ||||
|  | ||||
|   bool operator==(const SymphonyData &rhs) const { return data == rhs.data && nbits == rhs.nbits; } | ||||
| }; | ||||
|  | ||||
| class SymphonyProtocol : public RemoteProtocol<SymphonyData> { | ||||
|  public: | ||||
|   void encode(RemoteTransmitData *dst, const SymphonyData &data) override; | ||||
|   optional<SymphonyData> decode(RemoteReceiveData src) override; | ||||
|   void dump(const SymphonyData &data) override; | ||||
| }; | ||||
|  | ||||
| DECLARE_REMOTE_PROTOCOL(Symphony) | ||||
|  | ||||
| template<typename... Ts> class SymphonyAction : public RemoteTransmitterActionBase<Ts...> { | ||||
|  public: | ||||
|   TEMPLATABLE_VALUE(uint32_t, data) | ||||
|   TEMPLATABLE_VALUE(uint8_t, nbits) | ||||
|   TEMPLATABLE_VALUE(uint8_t, repeats) | ||||
|  | ||||
|   void encode(RemoteTransmitData *dst, Ts... x) override { | ||||
|     SymphonyData data{}; | ||||
|     data.data = this->data_.value(x...); | ||||
|     data.nbits = this->nbits_.value(x...); | ||||
|     data.repeats = this->repeats_.value(x...); | ||||
|     SymphonyProtocol().encode(dst, data); | ||||
|   } | ||||
| }; | ||||
|  | ||||
| }  // namespace remote_base | ||||
| }  // namespace esphome | ||||
| @@ -50,7 +50,14 @@ PACKAGE_DEPENDENCIES = { | ||||
|  | ||||
| # Bus types that can be defined directly in config files | ||||
| # Components defining these directly cannot be grouped (they create unique bus IDs) | ||||
| DIRECT_BUS_TYPES = ("i2c", "spi", "uart", "modbus") | ||||
| DIRECT_BUS_TYPES = ( | ||||
|     "i2c", | ||||
|     "spi", | ||||
|     "uart", | ||||
|     "modbus", | ||||
|     "remote_transmitter", | ||||
|     "remote_receiver", | ||||
| ) | ||||
|  | ||||
| # Signature for components with no bus requirements | ||||
| # These components can be merged with any other group | ||||
| @@ -68,6 +75,8 @@ BASE_BUS_COMPONENTS = { | ||||
|     "uart", | ||||
|     "modbus", | ||||
|     "canbus", | ||||
|     "remote_transmitter", | ||||
|     "remote_receiver", | ||||
| } | ||||
|  | ||||
| # Components that must be tested in isolation (not grouped or batched with others) | ||||
|   | ||||
| @@ -1,7 +1,3 @@ | ||||
| remote_transmitter: | ||||
|   pin: ${pin} | ||||
|   carrier_duty_percent: 50% | ||||
|  | ||||
| climate: | ||||
|   - platform: heatpumpir | ||||
|     protocol: ballu | ||||
| @@ -10,3 +6,4 @@ climate: | ||||
|     name: HeatpumpIR Climate | ||||
|     min_temperature: 18 | ||||
|     max_temperature: 30 | ||||
|     transmitter_id: xmitr | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| substitutions: | ||||
|   pin: GPIO5 | ||||
| packages: | ||||
|   remote_transmitter: !include ../../test_build_components/common/remote_transmitter/esp8266-ard.yaml | ||||
|  | ||||
| <<: !include common.yaml | ||||
|   | ||||
| @@ -1,7 +1,4 @@ | ||||
| remote_transmitter: | ||||
|   pin: ${pin} | ||||
|   carrier_duty_percent: 50% | ||||
|  | ||||
| climate: | ||||
|   - platform: climate_ir_lg | ||||
|     name: LG Climate | ||||
|     transmitter_id: xmitr | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| substitutions: | ||||
|   pin: GPIO2 | ||||
| packages: | ||||
|   remote_transmitter: !include ../../test_build_components/common/remote_transmitter/esp32-c3-idf.yaml | ||||
|  | ||||
| <<: !include common.yaml | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| substitutions: | ||||
|   pin: GPIO2 | ||||
| packages: | ||||
|   remote_transmitter: !include ../../test_build_components/common/remote_transmitter/esp32-idf.yaml | ||||
|  | ||||
| <<: !include common.yaml | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| substitutions: | ||||
|   pin: GPIO5 | ||||
| packages: | ||||
|   remote_transmitter: !include ../../test_build_components/common/remote_transmitter/esp8266-ard.yaml | ||||
|  | ||||
| <<: !include common.yaml | ||||
|   | ||||
| @@ -1,7 +1,4 @@ | ||||
| remote_transmitter: | ||||
|   pin: ${pin} | ||||
|   carrier_duty_percent: 50% | ||||
|  | ||||
| climate: | ||||
|   - platform: coolix | ||||
|     name: Coolix Climate | ||||
|     transmitter_id: xmitr | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| substitutions: | ||||
|   pin: GPIO2 | ||||
| packages: | ||||
|   remote_transmitter: !include ../../test_build_components/common/remote_transmitter/esp32-c3-idf.yaml | ||||
|  | ||||
| <<: !include common.yaml | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| substitutions: | ||||
|   pin: GPIO2 | ||||
| packages: | ||||
|   remote_transmitter: !include ../../test_build_components/common/remote_transmitter/esp32-idf.yaml | ||||
|  | ||||
| <<: !include common.yaml | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| substitutions: | ||||
|   pin: GPIO5 | ||||
| packages: | ||||
|   remote_transmitter: !include ../../test_build_components/common/remote_transmitter/esp8266-ard.yaml | ||||
|  | ||||
| <<: !include common.yaml | ||||
|   | ||||
| @@ -1,7 +1,3 @@ | ||||
| remote_transmitter: | ||||
|   pin: ${pin} | ||||
|   carrier_duty_percent: 50% | ||||
|  | ||||
| climate: | ||||
|   - platform: heatpumpir | ||||
|     protocol: daikin | ||||
| @@ -10,3 +6,4 @@ climate: | ||||
|     name: HeatpumpIR Climate | ||||
|     min_temperature: 18 | ||||
|     max_temperature: 30 | ||||
|     transmitter_id: xmitr | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| substitutions: | ||||
|   pin: GPIO5 | ||||
| packages: | ||||
|   remote_transmitter: !include ../../test_build_components/common/remote_transmitter/esp8266-ard.yaml | ||||
|  | ||||
| <<: !include common.yaml | ||||
|   | ||||
| @@ -1,18 +1,3 @@ | ||||
| remote_transmitter: | ||||
|   pin: ${tx_pin} | ||||
|   carrier_duty_percent: 50% | ||||
|   id: tsvr | ||||
|  | ||||
| remote_receiver: | ||||
|   id: rcvr | ||||
|   pin: | ||||
|     number: ${rx_pin} | ||||
|     inverted: true | ||||
|     mode: | ||||
|       input: true | ||||
|       pullup: true | ||||
|   tolerance: 40% | ||||
|  | ||||
| climate: | ||||
|   - platform: daikin_arc | ||||
|     name: Daikin AC | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| substitutions: | ||||
|   tx_pin: GPIO0 | ||||
|   rx_pin: GPIO2 | ||||
| packages: | ||||
|   remote_transmitter: !include ../../test_build_components/common/remote_transmitter/esp8266-ard.yaml | ||||
|   remote_receiver: !include ../../test_build_components/common/remote_receiver/esp8266-ard.yaml | ||||
|  | ||||
| <<: !include common.yaml | ||||
|   | ||||
| @@ -1,7 +1,4 @@ | ||||
| remote_transmitter: | ||||
|   pin: ${pin} | ||||
|   carrier_duty_percent: 50% | ||||
|  | ||||
| climate: | ||||
|   - platform: daikin_brc | ||||
|     name: Daikin_brc Climate | ||||
|     transmitter_id: xmitr | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| substitutions: | ||||
|   pin: GPIO2 | ||||
| packages: | ||||
|   remote_transmitter: !include ../../test_build_components/common/remote_transmitter/esp32-c3-idf.yaml | ||||
|  | ||||
| <<: !include common.yaml | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| substitutions: | ||||
|   pin: GPIO2 | ||||
| packages: | ||||
|   remote_transmitter: !include ../../test_build_components/common/remote_transmitter/esp32-idf.yaml | ||||
|  | ||||
| <<: !include common.yaml | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| substitutions: | ||||
|   pin: GPIO5 | ||||
| packages: | ||||
|   remote_transmitter: !include ../../test_build_components/common/remote_transmitter/esp8266-ard.yaml | ||||
|  | ||||
| <<: !include common.yaml | ||||
|   | ||||
| @@ -1,7 +1,4 @@ | ||||
| remote_transmitter: | ||||
|   pin: ${pin} | ||||
|   carrier_duty_percent: 50% | ||||
|  | ||||
| climate: | ||||
|   - platform: delonghi | ||||
|     name: Delonghi Climate | ||||
|     transmitter_id: xmitr | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| substitutions: | ||||
|   pin: GPIO2 | ||||
| packages: | ||||
|   remote_transmitter: !include ../../test_build_components/common/remote_transmitter/esp32-c3-idf.yaml | ||||
|  | ||||
| <<: !include common.yaml | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| substitutions: | ||||
|   pin: GPIO2 | ||||
| packages: | ||||
|   remote_transmitter: !include ../../test_build_components/common/remote_transmitter/esp32-idf.yaml | ||||
|  | ||||
| <<: !include common.yaml | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| substitutions: | ||||
|   pin: GPIO5 | ||||
| packages: | ||||
|   remote_transmitter: !include ../../test_build_components/common/remote_transmitter/esp8266-ard.yaml | ||||
|  | ||||
| <<: !include common.yaml | ||||
|   | ||||
| @@ -1,14 +1,5 @@ | ||||
| remote_transmitter: | ||||
|   id: tx | ||||
|   pin: ${remote_transmitter_pin} | ||||
|   carrier_duty_percent: 100% | ||||
|  | ||||
| remote_receiver: | ||||
|   id: rcvr | ||||
|   pin: ${remote_receiver_pin} | ||||
|  | ||||
| climate: | ||||
|   - platform: emmeti | ||||
|     name: Emmeti | ||||
|     receiver_id: rcvr | ||||
|     transmitter_id: tx | ||||
|     transmitter_id: xmitr | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| substitutions: | ||||
|   remote_transmitter_pin: GPIO33 | ||||
|   remote_receiver_pin: GPIO32 | ||||
| packages: | ||||
|   remote_transmitter: !include ../../test_build_components/common/remote_transmitter/esp32-idf.yaml | ||||
|   remote_receiver: !include ../../test_build_components/common/remote_receiver/esp32-idf.yaml | ||||
|  | ||||
| <<: !include common.yaml | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| substitutions: | ||||
|   remote_transmitter_pin: GPIO0 | ||||
|   remote_receiver_pin: GPIO2 | ||||
| packages: | ||||
|   remote_transmitter: !include ../../test_build_components/common/remote_transmitter/esp8266-ard.yaml | ||||
|   remote_receiver: !include ../../test_build_components/common/remote_receiver/esp8266-ard.yaml | ||||
|  | ||||
| <<: !include common.yaml | ||||
|   | ||||
| @@ -1,7 +1,4 @@ | ||||
| remote_transmitter: | ||||
|   pin: ${pin} | ||||
|   carrier_duty_percent: 50% | ||||
|  | ||||
| climate: | ||||
|   - platform: fujitsu_general | ||||
|     name: Fujitsu General Climate | ||||
|     transmitter_id: xmitr | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| substitutions: | ||||
|   pin: GPIO2 | ||||
| packages: | ||||
|   remote_transmitter: !include ../../test_build_components/common/remote_transmitter/esp32-c3-idf.yaml | ||||
|  | ||||
| <<: !include common.yaml | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| substitutions: | ||||
|   pin: GPIO2 | ||||
| packages: | ||||
|   remote_transmitter: !include ../../test_build_components/common/remote_transmitter/esp32-idf.yaml | ||||
|  | ||||
| <<: !include common.yaml | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| substitutions: | ||||
|   pin: GPIO5 | ||||
| packages: | ||||
|   remote_transmitter: !include ../../test_build_components/common/remote_transmitter/esp8266-ard.yaml | ||||
|  | ||||
| <<: !include common.yaml | ||||
|   | ||||
| @@ -1,8 +1,5 @@ | ||||
| remote_transmitter: | ||||
|   pin: ${pin} | ||||
|   carrier_duty_percent: 50% | ||||
|  | ||||
| climate: | ||||
|   - platform: gree | ||||
|     name: GREE | ||||
|     model: generic | ||||
|     transmitter_id: xmitr | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| substitutions: | ||||
|   pin: GPIO2 | ||||
| packages: | ||||
|   remote_transmitter: !include ../../test_build_components/common/remote_transmitter/esp32-c3-idf.yaml | ||||
|  | ||||
| <<: !include common.yaml | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| substitutions: | ||||
|   pin: GPIO2 | ||||
| packages: | ||||
|   remote_transmitter: !include ../../test_build_components/common/remote_transmitter/esp32-idf.yaml | ||||
|  | ||||
| <<: !include common.yaml | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| substitutions: | ||||
|   pin: GPIO5 | ||||
| packages: | ||||
|   remote_transmitter: !include ../../test_build_components/common/remote_transmitter/esp8266-ard.yaml | ||||
|  | ||||
| <<: !include common.yaml | ||||
|   | ||||
| @@ -1,7 +1,3 @@ | ||||
| remote_transmitter: | ||||
|   pin: ${pin} | ||||
|   carrier_duty_percent: 50% | ||||
|  | ||||
| climate: | ||||
|   - platform: heatpumpir | ||||
|     protocol: mitsubishi_heavy_zm | ||||
| @@ -10,6 +6,7 @@ climate: | ||||
|     name: HeatpumpIR Climate Mitsubishi | ||||
|     min_temperature: 18 | ||||
|     max_temperature: 30 | ||||
|     transmitter_id: xmitr | ||||
|   - platform: heatpumpir | ||||
|     protocol: daikin | ||||
|     horizontal_default: mleft | ||||
| @@ -17,6 +14,7 @@ climate: | ||||
|     name: HeatpumpIR Climate Daikin | ||||
|     min_temperature: 18 | ||||
|     max_temperature: 30 | ||||
|     transmitter_id: xmitr | ||||
|   - platform: heatpumpir | ||||
|     protocol: panasonic_altdke | ||||
|     horizontal_default: mright | ||||
| @@ -24,3 +22,4 @@ climate: | ||||
|     name: HeatpumpIR Climate Panasonic | ||||
|     min_temperature: 18 | ||||
|     max_temperature: 30 | ||||
|     transmitter_id: xmitr | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| substitutions: | ||||
|   pin: GPIO6 | ||||
| packages: | ||||
|   remote_transmitter: !include ../../test_build_components/common/remote_transmitter/bk72xx-ard.yaml | ||||
|  | ||||
| <<: !include common.yaml | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| substitutions: | ||||
|   pin: GPIO2 | ||||
| packages: | ||||
|   remote_transmitter: !include ../../test_build_components/common/remote_transmitter/esp32-ard.yaml | ||||
|  | ||||
| <<: !include common.yaml | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| substitutions: | ||||
|   pin: GPIO5 | ||||
| packages: | ||||
|   remote_transmitter: !include ../../test_build_components/common/remote_transmitter/esp8266-ard.yaml | ||||
|  | ||||
| <<: !include common.yaml | ||||
|   | ||||
| @@ -1,7 +1,4 @@ | ||||
| remote_transmitter: | ||||
|   pin: ${pin} | ||||
|   carrier_duty_percent: 50% | ||||
|  | ||||
| climate: | ||||
|   - platform: hitachi_ac344 | ||||
|     name: Hitachi Climate | ||||
|     transmitter_id: xmitr | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| substitutions: | ||||
|   pin: GPIO6 | ||||
| packages: | ||||
|   remote_transmitter: !include ../../test_build_components/common/remote_transmitter/bk72xx-ard.yaml | ||||
|  | ||||
| <<: !include common.yaml | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| substitutions: | ||||
|   pin: GPIO2 | ||||
| packages: | ||||
|   remote_transmitter: !include ../../test_build_components/common/remote_transmitter/esp32-c3-idf.yaml | ||||
|  | ||||
| <<: !include common.yaml | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| substitutions: | ||||
|   pin: GPIO2 | ||||
| packages: | ||||
|   remote_transmitter: !include ../../test_build_components/common/remote_transmitter/esp32-idf.yaml | ||||
|  | ||||
| <<: !include common.yaml | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| substitutions: | ||||
|   pin: GPIO5 | ||||
| packages: | ||||
|   remote_transmitter: !include ../../test_build_components/common/remote_transmitter/esp8266-ard.yaml | ||||
|  | ||||
| <<: !include common.yaml | ||||
|   | ||||
| @@ -1,7 +1,4 @@ | ||||
| remote_transmitter: | ||||
|   pin: ${pin} | ||||
|   carrier_duty_percent: 50% | ||||
|  | ||||
| climate: | ||||
|   - platform: hitachi_ac424 | ||||
|     name: Hitachi Climate | ||||
|     transmitter_id: xmitr | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| substitutions: | ||||
|   pin: GPIO6 | ||||
| packages: | ||||
|   remote_transmitter: !include ../../test_build_components/common/remote_transmitter/bk72xx-ard.yaml | ||||
|  | ||||
| <<: !include common.yaml | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| substitutions: | ||||
|   pin: GPIO2 | ||||
| packages: | ||||
|   remote_transmitter: !include ../../test_build_components/common/remote_transmitter/esp32-c3-idf.yaml | ||||
|  | ||||
| <<: !include common.yaml | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| substitutions: | ||||
|   pin: GPIO2 | ||||
| packages: | ||||
|   remote_transmitter: !include ../../test_build_components/common/remote_transmitter/esp32-idf.yaml | ||||
|  | ||||
| <<: !include common.yaml | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| substitutions: | ||||
|   pin: GPIO5 | ||||
| packages: | ||||
|   remote_transmitter: !include ../../test_build_components/common/remote_transmitter/esp8266-ard.yaml | ||||
|  | ||||
| <<: !include common.yaml | ||||
|   | ||||
| @@ -2,10 +2,6 @@ wifi: | ||||
|   ssid: MySSID | ||||
|   password: password1 | ||||
|  | ||||
| remote_transmitter: | ||||
|   pin: ${pin} | ||||
|   carrier_duty_percent: 50% | ||||
|  | ||||
| climate: | ||||
|   - platform: midea | ||||
|     id: midea_unit | ||||
| @@ -16,7 +12,7 @@ climate: | ||||
|           x.set_mode(CLIMATE_MODE_FAN_ONLY); | ||||
|     on_state: | ||||
|       - logger.log: State changed! | ||||
|     transmitter_id: | ||||
|     transmitter_id: xmitr | ||||
|     period: 1s | ||||
|     num_attempts: 5 | ||||
|     timeout: 2s | ||||
|   | ||||
| @@ -1,7 +1,5 @@ | ||||
| substitutions: | ||||
|   pin: GPIO2 | ||||
|  | ||||
| packages: | ||||
|   remote_transmitter: !include ../../test_build_components/common/remote_transmitter/esp32-ard.yaml | ||||
|   uart: !include ../../test_build_components/common/uart/esp32-ard.yaml | ||||
|  | ||||
| <<: !include common.yaml | ||||
|   | ||||
| @@ -1,7 +1,5 @@ | ||||
| substitutions: | ||||
|   pin: GPIO15 | ||||
|  | ||||
| packages: | ||||
|   remote_transmitter: !include ../../test_build_components/common/remote_transmitter/esp8266-ard.yaml | ||||
|   uart: !include ../../test_build_components/common/uart/esp8266-ard.yaml | ||||
|  | ||||
| <<: !include common.yaml | ||||
|   | ||||
| @@ -1,8 +1,5 @@ | ||||
| remote_transmitter: | ||||
|   pin: 4 | ||||
|   carrier_duty_percent: 50% | ||||
|  | ||||
| climate: | ||||
|   - platform: midea_ir | ||||
|     name: Midea IR | ||||
|     use_fahrenheit: true | ||||
|     transmitter_id: xmitr | ||||
|   | ||||
| @@ -1 +1,4 @@ | ||||
| packages: | ||||
|   remote_transmitter: !include ../../test_build_components/common/remote_transmitter/esp32-c3-idf.yaml | ||||
|  | ||||
| <<: !include common.yaml | ||||
|   | ||||
| @@ -1 +1,4 @@ | ||||
| packages: | ||||
|   remote_transmitter: !include ../../test_build_components/common/remote_transmitter/esp32-idf.yaml | ||||
|  | ||||
| <<: !include common.yaml | ||||
|   | ||||
| @@ -1 +1,4 @@ | ||||
| packages: | ||||
|   remote_transmitter: !include ../../test_build_components/common/remote_transmitter/esp8266-ard.yaml | ||||
|  | ||||
| <<: !include common.yaml | ||||
|   | ||||
| @@ -1,7 +1,4 @@ | ||||
| remote_transmitter: | ||||
|   pin: 4 | ||||
|   carrier_duty_percent: 50% | ||||
|  | ||||
| climate: | ||||
|   - platform: mitsubishi | ||||
|     name: Mitsubishi | ||||
|     transmitter_id: xmitr | ||||
|   | ||||
| @@ -1 +1,4 @@ | ||||
| packages: | ||||
|   remote_transmitter: !include ../../test_build_components/common/remote_transmitter/esp32-c3-idf.yaml | ||||
|  | ||||
| <<: !include common.yaml | ||||
|   | ||||
| @@ -1 +1,4 @@ | ||||
| packages: | ||||
|   remote_transmitter: !include ../../test_build_components/common/remote_transmitter/esp32-idf.yaml | ||||
|  | ||||
| <<: !include common.yaml | ||||
|   | ||||
| @@ -1 +1,4 @@ | ||||
| packages: | ||||
|   remote_transmitter: !include ../../test_build_components/common/remote_transmitter/esp8266-ard.yaml | ||||
|  | ||||
| <<: !include common.yaml | ||||
|   | ||||
| @@ -1,12 +1,3 @@ | ||||
| remote_receiver: | ||||
|   id: rcvr | ||||
|   pin: 4 | ||||
|   dump: all | ||||
|  | ||||
| remote_transmitter: | ||||
|   pin: 2 | ||||
|   carrier_duty_percent: 50% | ||||
|  | ||||
| sensor: | ||||
|   - platform: template | ||||
|     id: noblex_ac_sensor | ||||
|   | ||||
| @@ -1 +1,5 @@ | ||||
| packages: | ||||
|   remote_transmitter: !include ../../test_build_components/common/remote_transmitter/esp32-c3-idf.yaml | ||||
|   remote_receiver: !include ../../test_build_components/common/remote_receiver/esp32-c3-idf.yaml | ||||
|  | ||||
| <<: !include common.yaml | ||||
|   | ||||
| @@ -1 +1,5 @@ | ||||
| packages: | ||||
|   remote_transmitter: !include ../../test_build_components/common/remote_transmitter/esp32-idf.yaml | ||||
|   remote_receiver: !include ../../test_build_components/common/remote_receiver/esp32-idf.yaml | ||||
|  | ||||
| <<: !include common.yaml | ||||
|   | ||||
| @@ -1 +1,5 @@ | ||||
| packages: | ||||
|   remote_transmitter: !include ../../test_build_components/common/remote_transmitter/esp8266-ard.yaml | ||||
|   remote_receiver: !include ../../test_build_components/common/remote_receiver/esp8266-ard.yaml | ||||
|  | ||||
| <<: !include common.yaml | ||||
|   | ||||
| @@ -128,13 +128,10 @@ valve: | ||||
|     optimistic: true | ||||
|     has_position: true | ||||
|  | ||||
| remote_transmitter: | ||||
|   pin: ${pin} | ||||
|   carrier_duty_percent: 50% | ||||
|  | ||||
| climate: | ||||
|   - platform: climate_ir_lg | ||||
|     name: LG Climate | ||||
|     transmitter_id: xmitr | ||||
|  | ||||
| prometheus: | ||||
|   include_internal: true | ||||
|   | ||||
| @@ -1,5 +1,7 @@ | ||||
| substitutions: | ||||
|   verify_ssl: "false" | ||||
|   pin: GPIO2 | ||||
|  | ||||
| packages: | ||||
|   remote_transmitter: !include ../../test_build_components/common/remote_transmitter/esp32-c3-idf.yaml | ||||
|  | ||||
| <<: !include common.yaml | ||||
|   | ||||
| @@ -1,8 +1,8 @@ | ||||
| substitutions: | ||||
|   verify_ssl: "false" | ||||
|   pin: GPIO2 | ||||
|  | ||||
| packages: | ||||
|   remote_transmitter: !include ../../test_build_components/common/remote_transmitter/esp32-idf.yaml | ||||
|   spi: !include ../../test_build_components/common/spi/esp32-idf.yaml | ||||
|  | ||||
| <<: !include common.yaml | ||||
|   | ||||
| @@ -1,5 +1,7 @@ | ||||
| substitutions: | ||||
|   verify_ssl: "false" | ||||
|   pin: GPIO5 | ||||
|  | ||||
| packages: | ||||
|   remote_transmitter: !include ../../test_build_components/common/remote_transmitter/esp8266-ard.yaml | ||||
|  | ||||
| <<: !include common.yaml | ||||
|   | ||||
| @@ -143,6 +143,11 @@ on_sony: | ||||
|     - logger.log: | ||||
|         format: "on_sony: %lu %u" | ||||
|         args: ["long(x.data)", "x.nbits"] | ||||
| on_symphony: | ||||
|   then: | ||||
|     - logger.log: | ||||
|         format: "on_symphony: 0x%lX %u" | ||||
|         args: ["long(x.data)", "x.nbits"] | ||||
| on_toshiba_ac: | ||||
|   then: | ||||
|     - logger.log: | ||||
|   | ||||
| @@ -53,6 +53,12 @@ button: | ||||
|       remote_transmitter.transmit_sony: | ||||
|         data: 0xABCDEF | ||||
|         nbits: 12 | ||||
|   - platform: template | ||||
|     name: Symphony | ||||
|     on_press: | ||||
|       remote_transmitter.transmit_symphony: | ||||
|         data: 0xE88 | ||||
|         nbits: 12 | ||||
|   - platform: template | ||||
|     name: Panasonic | ||||
|     on_press: | ||||
|   | ||||
| @@ -1,7 +1,3 @@ | ||||
| remote_transmitter: | ||||
|   pin: ${pin} | ||||
|   carrier_duty_percent: 50% | ||||
|  | ||||
| sensor: | ||||
|   - platform: template | ||||
|     id: tcl112_sensor | ||||
| @@ -13,3 +9,4 @@ climate: | ||||
|     supports_heat: true | ||||
|     supports_cool: true | ||||
|     sensor: tcl112_sensor | ||||
|     transmitter_id: xmitr | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| substitutions: | ||||
|   pin: GPIO2 | ||||
| packages: | ||||
|   remote_transmitter: !include ../../test_build_components/common/remote_transmitter/esp32-c3-idf.yaml | ||||
|  | ||||
| <<: !include common.yaml | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| substitutions: | ||||
|   pin: GPIO2 | ||||
| packages: | ||||
|   remote_transmitter: !include ../../test_build_components/common/remote_transmitter/esp32-idf.yaml | ||||
|  | ||||
| <<: !include common.yaml | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| substitutions: | ||||
|   pin: GPIO5 | ||||
| packages: | ||||
|   remote_transmitter: !include ../../test_build_components/common/remote_transmitter/esp8266-ard.yaml | ||||
|  | ||||
| <<: !include common.yaml | ||||
|   | ||||
| @@ -1,7 +1,4 @@ | ||||
| remote_transmitter: | ||||
|   pin: ${pin} | ||||
|   carrier_duty_percent: 50% | ||||
|  | ||||
| climate: | ||||
|   - platform: toshiba | ||||
|     name: Toshiba Climate | ||||
|     transmitter_id: xmitr | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| substitutions: | ||||
|   pin: GPIO2 | ||||
| packages: | ||||
|   remote_transmitter: !include ../../test_build_components/common/remote_transmitter/esp32-c3-idf.yaml | ||||
|  | ||||
| <<: !include common.yaml | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| substitutions: | ||||
|   pin: GPIO2 | ||||
| packages: | ||||
|   remote_transmitter: !include ../../test_build_components/common/remote_transmitter/esp32-idf.yaml | ||||
|  | ||||
| <<: !include common.yaml | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| substitutions: | ||||
|   pin: GPIO5 | ||||
| packages: | ||||
|   remote_transmitter: !include ../../test_build_components/common/remote_transmitter/esp8266-ard.yaml | ||||
|  | ||||
| <<: !include common.yaml | ||||
|   | ||||
| @@ -1,7 +1,4 @@ | ||||
| remote_transmitter: | ||||
|   pin: ${pin} | ||||
|   carrier_duty_percent: 50% | ||||
|  | ||||
| climate: | ||||
|   - platform: whirlpool | ||||
|     name: Whirlpool Climate | ||||
|     transmitter_id: xmitr | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| substitutions: | ||||
|   pin: GPIO2 | ||||
| packages: | ||||
|   remote_transmitter: !include ../../test_build_components/common/remote_transmitter/esp32-c3-idf.yaml | ||||
|  | ||||
| <<: !include common.yaml | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| substitutions: | ||||
|   pin: GPIO2 | ||||
| packages: | ||||
|   remote_transmitter: !include ../../test_build_components/common/remote_transmitter/esp32-idf.yaml | ||||
|  | ||||
| <<: !include common.yaml | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| substitutions: | ||||
|   pin: GPIO5 | ||||
| packages: | ||||
|   remote_transmitter: !include ../../test_build_components/common/remote_transmitter/esp8266-ard.yaml | ||||
|  | ||||
| <<: !include common.yaml | ||||
|   | ||||
| @@ -1,7 +1,4 @@ | ||||
| remote_transmitter: | ||||
|   pin: ${pin} | ||||
|   carrier_duty_percent: 50% | ||||
|  | ||||
| climate: | ||||
|   - platform: whynter | ||||
|     name: Whynter Climate | ||||
|     transmitter_id: xmitr | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| substitutions: | ||||
|   pin: GPIO2 | ||||
| packages: | ||||
|   remote_transmitter: !include ../../test_build_components/common/remote_transmitter/esp32-c3-idf.yaml | ||||
|  | ||||
| <<: !include common.yaml | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| substitutions: | ||||
|   pin: GPIO2 | ||||
| packages: | ||||
|   remote_transmitter: !include ../../test_build_components/common/remote_transmitter/esp32-idf.yaml | ||||
|  | ||||
| <<: !include common.yaml | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| substitutions: | ||||
|   pin: GPIO5 | ||||
| packages: | ||||
|   remote_transmitter: !include ../../test_build_components/common/remote_transmitter/esp8266-ard.yaml | ||||
|  | ||||
| <<: !include common.yaml | ||||
|   | ||||
| @@ -1,7 +1,4 @@ | ||||
| remote_transmitter: | ||||
|   pin: ${pin} | ||||
|   carrier_duty_percent: 50% | ||||
|  | ||||
| climate: | ||||
|   - platform: yashima | ||||
|     name: Yashima Climate | ||||
|     transmitter_id: xmitr | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| substitutions: | ||||
|   pin: GPIO2 | ||||
| packages: | ||||
|   remote_transmitter: !include ../../test_build_components/common/remote_transmitter/esp32-c3-idf.yaml | ||||
|  | ||||
| <<: !include common.yaml | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| substitutions: | ||||
|   pin: GPIO2 | ||||
| packages: | ||||
|   remote_transmitter: !include ../../test_build_components/common/remote_transmitter/esp32-idf.yaml | ||||
|  | ||||
| <<: !include common.yaml | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| substitutions: | ||||
|   pin: GPIO5 | ||||
| packages: | ||||
|   remote_transmitter: !include ../../test_build_components/common/remote_transmitter/esp8266-ard.yaml | ||||
|  | ||||
| <<: !include common.yaml | ||||
|   | ||||
| @@ -1,7 +1,4 @@ | ||||
| remote_transmitter: | ||||
|   pin: ${pin} | ||||
|   carrier_duty_percent: 50% | ||||
|  | ||||
| climate: | ||||
|   - platform: zhlt01 | ||||
|     name: ZH/LT-01 Climate | ||||
|     transmitter_id: xmitr | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| substitutions: | ||||
|   pin: GPIO2 | ||||
| packages: | ||||
|   remote_transmitter: !include ../../test_build_components/common/remote_transmitter/esp32-c3-idf.yaml | ||||
|  | ||||
| <<: !include common.yaml | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| substitutions: | ||||
|   pin: GPIO2 | ||||
| packages: | ||||
|   remote_transmitter: !include ../../test_build_components/common/remote_transmitter/esp32-idf.yaml | ||||
|  | ||||
| <<: !include common.yaml | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| substitutions: | ||||
|   pin: GPIO5 | ||||
| packages: | ||||
|   remote_transmitter: !include ../../test_build_components/common/remote_transmitter/esp8266-ard.yaml | ||||
|  | ||||
| <<: !include common.yaml | ||||
|   | ||||
| @@ -0,0 +1,16 @@ | ||||
| # Common remote_receiver configuration for ESP32-C3 IDF tests | ||||
| # Provides a shared remote receiver that all components can use | ||||
| # Components will auto-use this receiver if they don't specify receiver_id | ||||
|  | ||||
| substitutions: | ||||
|   remote_receiver_pin: GPIO5 | ||||
|  | ||||
| remote_receiver: | ||||
|   - id: rcvr | ||||
|     pin: ${remote_receiver_pin} | ||||
|     dump: all | ||||
|     tolerance: 25% | ||||
|     clock_resolution: 2000000 | ||||
|     filter_symbols: 2 | ||||
|     receive_symbols: 4 | ||||
|     rmt_symbols: 64 | ||||
| @@ -0,0 +1,16 @@ | ||||
| # Common remote_receiver configuration for ESP32 IDF tests | ||||
| # Provides a shared remote receiver that all components can use | ||||
| # Components will auto-use this receiver if they don't specify receiver_id | ||||
|  | ||||
| substitutions: | ||||
|   remote_receiver_pin: GPIO32 | ||||
|  | ||||
| remote_receiver: | ||||
|   - id: rcvr | ||||
|     pin: ${remote_receiver_pin} | ||||
|     dump: all | ||||
|     tolerance: 25% | ||||
|     clock_resolution: 2000000 | ||||
|     filter_symbols: 2 | ||||
|     receive_symbols: 4 | ||||
|     rmt_symbols: 64 | ||||
| @@ -0,0 +1,12 @@ | ||||
| # Common remote_receiver configuration for ESP8266 Arduino tests | ||||
| # Provides a shared remote receiver that all components can use | ||||
| # Components will auto-use this receiver if they don't specify receiver_id | ||||
|  | ||||
| substitutions: | ||||
|   remote_receiver_pin: GPIO5 | ||||
|  | ||||
| remote_receiver: | ||||
|   id: rcvr | ||||
|   pin: ${remote_receiver_pin} | ||||
|   dump: all | ||||
|   tolerance: 25% | ||||
| @@ -0,0 +1,11 @@ | ||||
| # Common remote_transmitter configuration for BK72XX Arduino tests | ||||
| # Provides a shared remote transmitter that all components can use | ||||
| # Components will auto-use this transmitter if they don't specify transmitter_id | ||||
|  | ||||
| substitutions: | ||||
|   remote_transmitter_pin: GPIO6 | ||||
|  | ||||
| remote_transmitter: | ||||
|   id: xmitr | ||||
|   pin: ${remote_transmitter_pin} | ||||
|   carrier_duty_percent: 50% | ||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user