{"id":13573170,"url":"https://github.com/sieren/Homepoint","last_synced_at":"2025-04-04T11:31:31.221Z","repository":{"id":41460625,"uuid":"188660845","full_name":"sieren/Homepoint","owner":"sieren","description":"Espressif ESP32 Based Smarthome screen for MQTT","archived":false,"fork":false,"pushed_at":"2022-08-04T13:41:38.000Z","size":33149,"stargazers_count":638,"open_issues_count":31,"forks_count":89,"subscribers_count":45,"default_branch":"master","last_synced_at":"2025-03-28T19:09:32.619Z","etag":null,"topics":["automation","esp-idf","esp32","esp32-idf","espressif","home","home-automation","homebridge","homekit","homekit-support","homepoint","ios","m5stack","mqtt","smarthome","touchscreen","wifi"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sieren.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-05-26T08:58:23.000Z","updated_at":"2025-03-26T13:35:40.000Z","dependencies_parsed_at":"2022-09-04T23:14:31.095Z","dependency_job_id":null,"html_url":"https://github.com/sieren/Homepoint","commit_stats":null,"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sieren%2FHomepoint","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sieren%2FHomepoint/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sieren%2FHomepoint/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sieren%2FHomepoint/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sieren","download_url":"https://codeload.github.com/sieren/Homepoint/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247170338,"owners_count":20895458,"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":["automation","esp-idf","esp32","esp32-idf","espressif","home","home-automation","homebridge","homekit","homekit-support","homepoint","ios","m5stack","mqtt","smarthome","touchscreen","wifi"],"created_at":"2024-08-01T15:00:31.226Z","updated_at":"2025-04-04T11:31:26.213Z","avatar_url":"https://github.com/sieren.png","language":"C","funding_links":["https://www.paypal.com/cgi-bin/webscr?cmd=_donations\u0026business=WC74EF774344J\u0026lc=US\u0026item_name=homepoint\u0026no_note=0\u0026no_shipping=1\u0026currency_code=EUR\u0026bn=PP%2dDonationsBF%3abtn_donateCC_LG%2egif%3aNonHostedJ"],"categories":["C","Projects"],"sub_categories":["Smart Home and IoT"],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/sieren/Homepoint/master/media/logo.png\" width=\"320\" alt=\"homepoint logo\" /\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n\u003cimg alt=\"issues\" src=\"https://travis-ci.org/sieren/Homepoint.svg?branch=master\"\u003e\n\u003ca href=\"https://github.com/sieren/Homepoint/issues\"\u003e\u003cimg src=\"https://img.shields.io/github/issues/sieren/Homepoint.svg\"/\u003e\u003c/a\u003e\n\u003ca href=\"#donations\"\u003e\u003cimg  src=\"https://yourdonation.rocks/images/badge.svg\" alt=\"Donations Badge\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n### :house: Control your MQTT/HomeKit Smart Home Devices from an ESP32-powered screen :house: \n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"https://raw.githubusercontent.com/sieren/Homepoint/master/media/img3.gif\" width=\"500\"\u003e\n\u003cimg src=\"https://raw.githubusercontent.com/sieren/Homepoint/master/media/img6.jpg\" height=\"281\"\u003e\n\u003c/p\u003e\n\nHomepoint is a screen-based interface for MQTT \u0026 HomeKit-connected Smarthome devices that runs on the ESP32 Chipset.  \n\n## Table of Contents\n\n- [Features](#features)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Build](#build)\n- [Configuration](#configuration)\n  - [Scenes \u0026 Devices](#devices)\n  - [WiFi \u0026 MQTT](#credentials)\n  - [NTP Time (optional)](#ntp)\n  - [Examples](#examples)\n- [Roadmap](#roadmap)\n- [Known bugs \u0026 issues](#known-bugs)\n- [Contributing](#contributing)\n- [Buy me a coffee](#donations)\n- [License](#license)\n\n\u003ca name=\"features\"\u003e\u003c/a\u003e\n\n# :heavy_check_mark: Features\n\n- **See and trigger scenes** (groups of devices) on the front screen.\n\n- **Trigger individual devices** by diving into scenes (by tapping the indicator or long pressing a button).\n\n+ **See partially switched on scenes** with multiple devices at a glance.\n\n+ Support for **temperature, humidity, air quality sensors \u0026 Tasmota energy readings**.\n\n+ **Remote Configuration**: Configure and reboot HomePoint through a web interface. No need to reflash.\n\n+ **Over-The-Air Updates (Beta)**: Flash new versions of HomePoint wirelessly over the air.\n\n+ **HomeKit Switch Support** (Setup Automations in Home App to toggle from Homepoint)*\n\n+ Supports both **Touch Screen or Button based navigation**.\n\n+ **Reactive**: Screen updates whenever devices are triggered from elsewhere.\n\n+ **Easy configuration** through a JSON file, no additional code required.\n\n+ **Screensaver** saves power by switching off screen after 10 minutes.\n\n+ **Statusbar** shows connectivity for WiFi and MQTT as well as time.\n\n+ **Failsafe Mode**: In case of corrupt configuration, failsafe mode for remote access is provided.\n\n+ **Pre-compiled binaries**: Just flash HomePoint on your ESP32 device without compiling.\n\n*currently on experimental branch.\n\u003ca name=\"demo\"\u003e\n  \n# :camera: Demo\n\n[![HomePoint Youtube demo](https://raw.githubusercontent.com/sieren/Homepoint/master/media/youtube.png)](https://www.youtube.com/watch?v=bqzpkvtQSvY \"HomePoint Youtube demo\")\n\n\u003ca name=\"installation\"\u003e\u003c/a\u003e\n\n# :house: Installation\n\nHomePoint comes in 2 pre-compiled .bin files ready to be flashed on either a generic ESP32 Module or M5Stack.\nMore details on the hardware setup are available in the [Wiki](https://github.com/sieren/Homepoint/wiki/Hardware).\n\nSteps to install:\n\n1. Download ESPTools from [https://github.com/espressif/esptool/releases](https://github.com/espressif/esptool/releases)\n2. Install ESPTools with `python setup.py install`\n3. Run `esptool.py -b 921600 write_flash -fs 4MB -fm dout 0x0 homepoint_espgeneric.bin` (or homepoint_m5stack.bin for M5Stack)\n\nAlternatively, watch the installation video below:\n\n[![HomePoint Installation demo](https://raw.githubusercontent.com/sieren/Homepoint/master/media/installvideo.png)](https://www.youtube.com/watch?v=Ql9BQKl_Yuk \"HomePoint Install demo\")\n\n\u003ca name=\"build\"\u003e\u003c/a\u003e\n\n# :house: Build from source\n\nHomepoint was created using the [ESP-IDF SDK](https://github.com/espressif/esp-idf).\n\nDetailed build instructions are available in the [Wiki](https://github.com/sieren/Homepoint/wiki/Build-from-source).\n\n\u003ca name=\"configuration\"\u003e\u003c/a\u003e\n\n# :twisted_rightwards_arrows: Configuration\n\nThe configuration lives in `data/config.json`.\n\n\u003ca name=\"devices\"\u003e\u003c/a\u003e\n## Devices \u0026 Scenes\n\nHomePoint supports two types of Scenes with a selection of devices each:\n\n| SCENE Types   | DEVICE Types                                                                             |\n| --------------| ----------------------------------------------------------------------------------------- |\n| Light, Switch | (none, all devices expected to be switches)                                               |\n| Sensor        | display one or two values at once with customizable icons (singleValue / combinedValues)  |\n\n**Grouped Sensors** support up to two devices (due to screen space).  \n**Lights \u0026 Switches** support an infinite number of devices in a group.\n\nSome Sensors use **JSON** as a data-format, in which case a **key** can be defined. These can be on any level of the sensor json payload, for Tasmota smart plugs the key value \"Power\" can be used to display the current power consumption.\n\n\u003ca name=\"credentials\"\u003e\u003c/a\u003e\n## WiFi \u0026 MQTT Credentials\n\nWiFi and MQTT credentials are to be defined on the top level.\n\n\u003ca name=\"ntp\"\u003e\u003c/a\u003e\n## NTP Time (optional)\n\nIn order to set the correct timezone, copy \u0026 paste your [NTP TZ Setting](https://remotemonitoringsystems.ca/time-zone-abbreviations.php) to the `timezone` key.\n\n\u003ca name=\"hardware\"\u003e\u003c/a\u003e\n## Hardware (optional)\n\nSome of the IL9341 Display units seem to differ in e.g. how the touch-screen coordinates correspond to the display\nor how the LED backlight is controlled. Therefore we offer some options to override the defaults in the configuration file.\n\n| Key   | Type | Value                                                                                             |\n| --------------| -----| ----------------------------------------------------------------------------------------- |\n| \"ledPinPullup\" | Boolean | `true` or `false` - control backlight power which can be pull-up/down depending on unit  |\n| \"screenRotationAngle\" | Int | The rotation parameter can be 0, 1, 2 or 3 - incrementing in 90deg angles         |\n| \"screenSaverMinutes\" | Int | Minutes until display is switched off (default 10)                          |\n| \"touchXAxisInverted\" | Bool | default: `false`, invert the X Axis of the touch screen in case it is misaligned |\n| \"touchYAxisInverted\" | Bool | default: `true`, invert the Y Axis of the touch screen in case it is misaligned |\n| \"displayColorInverted\" | Bool | default: `false`, invert the colorspace (ie. for ILI9342C Displays) |\n\n\n\u003ca name=\"examples\"\u003e\u003c/a\u003e\n\n## Example\n\nMQTT Topics are case-sensitive as per MQTT specification.\n\n```json\n{\n  \"wifi\": \"MyWifiSSID\",\n  \"password\": \"My Wifi Password\",\n  \"hostname\": \"optionalhostname\",\n  \"login\": \"admin\",\n  \"webpass\": \"admin\",\n  \"mqttbroker\": \"mqtt://192.168.1.2\",\n  \"mqttusername\": \"mqttusername\",\n  \"mqttpasswd\": \"mymqttpassword\",\n  \"timezone\": \"CET-1CEST-2,M3.5.0/02:00:00,M10.5.0/03:00:00\",\n  \"scenes\": [{\n    \"name\": \"Living Room\",\n    \"type\": \"Light\",\n    \"icon\": \"livingroom\",\n    \"devices\": [{\n      \"name\": \"Some Light\",\n      \"setTopic\": \"lights/hue/00:17:88:01:02:3c:2a:6d-0b/set/on\",\n      \"getTopic\": \"hue/status/lights/Hue color lamp 1\",\n      \"onValue\": \"true\",\n      \"offValue\": \"false\"\n    },\n    {\n      \"name\": \"Door Light\",\n      \"setTopic\": \"lights/hue/00:17:88:01:02:3c:2a:6d-0b/set/on\",\n      \"getTopic\": \"hue/status/lights/Hue color lamp 1\",\n      \"onValue\": \"true\",\n      \"offValue\": \"false\",\n      \"icon\": \"door\"\n    },\n    ]\n  },\n  {\n    \"name\": \"Bedroom\",\n    \"type\": \"Sensor\",\n    \"icon\": \"door\",\n    \"devices\": [{\n      \"name\": \"Temperature DHT Sensor\",\n      \"type\": \"singleValue\",\n      \"jsondata\": true,\n      \"firstIcon\": \"temperature_small\",\n      \"firstKey\": \"temperature\",\n      \"getTopic\": \"bedroom/esptemp\"\n    },\n    {\n      \"name\": \"Tasmota Smart Plug\",\n      \"type\": \"singleValue\",\n      \"jsondata\": true,\n      \"firstKey\": \"Power\",\n      \"firstIcon\":\"wattage_small\",\n      \"getTopic\": \"tele/DVES_2F73BE/SENSOR\"\n    }]\n  }]\n}\n```\n\nA more **fully-configured example** is available [here](https://github.com/sieren/Homepoint/blob/master/data/config_example.json).\n\n\n\u003ca name=\"roadmap\"\u003e\u003c/a\u003e\n\n# :crystal_ball: Roadmap\n\n- [ ] Documentation for integrating with [Homebridge-Hue](https://github.com/ebaauw/homebridge-hue) and [HomeAssistant / ZigBee2MQTT](https://www.zigbee2mqtt.io/integration/home_assistant.html)\n- [ ] [HomeKit Support](https://github.com/sieren/Homepoint/pull/10)\n- [ ] Testing\n\n\u003ca name=\"known-bugs\"\u003e\u003c/a\u003e\n\n# :bug: Known bugs \u0026 issues :bug:\n\n\u003e If you find any bugs or need assistance, don't hesitate and open an issue :)\n\n\u003ca name=\"contributing\"\u003e\u003c/a\u003e\n\n# :revolving_hearts: Contributing\n\nContributions are welcome! Just hack away and open a Pull Request.\nBut please follow the style of the code that's already there (ie. no tabs, spacing).\n\n\u003ca name=\"donations\"\u003e\u003c/a\u003e\n\n# :coffee: Buy me a coffee\n\nI have developed HomePoint in my free time because I wanted to learn more about C++ on ESP32\nand to solve a concrete problem in my smarthome.  \nAs development kept on going, I thought about ways to make this project open source and more accessible and user-friendly for the maker-community.  \n\nIf you enjoy using HomePoint or this work, consider a small donation. But don't worry, I'll continue working on this anyway ;-). \n\n[![paypal](https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif)](https://www.paypal.com/cgi-bin/webscr?cmd=_donations\u0026business=WC74EF774344J\u0026lc=US\u0026item_name=homepoint\u0026no_note=0\u0026no_shipping=1\u0026currency_code=EUR\u0026bn=PP%2dDonationsBF%3abtn_donateCC_LG%2egif%3aNonHostedJ)\n\n### Thanks!!\n\n\u003ca name=\"license\"\u003e\u003c/a\u003e\n\n# :scroll: License\n\nMIT © [Matthias Frick](https://github.com/sieren) \n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsieren%2FHomepoint","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsieren%2FHomepoint","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsieren%2FHomepoint/lists"}