{"repo":"arendst/Tasmota","free":true,"listed":false,"github":"https://github.com/arendst/Tasmota","clone":"git clone https://github.com/arendst/Tasmota.git","description":"Alternative firmware for ESP8266 and ESP32 based devices with easy configuration using webUI, OTA updates, automation using timers or rules, expandability and entirely local control over MQTT, HTTP, Serial or KNX. Full documentation at","language":"C","stars":24704,"topics":["arduino","automation","esp32","esp8266","firmware","iot","knx","mqtt","ota","smart-home","sonoff","tasmota","tuya"],"license":"GPL-3.0","category":"iot_firmware","readme_excerpt":"![Tasmota logo](/tools/logo/TASMOTA_FullLogo_Vector.svg#gh-light-mode-only)![Tasmota logo](/tools/logo/TASMOTA_FullLogo_Vector_White.svg#gh-dark-mode-only)\n\nAlternative firmware for [ESP8266](https://en.wikipedia.org/wiki/ESP8266) and [ESP32](https://en.wikipedia.org/wiki/ESP32) based devices with **easy configuration using webUI, OTA updates, automation using timers or rules, expandability and entirely local control over MQTT, HTTP, Serial or KNX**.\n_Written for PlatformIO._\n\n[![GitHub version](https://img.shields.io/github/release/arendst/Tasmota.svg)](http://ota.tasmota.com/tasmota/release)\n[![GitHub download](https://img.shields.io/github/downloads/arendst/Tasmota/total.svg)](https://github.com/arendst/Tasmota/releases/latest)\n[![License](https://img.shields.io/github/license/arendst/Tasmota.svg)](LICENSE.txt)\n[![Discord](https://img.shields.io/discord/479389167382691863.svg?logo=discord&logoColor=white&color=5865F2&label=Discord)](https://discord.gg/Ks2Kzd4)\n\n<hr></hr>\n\n**In light of current events we like to support the people behind _PlatformIO Project_, especially Ivan Kravets, and wish them the strength to help stop the war. See [platformio-is-ukrainian-project-please-help-us-stop-the-war](https://community.platformio.org/t/platformio-is-ukrainian-project-please-help-us-stop-the-war/26330) for what you can do.**\n\n<hr></hr>\n\n## Easy install\n\nEasy initial installation of Tasmota can be performed using the [Tasmota WebInstaller](https://tasmota.github.io/install/).\n\nIf you like **Tasmota**, give it a star, or fork it and contribute!\n\n[![GitHub stars](https://img.shields.io/github/stars/arendst/Tasmota.svg?style=social&label=Star)](https://github.com/arendst/Tasmota/stargazers)\n[![GitHub forks](https://img.shields.io/github/forks/arendst/Tasmota.svg?style=social&label=Fork)](https://github.com/arendst/Tasmota/network)\n[![donate](https://img.shields.io/badge/donate-PayPal-blue.svg)](https://paypal.me/tasmota)\n\nSee [RELEASENOTES.md](https://github.com/arendst/Tasmota/blob/master/RELEASENOTES.md) for release information.\n\nFirmware binaries can be downloaded from http://ota.tasmota.com/tasmota/release/ or http://ota.tasmota.com/tasmota32/release/ for ESP32 binaries.\n\n## Development\n\n[![Dev Version](https://img.shields.io/badge/development%20version-v15.5.x.x-blue.svg)](https://github.com/arendst/Tasmota)\n[![Download Dev](https://img.shields.io/badge/download-development-yellow.svg)](http://ota.tasmota.com/tasmota/)\n[![Tasmota CI](https://github.com/arendst/Tasmota/actions/workflows/build_all_the_things.yml/badge.svg)](https://github.com/arendst/Tasmota/actions/workflows/build_all_the_things.yml)\n[![Build_development](https://github.com/arendst/Tasmota/actions/workflows/Tasmota_build_devel.yml/badge.svg)](https://github.com/arendst/Tasmota/actions/workflows/Tasmota_build_devel.yml)\n\nSee [CHANGELOG.md](CHANGELOG.md) for detailed change information.\n\nUnless your Tasmota powered device exhibits a problem or lacks a feature that you need, leave your device alone - it works so don’t make unnecessary changes! If the release version (i.e., the master branch) exhibits unexpected behaviour for your device and configuration, you should upgrade to the latest development version instead to see if your problem is resolved as some bugs in previous releases or development builds may already have been resolved.\n\nEvery commit made to the development branch, which is compiling successfully, will post new binary files at http://ota.tasmota.com/tasmota/ (this web address can be used for OTA updates too). It is important to note that these binaries are based on the current development codebase. These commits are tested as much as is possible and are typically quite stable. However, it is infeasible to test on the hundreds of different types of devices with all the available configuration options permitted.\n\nNote that there is a chance, as with any upgrade, that the device may not function as expected. You must always account for the possibility that you may need to flash the device via the serial programming interface if the OTA upgrade fails. Even with the master release, you should always attempt to test the device or a similar prototype before upgrading a device which is in production or is hard to reach. And, as always, make a backup of the device configuration before beginning any firmware update.\n\n## Disclaimer\n\n:warning: **DANGER OF ELECTROCUTION** :warning:\n\nIf your device connects to mains electricity (AC power) there is danger of electrocution if not installed properly. If you don't know how to install it, please call an electrician (***Beware:*** certain countries prohibit installation without a licensed electrician present). Remember: _**SAFETY FIRST**_. It is not worth the risk to yourself, your family and your home if you don't know exactly what you are doing. Never tinker or try to flash a device using the serial programming interface while it is connected to MAINS ELECTRICITY (AC power).\n\nWe don't take any responsibility nor liability for using this software nor for the installation or any tips, advice, videos, etc. given by any member of this site or any related site.\n\n## Note\n\nPlease do not ask to add new devices unless it requires additional code for new features. If the device is not listed as a module, try using [Templates](https://tasmota.github.io/docs/Templates) first. If it is not listed in the [Tasmota Device Templates Repository](http://templates.blakadder.com) create your own [Template](https://tasmota.github.io/docs/Templates#creating-your-template).\n\n## Quick Install\nDownload one of the released binaries from http://ota.tasmota.com/tasmota/release/ or http://ota.tasmota.com/tasmota32/release/ and flash it to your hardware [using our installation guide](https://tasmota.github.io/docs/Getting-Started).\n\n## Important User Compilation Information\nIf you want to compile Tasmota yourself keep in mind the following:\n\n- For ESP8285 based devices only Flash Mode **DOUT** is supported. Do not use Flash Mode DIO / QIO / QOUT as it might seem to brick your device.\n- For ESP8285 based devices Tasmota uses a 1M linker script WITHOUT spiffs **1M (no SPIFFS)** for optimal code space.\n- To make compile time changes to Tasmota use the `user_config_override.h` file. It assures keeping your custom settings when you download and compile a new version. You have to make a copy from the provided `user_config_override_sample.h` file and add your setting overrides.\n\n## Configuration Information\n\nPlease refer to the installation and configuration articles in our [documentation](https://tasmota.github.io/docs).\n\n## Migration Information\n\nSee [migration path](https://tasmota.github.io/docs/Upgrading#migration-path) for instructions how to migrate to a major version.\n\n**Do not upgrade from minimal to minimal version. It will most likely fail at some point and will require flashing via serial.** If you do have to use minimal versions, always OTA to a full version of the same release before applying next minimal version.\n\nPay attention to the following version breaks due to dynamic settings updates:\n\n1. Migrate to **Sonoff-Tasmota 3.9.x**\n2. Migrate to **Sonoff-Tasmota 4.x**\n3. Migrate to **Sonoff-Tasmota 5.14**\n4. Migrate to **Sonoff-Tasmota 6.7.1** (http://ota.tasmota.com/tasmota/release_6.7.1/sonoff.bin) - NOTICE underscore as a dash is not supported in older versions\n5. Migrate to **Tasmota 7.2.0** (http://ota.tasmota.com/tasmota/release-7.2.0/tasmota.bin)\n\n--- Major change in parameter storage layout ---\n\n6. Migrate to **Tasmota 8.5.1** (http://ota.tasmota.com/tasmota/release-8.5.1/tasmota.bin)\n\n--- Major change in internal GPIO function representation ---\n\n7. Migrate to **Tasmota 9.1** (http://ota.tasmota.com/tasmota/release-9.1.0/tasmota.bin.gz)\n8. Upgrade to **latest release** (http://ota.tasmota.com/tasmota/release/tasmota.bin.gz)\n\nWhile fallback or downgrading is common practice it was never supported due to Settings additions or changes in newer releases. Starting with release **v9.1.0 Imogen** the internal GPIO function representation has changed in such a way that fallback is only possible to the latest GPIO configuration before installing **v9.1.0**.\n\n## Support Information\n\n<img src=\"https://user-images.githubusercontent.com/5904370/68332933-e6e5a600-00d7-11ea-885d-50395f7239a1.png\" width=150 align=\"right\" />\n\nFor a database of supported devices see [Tasmota Device Templates Repository](https://templates.blakadder.com)\n\nIf you're looking for support on **Tasmota** there are some options available:\n\n### Documentation\n\n* [Documentation Site](https://tasmota.github.io/docs): For information on how to flash Tasmota, configure, use and expand it\n* [FAQ and Troubleshooting](https://tasmota.github.io/docs/FAQ/): For information on common problems and solutions.\n* [Commands Information](https://tasmota.github.io/docs/Commands): For information on all the commands supported by Tasmota.\n\n### Support's Community\n\n* [Tasmota Discussions](https://github.com/arendst/Tasmota/discussions): For Tasmota usage questions, Feature Requests and Projects.\n* [Tasmota Users Chat](https://discord.gg/Ks2Kzd4): For support, troubleshooting and general questions. You have better chances to get fast answers from members of the Tasmota Community.\n* [Search in Issues](https://github.com/arendst/Tasmota/issues): You might find an answer to your question by searching current or closed issues.\n* [Software Problem Report](https://github.com/arendst/Tasmota/issues/new?template=Bug_report.md): For reporting problems of Tasmota Software.\n\n### Unofficial Community Resources\n* [Tasmota-DE](https://t.me/TasmotaDE): A German-language Telegram group related to Tasmota.\n\n## Contribute\n\nYou can contribute to Tasmota by\n- Providing Pull Requests (Features, Proof of Concepts, Language files or Fixes)\n- Testing new released features and report issues\n- Donating to acquire hardware for testing and implementing or out of gratitude\n- Contributing missing [documentatio","default_branch":"development","files":7539,"tree":[".clangd",".doc_for_ai/BERRY_C_EXTENSION_REFERENCE.md",".doc_for_ai/BERRY_LANGUAGE_REFERENCE.md",".doc_for_ai/BERRY_TASMOTA.md",".doc_for_ai/DOC_DEEP_ANALYSIS.md",".doc_for_ai/FOR_DEVELOPERS.md",".doc_for_ai/TASMOTA_SUPPORT_DEEP_ANALYSIS.md",".doc_for_ai/TASMOTA_WEBUI_CODING_GUIDE.md",".doc_for_ai/Tasmota configuration menu.png",".doc_for_ai/Tasmota configuration other.png",".doc_for_ai/Tasmota main page.png",".gitattributes",".github/ISSUE_TEMPLATE/Bug_report.md",".github/ISSUE_TEMPLATE/config.yml",".github/PULL_REQUEST_TEMPLATE.md",".github/config.yml",".github/issue-close-app.yml",".github/workflows/Tasmota_build_devel.yml",".github/workflows/Tasmota_build_master.yml",".github/workflows/build_all_the_things.yml",".github/workflows/copy_change.yml",".github/workflows/stale-actions.yml",".gitignore",".vscode/settings.json","API.md","BUILDS.md","CHANGELOG.md","CMakeLists.txt","CODE_OF_CONDUCT.md","CODE_OWNERS.md","CONTRIBUTING.md","Doxyfile","FIRMWARE.md","I2CDEVICES.md","LICENSE.txt","MODULES.md","README.md","RELEASENOTES.md","SECURITY.md","TEMPLATES-PRE9.md","TEMPLATES.md","api/upload-arduino.php","api/upload-tasmota.php","boards/esp32-fix.json","boards/esp32-solo1.json","boards/esp32.json","boards/esp32c2.json","boards/esp32c2_2M.json","boards/esp32c3.json","boards/esp32c3ser.json","boards/esp32c5.json","boards/esp32c5ser.json","boards/esp32c6.json","boards/esp32c6ser.json","boards/esp32p4.json","boards/esp32p4r3.json","boards/esp32p4r3ser.json","boards/esp32p4ser.json","boards/esp32s2.json","boards/esp32s2cdc.json","boards/esp32s3-opi_opi.json","boards/esp32s3-opi_opi_120.json","boards/esp32s3-qio_opi.json","boards/esp32s3-qio_opi_120.json","boards/esp32s3-qio_qspi.json","boards/esp32s3-qio_qspi_120.json","boards/esp32s3ser-opi_opi.json","boards/esp32s3ser-opi_opi_120.json","boards/esp32s3ser-qio_opi.json","boards/esp32s3ser-qio_opi_120.json","boards/esp32s3ser-qio_qspi.json","boards/esp8266_16M14M.json","boards/esp8266_1M.json","boards/esp8266_2M1M.json","boards/esp8266_2M256.json","boards/esp8266_4M2M.json","boards/esp8266_4M3M.json","boards/esp8266_zbbridge.json","include/esp32x_fixes.h","include/tasmota_options.h","info/xdrv_57_tasmesh.md","lib/default/AT24C256_512/Eeprom24C128_256.cpp","lib/default/AT24C256_512/Eeprom24C128_256.h","lib/default/AT24C256_512/Eeprom24C512.cpp","lib/default/AT24C256_512/Eeprom24C512.h","lib/default/AT24C256_512/library.properties","lib/default/Ext-printf/library.properties","lib/default/Ext-printf/src/SBuffer.hpp","lib/default/Ext-printf/src/ext_printf.cpp","lib/default/Ext-printf/src/ext_printf.h","lib/default/Ext-printf/test/test_ext_printf.cpp","lib/default/LinkedList-1.2.3/LICENSE.txt","lib/default/LinkedList-1.2.3/LinkedList.h","lib/default/LinkedList-1.2.3/LinkedList_with_sort.h","lib/default/LinkedList-1.2.3/README.md","lib/default/LinkedList-1.2.3/examples/ClassList/ClassList.pde","lib/default/LinkedList-1.2.3/examples/SimpleIntegerList/SimpleIntegerList.pde","lib/default/LinkedList-1.2.3/keywords.txt","lib/default/LinkedList-1.2.3/library.json","lib/default/LinkedList-1.2.3/library.properties","lib/default/TasmotaDali/keywords.txt","lib/default/TasmotaDali/library.json","lib/default/TasmotaDali/library.properties","lib/default/TasmotaDali/src/Dali.h","lib/default/TasmotaDali/src/TasmotaDali.cpp","lib/default/TasmotaDali/src/TasmotaDali.h","lib/default/TasmotaLList/README.md","lib/default/TasmotaLList/library.json","lib/default/TasmotaLList/src/LList.h","lib/default/TasmotaPubSub/LICENSE.txt","lib/default/TasmotaPubSub/README.md","lib/default/TasmotaPubSub/library.json","lib/default/TasmotaPubSub/library.properties","lib/default/TasmotaPubSub/src/PubSubClient.cpp","lib/default/TasmotaPubSub/src/PubSubClient.h","lib/default/TasmotaPubSub/tests/.gitignore","lib/default/TasmotaPubSub/tests/Makefile","lib/default/TasmotaPubSub/tests/README.md","lib/default/TasmotaPubSub/tests/src/MockClient_test.cpp","lib/default/TasmotaPubSub/tests/src/MockStream_test.cpp","lib/default/TasmotaPubSub/tests/src/MqttPacket_test.cpp","lib/default/TasmotaPubSub/tests/src/MqttParser_test.cpp","lib/default/TasmotaPubSub/tests/src/api_surface_test.cpp","lib/default/TasmotaPubSub/tests/src/buffer_test.cpp","lib/default/TasmotaPubSub/tests/src/connect_test.cpp","lib/default/TasmotaPubSub/tests/src/findings_test.cpp","lib/default/TasmotaPubSub/tests/src/integration_test.cpp","lib/default/TasmotaPubSub/tests/src/keepalive_test.cpp","lib/default/TasmotaPubSub/tests/src/lib/AllocInterposer.cpp","lib/default/TasmotaPubSub/tests/src/lib/AllocInterposer.h","lib/default/TasmotaPubSub/tests/src/lib/AllocShim.h","lib/default/TasmotaPubSub/tests/src/lib/Arduino.cpp","lib/default/TasmotaPubSub/tests/src/lib/Arduino.h","lib/default/TasmotaPubSub/tests/src/lib/ArduinoString.cpp","lib/default/TasmotaPubSub/tests/src/lib/ArduinoString.h","lib/default/TasmotaPubSub/tests/src/lib/CallbackContractAdapter.cpp","lib/default/TasmotaPubSub/tests/src/lib/CallbackContractAdapter.h","lib/default/TasmotaPubSub/tests/src/lib/Client.h","lib/default/TasmotaPubSub/tests/src/lib/FindingStatus.h","lib/default/TasmotaPubSub/tests/src/lib/IPAddress.cpp","lib/default/TasmotaPubSub/tests/src/lib/IPAddress.h","lib/default/TasmotaPubSub/tests/src/lib/MockClient.cpp","lib/default/TasmotaPubSub/tests/src/lib/MockClient.h","lib/default/TasmotaPubSub/tests/src/lib/MockStream.cpp","lib/default/TasmotaPubSub/tests/src/lib/MockStream.h","lib/default/TasmotaPubSub/tests/src/lib/MqttPacket.cpp","lib/default/TasmotaPubSub/tests/src/lib/MqttPacket.h","lib/default/TasmotaPubSub/tests/src/lib/Print.h","lib/default/TasmotaPubSub/tests/src/lib/Stream.cpp","lib/default/TasmotaPubSub/tests/src/lib/Stream.h","lib/default/TasmotaPubSub/tests/src/lib/TestClock.cpp","lib/default/TasmotaPubSub/tests/src/lib/TestClock.h","lib/default/TasmotaPubSub/tests/src/lib/doctest.h","lib/default/TasmotaPubSub/tests/src/publish_test.cpp","lib/default/TasmotaPubSub/tests/src/receive_test.cpp","lib/default/TasmotaPubSub/tests/src/streaming_test.cpp","lib/default/TasmotaPubSub/tests/src/subscribe_test.cpp","lib/default/TasmotaPubSub/tests/src/test_main.cpp","lib/default/TasmotaSerial-3.7.0/README.md","lib/default/TasmotaSerial-3.7.0/examples/swsertest/swsertest.ino","lib/default/TasmotaSerial-3.7.0/keywords.txt","lib/default/TasmotaSerial-3.7.0/library.json","lib/default/TasmotaSerial-3.7.0/library.properties","lib/default/TasmotaSerial-3.7.0/src/TasmotaSerial.cpp","lib/default/TasmotaSerial-3.7.0/src/TasmotaSerial.h","lib/default/TasmotaWebServer/library.json","lib/default/TasmotaWebServer/library.properties","lib/default/TasmotaWebServer/src/TasmotaWebServer.h","lib/default/TasmotaWire/keywords.txt","lib/default/TasmotaWire/library.properties","lib/default/TasmotaWire/src/Wire.cpp","lib/default/TasmotaWire/src/Wire.h","lib/default/TasmotaWire/src/core_esp8266_si2c.cpp","lib/default/TasmotaWire/src/twi.h","lib/default/TasmotaWire/src/twi_class.h","lib/default/UdpListener/CODE_REVIEW.md","lib/default/UdpListener/library.properties","lib/default/UdpListener/src/UdpListener.h","lib/default/Unishox-Tasmota-1.0/generator/generator.c","lib/default/Unishox-Tasmota-1.0/generator/remapping.xlsx","lib/default/Unishox-Tasmota-1.0/library.properties","lib/default/Unishox-Tasmota-1.0/python/unishox.py","lib/default/Unishox-Tasmota-1.0/src/UnishoxStrings.cpp","lib/default/Unishox-Tasmota-1.0/src/UnishoxStrings.h","lib/default/Unishox-Tasmota-1.0/src/unishox.cpp","lib/default/Unishox-Tasmota-1.0/src/unishox.h","lib/default/WiFiHelper/README.adoc","lib/default/WiFiHelper/library.json","lib/default/WiFiHelper/src/WiFiHelper.h","lib/default/WiFiHelper/src/WiFiHelper_ESP32.cpp","lib/default/WiFiHelper/src/WiFiHelper_ESP8266.cpp","lib/default/base64-1.1.1/LICENSE","lib/default/base64-1.1.1/Makefile","lib/default/base64-1.1.1/README.md","lib/default/base64-1.1.1/catch.cpp","lib/default/base64-1.1.1/catch.hpp","lib/default/base64-1.1.1/library.properties","lib/default/base64-1.1.1/src/base64.cpp","lib/default/base64-1.1.1/src/base64.hpp","lib/default/headers/DPT.h","lib/default/headers/camera_pins.h","lib/default/headers/esp-knx-ip.h","lib/default/headers/readme.txt","lib/default/jsmn-shadinger-1.0/README.md","lib/default/jsmn-shadinger-1.0/library.properties","lib/default/jsmn-shadinger-1.0/src/JsonGenerator.cpp","lib/default/jsmn-shadinger-1.0/src/JsonGenerator.h","lib/default/jsmn-shadinger-1.0/src/JsonParser.cpp","lib/default/jsmn-shadinger-1.0/src/JsonParser.h","lib/default/jsmn-shadinger-1.0/src/jsmn.cpp","lib/default/jsmn-shadinger-1.0/src/jsmn.h","lib/default/jsmn-shadinger-1.0/test/test-json.cpp","lib/lib_audio/ESP8266Audio/.github/workflows/pr-or-master-push.yml","lib/lib_audio/ESP8266Audio/LICENSE","lib/lib_audio/ESP8266Audio/README.md","lib/lib_audio/ESP8266Audio/examples/MixerSample/MixerSample.ino","lib/lib_audio/ESP8266Audio/examples/MixerSample/viola.h","lib/lib_audio/ESP8266Audio/examples/PlayAACFromPROGMEM/PlayAACFromPROGMEM.ino","lib/lib_audio/ESP8266Audio/examples/PlayAACFromPROGMEM/homer.aac","lib/lib_audio/ESP8266Audio/examples/PlayAACFromPROGMEM/sampleaac.h","lib/lib_audio/ESP8266Audio/examples/PlayFLAC-SD-SPDIF/PlayFLAC-SD-SPDIF.ino","lib/lib_audio/ESP8266Audio/examples/PlayFLACFromPROGMEMToDAC/PlayFLACFromPROGMEMToDAC.ino","lib/lib_audio/ESP8266Audio/examples/PlayFLACFromPROGMEMToDAC/sample.h","lib/lib_audio/ESP8266Audio/examples/PlayMIDIFromLittleFS/PlayMIDIFromLittleFS.ino","lib/lib_audio/ESP8266Audio/examples/PlayMIDIFromLittleFS/data/1mgm.sf2","lib/lib_audio/ESP8266Audio/examples/PlayMIDIFromLittleFS/data/furelise.mid","lib/lib_audio/ESP8266Audio/examples/PlayMIDIFromSPIFFS/PlayMIDIFromSPIFFS.ino","lib/lib_audio/ESP8266Audio/examples/PlayMIDIFromSPIFFS/data/1mgm.sf2","lib/lib_audio/ESP8266Audio/examples/PlayMIDIFromSPIFFS/data/furelise.mid","lib/lib_audio/ESP8266Audio/examples/PlayMODFromPROGMEMToDAC/PlayMODFromPROGMEMToDAC.ino","lib/lib_audio/ESP8266Audio/examples/PlayMODFromPROGMEMToDAC/enigma.h","lib/lib_audio/ESP8266Audio/examples/PlayMP3FromSPIFFS/PlayMP3FromSPIFFS.ino","lib/lib_audio/ESP8266Audio/examples/PlayMP3FromSPIFFS/data/pno-cs.mp3","lib/lib_audio/ESP8266Audio/examples/PlayMP3ToSPDIF/PlayMP3ToSPDIF.ino","lib/lib_audio/ESP8266Audio/examples/PlayOpusFromSPIFFS/PlayOpusFromSPIFFS.ino","lib/lib_audio/ESP8266Audio/examples/PlayOpusFromSPIFFS/data/gs-16b-2c-44100hz.opus","lib/lib_audio/ESP8266Audio/examples/PlayRTTTLToI2SDAC/PlayRTTTLToI2SDAC.ino","lib/lib_audio/ESP8266Audio/examples/PlayWAVFromFunction/PlayWAVFromFunction.ino","lib/lib_audio/ESP8266Audio/examples/PlayWAVFromPROGMEM/PlayWAVFromPROGMEM.ino","lib/lib_audio/ESP8266Audio/examples/PlayWAVFromPROGMEM/viola.h","lib/lib_audio/ESP8266Audio/examples/StreamMP3FromHTTP/StreamMP3FromHTTP.ino","lib/lib_audio/ESP8266Audio/examples/StreamMP3FromHTTPToSPDIF/StreamMP3FromHTTPToSPDIF.ino","lib/lib_audio/ESP8266Audio/examples/StreamMP3FromHTTP_SPIRAM/Schema_Spiram.png","lib/lib_audio/ESP8266Audio/examples/StreamMP3FromHTTP_SPIRAM/StreamMP3FromHTTP_SPIRAM.ino","lib/lib_audio/ESP8266Audio/examples/StreamOnHost/AudioOutputLinuxDSP.h","lib/lib_audio/ESP8266Audio/examples/StreamOnHost/AudioOutputNullSlow.h","lib/lib_audio/ESP8266Audio/examples/StreamOnHost/StreamOnHost.ino","lib/lib_audio/ESP8266Audio/examples/StreamOnHost/onHost","lib/lib_audio/ESP8266Audio/examples/TalkingClockI2S/TalkingClockI2S.ino","lib/lib_audio/ESP8266Audio/examples/WebRadio/WebRadio.ino","lib/lib_audio/ESP8266Audio/examples/WebRadio/web.cpp","lib/lib_audio/ESP8266Audio/examples/WebRadio/web.h","lib/lib_audio/ESP8266Audio/keywords.txt","lib/lib_audio/ESP8266Audio/library.json","lib/lib_audio/ESP8266Audio/library.properties","lib/lib_audio/ESP8266Audio/src/AudioFileSource.h","lib/lib_audio/ESP8266Audio/src/AudioFileSourceBuffer.cpp","lib/lib_audio/ESP8266Audio/src/AudioFileSourceBuffer.h","lib/lib_audio/ESP8266Audio/src/AudioFileSourceFATFS.h","lib/lib_audio/ESP8266Audio/src/AudioFileSourceFS.cpp","lib/lib_audio/ESP8266Audio/src/AudioFileSourceFS.h","lib/lib_audio/ESP8266Audio/src/AudioFileSourceFunction.cpp","lib/lib_audio/ESP8266Audio/src/AudioFileSourceFunction.h","lib/lib_audio/ESP8266Audio/src/AudioFileSourceHTTPStream.cpp","lib/lib_audio/ESP8266Audio/src/AudioFileSourceHTTPStream.h","lib/lib_audio/ESP8266Audio/src/AudioFileSourceICYStream.cpp","lib/lib_audio/ESP8266Audio/src/AudioFileSourceICYStream.h","lib/lib_audio/ESP8266Audio/src/AudioFileSourceID3.cpp","lib/lib_audio/ESP8266Audio/src/AudioFileSourceID3.h","lib/lib_audio/ESP8266Audio/src/AudioFileSourceLittleFS.h","lib/lib_audio/ESP8266Audio/src/AudioFileSourcePROGMEM.cpp","lib/lib_audio/ESP8266Audio/src/AudioFileSourcePROGMEM.h","lib/lib_audio/ESP8266Audio/src/AudioFileSourceSD.cpp","lib/lib_audio/ESP8266Audio/src/AudioFileSourceSD.h","lib/lib_audio/ESP8266Audio/src/AudioFileSourceSPIRAMBuffer.cpp","lib/lib_audio/ESP8266Audio/src/AudioFileSourceSPIRAMBuffer.h","lib/lib_audio/ESP8266Audio/src/AudioFileSourceSTDIO.cpp","lib/lib_audio/ESP8266Audio/src/AudioFileSourceSTDIO.h","lib/lib_audio/ESP8266Audio/src/AudioFileStream.cpp","lib/lib_audio/ESP8266Audio/src/AudioFileStream.h","lib/lib_audio/ESP8266Audio/src/AudioGenerator.h","lib/lib_audio/ESP8266Audio/src/AudioGeneratorAAC.cpp","lib/lib_audio/ESP8266Audio/src/AudioGeneratorAAC.h","lib/lib_audio/ESP8266Audio/src/AudioGeneratorFLAC.cpp","lib/lib_audio/ESP8266Audio/src/AudioGeneratorFLAC.h","lib/lib_audio/ESP8266Audio/src/AudioGeneratorMIDI.cpp","lib/lib_audio/ESP8266Audio/src/AudioGeneratorMIDI.h","lib/lib_audio/ESP8266Audio/src/AudioGeneratorMOD.cpp","lib/lib_audio/ESP8266Audio/src/AudioGeneratorMOD.h","lib/lib_audio/ESP8266Audio/src/AudioGeneratorMP3.cpp","lib/lib_audio/ESP8266Audio/src/AudioGeneratorMP3.h","lib/lib_audio/ESP8266Audio/src/AudioGeneratorMP3a.cpp","lib/lib_audio/ESP8266Audio/src/AudioGeneratorMP3a.h","lib/lib_audio/ESP8266Audio/src/AudioGeneratorOpus.cpp","lib/lib_audio/ESP8266Audio/src/AudioGeneratorOpus.h","lib/lib_audio/ESP8266Audio/src/AudioGeneratorRTTTL.cpp","lib/lib_audio/ESP8266Audio/src/AudioGeneratorRTTTL.h","lib/lib_audio/ESP8266Audio/src/AudioGeneratorTalkie.cpp","lib/lib_audio/ESP8266Audio/src/AudioGeneratorTalkie.h","lib/lib_audio/ESP8266Audio/src/AudioGeneratorWAV.cpp","lib/lib_audio/ESP8266Audio/src/AudioGeneratorWAV.h","lib/lib_audio/ESP8266Audio/src/AudioLogger.cpp","lib/lib_audio/ESP8266Audio/src/AudioLogger.h","lib/lib_audio/ESP8266Audio/src/AudioOutput.h","lib/lib_audio/ESP8266Audio/src/AudioOutputBuffer.cpp","lib/lib_audio/ESP8266Audio/src/AudioOutputBuffer.h","lib/lib_audio/ESP8266Audio/src/AudioOutputFilterBiquad.cpp","lib/lib_audio/ESP8266Audio/src/AudioOutputFilterBiquad.h","lib/lib_audio/ESP8266Audio/src/AudioOutputFilterDecimate.cpp","lib/lib_audio/ESP8266Audio/src/AudioOutputFilterDecimate.h","lib/lib_audio/ESP8266Audio/src/AudioOutputI2S.cpp","lib/lib_audio/ESP8266Audio/src/AudioOutputI2S.h","lib/lib_audio/ESP8266Audio/src/AudioOutputI2SNoDAC.cpp","lib/lib_audio/ESP8266Audio/src/AudioOutputI2SNoDAC.h","lib/lib_audio/ESP8266Audio/src/AudioOutputMixer.cpp","lib/lib_audio/ESP8266Audio/src/AudioOutputMixer.h","lib/lib_audio/ESP8266Audio/src/AudioOutputNull.h","lib/lib_audio/ESP8266Audio/src/AudioOutputSPDIF.cpp","lib/lib_audio/ESP8266Audio/src/AudioOutputSPDIF.h","lib/lib_audio/ESP8266Audio/src/AudioOutputSTDIO.cpp","lib/lib_audio/ESP8266Audio/src/AudioOutputSTDIO.h","lib/lib_audio/ESP8266Audio/src/AudioOutputSerialWAV.cpp","lib/lib_audio/ESP8266Audio/src/AudioOutputSerialWAV.h","lib/lib_audio/ESP8266Audio/src/AudioOutputULP.cpp","lib/lib_audio/ESP8266Audio/src/AudioOutputULP.h","lib/lib_audio/ESP8266Audio/src/AudioStatus.h","lib/lib_audio/ESP8266Audio/src/ESP8266Audio.h","lib/lib_audio/ESP8266Audio/src/driver/SinglePinI2SDriver.cpp","lib/lib_audio/ESP8266Audio/src/driver/SinglePinI2SDriver.h","lib/lib_audio/ESP8266Audio/src/libflac/AUTHORS","lib/lib_audio/ESP8266Audio/src/libflac/COPYING.FDL","lib/lib_audio/ESP8266Audio/src/libflac/COPYING.GPL","lib/lib_audio/ESP8266Audio/src/libflac/COPYING.LGPL","lib/lib_audio/ESP8266Audio/src/libflac/COPYING.Xiph","lib/lib_audio/ESP8266Audio/src/libflac/FLAC/assert.h","lib/lib_audio/ESP8266Audio/src/libflac/FLAC/callback.h","lib/lib_audio/ESP8266Audio/src/libflac/FLAC/export.h","lib/lib_audio/ESP8266Audio/src/libflac/FLAC/format.h","lib/lib_audio/ESP8266Audio/src/libflac/FLAC/metadata.h","lib/lib_audio/ESP8266Audio/src/libflac/FLAC/ordinals.h","lib/lib_audio/ESP8266Audio/src/libflac/FLAC/stream_decoder.h","lib/lib_audio/ESP8266Audio/src/libflac/README","lib/lib_audio/ESP8266Audio/src/libflac/README.ESP8266","lib/lib_audio/ESP8266Audio/src/libflac/bitmath.c","lib/lib_audio/ESP8266Audio/src/libflac/bitreader.c","lib/lib_audio/ESP8266Audio/src/libflac/config.h","lib/lib_audio/ESP8266Audio/src/libflac/cpu.c","lib/lib_audio/ESP8266Audio/src/libflac/crc.c","lib/lib_audio/ESP8266Audio/src/libflac/fixed.c","lib/lib_audio/ESP8266Audio/src/libflac/float.c","lib/lib_audio/ESP8266Audio/src/libflac/format.c","lib/lib_audio/ESP8266Audio/src/libflac/lpc.c","lib/lib_audio/ESP8266Audio/src/libflac/md5.c","lib/lib_audio/ESP8266Audio/src/libflac/memory.c","lib/lib_audio/ESP8266Audio/src/libflac/private/bitmath.h","lib/lib_audio/ESP8266Audio/src/libflac/private/bitreader.h","lib/lib_audio/ESP8266Audio/src/libflac/private/cpu.h","lib/lib_audio/ESP8266Audio/src/libflac/private/crc.h","lib/lib_audio/ESP8266Audio/src/libflac/private/fixed.h","lib/lib_audio/ESP8266Audio/src/libflac/private/float.h","lib/lib_audio/ESP8266Audio/src/libflac/private/format.h","lib/lib_audio/ESP8266Audio/src/libflac/private/lpc.h","lib/lib_audio/ESP8266Audio/src/libflac/private/macros.h","lib/lib_audio/ESP8266Audio/src/libflac/private/md5.h","lib/lib_audio/ESP8266Audio/src/libflac/private/memory.h","lib/lib_audio/ESP8266Audio/src/libflac/private/metadata.h","lib/lib_audio/ESP8266Audio/src/libflac/private/window.h","lib/lib_audio/ESP8266Audio/src/libflac/protected/all.h","lib/lib_audio/ESP8266Audio/src/libflac/protected/stream_decoder.h","lib/lib_audio/ESP8266Audio/src/libflac/protected/stream_encoder.h","lib/lib_audio/ESP8266Audio/src/libflac/share/alloc.h","lib/lib_audio/ESP8266Audio/src/libflac/share/compat.h","lib/lib_audio/ESP8266Audio/src/libflac/share/endswap.h","lib/lib_audio/ESP8266Audio/src/libflac/share/getopt.h","lib/lib_audio/ESP8266Audio/src/libflac/share/macros.h","lib/lib_audio/ESP8266Audio/src/libflac/share/private.h","lib/lib_audio/ESP8266Audio/src/libflac/share/safe_str.h","lib/lib_audio/ESP8266Audio/src/libflac/share/utf8.h","lib/lib_audio/ESP8266Audio/src/libflac/stream_decoder.c","lib/lib_audio/ESP8266Audio/src/libflac/window.c","lib/lib_audio/ESP8266Audio/src/libhelix-aac/aaccommon.h","lib/lib_audio/ESP8266Audio/src/libhelix-aac/aacdec.c","lib/lib_audio/ESP8266Audio/src/libhelix-aac/aacdec.h","lib/lib_audio/ESP8266Audio/src/libhelix-aac/aactabs.c","lib/lib_audio/ESP8266Audio/src/libhelix-aac/assembly.h","lib/lib_audio/ESP8266Audio/src/libhelix-aac/bitstream.c","lib/lib_audio/ESP8266Audio/src/libhelix-aac/bitstream.h","lib/lib_audio/ESP8266Audio/src/libhelix-aac/buffers.c","lib/lib_audio/ESP8266Audio/src/libhelix-aac/coder.h","lib/lib_audio/ESP8266Audio/src/libhelix-aac/dct4.c","lib/lib_audio/ESP8266Audio/src/libhelix-aac/decelmnt.c","lib/lib_audio/ESP8266Audio/src/libhelix-aac/dequant.c","lib/lib_audio/ESP8266Audio/src/libhelix-aac/fft.c","lib/lib_audio/ESP8266Audio/src/libhelix-aac/filefmt.c","lib/lib_audio/ESP8266Audio/src/libhelix-aac/huffman.c","lib/lib_audio/ESP8266Audio/src/libhelix-aac/hufftabs.c","lib/lib_audio/ESP8266Audio/src/libhelix-aac/imdct.c","lib/lib_audio/ESP8266Audio/src/libhelix-aac/noiseless.c","lib/lib_audio/ESP8266Audio/src/libhelix-aac/pns.c","lib/lib_audio/ESP8266Audio/src/libhelix-aac/readme.txt"],"storefront":"/r/arendst","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/arendst/Tasmota/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}