esphome 2024.12.3__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.
Files changed (355) hide show
  1. esphome/__main__.py +16 -3
  2. esphome/components/adc/__init__.py +17 -11
  3. esphome/components/adc/adc_sensor.h +17 -0
  4. esphome/components/adc/adc_sensor_common.cpp +55 -0
  5. esphome/components/adc/adc_sensor_esp32.cpp +8 -5
  6. esphome/components/adc/adc_sensor_esp8266.cpp +10 -6
  7. esphome/components/adc/adc_sensor_libretiny.cpp +11 -6
  8. esphome/components/adc/adc_sensor_rp2040.cpp +13 -10
  9. esphome/components/adc/sensor.py +9 -3
  10. esphome/components/ads1115/ads1115.cpp +56 -7
  11. esphome/components/ads1115/ads1115.h +13 -1
  12. esphome/components/ads1115/sensor/__init__.py +16 -0
  13. esphome/components/ads1115/sensor/ads1115_sensor.cpp +2 -1
  14. esphome/components/ads1115/sensor/ads1115_sensor.h +2 -0
  15. esphome/components/animation/__init__.py +23 -261
  16. esphome/components/animation/animation.cpp +2 -2
  17. esphome/components/animation/animation.h +2 -1
  18. esphome/components/api/api_pb2.cpp +14 -0
  19. esphome/components/api/api_pb2.h +1 -0
  20. esphome/components/audio/__init__.py +112 -0
  21. esphome/components/audio/audio.cpp +67 -0
  22. esphome/components/audio/audio.h +125 -7
  23. esphome/components/audio/audio_decoder.cpp +361 -0
  24. esphome/components/audio/audio_decoder.h +135 -0
  25. esphome/components/audio/audio_reader.cpp +308 -0
  26. esphome/components/audio/audio_reader.h +85 -0
  27. esphome/components/audio/audio_resampler.cpp +159 -0
  28. esphome/components/audio/audio_resampler.h +101 -0
  29. esphome/components/audio/audio_transfer_buffer.cpp +165 -0
  30. esphome/components/audio/audio_transfer_buffer.h +139 -0
  31. esphome/components/audio_adc/__init__.py +41 -0
  32. esphome/components/audio_adc/audio_adc.h +17 -0
  33. esphome/components/audio_adc/automation.h +23 -0
  34. esphome/components/bk72xx/__init__.py +1 -0
  35. esphome/components/ble_client/ble_client.cpp +1 -2
  36. esphome/components/ble_client/sensor/__init__.py +1 -1
  37. esphome/components/ble_client/text_sensor/__init__.py +1 -1
  38. esphome/components/bluetooth_proxy/bluetooth_connection.cpp +5 -0
  39. esphome/components/bluetooth_proxy/bluetooth_connection.h +1 -0
  40. esphome/components/bluetooth_proxy/bluetooth_proxy.cpp +5 -0
  41. esphome/components/ch422g/ch422g.h +2 -0
  42. esphome/components/climate/__init__.py +1 -1
  43. esphome/components/climate_ir/climate_ir.cpp +2 -1
  44. esphome/components/coolix/coolix.cpp +2 -1
  45. esphome/components/custom/__init__.py +0 -3
  46. esphome/components/custom/binary_sensor/__init__.py +2 -28
  47. esphome/components/custom/climate/__init__.py +2 -27
  48. esphome/components/custom/cover/__init__.py +2 -27
  49. esphome/components/custom/light/__init__.py +2 -27
  50. esphome/components/custom/output/__init__.py +2 -58
  51. esphome/components/custom/sensor/__init__.py +2 -24
  52. esphome/components/custom/switch/__init__.py +2 -24
  53. esphome/components/custom/text_sensor/__init__.py +2 -29
  54. esphome/components/custom_component/__init__.py +3 -27
  55. esphome/components/daly_bms/daly_bms.cpp +6 -0
  56. esphome/components/daly_bms/daly_bms.h +2 -0
  57. esphome/components/daly_bms/sensor.py +6 -0
  58. esphome/components/debug/debug_component.cpp +4 -0
  59. esphome/components/debug/debug_component.h +14 -0
  60. esphome/components/debug/debug_esp32.cpp +154 -74
  61. esphome/components/dfplayer/dfplayer.cpp +15 -2
  62. esphome/components/dfrobot_sen0395/dfrobot_sen0395.cpp +2 -1
  63. esphome/components/dht/dht.cpp +2 -1
  64. esphome/components/display/__init__.py +18 -5
  65. esphome/components/display/display.cpp +2 -1
  66. esphome/components/display/rect.cpp +2 -1
  67. esphome/components/es7210/__init__.py +0 -0
  68. esphome/components/es7210/audio_adc.py +51 -0
  69. esphome/components/es7210/es7210.cpp +228 -0
  70. esphome/components/es7210/es7210.h +62 -0
  71. esphome/components/es7210/es7210_const.h +129 -0
  72. esphome/components/es7243e/__init__.py +0 -0
  73. esphome/components/es7243e/audio_adc.py +34 -0
  74. esphome/components/es7243e/es7243e.cpp +125 -0
  75. esphome/components/es7243e/es7243e.h +37 -0
  76. esphome/components/es7243e/es7243e_const.h +54 -0
  77. esphome/components/es8156/__init__.py +0 -0
  78. esphome/components/es8156/audio_dac.py +27 -0
  79. esphome/components/es8156/es8156.cpp +87 -0
  80. esphome/components/es8156/es8156.h +51 -0
  81. esphome/components/es8156/es8156_const.h +68 -0
  82. esphome/components/es8311/audio_dac.py +1 -2
  83. esphome/components/esp32/__init__.py +1 -0
  84. esphome/components/esp32/core.cpp +5 -1
  85. esphome/components/esp32/gpio.h +2 -0
  86. esphome/components/esp32_ble/__init__.py +39 -0
  87. esphome/components/esp32_ble/queue.h +4 -4
  88. esphome/components/esp32_ble_client/ble_client_base.cpp +46 -0
  89. esphome/components/esp32_ble_client/ble_client_base.h +2 -0
  90. esphome/components/esp32_ble_server/__init__.py +582 -12
  91. esphome/components/esp32_ble_server/ble_characteristic.cpp +48 -60
  92. esphome/components/esp32_ble_server/ble_characteristic.h +24 -17
  93. esphome/components/esp32_ble_server/ble_descriptor.cpp +21 -9
  94. esphome/components/esp32_ble_server/ble_descriptor.h +17 -6
  95. esphome/components/esp32_ble_server/ble_server.cpp +62 -67
  96. esphome/components/esp32_ble_server/ble_server.h +28 -32
  97. esphome/components/esp32_ble_server/ble_server_automations.cpp +77 -0
  98. esphome/components/esp32_ble_server/ble_server_automations.h +115 -0
  99. esphome/components/esp32_ble_server/ble_service.cpp +17 -15
  100. esphome/components/esp32_ble_server/ble_service.h +10 -14
  101. esphome/components/esp32_ble_tracker/__init__.py +6 -39
  102. esphome/components/esp32_ble_tracker/esp32_ble_tracker.cpp +33 -10
  103. esphome/components/esp32_ble_tracker/esp32_ble_tracker.h +8 -4
  104. esphome/components/esp32_improv/__init__.py +2 -8
  105. esphome/components/esp32_improv/esp32_improv_component.cpp +21 -20
  106. esphome/components/esp32_improv/esp32_improv_component.h +3 -4
  107. esphome/components/esp32_rmt/__init__.py +28 -3
  108. esphome/components/esp32_rmt_led_strip/led_strip.cpp +73 -6
  109. esphome/components/esp32_rmt_led_strip/led_strip.h +21 -3
  110. esphome/components/esp32_rmt_led_strip/light.py +72 -7
  111. esphome/components/esp32_touch/esp32_touch.cpp +5 -0
  112. esphome/components/esp8266/__init__.py +1 -0
  113. esphome/components/esp8266/gpio.h +1 -0
  114. esphome/components/ethernet/__init__.py +10 -10
  115. esphome/components/event/event.cpp +4 -2
  116. esphome/components/event/event.h +2 -0
  117. esphome/components/event_emitter/__init__.py +5 -0
  118. esphome/components/event_emitter/event_emitter.cpp +14 -0
  119. esphome/components/event_emitter/event_emitter.h +63 -0
  120. esphome/components/gcja5/gcja5.cpp +2 -1
  121. esphome/components/haier/haier_base.cpp +2 -1
  122. esphome/components/haier/hon_climate.cpp +2 -1
  123. esphome/components/heatpumpir/heatpumpir.cpp +2 -1
  124. esphome/components/host/__init__.py +1 -0
  125. esphome/components/host/gpio.h +1 -0
  126. esphome/components/http_request/http_request.h +2 -2
  127. esphome/components/http_request/http_request_arduino.cpp +1 -1
  128. esphome/components/http_request/http_request_idf.cpp +1 -1
  129. esphome/components/i2c/i2c_bus_esp_idf.cpp +4 -0
  130. esphome/components/i2s_audio/microphone/i2s_audio_microphone.cpp +7 -5
  131. esphome/components/i2s_audio/speaker/__init__.py +53 -6
  132. esphome/components/i2s_audio/speaker/i2s_audio_speaker.cpp +92 -46
  133. esphome/components/i2s_audio/speaker/i2s_audio_speaker.h +8 -0
  134. esphome/components/ili9xxx/display.py +29 -11
  135. esphome/components/ili9xxx/ili9xxx_display.cpp +2 -5
  136. esphome/components/ili9xxx/ili9xxx_display.h +2 -1
  137. esphome/components/image/__init__.py +443 -255
  138. esphome/components/image/image.cpp +115 -61
  139. esphome/components/image/image.h +15 -24
  140. esphome/components/json/json_util.cpp +8 -34
  141. esphome/components/libretiny/__init__.py +1 -0
  142. esphome/components/libretiny/gpio_arduino.h +1 -0
  143. esphome/components/light/light_color_values.h +1 -1
  144. esphome/components/logger/__init__.py +43 -7
  145. esphome/components/logger/logger.cpp +16 -11
  146. esphome/components/logger/logger.h +11 -7
  147. esphome/components/logger/select/__init__.py +29 -0
  148. esphome/components/logger/select/logger_level_select.cpp +27 -0
  149. esphome/components/logger/select/logger_level_select.h +15 -0
  150. esphome/components/lvgl/__init__.py +96 -73
  151. esphome/components/lvgl/automation.py +39 -7
  152. esphome/components/lvgl/defines.py +8 -2
  153. esphome/components/lvgl/lvgl_esphome.cpp +8 -15
  154. esphome/components/lvgl/lvgl_esphome.h +20 -5
  155. esphome/components/lvgl/schemas.py +25 -14
  156. esphome/components/lvgl/trigger.py +27 -3
  157. esphome/components/lvgl/widgets/dropdown.py +1 -1
  158. esphome/components/lvgl/widgets/keyboard.py +8 -1
  159. esphome/components/lvgl/widgets/meter.py +2 -1
  160. esphome/components/lvgl/widgets/msgbox.py +1 -1
  161. esphome/components/lvgl/widgets/obj.py +1 -12
  162. esphome/components/lvgl/widgets/page.py +37 -2
  163. esphome/components/lvgl/widgets/tabview.py +1 -1
  164. esphome/components/max6956/max6956.h +2 -0
  165. esphome/components/mcp23016/mcp23016.h +2 -0
  166. esphome/components/mcp23xxx_base/mcp23xxx_base.h +2 -0
  167. esphome/components/mdns/__init__.py +1 -1
  168. esphome/components/media_player/__init__.py +37 -8
  169. esphome/components/media_player/automation.h +11 -2
  170. esphome/components/media_player/media_player.cpp +8 -0
  171. esphome/components/media_player/media_player.h +8 -4
  172. esphome/components/micronova/switch/micronova_switch.cpp +4 -2
  173. esphome/components/midea/ac_automations.h +3 -1
  174. esphome/components/midea/air_conditioner.cpp +7 -5
  175. esphome/components/midea/air_conditioner.h +1 -1
  176. esphome/components/midea/climate.py +4 -2
  177. esphome/components/midea/ir_transmitter.h +36 -5
  178. esphome/components/mixer/__init__.py +0 -0
  179. esphome/components/mixer/speaker/__init__.py +172 -0
  180. esphome/components/mixer/speaker/automation.h +19 -0
  181. esphome/components/mixer/speaker/mixer_speaker.cpp +624 -0
  182. esphome/components/mixer/speaker/mixer_speaker.h +207 -0
  183. esphome/components/mpr121/mpr121.h +2 -0
  184. esphome/components/mqtt/__init__.py +1 -1
  185. esphome/components/mqtt/mqtt_client.cpp +7 -1
  186. esphome/components/mqtt/mqtt_client.h +1 -1
  187. esphome/components/mqtt/mqtt_climate.cpp +2 -2
  188. esphome/components/network/ip_address.h +2 -0
  189. esphome/components/nextion/automation.h +17 -0
  190. esphome/components/nextion/display.py +42 -17
  191. esphome/components/nextion/nextion.cpp +4 -10
  192. esphome/components/nextion/nextion.h +89 -82
  193. esphome/components/nextion/nextion_commands.cpp +10 -10
  194. esphome/components/ntc/sensor.py +2 -4
  195. esphome/components/online_image/__init__.py +98 -46
  196. esphome/components/online_image/bmp_image.cpp +101 -0
  197. esphome/components/online_image/bmp_image.h +40 -0
  198. esphome/components/online_image/image_decoder.cpp +28 -2
  199. esphome/components/online_image/image_decoder.h +24 -15
  200. esphome/components/online_image/jpeg_image.cpp +90 -0
  201. esphome/components/online_image/jpeg_image.h +34 -0
  202. esphome/components/online_image/online_image.cpp +112 -53
  203. esphome/components/online_image/online_image.h +24 -7
  204. esphome/components/online_image/png_image.cpp +7 -3
  205. esphome/components/online_image/png_image.h +2 -1
  206. esphome/components/opentherm/__init__.py +73 -7
  207. esphome/components/opentherm/automation.h +25 -0
  208. esphome/components/opentherm/const.py +1 -0
  209. esphome/components/opentherm/generate.py +39 -6
  210. esphome/components/opentherm/hub.cpp +117 -79
  211. esphome/components/opentherm/hub.h +31 -15
  212. esphome/components/opentherm/opentherm.cpp +47 -23
  213. esphome/components/opentherm/opentherm.h +27 -6
  214. esphome/components/opentherm/opentherm_macros.h +11 -0
  215. esphome/components/opentherm/schema.py +78 -1
  216. esphome/components/opentherm/validate.py +7 -2
  217. esphome/components/pca6416a/pca6416a.h +2 -0
  218. esphome/components/pca9554/pca9554.h +2 -0
  219. esphome/components/pcf8574/pcf8574.h +2 -0
  220. esphome/components/preferences/__init__.py +2 -4
  221. esphome/components/preferences/syncer.h +10 -3
  222. esphome/components/prometheus/prometheus_handler.cpp +313 -0
  223. esphome/components/prometheus/prometheus_handler.h +48 -7
  224. esphome/components/psram/psram.cpp +8 -1
  225. esphome/components/pulse_counter/pulse_counter_sensor.cpp +14 -9
  226. esphome/components/pulse_counter/pulse_counter_sensor.h +4 -4
  227. esphome/components/pulse_meter/pulse_meter_sensor.cpp +2 -0
  228. esphome/components/qspi_dbi/__init__.py +3 -0
  229. esphome/components/qspi_dbi/display.py +74 -47
  230. esphome/components/qspi_dbi/models.py +245 -2
  231. esphome/components/qspi_dbi/qspi_dbi.cpp +9 -16
  232. esphome/components/qspi_dbi/qspi_dbi.h +2 -2
  233. esphome/components/remote_base/__init__.py +77 -25
  234. esphome/components/remote_base/remote_base.cpp +1 -1
  235. esphome/components/remote_base/remote_base.h +20 -2
  236. esphome/components/remote_base/toto_protocol.cpp +100 -0
  237. esphome/components/remote_base/toto_protocol.h +45 -0
  238. esphome/components/remote_receiver/__init__.py +55 -10
  239. esphome/components/remote_receiver/remote_receiver.h +36 -3
  240. esphome/components/remote_receiver/remote_receiver_esp32.cpp +145 -6
  241. esphome/components/remote_transmitter/__init__.py +62 -4
  242. esphome/components/remote_transmitter/remote_transmitter.h +21 -2
  243. esphome/components/remote_transmitter/remote_transmitter_esp32.cpp +140 -4
  244. esphome/components/remote_transmitter/remote_transmitter_esp8266.cpp +3 -3
  245. esphome/components/remote_transmitter/remote_transmitter_libretiny.cpp +3 -3
  246. esphome/components/resampler/__init__.py +0 -0
  247. esphome/components/resampler/speaker/__init__.py +103 -0
  248. esphome/components/resampler/speaker/resampler_speaker.cpp +318 -0
  249. esphome/components/resampler/speaker/resampler_speaker.h +107 -0
  250. esphome/components/resistance/resistance_sensor.h +2 -3
  251. esphome/components/resistance/sensor.py +2 -9
  252. esphome/components/rotary_encoder/rotary_encoder.cpp +8 -4
  253. esphome/components/rp2040/__init__.py +1 -0
  254. esphome/components/rp2040/gpio.h +1 -0
  255. esphome/components/rtl87xx/__init__.py +2 -0
  256. esphome/components/sdl/binary_sensor.py +270 -0
  257. esphome/components/sdl/sdl_esphome.cpp +16 -0
  258. esphome/components/sdl/sdl_esphome.h +9 -0
  259. esphome/components/seeed_mr60bha2/binary_sensor.py +25 -0
  260. esphome/components/seeed_mr60bha2/seeed_mr60bha2.cpp +26 -2
  261. esphome/components/seeed_mr60bha2/seeed_mr60bha2.h +9 -20
  262. esphome/components/seeed_mr60bha2/sensor.py +9 -1
  263. esphome/components/sn74hc165/sn74hc165.h +3 -0
  264. esphome/components/sn74hc595/sn74hc595.h +3 -0
  265. esphome/components/speaker/__init__.py +5 -4
  266. esphome/components/speaker/media_player/__init__.py +458 -0
  267. esphome/components/speaker/media_player/audio_pipeline.cpp +568 -0
  268. esphome/components/speaker/media_player/audio_pipeline.h +159 -0
  269. esphome/components/speaker/media_player/automation.h +26 -0
  270. esphome/components/speaker/media_player/speaker_media_player.cpp +577 -0
  271. esphome/components/speaker/media_player/speaker_media_player.h +160 -0
  272. esphome/components/speaker/speaker.h +20 -0
  273. esphome/components/spi/__init__.py +1 -5
  274. esphome/components/spi/spi.cpp +7 -1
  275. esphome/components/spi/spi.h +21 -2
  276. esphome/components/spi_led_strip/light.py +3 -5
  277. esphome/components/spi_led_strip/spi_led_strip.cpp +67 -0
  278. esphome/components/spi_led_strip/spi_led_strip.h +8 -60
  279. esphome/components/sprinkler/sprinkler.cpp +3 -1
  280. esphome/components/sx1509/sx1509_gpio_pin.h +2 -0
  281. esphome/components/tca9555/tca9555.h +2 -0
  282. esphome/components/toshiba/toshiba.cpp +2 -1
  283. esphome/components/tuya/light/tuya_light.cpp +4 -2
  284. esphome/components/uart/uart_component_esp32_arduino.cpp +2 -2
  285. esphome/components/uart/uart_component_esp_idf.cpp +2 -2
  286. esphome/components/udp/__init__.py +8 -2
  287. esphome/components/udp/udp_component.cpp +25 -56
  288. esphome/components/udp/udp_component.h +3 -0
  289. esphome/components/uponor_smatrix/sensor/__init__.py +14 -4
  290. esphome/components/uponor_smatrix/sensor/uponor_smatrix_sensor.cpp +5 -0
  291. esphome/components/uponor_smatrix/sensor/uponor_smatrix_sensor.h +1 -0
  292. esphome/components/uptime/text_sensor/__init__.py +19 -0
  293. esphome/components/uptime/text_sensor/uptime_text_sensor.cpp +63 -0
  294. esphome/components/uptime/text_sensor/uptime_text_sensor.h +25 -0
  295. esphome/components/voice_assistant/voice_assistant.cpp +24 -14
  296. esphome/components/voice_assistant/voice_assistant.h +8 -0
  297. esphome/components/waveshare_epaper/display.py +22 -1
  298. esphome/components/waveshare_epaper/waveshare_213v3.cpp +9 -3
  299. esphome/components/waveshare_epaper/waveshare_epaper.cpp +1155 -44
  300. esphome/components/waveshare_epaper/waveshare_epaper.h +208 -7
  301. esphome/components/web_server/web_server.cpp +28 -6
  302. esphome/components/weikai/weikai.h +2 -0
  303. esphome/components/wifi/__init__.py +6 -6
  304. esphome/components/wifi/wifi_component.cpp +1 -1
  305. esphome/components/wifi/wifi_component_esp32_arduino.cpp +30 -1
  306. esphome/components/wireguard/__init__.py +2 -2
  307. esphome/components/xl9535/xl9535.h +2 -0
  308. esphome/components/xxtea/__init__.py +3 -0
  309. esphome/components/xxtea/xxtea.cpp +46 -0
  310. esphome/components/xxtea/xxtea.h +26 -0
  311. esphome/components/yashima/yashima.cpp +2 -1
  312. esphome/config.py +9 -5
  313. esphome/config_validation.py +55 -17
  314. esphome/const.py +7 -10
  315. esphome/core/__init__.py +6 -13
  316. esphome/core/base_automation.h +1 -0
  317. esphome/core/config.py +57 -72
  318. esphome/core/defines.h +9 -1
  319. esphome/core/gpio.h +7 -0
  320. esphome/core/helpers.cpp +19 -15
  321. esphome/core/helpers.h +57 -8
  322. esphome/core/log.h +9 -7
  323. esphome/cpp_generator.py +2 -2
  324. esphome/espota2.py +3 -2
  325. esphome/loader.py +12 -4
  326. esphome/log.py +5 -7
  327. esphome/yaml_util.py +2 -2
  328. {esphome-2024.12.3.dist-info → esphome-2025.2.0b1.dist-info}/METADATA +12 -7
  329. {esphome-2024.12.3.dist-info → esphome-2025.2.0b1.dist-info}/RECORD +338 -289
  330. esphome/components/custom/binary_sensor/custom_binary_sensor.cpp +0 -16
  331. esphome/components/custom/binary_sensor/custom_binary_sensor.h +0 -26
  332. esphome/components/custom/climate/custom_climate.h +0 -22
  333. esphome/components/custom/cover/custom_cover.h +0 -21
  334. esphome/components/custom/light/custom_light_output.h +0 -24
  335. esphome/components/custom/output/custom_output.h +0 -37
  336. esphome/components/custom/sensor/custom_sensor.cpp +0 -16
  337. esphome/components/custom/sensor/custom_sensor.h +0 -24
  338. esphome/components/custom/switch/custom_switch.cpp +0 -16
  339. esphome/components/custom/switch/custom_switch.h +0 -24
  340. esphome/components/custom/text_sensor/custom_text_sensor.cpp +0 -16
  341. esphome/components/custom/text_sensor/custom_text_sensor.h +0 -26
  342. esphome/components/custom_component/custom_component.h +0 -28
  343. esphome/components/esp32_ble_server/ble_2901.cpp +0 -18
  344. esphome/components/esp32_ble_server/ble_2901.h +0 -19
  345. esphome/components/resistance_sampler/__init__.py +0 -6
  346. esphome/components/resistance_sampler/resistance_sampler.h +0 -10
  347. esphome/components/uptime/{sensor.py → sensor/__init__.py} +3 -3
  348. /esphome/components/uptime/{uptime_seconds_sensor.cpp → sensor/uptime_seconds_sensor.cpp} +0 -0
  349. /esphome/components/uptime/{uptime_seconds_sensor.h → sensor/uptime_seconds_sensor.h} +0 -0
  350. /esphome/components/uptime/{uptime_timestamp_sensor.cpp → sensor/uptime_timestamp_sensor.cpp} +0 -0
  351. /esphome/components/uptime/{uptime_timestamp_sensor.h → sensor/uptime_timestamp_sensor.h} +0 -0
  352. {esphome-2024.12.3.dist-info → esphome-2025.2.0b1.dist-info}/LICENSE +0 -0
  353. {esphome-2024.12.3.dist-info → esphome-2025.2.0b1.dist-info}/WHEEL +0 -0
  354. {esphome-2024.12.3.dist-info → esphome-2025.2.0b1.dist-info}/entry_points.txt +0 -0
  355. {esphome-2024.12.3.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 sensor state as prometheus data point
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 Light Values state as prometheus data point
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 switch Values state as prometheus data point
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 Values state as prometheus data point
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 Values state as prometheus data point
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 lock Values state as prometheus data point
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
- ESP_LOGCONFIG(TAG, " Size: %d KB", heap_caps_get_total_size(MALLOC_CAP_SPIRAM) / 1024);
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
- break;
34
- case PULSE_COUNTER_DECREMENT:
35
- arg->counter--;
36
- break;
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
  }
@@ -1 +1,4 @@
1
1
  CODEOWNERS = ["@clydebarrow"]
2
+
3
+ CONF_DRAW_FROM_ORIGIN = "draw_from_origin"
4
+ CONF_DRAW_ROUNDING = "draw_rounding"
@@ -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
- CONFIG_SCHEMA = cv.All(
82
- display.FULL_DISPLAY_SCHEMA.extend(
83
- cv.Schema(
84
- {
85
- cv.GenerateID(): cv.declare_id(QSPI_DBI),
86
- cv.Required(CONF_MODEL): cv.one_of(
87
- *DriverChip.chips.keys(), upper=True
88
- ),
89
- cv.Optional(CONF_INIT_SEQUENCE): cv.ensure_list(map_sequence),
90
- cv.Required(CONF_DIMENSIONS): cv.Any(
91
- cv.dimensions,
92
- cv.Schema(
93
- {
94
- cv.Required(CONF_WIDTH): validate_dimension,
95
- cv.Required(CONF_HEIGHT): validate_dimension,
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.Optional(CONF_MIRROR_X, default=False): cv.boolean,
108
- cv.Optional(CONF_MIRROR_Y, default=False): cv.boolean,
109
- cv.Optional(CONF_SWAP_XY, default=False): cv.boolean,
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
- cv.Optional(CONF_COLOR_ORDER, default="RGB"): cv.enum(
113
- COLOR_ORDERS, upper=True
114
- ),
115
- cv.Optional(CONF_INVERT_COLORS, default=False): cv.boolean,
116
- cv.Optional(CONF_RESET_PIN): pins.gpio_output_pin_schema,
117
- cv.Optional(CONF_ENABLE_PIN): pins.gpio_output_pin_schema,
118
- cv.Optional(CONF_BRIGHTNESS, default=0xD0): cv.int_range(
119
- 0, 0xFF, min_included=True, max_included=True
120
- ),
121
- cv.Optional(CONF_DRAW_FROM_ORIGIN, default=False): cv.boolean,
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
- cg.add(var.set_swap_xy(transform[CONF_SWAP_XY]))
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")