コード例 #1
0
ファイル: sensor.py プロジェクト: penright/esphome
def validate_pulse_counter_pin(value):
    value = pins.internal_gpio_input_pin_schema(value)
    if CORE.is_esp8266 and value[CONF_NUMBER] >= 16:
        raise cv.Invalid(
            "Pins GPIO16 and GPIO17 cannot be used as pulse counters on ESP8266."
        )
    return value
コード例 #2
0
def validate_adc_pin(value):
    if str(value).upper() == "VCC":
        return cv.only_on_esp8266("VCC")

    if CORE.is_esp32:
        value = pins.internal_gpio_input_pin_number(value)
        variant = get_esp32_variant()
        if variant not in ESP32_VARIANT_ADC1_PIN_TO_CHANNEL:
            raise cv.Invalid(
                f"This ESP32 variant ({variant}) is not supported")

        if value not in ESP32_VARIANT_ADC1_PIN_TO_CHANNEL[variant]:
            raise cv.Invalid(f"{variant} doesn't support ADC on this pin")
        return pins.internal_gpio_input_pin_schema(value)

    if CORE.is_esp8266:
        from esphome.components.esp8266.gpio import CONF_ANALOG

        value = pins.internal_gpio_pin_number({
            CONF_ANALOG: True,
            CONF_INPUT: True
        })(value)

        if value != 17:  # A0
            raise cv.Invalid("ESP8266: Only pin A0 (GPIO17) supports ADC.")
        return pins.gpio_pin_schema({
            CONF_ANALOG: True,
            CONF_INPUT: True
        },
                                    internal=True)(value)

    raise NotImplementedError