From 165219cee06ffd0ad1c0c297db41792e1d4a6830 Mon Sep 17 00:00:00 2001 From: 0Xiao0 <511201264@qq.com> Date: Mon, 2 Feb 2026 14:29:15 +0800 Subject: [PATCH] first commit --- .clangd | 2 + .../ISSUE_TEMPLATE/01_build_install_bug.yml | 103 ++ .github/ISSUE_TEMPLATE/02_runtime_bug.yml | 115 ++ .github/ISSUE_TEMPLATE/03_feature_request.yml | 34 + .github/ISSUE_TEMPLATE/config.yml | 8 + .github/workflows/build.yml | 106 ++ .gitignore | 18 + CMakeLists.txt | 14 + LICENSE | 22 + README.md | 161 ++ README_en.md | 157 ++ README_ja.md | 157 ++ docs/mcp-based-graph.jpg | Bin 0 -> 97848 bytes docs/mcp-protocol.md | 269 ++++ docs/mcp-usage.md | 115 ++ docs/mqtt-udp.md | 393 +++++ docs/v0/AtomMatrix-echo-base.jpg | Bin 0 -> 37326 bytes docs/v0/ESP32-BreadBoard.jpg | Bin 0 -> 96480 bytes docs/v0/atoms3r-echo-base.jpg | Bin 0 -> 25250 bytes docs/v0/esp32s3-box3.jpg | Bin 0 -> 17509 bytes docs/v0/lichuang-s3.jpg | Bin 0 -> 20482 bytes docs/v0/m5stack-cores3.jpg | Bin 0 -> 19191 bytes docs/v0/magiclick-2p4.jpg | Bin 0 -> 11988 bytes .../waveshare-esp32-s3-touch-amoled-1.8.jpg | Bin 0 -> 47563 bytes docs/v0/wiring.jpg | Bin 0 -> 124026 bytes docs/v1/atoms3r.jpg | Bin 0 -> 28224 bytes docs/v1/electron-bot.png | Bin 0 -> 21247 bytes docs/v1/esp-hi.jpg | Bin 0 -> 17933 bytes docs/v1/esp-sparkbot.jpg | Bin 0 -> 36275 bytes docs/v1/espbox3.jpg | Bin 0 -> 31581 bytes docs/v1/lichuang-s3.jpg | Bin 0 -> 39732 bytes docs/v1/lilygo-t-circle-s3.jpg | Bin 0 -> 48137 bytes docs/v1/m5cores3.jpg | Bin 0 -> 23993 bytes docs/v1/magiclick.jpg | Bin 0 -> 44916 bytes docs/v1/movecall-cuican-esp32s3.jpg | Bin 0 -> 50781 bytes docs/v1/movecall-moji-esp32s3.jpg | Bin 0 -> 46522 bytes docs/v1/otto-robot.png | Bin 0 -> 27392 bytes docs/v1/sensecap_watcher.jpg | Bin 0 -> 39233 bytes docs/v1/waveshare.jpg | Bin 0 -> 23034 bytes docs/v1/wiring2.jpg | Bin 0 -> 58797 bytes docs/v1/wmnologo_xingzhi_0.96.jpg | Bin 0 -> 24754 bytes docs/v1/wmnologo_xingzhi_1.54.jpg | Bin 0 -> 52550 bytes docs/v1/xmini-c3.jpg | Bin 0 -> 30530 bytes docs/websocket.md | 495 ++++++ main/CMakeLists.txt | 841 ++++++++++ main/Kconfig.projbuild | 588 +++++++ main/application.cc | 883 ++++++++++ main/application.h | 110 ++ main/assets.cc | 406 +++++ main/assets.h | 65 + main/assets/common/exclamation.ogg | Bin 0 -> 1663 bytes main/assets/common/low_battery.ogg | Bin 0 -> 2269 bytes main/assets/common/popup.ogg | Bin 0 -> 1148 bytes main/assets/common/success.ogg | Bin 0 -> 2012 bytes main/assets/common/vibration.ogg | Bin 0 -> 1574 bytes main/assets/locales/ar-SA/0.ogg | Bin 0 -> 1940 bytes main/assets/locales/ar-SA/1.ogg | Bin 0 -> 1658 bytes main/assets/locales/ar-SA/2.ogg | Bin 0 -> 1938 bytes main/assets/locales/ar-SA/3.ogg | Bin 0 -> 1861 bytes main/assets/locales/ar-SA/4.ogg | Bin 0 -> 1949 bytes main/assets/locales/ar-SA/5.ogg | Bin 0 -> 1755 bytes main/assets/locales/ar-SA/6.ogg | Bin 0 -> 1825 bytes main/assets/locales/ar-SA/7.ogg | Bin 0 -> 1721 bytes main/assets/locales/ar-SA/8.ogg | Bin 0 -> 1977 bytes main/assets/locales/ar-SA/9.ogg | Bin 0 -> 2063 bytes main/assets/locales/ar-SA/activation.ogg | Bin 0 -> 13539 bytes main/assets/locales/ar-SA/err_pin.ogg | Bin 0 -> 4416 bytes main/assets/locales/ar-SA/err_reg.ogg | Bin 0 -> 9211 bytes main/assets/locales/ar-SA/language.json | 55 + main/assets/locales/ar-SA/upgrade.ogg | Bin 0 -> 4104 bytes main/assets/locales/ar-SA/welcome.ogg | Bin 0 -> 2971 bytes main/assets/locales/ar-SA/wificonfig.ogg | Bin 0 -> 5461 bytes main/assets/locales/cs-CZ/0.ogg | Bin 0 -> 1781 bytes main/assets/locales/cs-CZ/1.ogg | Bin 0 -> 2000 bytes main/assets/locales/cs-CZ/2.ogg | Bin 0 -> 1788 bytes main/assets/locales/cs-CZ/3.ogg | Bin 0 -> 1531 bytes main/assets/locales/cs-CZ/4.ogg | Bin 0 -> 1880 bytes main/assets/locales/cs-CZ/5.ogg | Bin 0 -> 1857 bytes main/assets/locales/cs-CZ/6.ogg | Bin 0 -> 1871 bytes main/assets/locales/cs-CZ/7.ogg | Bin 0 -> 2052 bytes main/assets/locales/cs-CZ/8.ogg | Bin 0 -> 2057 bytes main/assets/locales/cs-CZ/9.ogg | Bin 0 -> 1876 bytes main/assets/locales/cs-CZ/activation.ogg | Bin 0 -> 9954 bytes main/assets/locales/cs-CZ/err_pin.ogg | Bin 0 -> 4045 bytes main/assets/locales/cs-CZ/err_reg.ogg | Bin 0 -> 7830 bytes main/assets/locales/cs-CZ/language.json | 55 + main/assets/locales/cs-CZ/upgrade.ogg | Bin 0 -> 4499 bytes main/assets/locales/cs-CZ/welcome.ogg | Bin 0 -> 2672 bytes main/assets/locales/cs-CZ/wificonfig.ogg | Bin 0 -> 5169 bytes main/assets/locales/de-DE/0.ogg | Bin 0 -> 1829 bytes main/assets/locales/de-DE/1.ogg | Bin 0 -> 1801 bytes main/assets/locales/de-DE/2.ogg | Bin 0 -> 2010 bytes main/assets/locales/de-DE/3.ogg | Bin 0 -> 1756 bytes main/assets/locales/de-DE/4.ogg | Bin 0 -> 1868 bytes main/assets/locales/de-DE/5.ogg | Bin 0 -> 1979 bytes main/assets/locales/de-DE/6.ogg | Bin 0 -> 1943 bytes main/assets/locales/de-DE/7.ogg | Bin 0 -> 2139 bytes main/assets/locales/de-DE/8.ogg | Bin 0 -> 1751 bytes main/assets/locales/de-DE/9.ogg | Bin 0 -> 1835 bytes main/assets/locales/de-DE/activation.ogg | Bin 0 -> 14512 bytes main/assets/locales/de-DE/err_pin.ogg | Bin 0 -> 4396 bytes main/assets/locales/de-DE/err_reg.ogg | Bin 0 -> 11221 bytes main/assets/locales/de-DE/language.json | 55 + main/assets/locales/de-DE/upgrade.ogg | Bin 0 -> 4370 bytes main/assets/locales/de-DE/welcome.ogg | Bin 0 -> 2814 bytes main/assets/locales/de-DE/wificonfig.ogg | Bin 0 -> 6587 bytes main/assets/locales/en-US/0.ogg | Bin 0 -> 1924 bytes main/assets/locales/en-US/1.ogg | Bin 0 -> 1569 bytes main/assets/locales/en-US/2.ogg | Bin 0 -> 1532 bytes main/assets/locales/en-US/3.ogg | Bin 0 -> 1445 bytes main/assets/locales/en-US/4.ogg | Bin 0 -> 1944 bytes main/assets/locales/en-US/5.ogg | Bin 0 -> 1586 bytes main/assets/locales/en-US/6.ogg | Bin 0 -> 1764 bytes main/assets/locales/en-US/7.ogg | Bin 0 -> 2110 bytes main/assets/locales/en-US/8.ogg | Bin 0 -> 1571 bytes main/assets/locales/en-US/9.ogg | Bin 0 -> 1653 bytes main/assets/locales/en-US/activation.ogg | Bin 0 -> 8855 bytes main/assets/locales/en-US/err_pin.ogg | Bin 0 -> 3805 bytes main/assets/locales/en-US/err_reg.ogg | Bin 0 -> 7780 bytes main/assets/locales/en-US/language.json | 56 + main/assets/locales/en-US/upgrade.ogg | Bin 0 -> 3112 bytes main/assets/locales/en-US/welcome.ogg | Bin 0 -> 2765 bytes main/assets/locales/en-US/wificonfig.ogg | Bin 0 -> 4634 bytes main/assets/locales/es-ES/0.ogg | Bin 0 -> 1841 bytes main/assets/locales/es-ES/1.ogg | Bin 0 -> 1519 bytes main/assets/locales/es-ES/2.ogg | Bin 0 -> 1880 bytes main/assets/locales/es-ES/3.ogg | Bin 0 -> 1747 bytes main/assets/locales/es-ES/4.ogg | Bin 0 -> 1871 bytes main/assets/locales/es-ES/5.ogg | Bin 0 -> 2111 bytes main/assets/locales/es-ES/6.ogg | Bin 0 -> 1960 bytes main/assets/locales/es-ES/7.ogg | Bin 0 -> 2157 bytes main/assets/locales/es-ES/8.ogg | Bin 0 -> 1863 bytes main/assets/locales/es-ES/9.ogg | Bin 0 -> 2020 bytes main/assets/locales/es-ES/activation.ogg | Bin 0 -> 14758 bytes main/assets/locales/es-ES/err_pin.ogg | Bin 0 -> 5458 bytes main/assets/locales/es-ES/err_reg.ogg | Bin 0 -> 10160 bytes main/assets/locales/es-ES/language.json | 55 + main/assets/locales/es-ES/upgrade.ogg | Bin 0 -> 3947 bytes main/assets/locales/es-ES/welcome.ogg | Bin 0 -> 2909 bytes main/assets/locales/es-ES/wificonfig.ogg | Bin 0 -> 6979 bytes main/assets/locales/fi-FI/0.ogg | Bin 0 -> 2108 bytes main/assets/locales/fi-FI/1.ogg | Bin 0 -> 2169 bytes main/assets/locales/fi-FI/2.ogg | Bin 0 -> 2158 bytes main/assets/locales/fi-FI/3.ogg | Bin 0 -> 2159 bytes main/assets/locales/fi-FI/4.ogg | Bin 0 -> 2233 bytes main/assets/locales/fi-FI/5.ogg | Bin 0 -> 2147 bytes main/assets/locales/fi-FI/6.ogg | Bin 0 -> 2133 bytes main/assets/locales/fi-FI/7.ogg | Bin 0 -> 2468 bytes main/assets/locales/fi-FI/8.ogg | Bin 0 -> 2240 bytes main/assets/locales/fi-FI/9.ogg | Bin 0 -> 2328 bytes main/assets/locales/fi-FI/activation.ogg | Bin 0 -> 10121 bytes main/assets/locales/fi-FI/err_pin.ogg | Bin 0 -> 3567 bytes main/assets/locales/fi-FI/err_reg.ogg | Bin 0 -> 8709 bytes main/assets/locales/fi-FI/language.json | 55 + main/assets/locales/fi-FI/upgrade.ogg | Bin 0 -> 4239 bytes main/assets/locales/fi-FI/welcome.ogg | Bin 0 -> 2828 bytes main/assets/locales/fi-FI/wificonfig.ogg | Bin 0 -> 5423 bytes main/assets/locales/fr-FR/0.ogg | Bin 0 -> 2291 bytes main/assets/locales/fr-FR/1.ogg | Bin 0 -> 2472 bytes main/assets/locales/fr-FR/2.ogg | Bin 0 -> 2555 bytes main/assets/locales/fr-FR/3.ogg | Bin 0 -> 2243 bytes main/assets/locales/fr-FR/4.ogg | Bin 0 -> 2326 bytes main/assets/locales/fr-FR/5.ogg | Bin 0 -> 2558 bytes main/assets/locales/fr-FR/6.ogg | Bin 0 -> 2377 bytes main/assets/locales/fr-FR/7.ogg | Bin 0 -> 2321 bytes main/assets/locales/fr-FR/8.ogg | Bin 0 -> 2362 bytes main/assets/locales/fr-FR/9.ogg | Bin 0 -> 2100 bytes main/assets/locales/fr-FR/activation.ogg | Bin 0 -> 17207 bytes main/assets/locales/fr-FR/err_pin.ogg | Bin 0 -> 6043 bytes main/assets/locales/fr-FR/err_reg.ogg | Bin 0 -> 9869 bytes main/assets/locales/fr-FR/language.json | 55 + main/assets/locales/fr-FR/upgrade.ogg | Bin 0 -> 3757 bytes main/assets/locales/fr-FR/welcome.ogg | Bin 0 -> 2927 bytes main/assets/locales/fr-FR/wificonfig.ogg | Bin 0 -> 5157 bytes main/assets/locales/hi-IN/0.ogg | Bin 0 -> 2313 bytes main/assets/locales/hi-IN/1.ogg | Bin 0 -> 1490 bytes main/assets/locales/hi-IN/2.ogg | Bin 0 -> 1609 bytes main/assets/locales/hi-IN/3.ogg | Bin 0 -> 1530 bytes main/assets/locales/hi-IN/4.ogg | Bin 0 -> 1530 bytes main/assets/locales/hi-IN/5.ogg | Bin 0 -> 1837 bytes main/assets/locales/hi-IN/6.ogg | Bin 0 -> 1503 bytes main/assets/locales/hi-IN/7.ogg | Bin 0 -> 1803 bytes main/assets/locales/hi-IN/8.ogg | Bin 0 -> 1590 bytes main/assets/locales/hi-IN/9.ogg | Bin 0 -> 1550 bytes main/assets/locales/hi-IN/activation.ogg | Bin 0 -> 10626 bytes main/assets/locales/hi-IN/err_pin.ogg | Bin 0 -> 2949 bytes main/assets/locales/hi-IN/err_reg.ogg | Bin 0 -> 7548 bytes main/assets/locales/hi-IN/language.json | 55 + main/assets/locales/hi-IN/upgrade.ogg | Bin 0 -> 3315 bytes main/assets/locales/hi-IN/welcome.ogg | Bin 0 -> 2582 bytes main/assets/locales/hi-IN/wificonfig.ogg | Bin 0 -> 4698 bytes main/assets/locales/id-ID/0.ogg | Bin 0 -> 2025 bytes main/assets/locales/id-ID/1.ogg | Bin 0 -> 2633 bytes main/assets/locales/id-ID/2.ogg | Bin 0 -> 2273 bytes main/assets/locales/id-ID/3.ogg | Bin 0 -> 2252 bytes main/assets/locales/id-ID/4.ogg | Bin 0 -> 1806 bytes main/assets/locales/id-ID/5.ogg | Bin 0 -> 2342 bytes main/assets/locales/id-ID/6.ogg | Bin 0 -> 2178 bytes main/assets/locales/id-ID/7.ogg | Bin 0 -> 2101 bytes main/assets/locales/id-ID/8.ogg | Bin 0 -> 2409 bytes main/assets/locales/id-ID/9.ogg | Bin 0 -> 2484 bytes main/assets/locales/id-ID/activation.ogg | Bin 0 -> 17124 bytes main/assets/locales/id-ID/err_pin.ogg | Bin 0 -> 5087 bytes main/assets/locales/id-ID/err_reg.ogg | Bin 0 -> 7716 bytes main/assets/locales/id-ID/language.json | 55 + main/assets/locales/id-ID/upgrade.ogg | Bin 0 -> 3823 bytes main/assets/locales/id-ID/welcome.ogg | Bin 0 -> 2537 bytes main/assets/locales/id-ID/wificonfig.ogg | Bin 0 -> 8706 bytes main/assets/locales/it-IT/0.ogg | Bin 0 -> 1877 bytes main/assets/locales/it-IT/1.ogg | Bin 0 -> 1423 bytes main/assets/locales/it-IT/2.ogg | Bin 0 -> 1436 bytes main/assets/locales/it-IT/3.ogg | Bin 0 -> 1302 bytes main/assets/locales/it-IT/4.ogg | Bin 0 -> 1404 bytes main/assets/locales/it-IT/5.ogg | Bin 0 -> 1607 bytes main/assets/locales/it-IT/6.ogg | Bin 0 -> 1457 bytes main/assets/locales/it-IT/7.ogg | Bin 0 -> 1632 bytes main/assets/locales/it-IT/8.ogg | Bin 0 -> 1494 bytes main/assets/locales/it-IT/9.ogg | Bin 0 -> 1888 bytes main/assets/locales/it-IT/activation.ogg | Bin 0 -> 12274 bytes main/assets/locales/it-IT/err_pin.ogg | Bin 0 -> 3023 bytes main/assets/locales/it-IT/err_reg.ogg | Bin 0 -> 8416 bytes main/assets/locales/it-IT/language.json | 55 + main/assets/locales/it-IT/upgrade.ogg | Bin 0 -> 4059 bytes main/assets/locales/it-IT/welcome.ogg | Bin 0 -> 3063 bytes main/assets/locales/it-IT/wificonfig.ogg | Bin 0 -> 5995 bytes main/assets/locales/ja-JP/0.ogg | Bin 0 -> 1499 bytes main/assets/locales/ja-JP/1.ogg | Bin 0 -> 1459 bytes main/assets/locales/ja-JP/2.ogg | Bin 0 -> 1203 bytes main/assets/locales/ja-JP/3.ogg | Bin 0 -> 1312 bytes main/assets/locales/ja-JP/4.ogg | Bin 0 -> 1372 bytes main/assets/locales/ja-JP/5.ogg | Bin 0 -> 1085 bytes main/assets/locales/ja-JP/6.ogg | Bin 0 -> 1482 bytes main/assets/locales/ja-JP/7.ogg | Bin 0 -> 1503 bytes main/assets/locales/ja-JP/8.ogg | Bin 0 -> 1663 bytes main/assets/locales/ja-JP/9.ogg | Bin 0 -> 1565 bytes main/assets/locales/ja-JP/activation.ogg | Bin 0 -> 12162 bytes main/assets/locales/ja-JP/err_pin.ogg | Bin 0 -> 4547 bytes main/assets/locales/ja-JP/err_reg.ogg | Bin 0 -> 10168 bytes main/assets/locales/ja-JP/language.json | 55 + main/assets/locales/ja-JP/upgrade.ogg | Bin 0 -> 4754 bytes main/assets/locales/ja-JP/welcome.ogg | Bin 0 -> 3403 bytes main/assets/locales/ja-JP/wificonfig.ogg | Bin 0 -> 6770 bytes main/assets/locales/ko-KR/0.ogg | Bin 0 -> 1696 bytes main/assets/locales/ko-KR/1.ogg | Bin 0 -> 1687 bytes main/assets/locales/ko-KR/2.ogg | Bin 0 -> 1475 bytes main/assets/locales/ko-KR/3.ogg | Bin 0 -> 1588 bytes main/assets/locales/ko-KR/4.ogg | Bin 0 -> 1426 bytes main/assets/locales/ko-KR/5.ogg | Bin 0 -> 1490 bytes main/assets/locales/ko-KR/6.ogg | Bin 0 -> 1516 bytes main/assets/locales/ko-KR/7.ogg | Bin 0 -> 1734 bytes main/assets/locales/ko-KR/8.ogg | Bin 0 -> 1454 bytes main/assets/locales/ko-KR/9.ogg | Bin 0 -> 2430 bytes main/assets/locales/ko-KR/activation.ogg | Bin 0 -> 11193 bytes main/assets/locales/ko-KR/err_pin.ogg | Bin 0 -> 4725 bytes main/assets/locales/ko-KR/err_reg.ogg | Bin 0 -> 10954 bytes main/assets/locales/ko-KR/language.json | 56 + main/assets/locales/ko-KR/upgrade.ogg | Bin 0 -> 5335 bytes main/assets/locales/ko-KR/welcome.ogg | Bin 0 -> 4566 bytes main/assets/locales/ko-KR/wificonfig.ogg | Bin 0 -> 6474 bytes main/assets/locales/pl-PL/0.ogg | Bin 0 -> 2138 bytes main/assets/locales/pl-PL/1.ogg | Bin 0 -> 2152 bytes main/assets/locales/pl-PL/2.ogg | Bin 0 -> 1762 bytes main/assets/locales/pl-PL/3.ogg | Bin 0 -> 1821 bytes main/assets/locales/pl-PL/4.ogg | Bin 0 -> 1883 bytes main/assets/locales/pl-PL/5.ogg | Bin 0 -> 2067 bytes main/assets/locales/pl-PL/6.ogg | Bin 0 -> 2430 bytes main/assets/locales/pl-PL/7.ogg | Bin 0 -> 2142 bytes main/assets/locales/pl-PL/8.ogg | Bin 0 -> 1963 bytes main/assets/locales/pl-PL/9.ogg | Bin 0 -> 2386 bytes main/assets/locales/pl-PL/activation.ogg | Bin 0 -> 10689 bytes main/assets/locales/pl-PL/err_pin.ogg | Bin 0 -> 4294 bytes main/assets/locales/pl-PL/err_reg.ogg | Bin 0 -> 7341 bytes main/assets/locales/pl-PL/language.json | 55 + main/assets/locales/pl-PL/upgrade.ogg | Bin 0 -> 3937 bytes main/assets/locales/pl-PL/welcome.ogg | Bin 0 -> 3562 bytes main/assets/locales/pl-PL/wificonfig.ogg | Bin 0 -> 4551 bytes main/assets/locales/pt-PT/0.ogg | Bin 0 -> 1977 bytes main/assets/locales/pt-PT/1.ogg | Bin 0 -> 1496 bytes main/assets/locales/pt-PT/2.ogg | Bin 0 -> 1876 bytes main/assets/locales/pt-PT/3.ogg | Bin 0 -> 2119 bytes main/assets/locales/pt-PT/4.ogg | Bin 0 -> 1843 bytes main/assets/locales/pt-PT/5.ogg | Bin 0 -> 2197 bytes main/assets/locales/pt-PT/6.ogg | Bin 0 -> 1886 bytes main/assets/locales/pt-PT/7.ogg | Bin 0 -> 2094 bytes main/assets/locales/pt-PT/8.ogg | Bin 0 -> 1973 bytes main/assets/locales/pt-PT/9.ogg | Bin 0 -> 1809 bytes main/assets/locales/pt-PT/activation.ogg | Bin 0 -> 14660 bytes main/assets/locales/pt-PT/err_pin.ogg | Bin 0 -> 3457 bytes main/assets/locales/pt-PT/err_reg.ogg | Bin 0 -> 8363 bytes main/assets/locales/pt-PT/language.json | 55 + main/assets/locales/pt-PT/upgrade.ogg | Bin 0 -> 4051 bytes main/assets/locales/pt-PT/welcome.ogg | Bin 0 -> 3053 bytes main/assets/locales/pt-PT/wificonfig.ogg | Bin 0 -> 5471 bytes main/assets/locales/ro-RO/0.ogg | Bin 0 -> 1958 bytes main/assets/locales/ro-RO/1.ogg | Bin 0 -> 1870 bytes main/assets/locales/ro-RO/2.ogg | Bin 0 -> 1839 bytes main/assets/locales/ro-RO/3.ogg | Bin 0 -> 1566 bytes main/assets/locales/ro-RO/4.ogg | Bin 0 -> 2149 bytes main/assets/locales/ro-RO/5.ogg | Bin 0 -> 1766 bytes main/assets/locales/ro-RO/6.ogg | Bin 0 -> 1947 bytes main/assets/locales/ro-RO/7.ogg | Bin 0 -> 2318 bytes main/assets/locales/ro-RO/8.ogg | Bin 0 -> 2000 bytes main/assets/locales/ro-RO/9.ogg | Bin 0 -> 2279 bytes main/assets/locales/ro-RO/activation.ogg | Bin 0 -> 15258 bytes main/assets/locales/ro-RO/err_pin.ogg | Bin 0 -> 5609 bytes main/assets/locales/ro-RO/err_reg.ogg | Bin 0 -> 9224 bytes main/assets/locales/ro-RO/language.json | 55 + main/assets/locales/ro-RO/upgrade.ogg | Bin 0 -> 4479 bytes main/assets/locales/ro-RO/welcome.ogg | Bin 0 -> 2592 bytes main/assets/locales/ro-RO/wificonfig.ogg | Bin 0 -> 5552 bytes main/assets/locales/ru-RU/0.ogg | Bin 0 -> 1626 bytes main/assets/locales/ru-RU/1.ogg | Bin 0 -> 1979 bytes main/assets/locales/ru-RU/2.ogg | Bin 0 -> 1990 bytes main/assets/locales/ru-RU/3.ogg | Bin 0 -> 1542 bytes main/assets/locales/ru-RU/4.ogg | Bin 0 -> 2154 bytes main/assets/locales/ru-RU/5.ogg | Bin 0 -> 1406 bytes main/assets/locales/ru-RU/6.ogg | Bin 0 -> 1453 bytes main/assets/locales/ru-RU/7.ogg | Bin 0 -> 1750 bytes main/assets/locales/ru-RU/8.ogg | Bin 0 -> 1833 bytes main/assets/locales/ru-RU/9.ogg | Bin 0 -> 1875 bytes main/assets/locales/ru-RU/activation.ogg | Bin 0 -> 11380 bytes main/assets/locales/ru-RU/err_pin.ogg | Bin 0 -> 4732 bytes main/assets/locales/ru-RU/err_reg.ogg | Bin 0 -> 8942 bytes main/assets/locales/ru-RU/language.json | 55 + main/assets/locales/ru-RU/upgrade.ogg | Bin 0 -> 3115 bytes main/assets/locales/ru-RU/welcome.ogg | Bin 0 -> 2336 bytes main/assets/locales/ru-RU/wificonfig.ogg | Bin 0 -> 5020 bytes main/assets/locales/th-TH/0.ogg | Bin 0 -> 2279 bytes main/assets/locales/th-TH/1.ogg | Bin 0 -> 2055 bytes main/assets/locales/th-TH/2.ogg | Bin 0 -> 2086 bytes main/assets/locales/th-TH/3.ogg | Bin 0 -> 2251 bytes main/assets/locales/th-TH/4.ogg | Bin 0 -> 1919 bytes main/assets/locales/th-TH/5.ogg | Bin 0 -> 1961 bytes main/assets/locales/th-TH/6.ogg | Bin 0 -> 1889 bytes main/assets/locales/th-TH/7.ogg | Bin 0 -> 1590 bytes main/assets/locales/th-TH/8.ogg | Bin 0 -> 1560 bytes main/assets/locales/th-TH/9.ogg | Bin 0 -> 1646 bytes main/assets/locales/th-TH/activation.ogg | Bin 0 -> 9627 bytes main/assets/locales/th-TH/err_pin.ogg | Bin 0 -> 3382 bytes main/assets/locales/th-TH/err_reg.ogg | Bin 0 -> 9745 bytes main/assets/locales/th-TH/language.json | 56 + main/assets/locales/th-TH/upgrade.ogg | Bin 0 -> 3404 bytes main/assets/locales/th-TH/welcome.ogg | Bin 0 -> 3788 bytes main/assets/locales/th-TH/wificonfig.ogg | Bin 0 -> 5596 bytes main/assets/locales/tr-TR/0.ogg | Bin 0 -> 1972 bytes main/assets/locales/tr-TR/1.ogg | Bin 0 -> 1983 bytes main/assets/locales/tr-TR/2.ogg | Bin 0 -> 1699 bytes main/assets/locales/tr-TR/3.ogg | Bin 0 -> 1767 bytes main/assets/locales/tr-TR/4.ogg | Bin 0 -> 1972 bytes main/assets/locales/tr-TR/5.ogg | Bin 0 -> 1868 bytes main/assets/locales/tr-TR/6.ogg | Bin 0 -> 2014 bytes main/assets/locales/tr-TR/7.ogg | Bin 0 -> 1818 bytes main/assets/locales/tr-TR/8.ogg | Bin 0 -> 2196 bytes main/assets/locales/tr-TR/9.ogg | Bin 0 -> 2002 bytes main/assets/locales/tr-TR/activation.ogg | Bin 0 -> 10808 bytes main/assets/locales/tr-TR/err_pin.ogg | Bin 0 -> 4456 bytes main/assets/locales/tr-TR/err_reg.ogg | Bin 0 -> 9495 bytes main/assets/locales/tr-TR/language.json | 55 + main/assets/locales/tr-TR/upgrade.ogg | Bin 0 -> 4021 bytes main/assets/locales/tr-TR/welcome.ogg | Bin 0 -> 3010 bytes main/assets/locales/tr-TR/wificonfig.ogg | Bin 0 -> 5432 bytes main/assets/locales/uk-UA/0.ogg | Bin 0 -> 2003 bytes main/assets/locales/uk-UA/1.ogg | Bin 0 -> 1902 bytes main/assets/locales/uk-UA/2.ogg | Bin 0 -> 2026 bytes main/assets/locales/uk-UA/3.ogg | Bin 0 -> 1765 bytes main/assets/locales/uk-UA/4.ogg | Bin 0 -> 2327 bytes main/assets/locales/uk-UA/5.ogg | Bin 0 -> 1989 bytes main/assets/locales/uk-UA/6.ogg | Bin 0 -> 1975 bytes main/assets/locales/uk-UA/7.ogg | Bin 0 -> 1678 bytes main/assets/locales/uk-UA/8.ogg | Bin 0 -> 2279 bytes main/assets/locales/uk-UA/9.ogg | Bin 0 -> 2146 bytes main/assets/locales/uk-UA/activation.ogg | Bin 0 -> 14195 bytes main/assets/locales/uk-UA/err_pin.ogg | Bin 0 -> 4537 bytes main/assets/locales/uk-UA/err_reg.ogg | Bin 0 -> 9545 bytes main/assets/locales/uk-UA/language.json | 55 + main/assets/locales/uk-UA/upgrade.ogg | Bin 0 -> 3642 bytes main/assets/locales/uk-UA/welcome.ogg | Bin 0 -> 2803 bytes main/assets/locales/uk-UA/wificonfig.ogg | Bin 0 -> 5981 bytes main/assets/locales/vi-VN/0.ogg | Bin 0 -> 1446 bytes main/assets/locales/vi-VN/1.ogg | Bin 0 -> 1635 bytes main/assets/locales/vi-VN/2.ogg | Bin 0 -> 1857 bytes main/assets/locales/vi-VN/3.ogg | Bin 0 -> 1656 bytes main/assets/locales/vi-VN/4.ogg | Bin 0 -> 1649 bytes main/assets/locales/vi-VN/5.ogg | Bin 0 -> 1443 bytes main/assets/locales/vi-VN/6.ogg | Bin 0 -> 1786 bytes main/assets/locales/vi-VN/7.ogg | Bin 0 -> 1967 bytes main/assets/locales/vi-VN/8.ogg | Bin 0 -> 1494 bytes main/assets/locales/vi-VN/9.ogg | Bin 0 -> 1733 bytes main/assets/locales/vi-VN/activation.ogg | Bin 0 -> 9747 bytes main/assets/locales/vi-VN/err_pin.ogg | Bin 0 -> 3806 bytes main/assets/locales/vi-VN/err_reg.ogg | Bin 0 -> 8213 bytes main/assets/locales/vi-VN/language.json | 56 + main/assets/locales/vi-VN/upgrade.ogg | Bin 0 -> 4162 bytes main/assets/locales/vi-VN/welcome.ogg | Bin 0 -> 2929 bytes main/assets/locales/vi-VN/wificonfig.ogg | Bin 0 -> 5203 bytes main/assets/locales/zh-CN/0.ogg | Bin 0 -> 1438 bytes main/assets/locales/zh-CN/1.ogg | Bin 0 -> 1485 bytes main/assets/locales/zh-CN/2.ogg | Bin 0 -> 1250 bytes main/assets/locales/zh-CN/3.ogg | Bin 0 -> 1503 bytes main/assets/locales/zh-CN/4.ogg | Bin 0 -> 1634 bytes main/assets/locales/zh-CN/5.ogg | Bin 0 -> 1512 bytes main/assets/locales/zh-CN/6.ogg | Bin 0 -> 1496 bytes main/assets/locales/zh-CN/7.ogg | Bin 0 -> 1652 bytes main/assets/locales/zh-CN/8.ogg | Bin 0 -> 1473 bytes main/assets/locales/zh-CN/9.ogg | Bin 0 -> 1421 bytes main/assets/locales/zh-CN/activation.ogg | Bin 0 -> 8402 bytes main/assets/locales/zh-CN/err_pin.ogg | Bin 0 -> 3538 bytes main/assets/locales/zh-CN/err_reg.ogg | Bin 0 -> 6747 bytes main/assets/locales/zh-CN/language.json | 55 + main/assets/locales/zh-CN/upgrade.ogg | Bin 0 -> 2847 bytes main/assets/locales/zh-CN/welcome.ogg | Bin 0 -> 3493 bytes main/assets/locales/zh-CN/wificonfig.ogg | Bin 0 -> 3155 bytes main/assets/locales/zh-TW/0.ogg | Bin 0 -> 1438 bytes main/assets/locales/zh-TW/1.ogg | Bin 0 -> 1485 bytes main/assets/locales/zh-TW/2.ogg | Bin 0 -> 1250 bytes main/assets/locales/zh-TW/3.ogg | Bin 0 -> 1503 bytes main/assets/locales/zh-TW/4.ogg | Bin 0 -> 1634 bytes main/assets/locales/zh-TW/5.ogg | Bin 0 -> 1512 bytes main/assets/locales/zh-TW/6.ogg | Bin 0 -> 1496 bytes main/assets/locales/zh-TW/7.ogg | Bin 0 -> 1652 bytes main/assets/locales/zh-TW/8.ogg | Bin 0 -> 1473 bytes main/assets/locales/zh-TW/9.ogg | Bin 0 -> 1421 bytes main/assets/locales/zh-TW/activation.ogg | Bin 0 -> 8402 bytes main/assets/locales/zh-TW/err_pin.ogg | Bin 0 -> 3538 bytes main/assets/locales/zh-TW/err_reg.ogg | Bin 0 -> 6747 bytes main/assets/locales/zh-TW/language.json | 55 + main/assets/locales/zh-TW/upgrade.ogg | Bin 0 -> 2847 bytes main/assets/locales/zh-TW/welcome.ogg | Bin 0 -> 3493 bytes main/assets/locales/zh-TW/wificonfig.ogg | Bin 0 -> 3155 bytes main/audio/README.md | 88 + main/audio/audio_codec.cc | 72 + main/audio/audio_codec.h | 59 + main/audio/audio_processor.h | 26 + main/audio/audio_service.cc | 673 ++++++++ main/audio/audio_service.h | 160 ++ main/audio/codecs/box_audio_codec.cc | 244 +++ main/audio/codecs/box_audio_codec.h | 40 + main/audio/codecs/dummy_audio_codec.cc | 20 + main/audio/codecs/dummy_audio_codec.h | 16 + main/audio/codecs/es8311_audio_codec.cc | 187 +++ main/audio/codecs/es8311_audio_codec.h | 42 + main/audio/codecs/es8374_audio_codec.cc | 196 +++ main/audio/codecs/es8374_audio_codec.h | 41 + main/audio/codecs/es8388_audio_codec.cc | 219 +++ main/audio/codecs/es8388_audio_codec.h | 40 + main/audio/codecs/es8389_audio_codec.cc | 203 +++ main/audio/codecs/es8389_audio_codec.h | 40 + main/audio/codecs/no_audio_codec.cc | 332 ++++ main/audio/codecs/no_audio_codec.h | 38 + main/audio/processors/afe_audio_processor.cc | 189 +++ main/audio/processors/afe_audio_processor.h | 45 + main/audio/processors/audio_debugger.cc | 68 + main/audio/processors/audio_debugger.h | 22 + main/audio/processors/no_audio_processor.cc | 59 + main/audio/processors/no_audio_processor.h | 33 + main/audio/wake_word.h | 26 + main/audio/wake_words/afe_wake_word.cc | 208 +++ main/audio/wake_words/afe_wake_word.h | 60 + main/audio/wake_words/custom_wake_word.cc | 190 +++ main/audio/wake_words/custom_wake_word.h | 58 + main/audio/wake_words/esp_wake_word.cc | 87 + main/audio/wake_words/esp_wake_word.h | 42 + main/boards/README.md | 326 ++++ main/boards/common/adc_battery_monitor.cc | 81 + main/boards/common/adc_battery_monitor.h | 30 + main/boards/common/afsk_demod.cc | 371 +++++ main/boards/common/afsk_demod.h | 177 ++ main/boards/common/axp2101.cc | 41 + main/boards/common/axp2101.h | 20 + main/boards/common/backlight.cc | 121 ++ main/boards/common/backlight.h | 36 + main/boards/common/board.cc | 187 +++ main/boards/common/board.h | 63 + main/boards/common/button.cc | 125 ++ main/boards/common/button.h | 49 + main/boards/common/camera.h | 15 + main/boards/common/dual_network_board.cc | 93 ++ main/boards/common/dual_network_board.h | 59 + main/boards/common/esp32_camera.cc | 259 +++ main/boards/common/esp32_camera.h | 38 + main/boards/common/i2c_device.cc | 35 + main/boards/common/i2c_device.h | 18 + main/boards/common/knob.cc | 52 + main/boards/common/knob.h | 25 + main/boards/common/lamp_controller.h | 44 + main/boards/common/ml307_board.cc | 197 +++ main/boards/common/ml307_board.h | 29 + main/boards/common/power_save_timer.cc | 132 ++ main/boards/common/power_save_timer.h | 34 + main/boards/common/press_to_talk_mcp_tool.cc | 57 + main/boards/common/press_to_talk_mcp_tool.h | 29 + main/boards/common/sleep_timer.cc | 133 ++ main/boards/common/sleep_timer.h | 32 + main/boards/common/sy6970.cc | 65 + main/boards/common/sy6970.h | 21 + main/boards/common/system_reset.cc | 72 + main/boards/common/system_reset.h | 21 + main/boards/common/wifi_board.cc | 265 +++ main/boards/common/wifi_board.h | 24 + main/boards/shhk-cam/README.md | 49 + main/boards/shhk-cam/config.h | 68 + main/boards/shhk-cam/config.json | 18 + main/boards/shhk-cam/mcp_controller.cc | 94 ++ main/boards/shhk-cam/power_manager.h | 237 +++ main/boards/shhk-cam/zhengchen_cam_board.cc | 333 ++++ main/boards/tudouzi/config.h | 41 + main/boards/tudouzi/config.json | 13 + main/boards/tudouzi/kevin_box_board.cc | 255 +++ main/boards/waveshare-c6-lcd-1.69/README.md | 56 + main/boards/waveshare-c6-lcd-1.69/config.h | 54 + main/boards/waveshare-c6-lcd-1.69/config.json | 11 + .../esp32-c6-lcd-1.69.cc | 254 +++ .../waveshare-c6-lcd-1.69/power_manager.h | 174 ++ .../waveshare-c6-touch-amoled-1.43/README.md | 49 + .../waveshare-c6-touch-amoled-1.43/config.h | 49 + .../config.json | 11 + .../esp32-c6-touch-amoled-1.43.cc | 284 ++++ main/boards/waveshare-p4-nano/README.md | 43 + main/boards/waveshare-p4-nano/config.h | 44 + .../boards/waveshare-p4-nano/esp32-p4-nano.cc | 230 +++ .../waveshare-p4-wifi6-touch-lcd-4b/README.md | 12 + .../waveshare-p4-wifi6-touch-lcd-4b/config.h | 47 + .../esp32-p4-wifi6-touch-lcd-4b.cc | 195 +++ .../waveshare-p4-wifi6-touch-lcd-xc/README.md | 22 + .../waveshare-p4-wifi6-touch-lcd-xc/config.h | 490 ++++++ .../esp32-p4-wifi6-touch-lcd-xc.cc | 196 +++ .../boards/waveshare-s3-audio-board/README.md | 3 + main/boards/waveshare-s3-audio-board/config.h | 95 ++ .../waveshare-s3-audio-board/config.json | 9 + .../esp32-s3-audio_board.cc | 231 +++ .../waveshare-s3-audio-board/esp_lcd_jd9853.c | 460 ++++++ .../waveshare-s3-audio-board/esp_lcd_jd9853.h | 102 ++ .../waveshare-s3-touch-amoled-1.75/README.md | 15 + .../waveshare-s3-touch-amoled-1.75/config.h | 44 + .../config.json | 12 + .../esp32-s3-touch-amoled-1.75.cc | 361 +++++ .../waveshare-s3-touch-amoled-2.06/README.md | 11 + .../waveshare-s3-touch-amoled-2.06/config.h | 43 + .../config.json | 12 + .../esp32-s3-touch-amoled-2.06.cc | 347 ++++ .../waveshare-s3-touch-lcd-3.5b/README.md | 3 + .../waveshare-s3-touch-lcd-3.5b/config.h | 78 + .../waveshare-s3-touch-lcd-3.5b/config.json | 11 + .../custom_lcd_display.cc | 286 ++++ .../custom_lcd_display.h | 19 + .../waveshare-s3-touch-lcd-3.5b.cc | 373 +++++ .../xingzhi-cube-0.85tft-ml307/config.h | 40 + .../xingzhi-cube-0.85tft-ml307/config.json | 9 + .../xingzhi-cube-0.85tft-ml307.cc | 240 +++ .../boards/xingzhi-cube-0.85tft-wifi/config.h | 37 + .../xingzhi-cube-0.85tft-wifi/config.json | 9 + .../xingzhi-cube-0.85tft-wifi.cc | 244 +++ .../xingzhi-cube-0.96oled-ml307/config.h | 30 + .../xingzhi-cube-0.96oled-ml307/config.json | 9 + .../xingzhi-cube-0.96oled-ml307.cc | 234 +++ .../xingzhi-cube-0.96oled-wifi/config.h | 27 + .../xingzhi-cube-0.96oled-wifi/config.json | 9 + .../xingzhi-cube-0.96oled-wifi.cc | 225 +++ .../xingzhi-cube-1.54tft-ml307/config.h | 40 + .../xingzhi-cube-1.54tft-ml307/config.json | 15 + .../xingzhi-cube-1.54tft-ml307.cc | 212 +++ .../boards/xingzhi-cube-1.54tft-wifi/config.h | 36 + .../xingzhi-cube-1.54tft-wifi/config.json | 9 + .../xingzhi-cube-1.54tft-wifi/power_manager.h | 186 +++ .../xingzhi-cube-1.54tft-wifi.cc | 201 +++ main/boards/xmini-c3-4g/README.md | 4 + main/boards/xmini-c3-4g/config.h | 32 + main/boards/xmini-c3-4g/config.json | 15 + main/boards/xmini-c3-4g/xmini_c3_4g_board.cc | 207 +++ main/boards/xmini-c3-v3/README.md | 4 + main/boards/xmini-c3-v3/config.h | 28 + main/boards/xmini-c3-v3/config.json | 14 + main/boards/xmini-c3-v3/xmini_c3_board.cc | 203 +++ main/boards/xmini-c3/config.h | 28 + main/boards/xmini-c3/config.json | 14 + main/boards/xmini-c3/xmini_c3_board.cc | 186 +++ main/boards/yunliao-s3/README.md | 88 + main/boards/yunliao-s3/config.h | 59 + main/boards/yunliao-s3/config.json | 11 + main/boards/yunliao-s3/power_manager.cc | 203 +++ main/boards/yunliao-s3/power_manager.h | 37 + main/boards/yunliao-s3/yunliao_s3.cc | 207 +++ main/boards/zhengchen-1.54tft-ml307/README.md | 45 + main/boards/zhengchen-1.54tft-ml307/config.h | 42 + .../zhengchen-1.54tft-ml307/config.json | 9 + .../zhengchen-1.54tft-ml307.cc | 211 +++ main/boards/zhengchen-1.54tft-wifi/README.md | 45 + main/boards/zhengchen-1.54tft-wifi/config.h | 39 + .../boards/zhengchen-1.54tft-wifi/config.json | 9 + .../zhengchen-1.54tft-wifi/power_manager.h | 238 +++ .../zhengchen-1.54tft-wifi.cc | 228 +++ .../zhengchen_lcd_display.h | 66 + main/boards/zhengchen-cam-ml307/README.md | 50 + main/boards/zhengchen-cam-ml307/config.h | 70 + main/boards/zhengchen-cam-ml307/config.json | 18 + .../zhengchen-cam-ml307/mcp_controller.cc | 94 ++ .../zhengchen-cam-ml307/power_manager.h | 237 +++ .../zhengchen_cam_board_ml307.cc | 340 ++++ main/device_state.h | 18 + main/device_state_event.cc | 46 + main/device_state_event.h | 39 + main/display/display.cc | 56 + main/display/display.h | 81 + main/display/lcd_display.cc | 1111 +++++++++++++ main/display/lcd_display.h | 79 + main/display/lvgl_display/emoji_collection.cc | 123 ++ main/display/lvgl_display/emoji_collection.h | 34 + main/display/lvgl_display/gif/LICENSE.txt | 2 + main/display/lvgl_display/gif/gifdec.c | 821 ++++++++++ main/display/lvgl_display/gif/gifdec.h | 68 + main/display/lvgl_display/gif/gifdec_mve.h | 140 ++ main/display/lvgl_display/gif/lvgl_gif.cc | 208 +++ main/display/lvgl_display/gif/lvgl_gif.h | 101 ++ main/display/lvgl_display/lvgl_display.cc | 242 +++ main/display/lvgl_display/lvgl_display.h | 53 + main/display/lvgl_display/lvgl_font.cc | 13 + main/display/lvgl_display/lvgl_font.h | 31 + main/display/lvgl_display/lvgl_image.cc | 64 + main/display/lvgl_display/lvgl_image.h | 53 + main/display/lvgl_display/lvgl_theme.cc | 30 + main/display/lvgl_display/lvgl_theme.h | 94 ++ main/display/oled_display.cc | 361 +++++ main/display/oled_display.h | 39 + main/idf_component.yml | 79 + main/led/circular_strip.cc | 233 +++ main/led/circular_strip.h | 51 + main/led/gpio_led.cc | 249 +++ main/led/gpio_led.h | 47 + main/led/led.h | 17 + main/led/single_led.cc | 163 ++ main/led/single_led.h | 38 + main/main.cc | 32 + main/mcp_server.cc | 568 +++++++ main/mcp_server.h | 344 ++++ main/ota.cc | 479 ++++++ main/ota.h | 59 + main/protocols/mqtt_protocol.cc | 372 +++++ main/protocols/mqtt_protocol.h | 60 + main/protocols/protocol.cc | 90 ++ main/protocols/protocol.h | 98 ++ main/protocols/websocket_protocol.cc | 253 +++ main/protocols/websocket_protocol.h | 34 + main/settings.cc | 108 ++ main/settings.h | 28 + main/system_info.cc | 145 ++ main/system_info.h | 21 + partitions/v1/16m.csv | 8 + partitions/v1/16m_custom_wakeword.csv | 8 + partitions/v1/16m_echoear.csv | 9 + partitions/v1/32m.csv | 10 + partitions/v1/4m.csv | 7 + partitions/v1/4m_esp-hi.csv | 8 + partitions/v1/8m.csv | 8 + partitions/v2/16m.csv | 8 + partitions/v2/16m_c3.csv | 8 + partitions/v2/32m.csv | 9 + partitions/v2/8m.csv | 8 + partitions/v2/README.md | 107 ++ scripts/Image_Converter/LVGLImage.py | 1426 +++++++++++++++++ scripts/Image_Converter/README.md | 45 + scripts/Image_Converter/lvgl_tools_gui.py | 253 +++ scripts/Image_Converter/requirements.txt | 3 + scripts/acoustic_check/demod.py | 280 ++++ scripts/acoustic_check/graphic.py | 444 +++++ scripts/acoustic_check/main.py | 18 + scripts/acoustic_check/readme.md | 23 + scripts/acoustic_check/requirements.txt | 4 + scripts/audio_debug_server.py | 54 + scripts/gen_lang.py | 187 +++ scripts/mp3_to_ogg.sh | 3 + scripts/ogg_converter/README.md | 29 + .../ogg_converter/xiaozhi_ogg_converter.py | 230 +++ scripts/p3_tools/README.md | 95 ++ scripts/p3_tools/batch_convert_gui.py | 221 +++ scripts/p3_tools/convert_audio_to_p3.py | 62 + scripts/p3_tools/convert_p3_to_audio.py | 51 + scripts/p3_tools/img/img.png | Bin 0 -> 144945 bytes scripts/p3_tools/p3_gui_player.py | 241 +++ scripts/p3_tools/play_p3.py | 71 + scripts/p3_tools/requirements.txt | 7 + scripts/release.py | 155 ++ scripts/sonic_wifi_config.html | 208 +++ scripts/spiffs_assets/README.md | 110 ++ scripts/spiffs_assets/build.py | 223 +++ scripts/spiffs_assets/build_all.py | 148 ++ scripts/spiffs_assets/pack_model.py | 123 ++ scripts/spiffs_assets/spiffs_assets_gen.py | 647 ++++++++ scripts/versions.py | 247 +++ sdkconfig.defaults | 85 + sdkconfig.defaults.esp32 | 7 + sdkconfig.defaults.esp32c3 | 15 + sdkconfig.defaults.esp32c6 | 5 + sdkconfig.defaults.esp32p4 | 23 + sdkconfig.defaults.esp32s3 | 26 + 694 files changed, 37654 insertions(+) create mode 100644 .clangd create mode 100644 .github/ISSUE_TEMPLATE/01_build_install_bug.yml create mode 100644 .github/ISSUE_TEMPLATE/02_runtime_bug.yml create mode 100644 .github/ISSUE_TEMPLATE/03_feature_request.yml create mode 100644 .github/ISSUE_TEMPLATE/config.yml create mode 100644 .github/workflows/build.yml create mode 100644 .gitignore create mode 100644 CMakeLists.txt create mode 100644 LICENSE create mode 100644 README.md create mode 100644 README_en.md create mode 100644 README_ja.md create mode 100644 docs/mcp-based-graph.jpg create mode 100644 docs/mcp-protocol.md create mode 100644 docs/mcp-usage.md create mode 100644 docs/mqtt-udp.md create mode 100644 docs/v0/AtomMatrix-echo-base.jpg create mode 100644 docs/v0/ESP32-BreadBoard.jpg create mode 100644 docs/v0/atoms3r-echo-base.jpg create mode 100644 docs/v0/esp32s3-box3.jpg create mode 100644 docs/v0/lichuang-s3.jpg create mode 100644 docs/v0/m5stack-cores3.jpg create mode 100644 docs/v0/magiclick-2p4.jpg create mode 100644 docs/v0/waveshare-esp32-s3-touch-amoled-1.8.jpg create mode 100644 docs/v0/wiring.jpg create mode 100644 docs/v1/atoms3r.jpg create mode 100644 docs/v1/electron-bot.png create mode 100644 docs/v1/esp-hi.jpg create mode 100644 docs/v1/esp-sparkbot.jpg create mode 100644 docs/v1/espbox3.jpg create mode 100644 docs/v1/lichuang-s3.jpg create mode 100644 docs/v1/lilygo-t-circle-s3.jpg create mode 100644 docs/v1/m5cores3.jpg create mode 100644 docs/v1/magiclick.jpg create mode 100644 docs/v1/movecall-cuican-esp32s3.jpg create mode 100644 docs/v1/movecall-moji-esp32s3.jpg create mode 100644 docs/v1/otto-robot.png create mode 100644 docs/v1/sensecap_watcher.jpg create mode 100644 docs/v1/waveshare.jpg create mode 100644 docs/v1/wiring2.jpg create mode 100644 docs/v1/wmnologo_xingzhi_0.96.jpg create mode 100644 docs/v1/wmnologo_xingzhi_1.54.jpg create mode 100644 docs/v1/xmini-c3.jpg create mode 100644 docs/websocket.md create mode 100644 main/CMakeLists.txt create mode 100644 main/Kconfig.projbuild create mode 100644 main/application.cc create mode 100644 main/application.h create mode 100644 main/assets.cc create mode 100644 main/assets.h create mode 100644 main/assets/common/exclamation.ogg create mode 100644 main/assets/common/low_battery.ogg create mode 100644 main/assets/common/popup.ogg create mode 100644 main/assets/common/success.ogg create mode 100644 main/assets/common/vibration.ogg create mode 100644 main/assets/locales/ar-SA/0.ogg create mode 100644 main/assets/locales/ar-SA/1.ogg create mode 100644 main/assets/locales/ar-SA/2.ogg create mode 100644 main/assets/locales/ar-SA/3.ogg create mode 100644 main/assets/locales/ar-SA/4.ogg create mode 100644 main/assets/locales/ar-SA/5.ogg create mode 100644 main/assets/locales/ar-SA/6.ogg create mode 100644 main/assets/locales/ar-SA/7.ogg create mode 100644 main/assets/locales/ar-SA/8.ogg create mode 100644 main/assets/locales/ar-SA/9.ogg create mode 100644 main/assets/locales/ar-SA/activation.ogg create mode 100644 main/assets/locales/ar-SA/err_pin.ogg create mode 100644 main/assets/locales/ar-SA/err_reg.ogg create mode 100644 main/assets/locales/ar-SA/language.json create mode 100644 main/assets/locales/ar-SA/upgrade.ogg create mode 100644 main/assets/locales/ar-SA/welcome.ogg create mode 100644 main/assets/locales/ar-SA/wificonfig.ogg create mode 100644 main/assets/locales/cs-CZ/0.ogg create mode 100644 main/assets/locales/cs-CZ/1.ogg create mode 100644 main/assets/locales/cs-CZ/2.ogg create mode 100644 main/assets/locales/cs-CZ/3.ogg create mode 100644 main/assets/locales/cs-CZ/4.ogg create mode 100644 main/assets/locales/cs-CZ/5.ogg create mode 100644 main/assets/locales/cs-CZ/6.ogg create mode 100644 main/assets/locales/cs-CZ/7.ogg create mode 100644 main/assets/locales/cs-CZ/8.ogg create mode 100644 main/assets/locales/cs-CZ/9.ogg create mode 100644 main/assets/locales/cs-CZ/activation.ogg create mode 100644 main/assets/locales/cs-CZ/err_pin.ogg create mode 100644 main/assets/locales/cs-CZ/err_reg.ogg create mode 100644 main/assets/locales/cs-CZ/language.json create mode 100644 main/assets/locales/cs-CZ/upgrade.ogg create mode 100644 main/assets/locales/cs-CZ/welcome.ogg create mode 100644 main/assets/locales/cs-CZ/wificonfig.ogg create mode 100644 main/assets/locales/de-DE/0.ogg create mode 100644 main/assets/locales/de-DE/1.ogg create mode 100644 main/assets/locales/de-DE/2.ogg create mode 100644 main/assets/locales/de-DE/3.ogg create mode 100644 main/assets/locales/de-DE/4.ogg create mode 100644 main/assets/locales/de-DE/5.ogg create mode 100644 main/assets/locales/de-DE/6.ogg create mode 100644 main/assets/locales/de-DE/7.ogg create mode 100644 main/assets/locales/de-DE/8.ogg create mode 100644 main/assets/locales/de-DE/9.ogg create mode 100644 main/assets/locales/de-DE/activation.ogg create mode 100644 main/assets/locales/de-DE/err_pin.ogg create mode 100644 main/assets/locales/de-DE/err_reg.ogg create mode 100644 main/assets/locales/de-DE/language.json create mode 100644 main/assets/locales/de-DE/upgrade.ogg create mode 100644 main/assets/locales/de-DE/welcome.ogg create mode 100644 main/assets/locales/de-DE/wificonfig.ogg create mode 100644 main/assets/locales/en-US/0.ogg create mode 100644 main/assets/locales/en-US/1.ogg create mode 100644 main/assets/locales/en-US/2.ogg create mode 100644 main/assets/locales/en-US/3.ogg create mode 100644 main/assets/locales/en-US/4.ogg create mode 100644 main/assets/locales/en-US/5.ogg create mode 100644 main/assets/locales/en-US/6.ogg create mode 100644 main/assets/locales/en-US/7.ogg create mode 100644 main/assets/locales/en-US/8.ogg create mode 100644 main/assets/locales/en-US/9.ogg create mode 100644 main/assets/locales/en-US/activation.ogg create mode 100644 main/assets/locales/en-US/err_pin.ogg create mode 100644 main/assets/locales/en-US/err_reg.ogg create mode 100644 main/assets/locales/en-US/language.json create mode 100644 main/assets/locales/en-US/upgrade.ogg create mode 100644 main/assets/locales/en-US/welcome.ogg create mode 100644 main/assets/locales/en-US/wificonfig.ogg create mode 100644 main/assets/locales/es-ES/0.ogg create mode 100644 main/assets/locales/es-ES/1.ogg create mode 100644 main/assets/locales/es-ES/2.ogg create mode 100644 main/assets/locales/es-ES/3.ogg create mode 100644 main/assets/locales/es-ES/4.ogg create mode 100644 main/assets/locales/es-ES/5.ogg create mode 100644 main/assets/locales/es-ES/6.ogg create mode 100644 main/assets/locales/es-ES/7.ogg create mode 100644 main/assets/locales/es-ES/8.ogg create mode 100644 main/assets/locales/es-ES/9.ogg create mode 100644 main/assets/locales/es-ES/activation.ogg create mode 100644 main/assets/locales/es-ES/err_pin.ogg create mode 100644 main/assets/locales/es-ES/err_reg.ogg create mode 100644 main/assets/locales/es-ES/language.json create mode 100644 main/assets/locales/es-ES/upgrade.ogg create mode 100644 main/assets/locales/es-ES/welcome.ogg create mode 100644 main/assets/locales/es-ES/wificonfig.ogg create mode 100644 main/assets/locales/fi-FI/0.ogg create mode 100644 main/assets/locales/fi-FI/1.ogg create mode 100644 main/assets/locales/fi-FI/2.ogg create mode 100644 main/assets/locales/fi-FI/3.ogg create mode 100644 main/assets/locales/fi-FI/4.ogg create mode 100644 main/assets/locales/fi-FI/5.ogg create mode 100644 main/assets/locales/fi-FI/6.ogg create mode 100644 main/assets/locales/fi-FI/7.ogg create mode 100644 main/assets/locales/fi-FI/8.ogg create mode 100644 main/assets/locales/fi-FI/9.ogg create mode 100644 main/assets/locales/fi-FI/activation.ogg create mode 100644 main/assets/locales/fi-FI/err_pin.ogg create mode 100644 main/assets/locales/fi-FI/err_reg.ogg create mode 100644 main/assets/locales/fi-FI/language.json create mode 100644 main/assets/locales/fi-FI/upgrade.ogg create mode 100644 main/assets/locales/fi-FI/welcome.ogg create mode 100644 main/assets/locales/fi-FI/wificonfig.ogg create mode 100644 main/assets/locales/fr-FR/0.ogg create mode 100644 main/assets/locales/fr-FR/1.ogg create mode 100644 main/assets/locales/fr-FR/2.ogg create mode 100644 main/assets/locales/fr-FR/3.ogg create mode 100644 main/assets/locales/fr-FR/4.ogg create mode 100644 main/assets/locales/fr-FR/5.ogg create mode 100644 main/assets/locales/fr-FR/6.ogg create mode 100644 main/assets/locales/fr-FR/7.ogg create mode 100644 main/assets/locales/fr-FR/8.ogg create mode 100644 main/assets/locales/fr-FR/9.ogg create mode 100644 main/assets/locales/fr-FR/activation.ogg create mode 100644 main/assets/locales/fr-FR/err_pin.ogg create mode 100644 main/assets/locales/fr-FR/err_reg.ogg create mode 100644 main/assets/locales/fr-FR/language.json create mode 100644 main/assets/locales/fr-FR/upgrade.ogg create mode 100644 main/assets/locales/fr-FR/welcome.ogg create mode 100644 main/assets/locales/fr-FR/wificonfig.ogg create mode 100644 main/assets/locales/hi-IN/0.ogg create mode 100644 main/assets/locales/hi-IN/1.ogg create mode 100644 main/assets/locales/hi-IN/2.ogg create mode 100644 main/assets/locales/hi-IN/3.ogg create mode 100644 main/assets/locales/hi-IN/4.ogg create mode 100644 main/assets/locales/hi-IN/5.ogg create mode 100644 main/assets/locales/hi-IN/6.ogg create mode 100644 main/assets/locales/hi-IN/7.ogg create mode 100644 main/assets/locales/hi-IN/8.ogg create mode 100644 main/assets/locales/hi-IN/9.ogg create mode 100644 main/assets/locales/hi-IN/activation.ogg create mode 100644 main/assets/locales/hi-IN/err_pin.ogg create mode 100644 main/assets/locales/hi-IN/err_reg.ogg create mode 100644 main/assets/locales/hi-IN/language.json create mode 100644 main/assets/locales/hi-IN/upgrade.ogg create mode 100644 main/assets/locales/hi-IN/welcome.ogg create mode 100644 main/assets/locales/hi-IN/wificonfig.ogg create mode 100644 main/assets/locales/id-ID/0.ogg create mode 100644 main/assets/locales/id-ID/1.ogg create mode 100644 main/assets/locales/id-ID/2.ogg create mode 100644 main/assets/locales/id-ID/3.ogg create mode 100644 main/assets/locales/id-ID/4.ogg create mode 100644 main/assets/locales/id-ID/5.ogg create mode 100644 main/assets/locales/id-ID/6.ogg create mode 100644 main/assets/locales/id-ID/7.ogg create mode 100644 main/assets/locales/id-ID/8.ogg create mode 100644 main/assets/locales/id-ID/9.ogg create mode 100644 main/assets/locales/id-ID/activation.ogg create mode 100644 main/assets/locales/id-ID/err_pin.ogg create mode 100644 main/assets/locales/id-ID/err_reg.ogg create mode 100644 main/assets/locales/id-ID/language.json create mode 100644 main/assets/locales/id-ID/upgrade.ogg create mode 100644 main/assets/locales/id-ID/welcome.ogg create mode 100644 main/assets/locales/id-ID/wificonfig.ogg create mode 100644 main/assets/locales/it-IT/0.ogg create mode 100644 main/assets/locales/it-IT/1.ogg create mode 100644 main/assets/locales/it-IT/2.ogg create mode 100644 main/assets/locales/it-IT/3.ogg create mode 100644 main/assets/locales/it-IT/4.ogg create mode 100644 main/assets/locales/it-IT/5.ogg create mode 100644 main/assets/locales/it-IT/6.ogg create mode 100644 main/assets/locales/it-IT/7.ogg create mode 100644 main/assets/locales/it-IT/8.ogg create mode 100644 main/assets/locales/it-IT/9.ogg create mode 100644 main/assets/locales/it-IT/activation.ogg create mode 100644 main/assets/locales/it-IT/err_pin.ogg create mode 100644 main/assets/locales/it-IT/err_reg.ogg create mode 100644 main/assets/locales/it-IT/language.json create mode 100644 main/assets/locales/it-IT/upgrade.ogg create mode 100644 main/assets/locales/it-IT/welcome.ogg create mode 100644 main/assets/locales/it-IT/wificonfig.ogg create mode 100644 main/assets/locales/ja-JP/0.ogg create mode 100644 main/assets/locales/ja-JP/1.ogg create mode 100644 main/assets/locales/ja-JP/2.ogg create mode 100644 main/assets/locales/ja-JP/3.ogg create mode 100644 main/assets/locales/ja-JP/4.ogg create mode 100644 main/assets/locales/ja-JP/5.ogg create mode 100644 main/assets/locales/ja-JP/6.ogg create mode 100644 main/assets/locales/ja-JP/7.ogg create mode 100644 main/assets/locales/ja-JP/8.ogg create mode 100644 main/assets/locales/ja-JP/9.ogg create mode 100644 main/assets/locales/ja-JP/activation.ogg create mode 100644 main/assets/locales/ja-JP/err_pin.ogg create mode 100644 main/assets/locales/ja-JP/err_reg.ogg create mode 100644 main/assets/locales/ja-JP/language.json create mode 100644 main/assets/locales/ja-JP/upgrade.ogg create mode 100644 main/assets/locales/ja-JP/welcome.ogg create mode 100644 main/assets/locales/ja-JP/wificonfig.ogg create mode 100644 main/assets/locales/ko-KR/0.ogg create mode 100644 main/assets/locales/ko-KR/1.ogg create mode 100644 main/assets/locales/ko-KR/2.ogg create mode 100644 main/assets/locales/ko-KR/3.ogg create mode 100644 main/assets/locales/ko-KR/4.ogg create mode 100644 main/assets/locales/ko-KR/5.ogg create mode 100644 main/assets/locales/ko-KR/6.ogg create mode 100644 main/assets/locales/ko-KR/7.ogg create mode 100644 main/assets/locales/ko-KR/8.ogg create mode 100644 main/assets/locales/ko-KR/9.ogg create mode 100644 main/assets/locales/ko-KR/activation.ogg create mode 100644 main/assets/locales/ko-KR/err_pin.ogg create mode 100644 main/assets/locales/ko-KR/err_reg.ogg create mode 100644 main/assets/locales/ko-KR/language.json create mode 100644 main/assets/locales/ko-KR/upgrade.ogg create mode 100644 main/assets/locales/ko-KR/welcome.ogg create mode 100644 main/assets/locales/ko-KR/wificonfig.ogg create mode 100644 main/assets/locales/pl-PL/0.ogg create mode 100644 main/assets/locales/pl-PL/1.ogg create mode 100644 main/assets/locales/pl-PL/2.ogg create mode 100644 main/assets/locales/pl-PL/3.ogg create mode 100644 main/assets/locales/pl-PL/4.ogg create mode 100644 main/assets/locales/pl-PL/5.ogg create mode 100644 main/assets/locales/pl-PL/6.ogg create mode 100644 main/assets/locales/pl-PL/7.ogg create mode 100644 main/assets/locales/pl-PL/8.ogg create mode 100644 main/assets/locales/pl-PL/9.ogg create mode 100644 main/assets/locales/pl-PL/activation.ogg create mode 100644 main/assets/locales/pl-PL/err_pin.ogg create mode 100644 main/assets/locales/pl-PL/err_reg.ogg create mode 100644 main/assets/locales/pl-PL/language.json create mode 100644 main/assets/locales/pl-PL/upgrade.ogg create mode 100644 main/assets/locales/pl-PL/welcome.ogg create mode 100644 main/assets/locales/pl-PL/wificonfig.ogg create mode 100644 main/assets/locales/pt-PT/0.ogg create mode 100644 main/assets/locales/pt-PT/1.ogg create mode 100644 main/assets/locales/pt-PT/2.ogg create mode 100644 main/assets/locales/pt-PT/3.ogg create mode 100644 main/assets/locales/pt-PT/4.ogg create mode 100644 main/assets/locales/pt-PT/5.ogg create mode 100644 main/assets/locales/pt-PT/6.ogg create mode 100644 main/assets/locales/pt-PT/7.ogg create mode 100644 main/assets/locales/pt-PT/8.ogg create mode 100644 main/assets/locales/pt-PT/9.ogg create mode 100644 main/assets/locales/pt-PT/activation.ogg create mode 100644 main/assets/locales/pt-PT/err_pin.ogg create mode 100644 main/assets/locales/pt-PT/err_reg.ogg create mode 100644 main/assets/locales/pt-PT/language.json create mode 100644 main/assets/locales/pt-PT/upgrade.ogg create mode 100644 main/assets/locales/pt-PT/welcome.ogg create mode 100644 main/assets/locales/pt-PT/wificonfig.ogg create mode 100644 main/assets/locales/ro-RO/0.ogg create mode 100644 main/assets/locales/ro-RO/1.ogg create mode 100644 main/assets/locales/ro-RO/2.ogg create mode 100644 main/assets/locales/ro-RO/3.ogg create mode 100644 main/assets/locales/ro-RO/4.ogg create mode 100644 main/assets/locales/ro-RO/5.ogg create mode 100644 main/assets/locales/ro-RO/6.ogg create mode 100644 main/assets/locales/ro-RO/7.ogg create mode 100644 main/assets/locales/ro-RO/8.ogg create mode 100644 main/assets/locales/ro-RO/9.ogg create mode 100644 main/assets/locales/ro-RO/activation.ogg create mode 100644 main/assets/locales/ro-RO/err_pin.ogg create mode 100644 main/assets/locales/ro-RO/err_reg.ogg create mode 100644 main/assets/locales/ro-RO/language.json create mode 100644 main/assets/locales/ro-RO/upgrade.ogg create mode 100644 main/assets/locales/ro-RO/welcome.ogg create mode 100644 main/assets/locales/ro-RO/wificonfig.ogg create mode 100644 main/assets/locales/ru-RU/0.ogg create mode 100644 main/assets/locales/ru-RU/1.ogg create mode 100644 main/assets/locales/ru-RU/2.ogg create mode 100644 main/assets/locales/ru-RU/3.ogg create mode 100644 main/assets/locales/ru-RU/4.ogg create mode 100644 main/assets/locales/ru-RU/5.ogg create mode 100644 main/assets/locales/ru-RU/6.ogg create mode 100644 main/assets/locales/ru-RU/7.ogg create mode 100644 main/assets/locales/ru-RU/8.ogg create mode 100644 main/assets/locales/ru-RU/9.ogg create mode 100644 main/assets/locales/ru-RU/activation.ogg create mode 100644 main/assets/locales/ru-RU/err_pin.ogg create mode 100644 main/assets/locales/ru-RU/err_reg.ogg create mode 100644 main/assets/locales/ru-RU/language.json create mode 100644 main/assets/locales/ru-RU/upgrade.ogg create mode 100644 main/assets/locales/ru-RU/welcome.ogg create mode 100644 main/assets/locales/ru-RU/wificonfig.ogg create mode 100644 main/assets/locales/th-TH/0.ogg create mode 100644 main/assets/locales/th-TH/1.ogg create mode 100644 main/assets/locales/th-TH/2.ogg create mode 100644 main/assets/locales/th-TH/3.ogg create mode 100644 main/assets/locales/th-TH/4.ogg create mode 100644 main/assets/locales/th-TH/5.ogg create mode 100644 main/assets/locales/th-TH/6.ogg create mode 100644 main/assets/locales/th-TH/7.ogg create mode 100644 main/assets/locales/th-TH/8.ogg create mode 100644 main/assets/locales/th-TH/9.ogg create mode 100644 main/assets/locales/th-TH/activation.ogg create mode 100644 main/assets/locales/th-TH/err_pin.ogg create mode 100644 main/assets/locales/th-TH/err_reg.ogg create mode 100644 main/assets/locales/th-TH/language.json create mode 100644 main/assets/locales/th-TH/upgrade.ogg create mode 100644 main/assets/locales/th-TH/welcome.ogg create mode 100644 main/assets/locales/th-TH/wificonfig.ogg create mode 100644 main/assets/locales/tr-TR/0.ogg create mode 100644 main/assets/locales/tr-TR/1.ogg create mode 100644 main/assets/locales/tr-TR/2.ogg create mode 100644 main/assets/locales/tr-TR/3.ogg create mode 100644 main/assets/locales/tr-TR/4.ogg create mode 100644 main/assets/locales/tr-TR/5.ogg create mode 100644 main/assets/locales/tr-TR/6.ogg create mode 100644 main/assets/locales/tr-TR/7.ogg create mode 100644 main/assets/locales/tr-TR/8.ogg create mode 100644 main/assets/locales/tr-TR/9.ogg create mode 100644 main/assets/locales/tr-TR/activation.ogg create mode 100644 main/assets/locales/tr-TR/err_pin.ogg create mode 100644 main/assets/locales/tr-TR/err_reg.ogg create mode 100644 main/assets/locales/tr-TR/language.json create mode 100644 main/assets/locales/tr-TR/upgrade.ogg create mode 100644 main/assets/locales/tr-TR/welcome.ogg create mode 100644 main/assets/locales/tr-TR/wificonfig.ogg create mode 100644 main/assets/locales/uk-UA/0.ogg create mode 100644 main/assets/locales/uk-UA/1.ogg create mode 100644 main/assets/locales/uk-UA/2.ogg create mode 100644 main/assets/locales/uk-UA/3.ogg create mode 100644 main/assets/locales/uk-UA/4.ogg create mode 100644 main/assets/locales/uk-UA/5.ogg create mode 100644 main/assets/locales/uk-UA/6.ogg create mode 100644 main/assets/locales/uk-UA/7.ogg create mode 100644 main/assets/locales/uk-UA/8.ogg create mode 100644 main/assets/locales/uk-UA/9.ogg create mode 100644 main/assets/locales/uk-UA/activation.ogg create mode 100644 main/assets/locales/uk-UA/err_pin.ogg create mode 100644 main/assets/locales/uk-UA/err_reg.ogg create mode 100644 main/assets/locales/uk-UA/language.json create mode 100644 main/assets/locales/uk-UA/upgrade.ogg create mode 100644 main/assets/locales/uk-UA/welcome.ogg create mode 100644 main/assets/locales/uk-UA/wificonfig.ogg create mode 100644 main/assets/locales/vi-VN/0.ogg create mode 100644 main/assets/locales/vi-VN/1.ogg create mode 100644 main/assets/locales/vi-VN/2.ogg create mode 100644 main/assets/locales/vi-VN/3.ogg create mode 100644 main/assets/locales/vi-VN/4.ogg create mode 100644 main/assets/locales/vi-VN/5.ogg create mode 100644 main/assets/locales/vi-VN/6.ogg create mode 100644 main/assets/locales/vi-VN/7.ogg create mode 100644 main/assets/locales/vi-VN/8.ogg create mode 100644 main/assets/locales/vi-VN/9.ogg create mode 100644 main/assets/locales/vi-VN/activation.ogg create mode 100644 main/assets/locales/vi-VN/err_pin.ogg create mode 100644 main/assets/locales/vi-VN/err_reg.ogg create mode 100644 main/assets/locales/vi-VN/language.json create mode 100644 main/assets/locales/vi-VN/upgrade.ogg create mode 100644 main/assets/locales/vi-VN/welcome.ogg create mode 100644 main/assets/locales/vi-VN/wificonfig.ogg create mode 100644 main/assets/locales/zh-CN/0.ogg create mode 100644 main/assets/locales/zh-CN/1.ogg create mode 100644 main/assets/locales/zh-CN/2.ogg create mode 100644 main/assets/locales/zh-CN/3.ogg create mode 100644 main/assets/locales/zh-CN/4.ogg create mode 100644 main/assets/locales/zh-CN/5.ogg create mode 100644 main/assets/locales/zh-CN/6.ogg create mode 100644 main/assets/locales/zh-CN/7.ogg create mode 100644 main/assets/locales/zh-CN/8.ogg create mode 100644 main/assets/locales/zh-CN/9.ogg create mode 100644 main/assets/locales/zh-CN/activation.ogg create mode 100644 main/assets/locales/zh-CN/err_pin.ogg create mode 100644 main/assets/locales/zh-CN/err_reg.ogg create mode 100644 main/assets/locales/zh-CN/language.json create mode 100644 main/assets/locales/zh-CN/upgrade.ogg create mode 100644 main/assets/locales/zh-CN/welcome.ogg create mode 100644 main/assets/locales/zh-CN/wificonfig.ogg create mode 100644 main/assets/locales/zh-TW/0.ogg create mode 100644 main/assets/locales/zh-TW/1.ogg create mode 100644 main/assets/locales/zh-TW/2.ogg create mode 100644 main/assets/locales/zh-TW/3.ogg create mode 100644 main/assets/locales/zh-TW/4.ogg create mode 100644 main/assets/locales/zh-TW/5.ogg create mode 100644 main/assets/locales/zh-TW/6.ogg create mode 100644 main/assets/locales/zh-TW/7.ogg create mode 100644 main/assets/locales/zh-TW/8.ogg create mode 100644 main/assets/locales/zh-TW/9.ogg create mode 100644 main/assets/locales/zh-TW/activation.ogg create mode 100644 main/assets/locales/zh-TW/err_pin.ogg create mode 100644 main/assets/locales/zh-TW/err_reg.ogg create mode 100644 main/assets/locales/zh-TW/language.json create mode 100644 main/assets/locales/zh-TW/upgrade.ogg create mode 100644 main/assets/locales/zh-TW/welcome.ogg create mode 100644 main/assets/locales/zh-TW/wificonfig.ogg create mode 100644 main/audio/README.md create mode 100644 main/audio/audio_codec.cc create mode 100644 main/audio/audio_codec.h create mode 100644 main/audio/audio_processor.h create mode 100644 main/audio/audio_service.cc create mode 100644 main/audio/audio_service.h create mode 100644 main/audio/codecs/box_audio_codec.cc create mode 100644 main/audio/codecs/box_audio_codec.h create mode 100644 main/audio/codecs/dummy_audio_codec.cc create mode 100644 main/audio/codecs/dummy_audio_codec.h create mode 100644 main/audio/codecs/es8311_audio_codec.cc create mode 100644 main/audio/codecs/es8311_audio_codec.h create mode 100644 main/audio/codecs/es8374_audio_codec.cc create mode 100644 main/audio/codecs/es8374_audio_codec.h create mode 100644 main/audio/codecs/es8388_audio_codec.cc create mode 100644 main/audio/codecs/es8388_audio_codec.h create mode 100644 main/audio/codecs/es8389_audio_codec.cc create mode 100644 main/audio/codecs/es8389_audio_codec.h create mode 100644 main/audio/codecs/no_audio_codec.cc create mode 100644 main/audio/codecs/no_audio_codec.h create mode 100644 main/audio/processors/afe_audio_processor.cc create mode 100644 main/audio/processors/afe_audio_processor.h create mode 100644 main/audio/processors/audio_debugger.cc create mode 100644 main/audio/processors/audio_debugger.h create mode 100644 main/audio/processors/no_audio_processor.cc create mode 100644 main/audio/processors/no_audio_processor.h create mode 100644 main/audio/wake_word.h create mode 100644 main/audio/wake_words/afe_wake_word.cc create mode 100644 main/audio/wake_words/afe_wake_word.h create mode 100644 main/audio/wake_words/custom_wake_word.cc create mode 100644 main/audio/wake_words/custom_wake_word.h create mode 100644 main/audio/wake_words/esp_wake_word.cc create mode 100644 main/audio/wake_words/esp_wake_word.h create mode 100644 main/boards/README.md create mode 100644 main/boards/common/adc_battery_monitor.cc create mode 100644 main/boards/common/adc_battery_monitor.h create mode 100644 main/boards/common/afsk_demod.cc create mode 100644 main/boards/common/afsk_demod.h create mode 100644 main/boards/common/axp2101.cc create mode 100644 main/boards/common/axp2101.h create mode 100644 main/boards/common/backlight.cc create mode 100644 main/boards/common/backlight.h create mode 100644 main/boards/common/board.cc create mode 100644 main/boards/common/board.h create mode 100644 main/boards/common/button.cc create mode 100644 main/boards/common/button.h create mode 100644 main/boards/common/camera.h create mode 100644 main/boards/common/dual_network_board.cc create mode 100644 main/boards/common/dual_network_board.h create mode 100644 main/boards/common/esp32_camera.cc create mode 100644 main/boards/common/esp32_camera.h create mode 100644 main/boards/common/i2c_device.cc create mode 100644 main/boards/common/i2c_device.h create mode 100644 main/boards/common/knob.cc create mode 100644 main/boards/common/knob.h create mode 100644 main/boards/common/lamp_controller.h create mode 100644 main/boards/common/ml307_board.cc create mode 100644 main/boards/common/ml307_board.h create mode 100644 main/boards/common/power_save_timer.cc create mode 100644 main/boards/common/power_save_timer.h create mode 100644 main/boards/common/press_to_talk_mcp_tool.cc create mode 100644 main/boards/common/press_to_talk_mcp_tool.h create mode 100644 main/boards/common/sleep_timer.cc create mode 100644 main/boards/common/sleep_timer.h create mode 100644 main/boards/common/sy6970.cc create mode 100644 main/boards/common/sy6970.h create mode 100644 main/boards/common/system_reset.cc create mode 100644 main/boards/common/system_reset.h create mode 100644 main/boards/common/wifi_board.cc create mode 100644 main/boards/common/wifi_board.h create mode 100644 main/boards/shhk-cam/README.md create mode 100644 main/boards/shhk-cam/config.h create mode 100644 main/boards/shhk-cam/config.json create mode 100644 main/boards/shhk-cam/mcp_controller.cc create mode 100644 main/boards/shhk-cam/power_manager.h create mode 100644 main/boards/shhk-cam/zhengchen_cam_board.cc create mode 100644 main/boards/tudouzi/config.h create mode 100644 main/boards/tudouzi/config.json create mode 100644 main/boards/tudouzi/kevin_box_board.cc create mode 100644 main/boards/waveshare-c6-lcd-1.69/README.md create mode 100644 main/boards/waveshare-c6-lcd-1.69/config.h create mode 100644 main/boards/waveshare-c6-lcd-1.69/config.json create mode 100644 main/boards/waveshare-c6-lcd-1.69/esp32-c6-lcd-1.69.cc create mode 100644 main/boards/waveshare-c6-lcd-1.69/power_manager.h create mode 100644 main/boards/waveshare-c6-touch-amoled-1.43/README.md create mode 100644 main/boards/waveshare-c6-touch-amoled-1.43/config.h create mode 100644 main/boards/waveshare-c6-touch-amoled-1.43/config.json create mode 100644 main/boards/waveshare-c6-touch-amoled-1.43/esp32-c6-touch-amoled-1.43.cc create mode 100644 main/boards/waveshare-p4-nano/README.md create mode 100644 main/boards/waveshare-p4-nano/config.h create mode 100644 main/boards/waveshare-p4-nano/esp32-p4-nano.cc create mode 100644 main/boards/waveshare-p4-wifi6-touch-lcd-4b/README.md create mode 100644 main/boards/waveshare-p4-wifi6-touch-lcd-4b/config.h create mode 100644 main/boards/waveshare-p4-wifi6-touch-lcd-4b/esp32-p4-wifi6-touch-lcd-4b.cc create mode 100644 main/boards/waveshare-p4-wifi6-touch-lcd-xc/README.md create mode 100644 main/boards/waveshare-p4-wifi6-touch-lcd-xc/config.h create mode 100644 main/boards/waveshare-p4-wifi6-touch-lcd-xc/esp32-p4-wifi6-touch-lcd-xc.cc create mode 100644 main/boards/waveshare-s3-audio-board/README.md create mode 100644 main/boards/waveshare-s3-audio-board/config.h create mode 100644 main/boards/waveshare-s3-audio-board/config.json create mode 100644 main/boards/waveshare-s3-audio-board/esp32-s3-audio_board.cc create mode 100644 main/boards/waveshare-s3-audio-board/esp_lcd_jd9853.c create mode 100644 main/boards/waveshare-s3-audio-board/esp_lcd_jd9853.h create mode 100644 main/boards/waveshare-s3-touch-amoled-1.75/README.md create mode 100644 main/boards/waveshare-s3-touch-amoled-1.75/config.h create mode 100644 main/boards/waveshare-s3-touch-amoled-1.75/config.json create mode 100644 main/boards/waveshare-s3-touch-amoled-1.75/esp32-s3-touch-amoled-1.75.cc create mode 100644 main/boards/waveshare-s3-touch-amoled-2.06/README.md create mode 100644 main/boards/waveshare-s3-touch-amoled-2.06/config.h create mode 100644 main/boards/waveshare-s3-touch-amoled-2.06/config.json create mode 100644 main/boards/waveshare-s3-touch-amoled-2.06/esp32-s3-touch-amoled-2.06.cc create mode 100644 main/boards/waveshare-s3-touch-lcd-3.5b/README.md create mode 100644 main/boards/waveshare-s3-touch-lcd-3.5b/config.h create mode 100644 main/boards/waveshare-s3-touch-lcd-3.5b/config.json create mode 100644 main/boards/waveshare-s3-touch-lcd-3.5b/custom_lcd_display.cc create mode 100644 main/boards/waveshare-s3-touch-lcd-3.5b/custom_lcd_display.h create mode 100644 main/boards/waveshare-s3-touch-lcd-3.5b/waveshare-s3-touch-lcd-3.5b.cc create mode 100644 main/boards/xingzhi-cube-0.85tft-ml307/config.h create mode 100644 main/boards/xingzhi-cube-0.85tft-ml307/config.json create mode 100644 main/boards/xingzhi-cube-0.85tft-ml307/xingzhi-cube-0.85tft-ml307.cc create mode 100644 main/boards/xingzhi-cube-0.85tft-wifi/config.h create mode 100644 main/boards/xingzhi-cube-0.85tft-wifi/config.json create mode 100644 main/boards/xingzhi-cube-0.85tft-wifi/xingzhi-cube-0.85tft-wifi.cc create mode 100644 main/boards/xingzhi-cube-0.96oled-ml307/config.h create mode 100644 main/boards/xingzhi-cube-0.96oled-ml307/config.json create mode 100644 main/boards/xingzhi-cube-0.96oled-ml307/xingzhi-cube-0.96oled-ml307.cc create mode 100644 main/boards/xingzhi-cube-0.96oled-wifi/config.h create mode 100644 main/boards/xingzhi-cube-0.96oled-wifi/config.json create mode 100644 main/boards/xingzhi-cube-0.96oled-wifi/xingzhi-cube-0.96oled-wifi.cc create mode 100644 main/boards/xingzhi-cube-1.54tft-ml307/config.h create mode 100644 main/boards/xingzhi-cube-1.54tft-ml307/config.json create mode 100644 main/boards/xingzhi-cube-1.54tft-ml307/xingzhi-cube-1.54tft-ml307.cc create mode 100644 main/boards/xingzhi-cube-1.54tft-wifi/config.h create mode 100644 main/boards/xingzhi-cube-1.54tft-wifi/config.json create mode 100644 main/boards/xingzhi-cube-1.54tft-wifi/power_manager.h create mode 100644 main/boards/xingzhi-cube-1.54tft-wifi/xingzhi-cube-1.54tft-wifi.cc create mode 100644 main/boards/xmini-c3-4g/README.md create mode 100644 main/boards/xmini-c3-4g/config.h create mode 100644 main/boards/xmini-c3-4g/config.json create mode 100644 main/boards/xmini-c3-4g/xmini_c3_4g_board.cc create mode 100644 main/boards/xmini-c3-v3/README.md create mode 100644 main/boards/xmini-c3-v3/config.h create mode 100644 main/boards/xmini-c3-v3/config.json create mode 100644 main/boards/xmini-c3-v3/xmini_c3_board.cc create mode 100644 main/boards/xmini-c3/config.h create mode 100644 main/boards/xmini-c3/config.json create mode 100644 main/boards/xmini-c3/xmini_c3_board.cc create mode 100644 main/boards/yunliao-s3/README.md create mode 100644 main/boards/yunliao-s3/config.h create mode 100644 main/boards/yunliao-s3/config.json create mode 100644 main/boards/yunliao-s3/power_manager.cc create mode 100644 main/boards/yunliao-s3/power_manager.h create mode 100644 main/boards/yunliao-s3/yunliao_s3.cc create mode 100644 main/boards/zhengchen-1.54tft-ml307/README.md create mode 100644 main/boards/zhengchen-1.54tft-ml307/config.h create mode 100644 main/boards/zhengchen-1.54tft-ml307/config.json create mode 100644 main/boards/zhengchen-1.54tft-ml307/zhengchen-1.54tft-ml307.cc create mode 100644 main/boards/zhengchen-1.54tft-wifi/README.md create mode 100644 main/boards/zhengchen-1.54tft-wifi/config.h create mode 100644 main/boards/zhengchen-1.54tft-wifi/config.json create mode 100644 main/boards/zhengchen-1.54tft-wifi/power_manager.h create mode 100644 main/boards/zhengchen-1.54tft-wifi/zhengchen-1.54tft-wifi.cc create mode 100644 main/boards/zhengchen-1.54tft-wifi/zhengchen_lcd_display.h create mode 100644 main/boards/zhengchen-cam-ml307/README.md create mode 100644 main/boards/zhengchen-cam-ml307/config.h create mode 100644 main/boards/zhengchen-cam-ml307/config.json create mode 100644 main/boards/zhengchen-cam-ml307/mcp_controller.cc create mode 100644 main/boards/zhengchen-cam-ml307/power_manager.h create mode 100644 main/boards/zhengchen-cam-ml307/zhengchen_cam_board_ml307.cc create mode 100644 main/device_state.h create mode 100644 main/device_state_event.cc create mode 100644 main/device_state_event.h create mode 100644 main/display/display.cc create mode 100644 main/display/display.h create mode 100644 main/display/lcd_display.cc create mode 100644 main/display/lcd_display.h create mode 100644 main/display/lvgl_display/emoji_collection.cc create mode 100644 main/display/lvgl_display/emoji_collection.h create mode 100644 main/display/lvgl_display/gif/LICENSE.txt create mode 100644 main/display/lvgl_display/gif/gifdec.c create mode 100644 main/display/lvgl_display/gif/gifdec.h create mode 100644 main/display/lvgl_display/gif/gifdec_mve.h create mode 100644 main/display/lvgl_display/gif/lvgl_gif.cc create mode 100644 main/display/lvgl_display/gif/lvgl_gif.h create mode 100644 main/display/lvgl_display/lvgl_display.cc create mode 100644 main/display/lvgl_display/lvgl_display.h create mode 100644 main/display/lvgl_display/lvgl_font.cc create mode 100644 main/display/lvgl_display/lvgl_font.h create mode 100644 main/display/lvgl_display/lvgl_image.cc create mode 100644 main/display/lvgl_display/lvgl_image.h create mode 100644 main/display/lvgl_display/lvgl_theme.cc create mode 100644 main/display/lvgl_display/lvgl_theme.h create mode 100644 main/display/oled_display.cc create mode 100644 main/display/oled_display.h create mode 100644 main/idf_component.yml create mode 100644 main/led/circular_strip.cc create mode 100644 main/led/circular_strip.h create mode 100644 main/led/gpio_led.cc create mode 100644 main/led/gpio_led.h create mode 100644 main/led/led.h create mode 100644 main/led/single_led.cc create mode 100644 main/led/single_led.h create mode 100644 main/main.cc create mode 100644 main/mcp_server.cc create mode 100644 main/mcp_server.h create mode 100644 main/ota.cc create mode 100644 main/ota.h create mode 100644 main/protocols/mqtt_protocol.cc create mode 100644 main/protocols/mqtt_protocol.h create mode 100644 main/protocols/protocol.cc create mode 100644 main/protocols/protocol.h create mode 100644 main/protocols/websocket_protocol.cc create mode 100644 main/protocols/websocket_protocol.h create mode 100644 main/settings.cc create mode 100644 main/settings.h create mode 100644 main/system_info.cc create mode 100644 main/system_info.h create mode 100644 partitions/v1/16m.csv create mode 100644 partitions/v1/16m_custom_wakeword.csv create mode 100644 partitions/v1/16m_echoear.csv create mode 100644 partitions/v1/32m.csv create mode 100644 partitions/v1/4m.csv create mode 100644 partitions/v1/4m_esp-hi.csv create mode 100644 partitions/v1/8m.csv create mode 100644 partitions/v2/16m.csv create mode 100644 partitions/v2/16m_c3.csv create mode 100644 partitions/v2/32m.csv create mode 100644 partitions/v2/8m.csv create mode 100644 partitions/v2/README.md create mode 100644 scripts/Image_Converter/LVGLImage.py create mode 100644 scripts/Image_Converter/README.md create mode 100644 scripts/Image_Converter/lvgl_tools_gui.py create mode 100644 scripts/Image_Converter/requirements.txt create mode 100644 scripts/acoustic_check/demod.py create mode 100644 scripts/acoustic_check/graphic.py create mode 100644 scripts/acoustic_check/main.py create mode 100644 scripts/acoustic_check/readme.md create mode 100644 scripts/acoustic_check/requirements.txt create mode 100644 scripts/audio_debug_server.py create mode 100644 scripts/gen_lang.py create mode 100644 scripts/mp3_to_ogg.sh create mode 100644 scripts/ogg_converter/README.md create mode 100644 scripts/ogg_converter/xiaozhi_ogg_converter.py create mode 100644 scripts/p3_tools/README.md create mode 100644 scripts/p3_tools/batch_convert_gui.py create mode 100644 scripts/p3_tools/convert_audio_to_p3.py create mode 100644 scripts/p3_tools/convert_p3_to_audio.py create mode 100644 scripts/p3_tools/img/img.png create mode 100644 scripts/p3_tools/p3_gui_player.py create mode 100644 scripts/p3_tools/play_p3.py create mode 100644 scripts/p3_tools/requirements.txt create mode 100644 scripts/release.py create mode 100644 scripts/sonic_wifi_config.html create mode 100644 scripts/spiffs_assets/README.md create mode 100644 scripts/spiffs_assets/build.py create mode 100644 scripts/spiffs_assets/build_all.py create mode 100644 scripts/spiffs_assets/pack_model.py create mode 100644 scripts/spiffs_assets/spiffs_assets_gen.py create mode 100644 scripts/versions.py create mode 100644 sdkconfig.defaults create mode 100644 sdkconfig.defaults.esp32 create mode 100644 sdkconfig.defaults.esp32c3 create mode 100644 sdkconfig.defaults.esp32c6 create mode 100644 sdkconfig.defaults.esp32p4 create mode 100644 sdkconfig.defaults.esp32s3 diff --git a/.clangd b/.clangd new file mode 100644 index 0000000..437f255 --- /dev/null +++ b/.clangd @@ -0,0 +1,2 @@ +CompileFlags: + Remove: [-f*, -m*] diff --git a/.github/ISSUE_TEMPLATE/01_build_install_bug.yml b/.github/ISSUE_TEMPLATE/01_build_install_bug.yml new file mode 100644 index 0000000..d3489e2 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/01_build_install_bug.yml @@ -0,0 +1,103 @@ +name: Installation or build bug report +description: Report installation or build bugs +labels: ['bug'] +body: + - type: checkboxes + id: checklist + attributes: + label: Answers checklist. + description: Before submitting a new issue, please follow the checklist and try to find the answer. + options: + - label: I have read the documentation [XiaoZhi AI Programming Guide](https://ccnphfhqs21z.feishu.cn/wiki/F5krwD16viZoF0kKkvDcrZNYnhb) and the issue is not addressed there. + required: true + - label: I have updated my branch (master or release) to the latest version and checked that the issue is present there. + required: true + - label: I have searched the issue tracker for a similar issue and not found a similar issue. + required: true + - type: input + id: xiaozhi_ai_version + attributes: + label: XiaoZhi AI version. + description: On which XiaoZhi AI version does this issue occur on? Run `git describe --tags` to find it. + placeholder: ex. v1.1.0-44-g140aab8 + validations: + required: true + - type: dropdown + id: operating_system + attributes: + label: Operating System used. + multiple: false + options: + - Windows + - Linux + - macOS + validations: + required: true + - type: dropdown + id: build + attributes: + label: How did you build your project? + multiple: false + options: + - Command line with CMake + - Command line with idf.py + - CLion IDE + - VS Code IDE/Cursor + - Other (please specify in More Information) + validations: + required: true + - type: dropdown + id: windows_comand_line + attributes: + label: If you are using Windows, please specify command line type. + multiple: false + options: + - PowerShell + - CMD + validations: + required: false + - type: textarea + id: expected + attributes: + label: What is the expected behavior? + description: Please provide a clear and concise description of the expected behavior. + placeholder: I expected it to... + validations: + required: true + - type: textarea + id: actual + attributes: + label: What is the actual behavior? + description: Please describe actual behavior. + placeholder: Instead it... + validations: + required: true + - type: textarea + id: steps + attributes: + label: Steps to reproduce. + description: 'How do you trigger this bug? Please walk us through it step by step. If this is build bug, please attach sdkconfig file (from your project folder). Please attach your code here.' + value: | + 1. Step + 2. Step + 3. Step + ... + validations: + required: true + - type: textarea + id: debug_logs + attributes: + label: Build or installation Logs. + description: Build or installation log goes here, should contain the backtrace, as well as the reset source if it is a crash. + placeholder: Your log goes here. + render: plain + validations: + required: false + - type: textarea + id: more-info + attributes: + label: More Information. + description: Do you have any other information from investigating this? + placeholder: ex. Any more. + validations: + required: false \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/02_runtime_bug.yml b/.github/ISSUE_TEMPLATE/02_runtime_bug.yml new file mode 100644 index 0000000..60a62f8 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/02_runtime_bug.yml @@ -0,0 +1,115 @@ +name: Runtime bug report +description: Report runtime bugs +labels: ['bug'] +body: + - type: checkboxes + id: checklist + attributes: + label: Answers checklist. + description: Before submitting a new issue, please follow the checklist and try to find the answer. + options: + - label: I have read the documentation [XiaoZhi AI Programming Guide](https://ccnphfhqs21z.feishu.cn/wiki/F5krwD16viZoF0kKkvDcrZNYnhb) and the issue is not addressed there. + required: true + - label: I have updated my firmware to the latest version and checked that the issue is present there. + required: true + - label: I have searched the issue tracker for a similar issue and not found a similar issue. + required: true + - type: input + id: xiaozhi_ai_firmware_version + attributes: + label: XiaoZhi AI firmware version. + description: On which firmware version does this issue occur on? + placeholder: ex. v1.2.1_bread-compact-wifi + validations: + required: true + - type: dropdown + id: operating_system + attributes: + label: Operating System used. + multiple: false + options: + - Windows + - Linux + - macOS + validations: + required: true + - type: dropdown + id: build + attributes: + label: How did you build your project? + multiple: false + options: + - Command line with CMake + - Command line with idf.py + - CLion IDE + - VS Code IDE/Cursor + - Other (please specify in More Information) + validations: + required: true + - type: dropdown + id: windows_comand_line + attributes: + label: If you are using Windows, please specify command line type. + multiple: false + options: + - PowerShell + - CMD + validations: + required: false + - type: dropdown + id: power_supply + attributes: + label: Power Supply used. + multiple: false + options: + - USB + - External 5V + - External 3.3V + - Battery + validations: + required: true + - type: textarea + id: expected + attributes: + label: What is the expected behavior? + description: Please provide a clear and concise description of the expected behavior. + placeholder: I expected it to... + validations: + required: true + - type: textarea + id: actual + attributes: + label: What is the actual behavior? + description: Please describe actual behavior. + placeholder: Instead it... + validations: + required: true + - type: textarea + id: steps + attributes: + label: Steps to reproduce. + description: 'How do you trigger this bug? Please walk us through it step by step. Please attach your code here.' + value: | + 1. Step + 2. Step + 3. Step + ... + validations: + required: true + - type: textarea + id: debug_logs + attributes: + label: Debug Logs. + description: Debug log goes here, should contain the backtrace, as well as the reset source if it is a crash. + placeholder: Your log goes here. + render: plain + validations: + required: false + - type: textarea + id: more-info + attributes: + label: More Information. + description: Do you have any other information from investigating this? + placeholder: ex. Any more. + validations: + required: false \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/03_feature_request.yml b/.github/ISSUE_TEMPLATE/03_feature_request.yml new file mode 100644 index 0000000..79cb921 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/03_feature_request.yml @@ -0,0 +1,34 @@ +name: Feature request +description: Suggest an idea for this project. +labels: ['enhancement'] +body: + - type: markdown + attributes: + value: | + * We welcome any ideas or feature requests! It’s helpful if you can explain exactly why the feature would be useful. + * There are usually some outstanding feature requests in the [existing issues list](https://github.com/78/xiaozhi-esp32/labels/enhancement), feel free to add comments to them. + * If you would like to contribute, please read the [contributions guide](https://ccnphfhqs21z.feishu.cn/wiki/F5krwD16viZoF0kKkvDcrZNYnhb). + - type: textarea + id: problem-related + attributes: + label: Is your feature request related to a problem? + description: Please provide a clear and concise description of what the problem is. + placeholder: ex. I'm always frustrated when ... + - type: textarea + id: solution + attributes: + label: Describe the solution you'd like. + description: Please provide a clear and concise description of what you want to happen. + placeholder: ex. When using XiaoZhi ... + - type: textarea + id: alternatives + attributes: + label: Describe alternatives you've considered. + description: Please provide a clear and concise description of any alternative solutions or features you've considered. + placeholder: ex. Choosing other approach wouldn't work, because ... + - type: textarea + id: context + attributes: + label: Additional context. + description: Please add any other context or screenshots about the feature request here. + placeholder: ex. This would work only when ... \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000..d663ce7 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,8 @@ +blank_issues_enabled: true +contact_links: + - name: 小智 AI 官方网站 + url: https://xiaozhi.me/ + about: 激活设备、配置 AI、声纹识别、声音克隆等应有尽有,DIY 属于你自己的小智 + - name: 小智 AI 聊天机器人百科全书 + url: https://ccnphfhqs21z.feishu.cn/wiki/F5krwD16viZoF0kKkvDcrZNYnhb + about: 开发文档、硬件制作、烧录教程、FAQ尽在小智百科 \ No newline at end of file diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..f7f365e --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,106 @@ +name: Build Boards + +on: + push: + branches: + - main + - ci/* # for ci test + pull_request: + branches: + - main + +permissions: + contents: read + +jobs: + prepare: + name: Determine boards to build + runs-on: ubuntu-latest + outputs: + boards: ${{ steps.select.outputs.boards }} + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Install jq + run: sudo apt-get update && sudo apt-get install -y jq + + - id: list + name: Get all board list + run: | + echo "all_boards=$(python scripts/release.py --list-boards --json)" >> $GITHUB_OUTPUT + + - id: select + name: Select boards based on changes + env: + ALL_BOARDS: ${{ steps.list.outputs.all_boards }} + run: | + EVENT_NAME="${{ github.event_name }}" + + # For push to main branch, build all boards + if [[ "$EVENT_NAME" == "push" ]]; then + echo "boards=$ALL_BOARDS" >> $GITHUB_OUTPUT + exit 0 + fi + + # For pull_request + BASE_SHA="${{ github.event.pull_request.base.sha }}" + HEAD_SHA="${{ github.event.pull_request.head.sha }}" + echo "Base: $BASE_SHA, Head: $HEAD_SHA" + + CHANGED=$(git diff --name-only $BASE_SHA $HEAD_SHA || true) + echo "Changed files:\n$CHANGED" + + NEED_ALL=0 + declare -A AFFECTED + while IFS= read -r file; do + if [[ "$file" == main/* && "$file" != main/boards/* ]]; then + NEED_ALL=1 + fi + + if [[ "$file" == main/boards/* ]]; then + board=$(echo "$file" | cut -d '/' -f3) + AFFECTED[$board]=1 + fi + done <<< "$CHANGED" + + if [[ "$NEED_ALL" -eq 1 ]]; then + echo "boards=$ALL_BOARDS" >> $GITHUB_OUTPUT + else + if [[ ${#AFFECTED[@]} -eq 0 ]]; then + echo "boards=[]" >> $GITHUB_OUTPUT + else + JSON=$(printf '%s\n' "${!AFFECTED[@]}" | sort -u | jq -R -s -c 'split("\n")[:-1]') + echo "boards=$JSON" >> $GITHUB_OUTPUT + fi + fi + + build: + name: Build ${{ matrix.board }} + needs: prepare + if: ${{ needs.prepare.outputs.boards != '[]' }} + strategy: + fail-fast: false # 单个 board 失败不影响其它 board + matrix: + board: ${{ fromJson(needs.prepare.outputs.boards) }} + runs-on: ubuntu-latest + container: + image: espressif/idf:release-v5.4 + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Build current board + shell: bash + run: | + source $IDF_PATH/export.sh + python scripts/release.py ${{ matrix.board }} + + - name: Upload artifacts + uses: actions/upload-artifact@v4 + with: + name: xiaozhi_${{ matrix.board }}_${{ github.sha }}.bin + path: build/merged-binary.bin + if-no-files-found: error \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..62655f1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,18 @@ +tmp/ +components/ +managed_components/ +build/ +.vscode/ +.devcontainer/ +sdkconfig.old +sdkconfig +dependencies.lock +.env +releases/ +main/assets/lang_config.h +main/mmap_generate_emoji.h +.DS_Store +.cache +*.pyc +*.bin +mmap_generate_*.h diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..2f44b3c --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,14 @@ +# For more information about build system see +# https://docs.espressif.com/projects/esp-idf/en/latest/api-guides/build-system.html +# The following five lines of boilerplate have to be in your project's +# CMakeLists in this exact order for cmake to work correctly +cmake_minimum_required(VERSION 3.16) + +set(PROJECT_VER "2.0.1") + +# Add this line to disable the specific warning +add_compile_options(-Wno-missing-field-initializers) + +include($ENV{IDF_PATH}/tools/cmake/project.cmake) +project(xiaozhi) + diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..e90b554 --- /dev/null +++ b/LICENSE @@ -0,0 +1,22 @@ +MIT License + +Copyright (c) 2025 Shenzhen Xinzhi Future Technology Co., Ltd. +Copyright (c) 2025 Project Contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..fcb7519 --- /dev/null +++ b/README.md @@ -0,0 +1,161 @@ +# An MCP-based Chatbot | 一个基于 MCP 的聊天机器人 + +(中文 | [English](README_en.md) | [日本語](README_ja.md)) + +## 视频 + +👉 [人类:给 AI 装摄像头 vs AI:当场发现主人三天没洗头【bilibili】](https://www.bilibili.com/video/BV1bpjgzKEhd/) + +👉 [手工打造你的 AI 女友,新手入门教程【bilibili】](https://www.bilibili.com/video/BV1XnmFYLEJN/) + +## 介绍 + +这是一个由虾哥开源的 ESP32 项目,以 MIT 许可证发布,允许任何人免费使用,或用于商业用途。 + +我们希望通过这个项目,能够帮助大家了解 AI 硬件开发,将当下飞速发展的大语言模型应用到实际的硬件设备中。 + +如果你有任何想法或建议,请随时提出 Issues 或加入 QQ 群:1011329060 + +### 基于 MCP 控制万物 + +小智 AI 聊天机器人作为一个语音交互入口,利用 Qwen / DeepSeek 等大模型的 AI 能力,通过 MCP 协议实现多端控制。 + + + +### 已实现功能 + +- Wi-Fi / ML307 Cat.1 4G +- 离线语音唤醒 [ESP-SR](https://github.com/espressif/esp-sr) +- 支持两种通信协议([Websocket](docs/websocket.md) 或 MQTT+UDP) +- 采用 OPUS 音频编解码 +- 基于流式 ASR + LLM + TTS 架构的语音交互 +- 声纹识别,识别当前说话人的身份 [3D Speaker](https://github.com/modelscope/3D-Speaker) +- OLED / LCD 显示屏,支持表情显示 +- 电量显示与电源管理 +- 支持多语言(中文、英文、日文) +- 支持 ESP32-C3、ESP32-S3、ESP32-P4 芯片平台 +- 通过设备端 MCP 实现设备控制(音量、灯光、电机、GPIO 等) +- 通过云端 MCP 扩展大模型能力(智能家居控制、PC桌面操作、知识搜索、邮件收发等) + +## 硬件 + +### 面包板手工制作实践 + +详见飞书文档教程: + +👉 [《小智 AI 聊天机器人百科全书》](https://ccnphfhqs21z.feishu.cn/wiki/F5krwD16viZoF0kKkvDcrZNYnhb?from=from_copylink) + +面包板效果图如下: + + + +### 支持 70 多个开源硬件(仅展示部分) + +- 立创·实战派 ESP32-S3 开发板 +- 乐鑫 ESP32-S3-BOX3 +- M5Stack CoreS3 +- M5Stack AtomS3R + Echo Base +- 神奇按钮 2.4 +- 微雪电子 ESP32-S3-Touch-AMOLED-1.8 +- LILYGO T-Circle-S3 +- 虾哥 Mini C3 +- 璀璨·AI 吊坠 +- 无名科技 Nologo-星智-1.54TFT +- SenseCAP Watcher +- ESP-HI 超低成本机器狗 + +
+ +## 软件 + +### 固件烧录 + +新手第一次操作建议先不要搭建开发环境,直接使用免开发环境烧录的固件。 + +固件默认接入 [xiaozhi.me](https://xiaozhi.me) 官方服务器,个人用户注册账号可以免费使用 Qwen 实时模型。 + +👉 [新手烧录固件教程](https://ccnphfhqs21z.feishu.cn/wiki/Zpz4wXBtdimBrLk25WdcXzxcnNS) + +### 开发环境 + +- Cursor 或 VSCode +- 安装 ESP-IDF 插件,选择 SDK 版本 5.4 或以上 +- Linux 比 Windows 更好,编译速度快,也免去驱动问题的困扰 +- 本项目使用 Google C++ 代码风格,提交代码时请确保符合规范 + +### 开发者文档 + +- [自定义开发板指南](main/boards/README.md) - 学习如何为小智 AI 创建自定义开发板 +- [MCP 协议物联网控制用法说明](docs/mcp-usage.md) - 了解如何通过 MCP 协议控制物联网设备 +- [MCP 协议交互流程](docs/mcp-protocol.md) - 设备端 MCP 协议的实现方式 +- [MQTT + UDP 混合通信协议文档](docs/mqtt-udp.md) +- [一份详细的 WebSocket 通信协议文档](docs/websocket.md) + +## 大模型配置 + +如果你已经拥有一个小智 AI 聊天机器人设备,并且已接入官方服务器,可以登录 [xiaozhi.me](https://xiaozhi.me) 控制台进行配置。 + +👉 [后台操作视频教程(旧版界面)](https://www.bilibili.com/video/BV1jUCUY2EKM/) + +## 相关开源项目 + +在个人电脑上部署服务器,可以参考以下第三方开源的项目: + +- [xinnan-tech/xiaozhi-esp32-server](https://github.com/xinnan-tech/xiaozhi-esp32-server) Python 服务器 +- [joey-zhou/xiaozhi-esp32-server-java](https://github.com/joey-zhou/xiaozhi-esp32-server-java) Java 服务器 +- [AnimeAIChat/xiaozhi-server-go](https://github.com/AnimeAIChat/xiaozhi-server-go) Golang 服务器 + +使用小智通信协议的第三方客户端项目: + +- [huangjunsen0406/py-xiaozhi](https://github.com/huangjunsen0406/py-xiaozhi) Python 客户端 +- [TOM88812/xiaozhi-android-client](https://github.com/TOM88812/xiaozhi-android-client) Android 客户端 +- [100askTeam/xiaozhi-linux](http://github.com/100askTeam/xiaozhi-linux) 百问科技提供的 Linux 客户端 +- [78/xiaozhi-sf32](https://github.com/78/xiaozhi-sf32) 思澈科技的蓝牙芯片固件 +- [QuecPython/solution-xiaozhiAI](https://github.com/QuecPython/solution-xiaozhiAI) 移远提供的 QuecPython 固件 + +## Star History + + +xIo?*7ukKth*ihu@` QohExAN`-Ia|$rWC(LvH9~gorC-@VU!)MVptf+dNnAihL}bE_=lptxtxd
z@atAT^4t8M`@v=whXS-*^T{c}oEMMtPVH=q3&(Z>ZOb5*z)%9)8vUx9!5T*gfut`H
z#HlK5LPnNB+`0PBB#cc1Fvxz58N`i8;dnWXTO0m#O5%bS%bo|DHE~5fBm!l^8J*?S
zkPIq=srbq=$Cty)K?V@DM-{!VJd6_pJZ{gg-AN?3o&&nNx@uhq;T^1)h%k*_JO-d+
z)OvcSo*xK?zAejIu8)=liMSNg?A2ObwUw=eiHBm3Sbc%Lfmty|Eni7uga_;Pk$Wj}
zI|}pH*fax=NP%x~<~@JJeo6H>f?Tv(o>BhFFREvC22!n3sVc7 9!i3vByDz>b`pZ)f`#u=@KxTPy2TLl~vzkoM!6&Ma@6EmVG$S*xwn%{{SN9
zgZA>zrxv5Aa|YhrWE vh?~t*4##mIUDs4LK>gF;KhuYj
zS0RtwA%VX@U!B
cPQb8KV$|nW9jj{*GU{6rSrtNO6f^
zc(S1Due8(bOmXQX#eXFaT<>Uar62JHb1&@eBlfP{^%r>^yJT)5Uz>j;v2G)E*`#+@
zD{{f^X~6mpy>%4!N0b|q`}YQ^fcK8%aZK9FPPC%qy5l4St*0H3_q
RUm;!krw)0L)mJkT
zLmU$}bL$zam1W6UlBQQ+5ea&n0Gk>rUAC(s(u*|!R$=&{F;?Pp2c$GqG0$F-_B6ro
zHCTeDv0pkT@7sz~r){NDRuYCx_XJEP^=W|4qB`uv*U0FZ&}DVOP!9t!Rm{u!&Fww4
zj%ye~(Nbx*x?gtdJ|i!^IDNu?V|f&(#vqPvu{l`Gdj)=xa6EirWx|;$m&=E#_`N*tKDA~O&?OIwHh(A%~Ag1f#Ib0C#(u!;%
zZEoVv$}k9mz4VQz4y35WMq6
fVrM;7Vu~fOH@CQq
zS1%R-jxXup2A|<(6a4Zo7F3q)(%19FZSioO9AZ<1o^-?+1OA&9F;~Zo;r?-3zk*FR
zxPNxPs;)h^KTKT$>F=M%ipungvl9_p
kc9HyVY-#qJCTjXj@L
zD%w@hDI<*66T=M|N>iSW+^c|-N}$9f-jsxx%?O7{_1K7}67$M*k#*fmDeqp%2~WjH
z0h6n!iVuPw7xRBLGQp{3n`!?VDl$;vyMWXu;s+(PFhTVU3=kS`cVvWxJ>}XJL
zZf6I|FV4VwaiMPax1RXPg6qZwCX>s1?l0kv-hq(F=ap
6Xjkl@SrxH?7Sh@I}SWBdxZl8NzMbv~8f1(H4ZvnNd(s-3m!j19+m{Y|0*dt?2};
zDk3-m9bm;loS~p*Q@%X-$CK3ZDU1y-RYSio_1B=>X}E@B7WxTkY5*wcSs;VpaL{G8
zV&^9YNvQJ1vdVdlcS@>e