esphome 2024.12.4__py3-none-any.whl → 2025.2.0b1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- esphome/__main__.py +16 -3
- esphome/components/adc/__init__.py +17 -11
- esphome/components/adc/adc_sensor.h +17 -0
- esphome/components/adc/adc_sensor_common.cpp +55 -0
- esphome/components/adc/adc_sensor_esp32.cpp +8 -5
- esphome/components/adc/adc_sensor_esp8266.cpp +10 -6
- esphome/components/adc/adc_sensor_libretiny.cpp +11 -6
- esphome/components/adc/adc_sensor_rp2040.cpp +13 -10
- esphome/components/adc/sensor.py +9 -3
- esphome/components/ads1115/ads1115.cpp +56 -7
- esphome/components/ads1115/ads1115.h +13 -1
- esphome/components/ads1115/sensor/__init__.py +16 -0
- esphome/components/ads1115/sensor/ads1115_sensor.cpp +2 -1
- esphome/components/ads1115/sensor/ads1115_sensor.h +2 -0
- esphome/components/animation/__init__.py +23 -261
- esphome/components/animation/animation.cpp +2 -2
- esphome/components/animation/animation.h +2 -1
- esphome/components/api/api_pb2.cpp +14 -0
- esphome/components/api/api_pb2.h +1 -0
- esphome/components/audio/__init__.py +112 -0
- esphome/components/audio/audio.cpp +67 -0
- esphome/components/audio/audio.h +125 -7
- esphome/components/audio/audio_decoder.cpp +361 -0
- esphome/components/audio/audio_decoder.h +135 -0
- esphome/components/audio/audio_reader.cpp +308 -0
- esphome/components/audio/audio_reader.h +85 -0
- esphome/components/audio/audio_resampler.cpp +159 -0
- esphome/components/audio/audio_resampler.h +101 -0
- esphome/components/audio/audio_transfer_buffer.cpp +165 -0
- esphome/components/audio/audio_transfer_buffer.h +139 -0
- esphome/components/audio_adc/__init__.py +41 -0
- esphome/components/audio_adc/audio_adc.h +17 -0
- esphome/components/audio_adc/automation.h +23 -0
- esphome/components/bk72xx/__init__.py +1 -0
- esphome/components/ble_client/ble_client.cpp +1 -2
- esphome/components/ble_client/sensor/__init__.py +1 -1
- esphome/components/ble_client/text_sensor/__init__.py +1 -1
- esphome/components/bluetooth_proxy/bluetooth_connection.cpp +5 -0
- esphome/components/bluetooth_proxy/bluetooth_connection.h +1 -0
- esphome/components/bluetooth_proxy/bluetooth_proxy.cpp +5 -0
- esphome/components/ch422g/ch422g.h +2 -0
- esphome/components/climate/__init__.py +1 -1
- esphome/components/climate_ir/climate_ir.cpp +2 -1
- esphome/components/coolix/coolix.cpp +2 -1
- esphome/components/custom/__init__.py +0 -3
- esphome/components/custom/binary_sensor/__init__.py +2 -28
- esphome/components/custom/climate/__init__.py +2 -27
- esphome/components/custom/cover/__init__.py +2 -27
- esphome/components/custom/light/__init__.py +2 -27
- esphome/components/custom/output/__init__.py +2 -58
- esphome/components/custom/sensor/__init__.py +2 -24
- esphome/components/custom/switch/__init__.py +2 -24
- esphome/components/custom/text_sensor/__init__.py +2 -29
- esphome/components/custom_component/__init__.py +3 -27
- esphome/components/daly_bms/daly_bms.cpp +6 -0
- esphome/components/daly_bms/daly_bms.h +2 -0
- esphome/components/daly_bms/sensor.py +6 -0
- esphome/components/debug/debug_component.cpp +4 -0
- esphome/components/debug/debug_component.h +14 -0
- esphome/components/debug/debug_esp32.cpp +154 -74
- esphome/components/dfplayer/dfplayer.cpp +15 -2
- esphome/components/dfrobot_sen0395/dfrobot_sen0395.cpp +2 -1
- esphome/components/dht/dht.cpp +2 -1
- esphome/components/display/__init__.py +18 -5
- esphome/components/display/display.cpp +2 -1
- esphome/components/display/rect.cpp +2 -1
- esphome/components/es7210/__init__.py +0 -0
- esphome/components/es7210/audio_adc.py +51 -0
- esphome/components/es7210/es7210.cpp +228 -0
- esphome/components/es7210/es7210.h +62 -0
- esphome/components/es7210/es7210_const.h +129 -0
- esphome/components/es7243e/__init__.py +0 -0
- esphome/components/es7243e/audio_adc.py +34 -0
- esphome/components/es7243e/es7243e.cpp +125 -0
- esphome/components/es7243e/es7243e.h +37 -0
- esphome/components/es7243e/es7243e_const.h +54 -0
- esphome/components/es8156/__init__.py +0 -0
- esphome/components/es8156/audio_dac.py +27 -0
- esphome/components/es8156/es8156.cpp +87 -0
- esphome/components/es8156/es8156.h +51 -0
- esphome/components/es8156/es8156_const.h +68 -0
- esphome/components/es8311/audio_dac.py +1 -2
- esphome/components/esp32/__init__.py +1 -0
- esphome/components/esp32/core.cpp +5 -1
- esphome/components/esp32/gpio.h +2 -0
- esphome/components/esp32_ble/__init__.py +39 -0
- esphome/components/esp32_ble/queue.h +4 -4
- esphome/components/esp32_ble_client/ble_client_base.cpp +46 -0
- esphome/components/esp32_ble_client/ble_client_base.h +2 -0
- esphome/components/esp32_ble_server/__init__.py +582 -12
- esphome/components/esp32_ble_server/ble_characteristic.cpp +48 -60
- esphome/components/esp32_ble_server/ble_characteristic.h +24 -17
- esphome/components/esp32_ble_server/ble_descriptor.cpp +21 -9
- esphome/components/esp32_ble_server/ble_descriptor.h +17 -6
- esphome/components/esp32_ble_server/ble_server.cpp +62 -67
- esphome/components/esp32_ble_server/ble_server.h +28 -32
- esphome/components/esp32_ble_server/ble_server_automations.cpp +77 -0
- esphome/components/esp32_ble_server/ble_server_automations.h +115 -0
- esphome/components/esp32_ble_server/ble_service.cpp +17 -15
- esphome/components/esp32_ble_server/ble_service.h +10 -14
- esphome/components/esp32_ble_tracker/__init__.py +6 -39
- esphome/components/esp32_ble_tracker/esp32_ble_tracker.cpp +33 -10
- esphome/components/esp32_ble_tracker/esp32_ble_tracker.h +8 -4
- esphome/components/esp32_improv/__init__.py +2 -8
- esphome/components/esp32_improv/esp32_improv_component.cpp +21 -20
- esphome/components/esp32_improv/esp32_improv_component.h +3 -4
- esphome/components/esp32_rmt/__init__.py +28 -3
- esphome/components/esp32_rmt_led_strip/led_strip.cpp +73 -6
- esphome/components/esp32_rmt_led_strip/led_strip.h +21 -3
- esphome/components/esp32_rmt_led_strip/light.py +72 -7
- esphome/components/esp32_touch/esp32_touch.cpp +5 -0
- esphome/components/esp8266/__init__.py +1 -0
- esphome/components/esp8266/gpio.h +1 -0
- esphome/components/ethernet/__init__.py +10 -10
- esphome/components/event/event.cpp +4 -2
- esphome/components/event/event.h +2 -0
- esphome/components/event_emitter/__init__.py +5 -0
- esphome/components/event_emitter/event_emitter.cpp +14 -0
- esphome/components/event_emitter/event_emitter.h +63 -0
- esphome/components/gcja5/gcja5.cpp +2 -1
- esphome/components/haier/haier_base.cpp +2 -1
- esphome/components/haier/hon_climate.cpp +2 -1
- esphome/components/heatpumpir/heatpumpir.cpp +2 -1
- esphome/components/host/__init__.py +1 -0
- esphome/components/host/gpio.h +1 -0
- esphome/components/http_request/http_request.h +2 -2
- esphome/components/http_request/http_request_arduino.cpp +1 -1
- esphome/components/http_request/http_request_idf.cpp +1 -1
- esphome/components/i2c/i2c_bus_esp_idf.cpp +4 -0
- esphome/components/i2s_audio/microphone/i2s_audio_microphone.cpp +7 -5
- esphome/components/i2s_audio/speaker/__init__.py +53 -6
- esphome/components/i2s_audio/speaker/i2s_audio_speaker.cpp +92 -46
- esphome/components/i2s_audio/speaker/i2s_audio_speaker.h +8 -0
- esphome/components/ili9xxx/display.py +29 -11
- esphome/components/ili9xxx/ili9xxx_display.cpp +2 -5
- esphome/components/ili9xxx/ili9xxx_display.h +2 -1
- esphome/components/image/__init__.py +443 -255
- esphome/components/image/image.cpp +115 -61
- esphome/components/image/image.h +15 -24
- esphome/components/json/json_util.cpp +8 -34
- esphome/components/libretiny/__init__.py +1 -0
- esphome/components/libretiny/gpio_arduino.h +1 -0
- esphome/components/light/light_color_values.h +1 -1
- esphome/components/logger/__init__.py +43 -7
- esphome/components/logger/logger.cpp +16 -11
- esphome/components/logger/logger.h +11 -7
- esphome/components/logger/select/__init__.py +29 -0
- esphome/components/logger/select/logger_level_select.cpp +27 -0
- esphome/components/logger/select/logger_level_select.h +15 -0
- esphome/components/lvgl/__init__.py +96 -73
- esphome/components/lvgl/automation.py +39 -7
- esphome/components/lvgl/defines.py +8 -2
- esphome/components/lvgl/lvgl_esphome.cpp +8 -15
- esphome/components/lvgl/lvgl_esphome.h +20 -5
- esphome/components/lvgl/schemas.py +25 -14
- esphome/components/lvgl/trigger.py +27 -3
- esphome/components/lvgl/widgets/dropdown.py +1 -1
- esphome/components/lvgl/widgets/keyboard.py +8 -1
- esphome/components/lvgl/widgets/meter.py +2 -1
- esphome/components/lvgl/widgets/msgbox.py +1 -1
- esphome/components/lvgl/widgets/obj.py +1 -12
- esphome/components/lvgl/widgets/page.py +37 -2
- esphome/components/lvgl/widgets/tabview.py +1 -1
- esphome/components/max6956/max6956.h +2 -0
- esphome/components/mcp23016/mcp23016.h +2 -0
- esphome/components/mcp23xxx_base/mcp23xxx_base.h +2 -0
- esphome/components/mdns/__init__.py +1 -1
- esphome/components/media_player/__init__.py +37 -8
- esphome/components/media_player/automation.h +11 -2
- esphome/components/media_player/media_player.cpp +8 -0
- esphome/components/media_player/media_player.h +8 -4
- esphome/components/micronova/switch/micronova_switch.cpp +4 -2
- esphome/components/midea/ac_automations.h +3 -1
- esphome/components/midea/air_conditioner.cpp +7 -5
- esphome/components/midea/air_conditioner.h +1 -1
- esphome/components/midea/climate.py +4 -2
- esphome/components/midea/ir_transmitter.h +36 -5
- esphome/components/mixer/__init__.py +0 -0
- esphome/components/mixer/speaker/__init__.py +172 -0
- esphome/components/mixer/speaker/automation.h +19 -0
- esphome/components/mixer/speaker/mixer_speaker.cpp +624 -0
- esphome/components/mixer/speaker/mixer_speaker.h +207 -0
- esphome/components/mpr121/mpr121.h +2 -0
- esphome/components/mqtt/__init__.py +1 -1
- esphome/components/mqtt/mqtt_client.cpp +7 -1
- esphome/components/mqtt/mqtt_client.h +1 -1
- esphome/components/mqtt/mqtt_climate.cpp +2 -2
- esphome/components/network/ip_address.h +2 -0
- esphome/components/nextion/automation.h +17 -0
- esphome/components/nextion/display.py +42 -17
- esphome/components/nextion/nextion.cpp +4 -10
- esphome/components/nextion/nextion.h +89 -82
- esphome/components/nextion/nextion_commands.cpp +10 -10
- esphome/components/ntc/sensor.py +2 -4
- esphome/components/online_image/__init__.py +98 -46
- esphome/components/online_image/bmp_image.cpp +101 -0
- esphome/components/online_image/bmp_image.h +40 -0
- esphome/components/online_image/image_decoder.cpp +28 -2
- esphome/components/online_image/image_decoder.h +24 -15
- esphome/components/online_image/jpeg_image.cpp +90 -0
- esphome/components/online_image/jpeg_image.h +34 -0
- esphome/components/online_image/online_image.cpp +112 -53
- esphome/components/online_image/online_image.h +24 -7
- esphome/components/online_image/png_image.cpp +7 -3
- esphome/components/online_image/png_image.h +2 -1
- esphome/components/opentherm/__init__.py +73 -7
- esphome/components/opentherm/automation.h +25 -0
- esphome/components/opentherm/const.py +1 -0
- esphome/components/opentherm/generate.py +39 -6
- esphome/components/opentherm/hub.cpp +117 -79
- esphome/components/opentherm/hub.h +31 -15
- esphome/components/opentherm/opentherm.cpp +47 -23
- esphome/components/opentherm/opentherm.h +27 -6
- esphome/components/opentherm/opentherm_macros.h +11 -0
- esphome/components/opentherm/schema.py +78 -1
- esphome/components/opentherm/validate.py +7 -2
- esphome/components/pca6416a/pca6416a.h +2 -0
- esphome/components/pca9554/pca9554.h +2 -0
- esphome/components/pcf8574/pcf8574.h +2 -0
- esphome/components/preferences/__init__.py +2 -4
- esphome/components/preferences/syncer.h +10 -3
- esphome/components/prometheus/prometheus_handler.cpp +313 -0
- esphome/components/prometheus/prometheus_handler.h +48 -7
- esphome/components/psram/psram.cpp +8 -1
- esphome/components/pulse_counter/pulse_counter_sensor.cpp +14 -9
- esphome/components/pulse_counter/pulse_counter_sensor.h +4 -4
- esphome/components/pulse_meter/pulse_meter_sensor.cpp +2 -0
- esphome/components/qspi_dbi/__init__.py +3 -0
- esphome/components/qspi_dbi/display.py +74 -47
- esphome/components/qspi_dbi/models.py +245 -2
- esphome/components/qspi_dbi/qspi_dbi.cpp +9 -16
- esphome/components/qspi_dbi/qspi_dbi.h +2 -2
- esphome/components/remote_base/__init__.py +77 -25
- esphome/components/remote_base/remote_base.cpp +1 -1
- esphome/components/remote_base/remote_base.h +20 -2
- esphome/components/remote_base/toto_protocol.cpp +100 -0
- esphome/components/remote_base/toto_protocol.h +45 -0
- esphome/components/remote_receiver/__init__.py +55 -10
- esphome/components/remote_receiver/remote_receiver.h +36 -3
- esphome/components/remote_receiver/remote_receiver_esp32.cpp +145 -6
- esphome/components/remote_transmitter/__init__.py +62 -4
- esphome/components/remote_transmitter/remote_transmitter.h +21 -2
- esphome/components/remote_transmitter/remote_transmitter_esp32.cpp +140 -4
- esphome/components/remote_transmitter/remote_transmitter_esp8266.cpp +3 -3
- esphome/components/remote_transmitter/remote_transmitter_libretiny.cpp +3 -3
- esphome/components/resampler/__init__.py +0 -0
- esphome/components/resampler/speaker/__init__.py +103 -0
- esphome/components/resampler/speaker/resampler_speaker.cpp +318 -0
- esphome/components/resampler/speaker/resampler_speaker.h +107 -0
- esphome/components/resistance/resistance_sensor.h +2 -3
- esphome/components/resistance/sensor.py +2 -9
- esphome/components/rotary_encoder/rotary_encoder.cpp +8 -4
- esphome/components/rp2040/__init__.py +1 -0
- esphome/components/rp2040/gpio.h +1 -0
- esphome/components/rtl87xx/__init__.py +2 -0
- esphome/components/sdl/binary_sensor.py +270 -0
- esphome/components/sdl/sdl_esphome.cpp +16 -0
- esphome/components/sdl/sdl_esphome.h +9 -0
- esphome/components/seeed_mr60bha2/binary_sensor.py +25 -0
- esphome/components/seeed_mr60bha2/seeed_mr60bha2.cpp +26 -2
- esphome/components/seeed_mr60bha2/seeed_mr60bha2.h +9 -20
- esphome/components/seeed_mr60bha2/sensor.py +9 -1
- esphome/components/sn74hc165/sn74hc165.h +3 -0
- esphome/components/sn74hc595/sn74hc595.h +3 -0
- esphome/components/speaker/__init__.py +5 -4
- esphome/components/speaker/media_player/__init__.py +458 -0
- esphome/components/speaker/media_player/audio_pipeline.cpp +568 -0
- esphome/components/speaker/media_player/audio_pipeline.h +159 -0
- esphome/components/speaker/media_player/automation.h +26 -0
- esphome/components/speaker/media_player/speaker_media_player.cpp +577 -0
- esphome/components/speaker/media_player/speaker_media_player.h +160 -0
- esphome/components/speaker/speaker.h +20 -0
- esphome/components/spi/__init__.py +1 -5
- esphome/components/spi/spi.cpp +7 -1
- esphome/components/spi/spi.h +21 -2
- esphome/components/spi_led_strip/light.py +3 -5
- esphome/components/spi_led_strip/spi_led_strip.cpp +67 -0
- esphome/components/spi_led_strip/spi_led_strip.h +8 -60
- esphome/components/sprinkler/sprinkler.cpp +3 -1
- esphome/components/sx1509/sx1509_gpio_pin.h +2 -0
- esphome/components/tca9555/tca9555.h +2 -0
- esphome/components/toshiba/toshiba.cpp +2 -1
- esphome/components/tuya/light/tuya_light.cpp +4 -2
- esphome/components/uart/uart_component_esp32_arduino.cpp +2 -2
- esphome/components/uart/uart_component_esp_idf.cpp +2 -2
- esphome/components/udp/__init__.py +8 -2
- esphome/components/udp/udp_component.cpp +25 -56
- esphome/components/udp/udp_component.h +3 -0
- esphome/components/uponor_smatrix/sensor/__init__.py +14 -4
- esphome/components/uponor_smatrix/sensor/uponor_smatrix_sensor.cpp +5 -0
- esphome/components/uponor_smatrix/sensor/uponor_smatrix_sensor.h +1 -0
- esphome/components/uptime/text_sensor/__init__.py +19 -0
- esphome/components/uptime/text_sensor/uptime_text_sensor.cpp +63 -0
- esphome/components/uptime/text_sensor/uptime_text_sensor.h +25 -0
- esphome/components/voice_assistant/voice_assistant.cpp +24 -14
- esphome/components/voice_assistant/voice_assistant.h +8 -0
- esphome/components/waveshare_epaper/display.py +22 -1
- esphome/components/waveshare_epaper/waveshare_213v3.cpp +9 -3
- esphome/components/waveshare_epaper/waveshare_epaper.cpp +1155 -44
- esphome/components/waveshare_epaper/waveshare_epaper.h +208 -7
- esphome/components/web_server/web_server.cpp +28 -6
- esphome/components/weikai/weikai.h +2 -0
- esphome/components/wifi/__init__.py +6 -6
- esphome/components/wifi/wifi_component.cpp +1 -1
- esphome/components/wifi/wifi_component_esp32_arduino.cpp +30 -1
- esphome/components/wireguard/__init__.py +2 -2
- esphome/components/xl9535/xl9535.h +2 -0
- esphome/components/xxtea/__init__.py +3 -0
- esphome/components/xxtea/xxtea.cpp +46 -0
- esphome/components/xxtea/xxtea.h +26 -0
- esphome/components/yashima/yashima.cpp +2 -1
- esphome/config.py +9 -5
- esphome/config_validation.py +55 -17
- esphome/const.py +7 -10
- esphome/core/__init__.py +6 -13
- esphome/core/base_automation.h +1 -0
- esphome/core/config.py +57 -72
- esphome/core/defines.h +9 -1
- esphome/core/gpio.h +7 -0
- esphome/core/helpers.cpp +19 -15
- esphome/core/helpers.h +57 -8
- esphome/core/log.h +9 -7
- esphome/cpp_generator.py +2 -2
- esphome/espota2.py +3 -2
- esphome/loader.py +12 -4
- esphome/log.py +5 -7
- esphome/yaml_util.py +2 -2
- {esphome-2024.12.4.dist-info → esphome-2025.2.0b1.dist-info}/METADATA +12 -7
- {esphome-2024.12.4.dist-info → esphome-2025.2.0b1.dist-info}/RECORD +338 -289
- esphome/components/custom/binary_sensor/custom_binary_sensor.cpp +0 -16
- esphome/components/custom/binary_sensor/custom_binary_sensor.h +0 -26
- esphome/components/custom/climate/custom_climate.h +0 -22
- esphome/components/custom/cover/custom_cover.h +0 -21
- esphome/components/custom/light/custom_light_output.h +0 -24
- esphome/components/custom/output/custom_output.h +0 -37
- esphome/components/custom/sensor/custom_sensor.cpp +0 -16
- esphome/components/custom/sensor/custom_sensor.h +0 -24
- esphome/components/custom/switch/custom_switch.cpp +0 -16
- esphome/components/custom/switch/custom_switch.h +0 -24
- esphome/components/custom/text_sensor/custom_text_sensor.cpp +0 -16
- esphome/components/custom/text_sensor/custom_text_sensor.h +0 -26
- esphome/components/custom_component/custom_component.h +0 -28
- esphome/components/esp32_ble_server/ble_2901.cpp +0 -18
- esphome/components/esp32_ble_server/ble_2901.h +0 -19
- esphome/components/resistance_sampler/__init__.py +0 -6
- esphome/components/resistance_sampler/resistance_sampler.h +0 -10
- esphome/components/uptime/{sensor.py → sensor/__init__.py} +3 -3
- /esphome/components/uptime/{uptime_seconds_sensor.cpp → sensor/uptime_seconds_sensor.cpp} +0 -0
- /esphome/components/uptime/{uptime_seconds_sensor.h → sensor/uptime_seconds_sensor.h} +0 -0
- /esphome/components/uptime/{uptime_timestamp_sensor.cpp → sensor/uptime_timestamp_sensor.cpp} +0 -0
- /esphome/components/uptime/{uptime_timestamp_sensor.h → sensor/uptime_timestamp_sensor.h} +0 -0
- {esphome-2024.12.4.dist-info → esphome-2025.2.0b1.dist-info}/LICENSE +0 -0
- {esphome-2024.12.4.dist-info → esphome-2025.2.0b1.dist-info}/WHEEL +0 -0
- {esphome-2024.12.4.dist-info → esphome-2025.2.0b1.dist-info}/entry_points.txt +0 -0
- {esphome-2024.12.4.dist-info → esphome-2025.2.0b1.dist-info}/top_level.txt +0 -0
@@ -75,7 +75,7 @@ class PrometheusHandler : public AsyncWebHandler, public Component {
|
|
75
75
|
#ifdef USE_BINARY_SENSOR
|
76
76
|
/// Return the type for prometheus
|
77
77
|
void binary_sensor_type_(AsyncResponseStream *stream);
|
78
|
-
/// Return the sensor state as prometheus data point
|
78
|
+
/// Return the binary sensor state as prometheus data point
|
79
79
|
void binary_sensor_row_(AsyncResponseStream *stream, binary_sensor::BinarySensor *obj, std::string &area,
|
80
80
|
std::string &node, std::string &friendly_name);
|
81
81
|
#endif
|
@@ -83,7 +83,7 @@ class PrometheusHandler : public AsyncWebHandler, public Component {
|
|
83
83
|
#ifdef USE_FAN
|
84
84
|
/// Return the type for prometheus
|
85
85
|
void fan_type_(AsyncResponseStream *stream);
|
86
|
-
/// Return the
|
86
|
+
/// Return the fan state as prometheus data point
|
87
87
|
void fan_row_(AsyncResponseStream *stream, fan::Fan *obj, std::string &area, std::string &node,
|
88
88
|
std::string &friendly_name);
|
89
89
|
#endif
|
@@ -91,7 +91,7 @@ class PrometheusHandler : public AsyncWebHandler, public Component {
|
|
91
91
|
#ifdef USE_LIGHT
|
92
92
|
/// Return the type for prometheus
|
93
93
|
void light_type_(AsyncResponseStream *stream);
|
94
|
-
/// Return the
|
94
|
+
/// Return the light values state as prometheus data point
|
95
95
|
void light_row_(AsyncResponseStream *stream, light::LightState *obj, std::string &area, std::string &node,
|
96
96
|
std::string &friendly_name);
|
97
97
|
#endif
|
@@ -99,7 +99,7 @@ class PrometheusHandler : public AsyncWebHandler, public Component {
|
|
99
99
|
#ifdef USE_COVER
|
100
100
|
/// Return the type for prometheus
|
101
101
|
void cover_type_(AsyncResponseStream *stream);
|
102
|
-
/// Return the
|
102
|
+
/// Return the cover values state as prometheus data point
|
103
103
|
void cover_row_(AsyncResponseStream *stream, cover::Cover *obj, std::string &area, std::string &node,
|
104
104
|
std::string &friendly_name);
|
105
105
|
#endif
|
@@ -107,7 +107,7 @@ class PrometheusHandler : public AsyncWebHandler, public Component {
|
|
107
107
|
#ifdef USE_SWITCH
|
108
108
|
/// Return the type for prometheus
|
109
109
|
void switch_type_(AsyncResponseStream *stream);
|
110
|
-
/// Return the switch
|
110
|
+
/// Return the switch values state as prometheus data point
|
111
111
|
void switch_row_(AsyncResponseStream *stream, switch_::Switch *obj, std::string &area, std::string &node,
|
112
112
|
std::string &friendly_name);
|
113
113
|
#endif
|
@@ -115,7 +115,7 @@ class PrometheusHandler : public AsyncWebHandler, public Component {
|
|
115
115
|
#ifdef USE_LOCK
|
116
116
|
/// Return the type for prometheus
|
117
117
|
void lock_type_(AsyncResponseStream *stream);
|
118
|
-
/// Return the lock
|
118
|
+
/// Return the lock values state as prometheus data point
|
119
119
|
void lock_row_(AsyncResponseStream *stream, lock::Lock *obj, std::string &area, std::string &node,
|
120
120
|
std::string &friendly_name);
|
121
121
|
#endif
|
@@ -123,11 +123,52 @@ class PrometheusHandler : public AsyncWebHandler, public Component {
|
|
123
123
|
#ifdef USE_TEXT_SENSOR
|
124
124
|
/// Return the type for prometheus
|
125
125
|
void text_sensor_type_(AsyncResponseStream *stream);
|
126
|
-
/// Return the
|
126
|
+
/// Return the text sensor values state as prometheus data point
|
127
127
|
void text_sensor_row_(AsyncResponseStream *stream, text_sensor::TextSensor *obj, std::string &area, std::string &node,
|
128
128
|
std::string &friendly_name);
|
129
129
|
#endif
|
130
130
|
|
131
|
+
#ifdef USE_NUMBER
|
132
|
+
/// Return the type for prometheus
|
133
|
+
void number_type_(AsyncResponseStream *stream);
|
134
|
+
/// Return the number state as prometheus data point
|
135
|
+
void number_row_(AsyncResponseStream *stream, number::Number *obj, std::string &area, std::string &node,
|
136
|
+
std::string &friendly_name);
|
137
|
+
#endif
|
138
|
+
|
139
|
+
#ifdef USE_SELECT
|
140
|
+
/// Return the type for prometheus
|
141
|
+
void select_type_(AsyncResponseStream *stream);
|
142
|
+
/// Return the select state as prometheus data point
|
143
|
+
void select_row_(AsyncResponseStream *stream, select::Select *obj, std::string &area, std::string &node,
|
144
|
+
std::string &friendly_name);
|
145
|
+
#endif
|
146
|
+
|
147
|
+
#ifdef USE_MEDIA_PLAYER
|
148
|
+
/// Return the type for prometheus
|
149
|
+
void media_player_type_(AsyncResponseStream *stream);
|
150
|
+
/// Return the media player state as prometheus data point
|
151
|
+
void media_player_row_(AsyncResponseStream *stream, media_player::MediaPlayer *obj, std::string &area,
|
152
|
+
std::string &node, std::string &friendly_name);
|
153
|
+
#endif
|
154
|
+
|
155
|
+
#ifdef USE_UPDATE
|
156
|
+
/// Return the type for prometheus
|
157
|
+
void update_entity_type_(AsyncResponseStream *stream);
|
158
|
+
/// Return the update state and info as prometheus data point
|
159
|
+
void update_entity_row_(AsyncResponseStream *stream, update::UpdateEntity *obj, std::string &area, std::string &node,
|
160
|
+
std::string &friendly_name);
|
161
|
+
void handle_update_state_(AsyncResponseStream *stream, update::UpdateState state);
|
162
|
+
#endif
|
163
|
+
|
164
|
+
#ifdef USE_VALVE
|
165
|
+
/// Return the type for prometheus
|
166
|
+
void valve_type_(AsyncResponseStream *stream);
|
167
|
+
/// Return the valve state as prometheus data point
|
168
|
+
void valve_row_(AsyncResponseStream *stream, valve::Valve *obj, std::string &area, std::string &node,
|
169
|
+
std::string &friendly_name);
|
170
|
+
#endif
|
171
|
+
|
131
172
|
web_server_base::WebServerBase *base_;
|
132
173
|
bool include_internal_{false};
|
133
174
|
std::map<EntityBase *, std::string> relabel_map_id_;
|
@@ -21,7 +21,14 @@ void PsramComponent::dump_config() {
|
|
21
21
|
ESP_LOGCONFIG(TAG, " Available: %s", YESNO(available));
|
22
22
|
#if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(4, 1, 0)
|
23
23
|
if (available) {
|
24
|
-
|
24
|
+
const size_t psram_total_size_bytes = heap_caps_get_total_size(MALLOC_CAP_SPIRAM);
|
25
|
+
const float psram_total_size_kb = psram_total_size_bytes / 1024.0f;
|
26
|
+
|
27
|
+
if (abs(std::round(psram_total_size_kb) - psram_total_size_kb) < 0.05f) {
|
28
|
+
ESP_LOGCONFIG(TAG, " Size: %.0f KB", psram_total_size_kb);
|
29
|
+
} else {
|
30
|
+
ESP_LOGCONFIG(TAG, " Size: %zu bytes", psram_total_size_bytes);
|
31
|
+
}
|
25
32
|
}
|
26
33
|
#endif
|
27
34
|
}
|
@@ -13,9 +13,9 @@ PulseCounterStorageBase *get_storage(bool hw_pcnt) {
|
|
13
13
|
return (hw_pcnt ? (PulseCounterStorageBase *) (new HwPulseCounterStorage)
|
14
14
|
: (PulseCounterStorageBase *) (new BasicPulseCounterStorage));
|
15
15
|
}
|
16
|
-
#else
|
16
|
+
#else // HAS_PCNT
|
17
17
|
PulseCounterStorageBase *get_storage(bool) { return new BasicPulseCounterStorage; }
|
18
|
-
#endif
|
18
|
+
#endif // HAS_PCNT
|
19
19
|
|
20
20
|
void IRAM_ATTR BasicPulseCounterStorage::gpio_intr(BasicPulseCounterStorage *arg) {
|
21
21
|
const uint32_t now = micros();
|
@@ -28,14 +28,17 @@ void IRAM_ATTR BasicPulseCounterStorage::gpio_intr(BasicPulseCounterStorage *arg
|
|
28
28
|
switch (mode) {
|
29
29
|
case PULSE_COUNTER_DISABLE:
|
30
30
|
break;
|
31
|
-
case PULSE_COUNTER_INCREMENT:
|
32
|
-
arg->counter
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
31
|
+
case PULSE_COUNTER_INCREMENT: {
|
32
|
+
auto x = arg->counter + 1;
|
33
|
+
arg->counter = x;
|
34
|
+
} break;
|
35
|
+
case PULSE_COUNTER_DECREMENT: {
|
36
|
+
auto x = arg->counter - 1;
|
37
|
+
arg->counter = x;
|
38
|
+
} break;
|
37
39
|
}
|
38
40
|
}
|
41
|
+
|
39
42
|
bool BasicPulseCounterStorage::pulse_counter_setup(InternalGPIOPin *pin) {
|
40
43
|
this->pin = pin;
|
41
44
|
this->pin->setup();
|
@@ -43,6 +46,7 @@ bool BasicPulseCounterStorage::pulse_counter_setup(InternalGPIOPin *pin) {
|
|
43
46
|
this->pin->attach_interrupt(BasicPulseCounterStorage::gpio_intr, this, gpio::INTERRUPT_ANY_EDGE);
|
44
47
|
return true;
|
45
48
|
}
|
49
|
+
|
46
50
|
pulse_counter_t BasicPulseCounterStorage::read_raw_value() {
|
47
51
|
pulse_counter_t counter = this->counter;
|
48
52
|
pulse_counter_t ret = counter - this->last_value;
|
@@ -141,6 +145,7 @@ bool HwPulseCounterStorage::pulse_counter_setup(InternalGPIOPin *pin) {
|
|
141
145
|
}
|
142
146
|
return true;
|
143
147
|
}
|
148
|
+
|
144
149
|
pulse_counter_t HwPulseCounterStorage::read_raw_value() {
|
145
150
|
pulse_counter_t counter;
|
146
151
|
pcnt_get_counter_value(this->pcnt_unit, &counter);
|
@@ -148,7 +153,7 @@ pulse_counter_t HwPulseCounterStorage::read_raw_value() {
|
|
148
153
|
this->last_value = counter;
|
149
154
|
return ret;
|
150
155
|
}
|
151
|
-
#endif
|
156
|
+
#endif // HAS_PCNT
|
152
157
|
|
153
158
|
void PulseCounterSensor::setup() {
|
154
159
|
ESP_LOGCONFIG(TAG, "Setting up pulse counter '%s'...", this->name_.c_str());
|
@@ -9,7 +9,7 @@
|
|
9
9
|
#if defined(USE_ESP32) && !defined(USE_ESP32_VARIANT_ESP32C3)
|
10
10
|
#include <driver/pcnt.h>
|
11
11
|
#define HAS_PCNT
|
12
|
-
#endif
|
12
|
+
#endif // defined(USE_ESP32) && !defined(USE_ESP32_VARIANT_ESP32C3)
|
13
13
|
|
14
14
|
namespace esphome {
|
15
15
|
namespace pulse_counter {
|
@@ -22,9 +22,9 @@ enum PulseCounterCountMode {
|
|
22
22
|
|
23
23
|
#ifdef HAS_PCNT
|
24
24
|
using pulse_counter_t = int16_t;
|
25
|
-
#else
|
25
|
+
#else // HAS_PCNT
|
26
26
|
using pulse_counter_t = int32_t;
|
27
|
-
#endif
|
27
|
+
#endif // HAS_PCNT
|
28
28
|
|
29
29
|
struct PulseCounterStorageBase {
|
30
30
|
virtual bool pulse_counter_setup(InternalGPIOPin *pin) = 0;
|
@@ -57,7 +57,7 @@ struct HwPulseCounterStorage : public PulseCounterStorageBase {
|
|
57
57
|
pcnt_unit_t pcnt_unit;
|
58
58
|
pcnt_channel_t pcnt_channel;
|
59
59
|
};
|
60
|
-
#endif
|
60
|
+
#endif // HAS_PCNT
|
61
61
|
|
62
62
|
PulseCounterStorageBase *get_storage(bool hw_pcnt = false);
|
63
63
|
|
@@ -75,6 +75,8 @@ void PulseMeterSensor::loop() {
|
|
75
75
|
case MeterState::RUNNING: {
|
76
76
|
uint32_t delta_us = this->get_->last_detected_edge_us_ - this->last_processed_edge_us_;
|
77
77
|
float pulse_width_us = delta_us / float(this->get_->count_);
|
78
|
+
ESP_LOGV(TAG, "New pulse, delta: %" PRIu32 " µs, count: %" PRIu32 ", width: %.5f µs", delta_us,
|
79
|
+
this->get_->count_, pulse_width_us);
|
78
80
|
this->publish_state((60.0f * 1000000.0f) / pulse_width_us);
|
79
81
|
} break;
|
80
82
|
}
|
@@ -24,6 +24,7 @@ from esphome.const import (
|
|
24
24
|
)
|
25
25
|
from esphome.core import TimePeriod
|
26
26
|
|
27
|
+
from . import CONF_DRAW_FROM_ORIGIN, CONF_DRAW_ROUNDING
|
27
28
|
from .models import DriverChip
|
28
29
|
|
29
30
|
DEPENDENCIES = ["spi"]
|
@@ -41,7 +42,6 @@ COLOR_ORDERS = {
|
|
41
42
|
}
|
42
43
|
DATA_PIN_SCHEMA = pins.internal_gpio_output_pin_schema
|
43
44
|
|
44
|
-
CONF_DRAW_FROM_ORIGIN = "draw_from_origin"
|
45
45
|
DELAY_FLAG = 0xFF
|
46
46
|
|
47
47
|
|
@@ -78,56 +78,81 @@ def _validate(config):
|
|
78
78
|
return config
|
79
79
|
|
80
80
|
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
cv.Optional(
|
97
|
-
CONF_OFFSET_HEIGHT, default=0
|
98
|
-
): validate_dimension,
|
99
|
-
cv.Optional(
|
100
|
-
CONF_OFFSET_WIDTH, default=0
|
101
|
-
): validate_dimension,
|
102
|
-
}
|
103
|
-
),
|
104
|
-
),
|
105
|
-
cv.Optional(CONF_TRANSFORM): cv.Schema(
|
81
|
+
def power_of_two(value):
|
82
|
+
value = cv.int_range(1, 128)(value)
|
83
|
+
if value & (value - 1) != 0:
|
84
|
+
raise cv.Invalid("value must be a power of two")
|
85
|
+
return value
|
86
|
+
|
87
|
+
|
88
|
+
BASE_SCHEMA = display.FULL_DISPLAY_SCHEMA.extend(
|
89
|
+
cv.Schema(
|
90
|
+
{
|
91
|
+
cv.GenerateID(): cv.declare_id(QSPI_DBI),
|
92
|
+
cv.Optional(CONF_INIT_SEQUENCE): cv.ensure_list(map_sequence),
|
93
|
+
cv.Required(CONF_DIMENSIONS): cv.Any(
|
94
|
+
cv.dimensions,
|
95
|
+
cv.Schema(
|
106
96
|
{
|
107
|
-
cv.
|
108
|
-
cv.
|
109
|
-
cv.Optional(
|
97
|
+
cv.Required(CONF_WIDTH): validate_dimension,
|
98
|
+
cv.Required(CONF_HEIGHT): validate_dimension,
|
99
|
+
cv.Optional(CONF_OFFSET_HEIGHT, default=0): validate_dimension,
|
100
|
+
cv.Optional(CONF_OFFSET_WIDTH, default=0): validate_dimension,
|
110
101
|
}
|
111
102
|
),
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
103
|
+
),
|
104
|
+
cv.Optional(CONF_DRAW_FROM_ORIGIN, default=False): cv.boolean,
|
105
|
+
cv.Optional(CONF_RESET_PIN): pins.gpio_output_pin_schema,
|
106
|
+
cv.Optional(CONF_ENABLE_PIN): pins.gpio_output_pin_schema,
|
107
|
+
cv.Optional(CONF_BRIGHTNESS, default=0xD0): cv.int_range(
|
108
|
+
0, 0xFF, min_included=True, max_included=True
|
109
|
+
),
|
110
|
+
}
|
111
|
+
).extend(
|
112
|
+
spi.spi_device_schema(
|
113
|
+
cs_pin_required=False,
|
114
|
+
default_mode="MODE0",
|
115
|
+
default_data_rate=10e6,
|
116
|
+
quad=True,
|
117
|
+
)
|
118
|
+
)
|
119
|
+
)
|
120
|
+
|
121
|
+
|
122
|
+
def model_property(name, defaults, fallback):
|
123
|
+
return cv.Optional(name, default=defaults.get(name, fallback))
|
124
|
+
|
125
|
+
|
126
|
+
def model_schema(defaults):
|
127
|
+
transform = cv.Schema(
|
128
|
+
{
|
129
|
+
cv.Optional(CONF_MIRROR_X, default=False): cv.boolean,
|
130
|
+
cv.Optional(CONF_MIRROR_Y, default=False): cv.boolean,
|
131
|
+
}
|
132
|
+
)
|
133
|
+
if defaults.get(CONF_SWAP_XY, True):
|
134
|
+
transform = transform.extend(
|
135
|
+
{
|
136
|
+
cv.Optional(CONF_SWAP_XY, default=False): cv.boolean,
|
122
137
|
}
|
123
|
-
).extend(
|
124
|
-
spi.spi_device_schema(
|
125
|
-
cs_pin_required=False,
|
126
|
-
default_mode="MODE0",
|
127
|
-
default_data_rate=10e6,
|
128
|
-
quad=True,
|
129
|
-
)
|
130
138
|
)
|
139
|
+
return BASE_SCHEMA.extend(
|
140
|
+
{
|
141
|
+
model_property(CONF_INVERT_COLORS, defaults, False): cv.boolean,
|
142
|
+
model_property(CONF_COLOR_ORDER, defaults, "RGB"): cv.enum(
|
143
|
+
COLOR_ORDERS, upper=True
|
144
|
+
),
|
145
|
+
model_property(CONF_DRAW_ROUNDING, defaults, 2): power_of_two,
|
146
|
+
cv.Optional(CONF_TRANSFORM): transform,
|
147
|
+
}
|
148
|
+
)
|
149
|
+
|
150
|
+
|
151
|
+
CONFIG_SCHEMA = cv.All(
|
152
|
+
cv.typed_schema(
|
153
|
+
{k.upper(): model_schema(v.defaults) for k, v in DriverChip.chips.items()},
|
154
|
+
upper=True,
|
155
|
+
key=CONF_MODEL,
|
131
156
|
),
|
132
157
|
cv.only_with_esp_idf,
|
133
158
|
)
|
@@ -152,6 +177,7 @@ async def to_code(config):
|
|
152
177
|
cg.add(var.set_brightness(config[CONF_BRIGHTNESS]))
|
153
178
|
cg.add(var.set_model(config[CONF_MODEL]))
|
154
179
|
cg.add(var.set_draw_from_origin(config[CONF_DRAW_FROM_ORIGIN]))
|
180
|
+
cg.add(var.set_draw_rounding(config[CONF_DRAW_ROUNDING]))
|
155
181
|
if enable_pin := config.get(CONF_ENABLE_PIN):
|
156
182
|
enable = await cg.gpio_pin_expression(enable_pin)
|
157
183
|
cg.add(var.set_enable_pin(enable))
|
@@ -163,7 +189,8 @@ async def to_code(config):
|
|
163
189
|
if transform := config.get(CONF_TRANSFORM):
|
164
190
|
cg.add(var.set_mirror_x(transform[CONF_MIRROR_X]))
|
165
191
|
cg.add(var.set_mirror_y(transform[CONF_MIRROR_Y]))
|
166
|
-
|
192
|
+
# swap_xy is not implemented for some chips
|
193
|
+
cg.add(var.set_swap_xy(transform.get(CONF_SWAP_XY, False)))
|
167
194
|
|
168
195
|
if CONF_DIMENSIONS in config:
|
169
196
|
dimensions = config[CONF_DIMENSIONS]
|
@@ -1,5 +1,10 @@
|
|
1
1
|
# Commands
|
2
|
+
from esphome.const import CONF_INVERT_COLORS, CONF_SWAP_XY
|
3
|
+
|
4
|
+
from . import CONF_DRAW_ROUNDING
|
5
|
+
|
2
6
|
SW_RESET_CMD = 0x01
|
7
|
+
SLEEP_IN = 0x10
|
3
8
|
SLEEP_OUT = 0x11
|
4
9
|
NORON = 0x13
|
5
10
|
INVERT_OFF = 0x20
|
@@ -24,11 +29,12 @@ PAGESEL = 0xFE
|
|
24
29
|
class DriverChip:
|
25
30
|
chips = {}
|
26
31
|
|
27
|
-
def __init__(self, name: str):
|
32
|
+
def __init__(self, name: str, defaults=None):
|
28
33
|
name = name.upper()
|
29
34
|
self.name = name
|
30
35
|
self.chips[name] = self
|
31
36
|
self.initsequence = []
|
37
|
+
self.defaults = defaults or {}
|
32
38
|
|
33
39
|
def cmd(self, c, *args):
|
34
40
|
"""
|
@@ -59,9 +65,246 @@ chip.cmd(TEON, 0x00)
|
|
59
65
|
chip.cmd(PIXFMT, 0x55)
|
60
66
|
chip.cmd(NORON)
|
61
67
|
|
62
|
-
chip = DriverChip("AXS15231")
|
68
|
+
chip = DriverChip("AXS15231", {CONF_DRAW_ROUNDING: 8, CONF_SWAP_XY: False})
|
63
69
|
chip.cmd(0xBB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xA5)
|
64
70
|
chip.cmd(0xC1, 0x33)
|
65
71
|
chip.cmd(0xBB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00)
|
66
72
|
|
73
|
+
chip = DriverChip(
|
74
|
+
"JC4832W535",
|
75
|
+
{
|
76
|
+
CONF_DRAW_ROUNDING: 8,
|
77
|
+
CONF_SWAP_XY: False,
|
78
|
+
},
|
79
|
+
)
|
80
|
+
chip.cmd(DISPLAY_OFF)
|
81
|
+
chip.delay(20)
|
82
|
+
chip.cmd(SLEEP_IN)
|
83
|
+
chip.delay(80)
|
84
|
+
chip.cmd(SLEEP_OUT)
|
85
|
+
chip.cmd(INVERT_OFF)
|
86
|
+
# A magic sequence to enable the windowed drawing mode
|
87
|
+
chip.cmd(0xBB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xA5)
|
88
|
+
chip.cmd(0xC1, 0x33)
|
89
|
+
chip.cmd(0xBB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00)
|
90
|
+
|
91
|
+
chip = DriverChip("JC3636W518", {CONF_INVERT_COLORS: True})
|
92
|
+
chip.cmd(0xF0, 0x08)
|
93
|
+
chip.cmd(0xF2, 0x08)
|
94
|
+
chip.cmd(0x9B, 0x51)
|
95
|
+
chip.cmd(0x86, 0x53)
|
96
|
+
chip.cmd(0xF2, 0x80)
|
97
|
+
chip.cmd(0xF0, 0x00)
|
98
|
+
chip.cmd(0xF0, 0x01)
|
99
|
+
chip.cmd(0xF1, 0x01)
|
100
|
+
chip.cmd(0xB0, 0x54)
|
101
|
+
chip.cmd(0xB1, 0x3F)
|
102
|
+
chip.cmd(0xB2, 0x2A)
|
103
|
+
chip.cmd(0xB4, 0x46)
|
104
|
+
chip.cmd(0xB5, 0x34)
|
105
|
+
chip.cmd(0xB6, 0xD5)
|
106
|
+
chip.cmd(0xB7, 0x30)
|
107
|
+
chip.cmd(0xBA, 0x00)
|
108
|
+
chip.cmd(0xBB, 0x08)
|
109
|
+
chip.cmd(0xBC, 0x08)
|
110
|
+
chip.cmd(0xBD, 0x00)
|
111
|
+
chip.cmd(0xC0, 0x80)
|
112
|
+
chip.cmd(0xC1, 0x10)
|
113
|
+
chip.cmd(0xC2, 0x37)
|
114
|
+
chip.cmd(0xC3, 0x80)
|
115
|
+
chip.cmd(0xC4, 0x10)
|
116
|
+
chip.cmd(0xC5, 0x37)
|
117
|
+
chip.cmd(0xC6, 0xA9)
|
118
|
+
chip.cmd(0xC7, 0x41)
|
119
|
+
chip.cmd(0xC8, 0x51)
|
120
|
+
chip.cmd(0xC9, 0xA9)
|
121
|
+
chip.cmd(0xCA, 0x41)
|
122
|
+
chip.cmd(0xCB, 0x51)
|
123
|
+
chip.cmd(0xD0, 0x91)
|
124
|
+
chip.cmd(0xD1, 0x68)
|
125
|
+
chip.cmd(0xD2, 0x69)
|
126
|
+
chip.cmd(0xF5, 0x00, 0xA5)
|
127
|
+
chip.cmd(0xDD, 0x3F)
|
128
|
+
chip.cmd(0xDE, 0x3F)
|
129
|
+
chip.cmd(0xF1, 0x10)
|
130
|
+
chip.cmd(0xF0, 0x00)
|
131
|
+
chip.cmd(0xF0, 0x02)
|
132
|
+
chip.cmd(
|
133
|
+
0xE0,
|
134
|
+
0x70,
|
135
|
+
0x09,
|
136
|
+
0x12,
|
137
|
+
0x0C,
|
138
|
+
0x0B,
|
139
|
+
0x27,
|
140
|
+
0x38,
|
141
|
+
0x54,
|
142
|
+
0x4E,
|
143
|
+
0x19,
|
144
|
+
0x15,
|
145
|
+
0x15,
|
146
|
+
0x2C,
|
147
|
+
0x2F,
|
148
|
+
)
|
149
|
+
chip.cmd(
|
150
|
+
0xE1,
|
151
|
+
0x70,
|
152
|
+
0x08,
|
153
|
+
0x11,
|
154
|
+
0x0C,
|
155
|
+
0x0B,
|
156
|
+
0x27,
|
157
|
+
0x38,
|
158
|
+
0x43,
|
159
|
+
0x4C,
|
160
|
+
0x18,
|
161
|
+
0x14,
|
162
|
+
0x14,
|
163
|
+
0x2B,
|
164
|
+
0x2D,
|
165
|
+
)
|
166
|
+
chip.cmd(0xF0, 0x10)
|
167
|
+
chip.cmd(0xF3, 0x10)
|
168
|
+
chip.cmd(0xE0, 0x08)
|
169
|
+
chip.cmd(0xE1, 0x00)
|
170
|
+
chip.cmd(0xE2, 0x00)
|
171
|
+
chip.cmd(0xE3, 0x00)
|
172
|
+
chip.cmd(0xE4, 0xE0)
|
173
|
+
chip.cmd(0xE5, 0x06)
|
174
|
+
chip.cmd(0xE6, 0x21)
|
175
|
+
chip.cmd(0xE7, 0x00)
|
176
|
+
chip.cmd(0xE8, 0x05)
|
177
|
+
chip.cmd(0xE9, 0x82)
|
178
|
+
chip.cmd(0xEA, 0xDF)
|
179
|
+
chip.cmd(0xEB, 0x89)
|
180
|
+
chip.cmd(0xEC, 0x20)
|
181
|
+
chip.cmd(0xED, 0x14)
|
182
|
+
chip.cmd(0xEE, 0xFF)
|
183
|
+
chip.cmd(0xEF, 0x00)
|
184
|
+
chip.cmd(0xF8, 0xFF)
|
185
|
+
chip.cmd(0xF9, 0x00)
|
186
|
+
chip.cmd(0xFA, 0x00)
|
187
|
+
chip.cmd(0xFB, 0x30)
|
188
|
+
chip.cmd(0xFC, 0x00)
|
189
|
+
chip.cmd(0xFD, 0x00)
|
190
|
+
chip.cmd(0xFE, 0x00)
|
191
|
+
chip.cmd(0xFF, 0x00)
|
192
|
+
chip.cmd(0x60, 0x42)
|
193
|
+
chip.cmd(0x61, 0xE0)
|
194
|
+
chip.cmd(0x62, 0x40)
|
195
|
+
chip.cmd(0x63, 0x40)
|
196
|
+
chip.cmd(0x64, 0x02)
|
197
|
+
chip.cmd(0x65, 0x00)
|
198
|
+
chip.cmd(0x66, 0x40)
|
199
|
+
chip.cmd(0x67, 0x03)
|
200
|
+
chip.cmd(0x68, 0x00)
|
201
|
+
chip.cmd(0x69, 0x00)
|
202
|
+
chip.cmd(0x6A, 0x00)
|
203
|
+
chip.cmd(0x6B, 0x00)
|
204
|
+
chip.cmd(0x70, 0x42)
|
205
|
+
chip.cmd(0x71, 0xE0)
|
206
|
+
chip.cmd(0x72, 0x40)
|
207
|
+
chip.cmd(0x73, 0x40)
|
208
|
+
chip.cmd(0x74, 0x02)
|
209
|
+
chip.cmd(0x75, 0x00)
|
210
|
+
chip.cmd(0x76, 0x40)
|
211
|
+
chip.cmd(0x77, 0x03)
|
212
|
+
chip.cmd(0x78, 0x00)
|
213
|
+
chip.cmd(0x79, 0x00)
|
214
|
+
chip.cmd(0x7A, 0x00)
|
215
|
+
chip.cmd(0x7B, 0x00)
|
216
|
+
chip.cmd(0x80, 0x48)
|
217
|
+
chip.cmd(0x81, 0x00)
|
218
|
+
chip.cmd(0x82, 0x05)
|
219
|
+
chip.cmd(0x83, 0x02)
|
220
|
+
chip.cmd(0x84, 0xDD)
|
221
|
+
chip.cmd(0x85, 0x00)
|
222
|
+
chip.cmd(0x86, 0x00)
|
223
|
+
chip.cmd(0x87, 0x00)
|
224
|
+
chip.cmd(0x88, 0x48)
|
225
|
+
chip.cmd(0x89, 0x00)
|
226
|
+
chip.cmd(0x8A, 0x07)
|
227
|
+
chip.cmd(0x8B, 0x02)
|
228
|
+
chip.cmd(0x8C, 0xDF)
|
229
|
+
chip.cmd(0x8D, 0x00)
|
230
|
+
chip.cmd(0x8E, 0x00)
|
231
|
+
chip.cmd(0x8F, 0x00)
|
232
|
+
chip.cmd(0x90, 0x48)
|
233
|
+
chip.cmd(0x91, 0x00)
|
234
|
+
chip.cmd(0x92, 0x09)
|
235
|
+
chip.cmd(0x93, 0x02)
|
236
|
+
chip.cmd(0x94, 0xE1)
|
237
|
+
chip.cmd(0x95, 0x00)
|
238
|
+
chip.cmd(0x96, 0x00)
|
239
|
+
chip.cmd(0x97, 0x00)
|
240
|
+
chip.cmd(0x98, 0x48)
|
241
|
+
chip.cmd(0x99, 0x00)
|
242
|
+
chip.cmd(0x9A, 0x0B)
|
243
|
+
chip.cmd(0x9B, 0x02)
|
244
|
+
chip.cmd(0x9C, 0xE3)
|
245
|
+
chip.cmd(0x9D, 0x00)
|
246
|
+
chip.cmd(0x9E, 0x00)
|
247
|
+
chip.cmd(0x9F, 0x00)
|
248
|
+
chip.cmd(0xA0, 0x48)
|
249
|
+
chip.cmd(0xA1, 0x00)
|
250
|
+
chip.cmd(0xA2, 0x04)
|
251
|
+
chip.cmd(0xA3, 0x02)
|
252
|
+
chip.cmd(0xA4, 0xDC)
|
253
|
+
chip.cmd(0xA5, 0x00)
|
254
|
+
chip.cmd(0xA6, 0x00)
|
255
|
+
chip.cmd(0xA7, 0x00)
|
256
|
+
chip.cmd(0xA8, 0x48)
|
257
|
+
chip.cmd(0xA9, 0x00)
|
258
|
+
chip.cmd(0xAA, 0x06)
|
259
|
+
chip.cmd(0xAB, 0x02)
|
260
|
+
chip.cmd(0xAC, 0xDE)
|
261
|
+
chip.cmd(0xAD, 0x00)
|
262
|
+
chip.cmd(0xAE, 0x00)
|
263
|
+
chip.cmd(0xAF, 0x00)
|
264
|
+
chip.cmd(0xB0, 0x48)
|
265
|
+
chip.cmd(0xB1, 0x00)
|
266
|
+
chip.cmd(0xB2, 0x08)
|
267
|
+
chip.cmd(0xB3, 0x02)
|
268
|
+
chip.cmd(0xB4, 0xE0)
|
269
|
+
chip.cmd(0xB5, 0x00)
|
270
|
+
chip.cmd(0xB6, 0x00)
|
271
|
+
chip.cmd(0xB7, 0x00)
|
272
|
+
chip.cmd(0xB8, 0x48)
|
273
|
+
chip.cmd(0xB9, 0x00)
|
274
|
+
chip.cmd(0xBA, 0x0A)
|
275
|
+
chip.cmd(0xBB, 0x02)
|
276
|
+
chip.cmd(0xBC, 0xE2)
|
277
|
+
chip.cmd(0xBD, 0x00)
|
278
|
+
chip.cmd(0xBE, 0x00)
|
279
|
+
chip.cmd(0xBF, 0x00)
|
280
|
+
chip.cmd(0xC0, 0x12)
|
281
|
+
chip.cmd(0xC1, 0xAA)
|
282
|
+
chip.cmd(0xC2, 0x65)
|
283
|
+
chip.cmd(0xC3, 0x74)
|
284
|
+
chip.cmd(0xC4, 0x47)
|
285
|
+
chip.cmd(0xC5, 0x56)
|
286
|
+
chip.cmd(0xC6, 0x00)
|
287
|
+
chip.cmd(0xC7, 0x88)
|
288
|
+
chip.cmd(0xC8, 0x99)
|
289
|
+
chip.cmd(0xC9, 0x33)
|
290
|
+
chip.cmd(0xD0, 0x21)
|
291
|
+
chip.cmd(0xD1, 0xAA)
|
292
|
+
chip.cmd(0xD2, 0x65)
|
293
|
+
chip.cmd(0xD3, 0x74)
|
294
|
+
chip.cmd(0xD4, 0x47)
|
295
|
+
chip.cmd(0xD5, 0x56)
|
296
|
+
chip.cmd(0xD6, 0x00)
|
297
|
+
chip.cmd(0xD7, 0x88)
|
298
|
+
chip.cmd(0xD8, 0x99)
|
299
|
+
chip.cmd(0xD9, 0x33)
|
300
|
+
chip.cmd(0xF3, 0x01)
|
301
|
+
chip.cmd(0xF0, 0x00)
|
302
|
+
chip.cmd(0xF0, 0x01)
|
303
|
+
chip.cmd(0xF1, 0x01)
|
304
|
+
chip.cmd(0xA0, 0x0B)
|
305
|
+
chip.cmd(0xA3, 0x2A)
|
306
|
+
chip.cmd(0xA5, 0xC3)
|
307
|
+
chip.cmd(PIXFMT, 0x55)
|
308
|
+
|
309
|
+
|
67
310
|
DriverChip("Custom")
|