mirror of
				https://github.com/esphome/esphome.git
				synced 2025-11-02 16:11:53 +00:00 
			
		
		
		
	Compare commits
	
		
			14 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					09ed1aed93 | ||
| 
						 | 
					53d3718028 | ||
| 
						 | 
					2b5dce5232 | ||
| 
						 | 
					9ad84150aa | ||
| 
						 | 
					c0523590b4 | ||
| 
						 | 
					c7f091ab10 | ||
| 
						 | 
					7479e0aada | ||
| 
						 | 
					5bbee1a1fe | ||
| 
						 | 
					bdb9546ca3 | ||
| 
						 | 
					46af4cad6e | ||
| 
						 | 
					76a238912b | ||
| 
						 | 
					909a526967 | ||
| 
						 | 
					cd6f4fb93f | ||
| 
						 | 
					c19458696e | 
@@ -4,4 +4,5 @@ include requirements.txt
 | 
			
		||||
include esphome/dashboard/templates/*.html
 | 
			
		||||
recursive-include esphome/dashboard/static *.ico *.js *.css *.woff* LICENSE
 | 
			
		||||
recursive-include esphome *.cpp *.h *.tcc
 | 
			
		||||
recursive-include esphome *.py.script
 | 
			
		||||
recursive-include esphome LICENSE.txt
 | 
			
		||||
 
 | 
			
		||||
@@ -14,10 +14,14 @@ CONF_BIT_RATE = "bit_rate"
 | 
			
		||||
CONF_ON_FRAME = "on_frame"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def validate_id(id_value, id_ext):
 | 
			
		||||
    if not id_ext:
 | 
			
		||||
        if id_value > 0x7FF:
 | 
			
		||||
            raise cv.Invalid("Standard IDs must be 11 Bit (0x000-0x7ff / 0-2047)")
 | 
			
		||||
def validate_id(config):
 | 
			
		||||
    if CONF_CAN_ID in config:
 | 
			
		||||
        id_value = config[CONF_CAN_ID]
 | 
			
		||||
        id_ext = config[CONF_USE_EXTENDED_ID]
 | 
			
		||||
        if not id_ext:
 | 
			
		||||
            if id_value > 0x7FF:
 | 
			
		||||
                raise cv.Invalid("Standard IDs must be 11 Bit (0x000-0x7ff / 0-2047)")
 | 
			
		||||
    return config
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def validate_raw_data(value):
 | 
			
		||||
@@ -67,23 +71,18 @@ CANBUS_SCHEMA = cv.Schema(
 | 
			
		||||
        cv.Optional(CONF_ON_FRAME): automation.validate_automation(
 | 
			
		||||
            {
 | 
			
		||||
                cv.GenerateID(CONF_TRIGGER_ID): cv.declare_id(CanbusTrigger),
 | 
			
		||||
                cv.GenerateID(CONF_CAN_ID): cv.int_range(min=0, max=0x1FFFFFFF),
 | 
			
		||||
                cv.Required(CONF_CAN_ID): cv.int_range(min=0, max=0x1FFFFFFF),
 | 
			
		||||
                cv.Optional(CONF_USE_EXTENDED_ID, default=False): cv.boolean,
 | 
			
		||||
                cv.Optional(CONF_ON_FRAME): automation.validate_automation(
 | 
			
		||||
                    {
 | 
			
		||||
                        cv.GenerateID(CONF_TRIGGER_ID): cv.declare_id(CanbusTrigger),
 | 
			
		||||
                        cv.GenerateID(CONF_CAN_ID): cv.int_range(min=0, max=0x1FFFFFFF),
 | 
			
		||||
                        cv.Optional(CONF_USE_EXTENDED_ID, default=False): cv.boolean,
 | 
			
		||||
                    }
 | 
			
		||||
                ),
 | 
			
		||||
            }
 | 
			
		||||
            },
 | 
			
		||||
            validate_id,
 | 
			
		||||
        ),
 | 
			
		||||
    }
 | 
			
		||||
    },
 | 
			
		||||
).extend(cv.COMPONENT_SCHEMA)
 | 
			
		||||
 | 
			
		||||
CANBUS_SCHEMA.add_extra(validate_id)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
async def setup_canbus_core_(var, config):
 | 
			
		||||
    validate_id(config[CONF_CAN_ID], config[CONF_USE_EXTENDED_ID])
 | 
			
		||||
    await cg.register_component(var, config)
 | 
			
		||||
    cg.add(var.set_can_id([config[CONF_CAN_ID]]))
 | 
			
		||||
    cg.add(var.set_use_extended_id([config[CONF_USE_EXTENDED_ID]]))
 | 
			
		||||
@@ -92,7 +91,6 @@ async def setup_canbus_core_(var, config):
 | 
			
		||||
    for conf in config.get(CONF_ON_FRAME, []):
 | 
			
		||||
        can_id = conf[CONF_CAN_ID]
 | 
			
		||||
        ext_id = conf[CONF_USE_EXTENDED_ID]
 | 
			
		||||
        validate_id(can_id, ext_id)
 | 
			
		||||
        trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID], var, can_id, ext_id)
 | 
			
		||||
        await cg.register_component(trigger, conf)
 | 
			
		||||
        await automation.build_automation(
 | 
			
		||||
@@ -117,11 +115,11 @@ async def register_canbus(var, config):
 | 
			
		||||
            cv.Optional(CONF_USE_EXTENDED_ID, default=False): cv.boolean,
 | 
			
		||||
            cv.Required(CONF_DATA): cv.templatable(validate_raw_data),
 | 
			
		||||
        },
 | 
			
		||||
        validate_id,
 | 
			
		||||
        key=CONF_DATA,
 | 
			
		||||
    ),
 | 
			
		||||
)
 | 
			
		||||
async def canbus_action_to_code(config, action_id, template_arg, args):
 | 
			
		||||
    validate_id(config[CONF_CAN_ID], config[CONF_USE_EXTENDED_ID])
 | 
			
		||||
    var = cg.new_Pvariable(action_id, template_arg)
 | 
			
		||||
    await cg.register_parented(var, config[CONF_CANBUS_ID])
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -235,7 +235,7 @@ float DallasTemperatureSensor::get_temp_c() {
 | 
			
		||||
 | 
			
		||||
  return temp / 128.0f;
 | 
			
		||||
}
 | 
			
		||||
std::string DallasTemperatureSensor::unique_id() { return "dallas-" + str_upper_case(format_hex(this->address_)); }
 | 
			
		||||
std::string DallasTemperatureSensor::unique_id() { return "dallas-" + str_lower_case(format_hex(this->address_)); }
 | 
			
		||||
 | 
			
		||||
}  // namespace dallas
 | 
			
		||||
}  // namespace esphome
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
from esphome.const import CONF_ID
 | 
			
		||||
import esphome.codegen as cg
 | 
			
		||||
import esphome.config_validation as cv
 | 
			
		||||
from esphome.core import CORE
 | 
			
		||||
from esphome.core import CORE, coroutine_with_priority
 | 
			
		||||
 | 
			
		||||
CODEOWNERS = ["@esphome/core"]
 | 
			
		||||
DEPENDENCIES = ["network"]
 | 
			
		||||
@@ -29,6 +29,7 @@ CONFIG_SCHEMA = cv.All(
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@coroutine_with_priority(55.0)
 | 
			
		||||
async def to_code(config):
 | 
			
		||||
    if CORE.using_arduino:
 | 
			
		||||
        if CORE.is_esp32:
 | 
			
		||||
 
 | 
			
		||||
@@ -57,9 +57,11 @@ void ModbusNumber::control(float value) {
 | 
			
		||||
  // Create and send the write command
 | 
			
		||||
  ModbusCommandItem write_cmd;
 | 
			
		||||
  if (this->register_count == 1 && !this->use_write_multiple_) {
 | 
			
		||||
    write_cmd = ModbusCommandItem::create_write_single_command(parent_, this->start_address + this->offset, data[0]);
 | 
			
		||||
    // since offset is in bytes and a register is 16 bits we get the start by adding offset/2
 | 
			
		||||
    write_cmd =
 | 
			
		||||
        ModbusCommandItem::create_write_single_command(parent_, this->start_address + this->offset / 2, data[0]);
 | 
			
		||||
  } else {
 | 
			
		||||
    write_cmd = ModbusCommandItem::create_write_multiple_command(parent_, this->start_address + this->offset,
 | 
			
		||||
    write_cmd = ModbusCommandItem::create_write_multiple_command(parent_, this->start_address + this->offset / 2,
 | 
			
		||||
                                                                 this->register_count, data);
 | 
			
		||||
  }
 | 
			
		||||
  // publish new value
 | 
			
		||||
 
 | 
			
		||||
@@ -104,7 +104,6 @@ async def to_code(config):
 | 
			
		||||
            )
 | 
			
		||||
            light_state = cg.new_Pvariable(conf[CONF_LIGHT_ID], "", wrapper)
 | 
			
		||||
            await cg.register_component(light_state, conf)
 | 
			
		||||
            cg.add(cg.App.register_light(light_state))
 | 
			
		||||
            segments.append(AddressableSegment(light_state, 0, 1, False))
 | 
			
		||||
 | 
			
		||||
        else:
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
"""Constants used by esphome."""
 | 
			
		||||
 | 
			
		||||
__version__ = "2022.1.0"
 | 
			
		||||
__version__ = "2022.1.4"
 | 
			
		||||
 | 
			
		||||
ALLOWED_NAME_CHARS = "abcdefghijklmnopqrstuvwxyz0123456789-_"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -316,8 +316,8 @@ template<int (*fn)(int)> std::string str_ctype_transform(const std::string &str)
 | 
			
		||||
  std::transform(str.begin(), str.end(), result.begin(), [](unsigned char ch) { return fn(ch); });
 | 
			
		||||
  return result;
 | 
			
		||||
}
 | 
			
		||||
std::string str_lower_case(const std::string &str) { return str_ctype_transform<std::toupper>(str); }
 | 
			
		||||
std::string str_upper_case(const std::string &str) { return str_ctype_transform<std::tolower>(str); }
 | 
			
		||||
std::string str_lower_case(const std::string &str) { return str_ctype_transform<std::tolower>(str); }
 | 
			
		||||
std::string str_upper_case(const std::string &str) { return str_ctype_transform<std::toupper>(str); }
 | 
			
		||||
std::string str_snake_case(const std::string &str) {
 | 
			
		||||
  std::string result;
 | 
			
		||||
  result.resize(str.length());
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user