{"id":19495766,"url":"https://github.com/zarusz/esp_thing","last_synced_at":"2026-04-18T00:07:40.920Z","repository":{"id":112870445,"uuid":"230250693","full_name":"zarusz/ESP_Thing","owner":"zarusz","description":"Baseline IoT thing implementation for ESP8266 chip","archived":false,"fork":false,"pushed_at":"2019-12-30T07:57:26.000Z","size":78090,"stargazers_count":1,"open_issues_count":3,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-08-05T22:44:32.837Z","etag":null,"topics":["arduino","esp8266","esp8266-arduino","iot","openhab","smart-home"],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zarusz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-12-26T11:14:06.000Z","updated_at":"2019-12-29T23:55:34.000Z","dependencies_parsed_at":null,"dependency_job_id":"2db18493-a4c4-4309-889c-071e7036d264","html_url":"https://github.com/zarusz/ESP_Thing","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/zarusz/ESP_Thing","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zarusz%2FESP_Thing","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zarusz%2FESP_Thing/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zarusz%2FESP_Thing/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zarusz%2FESP_Thing/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zarusz","download_url":"https://codeload.github.com/zarusz/ESP_Thing/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zarusz%2FESP_Thing/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31950895,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-17T17:29:20.459Z","status":"ssl_error","status_checked_at":"2026-04-17T17:28:47.801Z","response_time":62,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arduino","esp8266","esp8266-arduino","iot","openhab","smart-home"],"created_at":"2024-11-10T21:38:48.327Z","updated_at":"2026-04-18T00:07:40.904Z","avatar_url":"https://github.com/zarusz.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Build Status](https://travis-ci.com/zarusz/ESP_Thing.svg?branch=master)](https://travis-ci.com/zarusz/ESP_Thing)\n\n# What is ESP_Thing?\nIt is meant for makers of IoT things. It is a basline implementation (C++) targeting the ESP8266 chip (Arduino Espressif8266 Framework).\n\nThe implementation out of the box supports basic sensors and actuators (DHT-22 Himidity \u0026 Temperature sensors, LEDs, RGB LED strips, relays/switches), with ability to extend.\n\nCommuncation with the device ESP_Thing device is established using the MQTT protocol over WiFi.     \nIt can be easily connected with Smart Home platform [openHAB](https://www.openhab.org/) using the [MQTT addon](https://www.openhab.org/addons/bindings/mqtt/). Since MQTT is platform agnostic it could work with other smart home platforms (HomeKit).\n\n# History\n\nWhen doing my smart home I needed to build multiple custom hardware things running on ESP8266 and integrate that into the openHAB platform. Some of those devices are Switches running the ESP_Thing software (instead of the stock firmware). \nThis has been running succesfully for several years now.\n\n# Using\n\nUse [Visual Studio Code](https://code.visualstudio.com/) with the [Platform IO IDE extension](https://marketplace.visualstudio.com/items?itemName=platformio.platformio-ide). \n\nTo build simply do `Platform IO \u003e Project Tasks \u003e Build`.\nAs a result of compilation you get the `firmware.bin` file that can be used to flash the ESP8266 device.\n\n```\nLinking .pio\\build\\esp12e\\firmware.elf\nBuilding .pio\\build\\esp12e\\firmware.bin\nRetrieving maximum program size .pio\\build\\esp12e\\firmware.elf\nChecking size .pio\\build\\esp12e\\firmware.elf\nAdvanced Memory Usage is available via \"PlatformIO Home \u003e Project Inspect\"\nDATA:    [====      ]  43.5% (used 35640 bytes from 81920 bytes)\nPROGRAM: [====      ]  37.2% (used 388644 bytes from 1044464 bytes)\n```\n\nAlternatively, you can use the Over the Air Updates (OTA) to push never firmware updates.\n\n# Features\n\n* Smart Config\n  * With first run (or after a push button is pressed and hold during boot) the device enter config mode.\n  * It starts an open WiFi network you can join to from your mobile phone.\n  * It displays a configuration website where you can enter basic settings (WiFi name \u0026 pass, device name).\n  * This uses the WiFiManager library.\n* Over the Air Updates (OTA)\n  * You can send a command to the device with a URL from which it should download the latest firmware from (bin file).\n* Deep sleep mode support (to lower energy usage)\n* In `MainApp.cpp` compose what pins are used (ideally in the future this will be configured):\n\n```cpp\n    if (_deviceConfig-\u003eUniqueId.startsWith(\"sonoff_\") || _deviceConfig-\u003eUniqueId.startsWith(\"switch_\")) {\n      // Sonoff\n      /*\n      12 - Connected to RST (deep sleep)\n      00 - push button, 0 - pressed, 1 - released\n      */\n\n      pushButton-\u003eSetPin(0);\n\n      auto sw = new SwitchFeatureController(10, this, 12, true);\n      _features.push_back(sw);\n      _features.push_back(new PushButtonFeatureController(0, this, pushButton, sw));\n\n    } else if (_deviceConfig-\u003eUniqueId.startsWith(\"sonoff-dual_\") || _deviceConfig-\u003eUniqueId.startsWith(\"switch-dual_\")) {\n      // Sonoff Dual R2\n      /*\n      05 - Switch 1\n      12 - Switch 2\n      10 - push button, 0 - pressed, 1 - released\n      13 - blue LED\n      03 (RX) - DHT22\n      */\n\n      Serial.end();\n\n      pushButton-\u003eSetPin(10);\n      statusLed-\u003eSetPin(13);\n\n      auto sw = new SwitchFeatureController(10, this, 5, true);\n      _features.push_back(sw);\n      _features.push_back(new PushButtonFeatureController(0, this, pushButton, sw));\n      _features.push_back(new SwitchFeatureController(11, this, 12, true));\n      _features.push_back(new TempFeatureController(30, 31, this, 3));\n    }\n  }\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzarusz%2Fesp_thing","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzarusz%2Fesp_thing","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzarusz%2Fesp_thing/lists"}