{"id":15954759,"url":"https://github.com/felfert/level-sensor","last_synced_at":"2026-05-03T02:36:25.089Z","repository":{"id":150144797,"uuid":"539515969","full_name":"felfert/level-sensor","owner":"felfert","description":null,"archived":false,"fork":false,"pushed_at":"2023-07-25T00:08:28.000Z","size":115,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-02-09T18:14:18.711Z","etag":null,"topics":["esp8266","home-automation","iot"],"latest_commit_sha":null,"homepage":"","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/felfert.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":"2022-09-21T13:56:25.000Z","updated_at":"2023-07-24T23:41:32.000Z","dependencies_parsed_at":null,"dependency_job_id":"fb929e5b-11c4-4a5a-8250-a5361bb69b51","html_url":"https://github.com/felfert/level-sensor","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/felfert%2Flevel-sensor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/felfert%2Flevel-sensor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/felfert%2Flevel-sensor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/felfert%2Flevel-sensor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/felfert","download_url":"https://codeload.github.com/felfert/level-sensor/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247135124,"owners_count":20889420,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["esp8266","home-automation","iot"],"created_at":"2024-10-07T13:19:41.609Z","updated_at":"2026-05-03T02:36:20.035Z","avatar_url":"https://github.com/felfert.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"## This is a small example for home automation with decent security, running on ESP8266.\n\n### It does the following:\n\n1. Use WiFi EAP-TLS (certificate-based enterprise authentication) to connect to a wireless network.\n2. Connect securely via TLS to an MQTT broker using client-cert based authentication\n3. Subscribes to topic \"esp8266/update\" for triggering OTA updates.\n4. Subscribes to topic \"esp8266/debug\" to enable debugging\n5. Subscribes to topic \"esp8266/nodebug\" to disable debugging\n6. Publishes changes on GPIO to topic \"esp8266/gpio\" (not yet implemented)\n\nIt also serves as an example for my [esp8266-rtos-syslog](https://github.com/felfert/esp8266-rtos-syslog) component.\nThis is WIP\n\n### Prerequisites:\n- You need a local PKI infrastructure to secure all components.\n  - A local WiFi network using radius-based EAP-TLS for authentication\n  - A local MQTT server which uses TLS and client certificate based athentication\n  - A local HTTP server for providing OTA update functionality\n- Espressif's [ESP8266_RTOS_SDK](https://github.com/espressif/ESP8266_RTOS_SDK)\n- Set it up according to https://docs.espressif.com/projects/esp8266-rtos-sdk/en/latest/get-started/index.html\n\n### Steps to build/flash/run this app:\n1. Clone this repository with `git clone --recursive`\n1. Run `make menuconfig`, change setup according to your environment.\n2. From your PKI, copy the CA's certificate (PEM-encoded text) to `main/ca.crt` \n3. From your PKI, copy the client certificate (PEM-encoded text) to `main/client.crt`\n4. From your PKI, copy the client key (PEM-encoded text) to `main/client.key`\n5. Connect your target board via USB\n6. Run `make flash monitor`\n\n### Note:\nThere are **A LOT** of \"HOWTOs\" and instructions on the Internet which use the Arduino IDE and an **ancient** NON-OSS SDK.\n\n**DO NOT USE** these. The ancient NON-OSS SDK is **OUTDATED**, **UNMAINTAINED**  and **DANGEROUS**. For example it\nuses TLS v1.1 for EAP-TLS which is considered insecure and therefore is **NOT** supported by any decent Radius anymore.\nThis is BTW the reason, WHY those other examples do NOT work. It was also the motivation for creating this project.\n\nThe newer [ESP8266-RTOS-SDK](https://github.com/espressif/ESP8266_RTOS_SDK) mentioned above is actively maintained, uses decent libs\nand provides support for TLS v1.2 and given that, WiFi EAP-TLS actually works.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffelfert%2Flevel-sensor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffelfert%2Flevel-sensor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffelfert%2Flevel-sensor/lists"}