{"id":14985227,"url":"https://github.com/mulder82/tndisplay","last_synced_at":"2025-04-12T08:26:13.736Z","repository":{"id":245601317,"uuid":"818642660","full_name":"mulder82/TNDisplay","owner":"mulder82","description":"Complete project for build wireless touch display to control HomeAssistant powered SmartHome.","archived":false,"fork":false,"pushed_at":"2024-07-09T17:02:03.000Z","size":8108,"stargazers_count":130,"open_issues_count":0,"forks_count":6,"subscribers_count":10,"default_branch":"main","last_synced_at":"2025-03-26T03:33:17.759Z","etag":null,"topics":["home-assistant","home-assistant-device","homeassistant","homeassistant-device","nextion","node-red","node-red-flow","nodered","nx3224t024","tasmota","tasmota-device","wemos","wemos-d1"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mulder82.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":null,"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},"funding":{"github":"mulder82","custom":["https://paypal.me/ArturSoft"]}},"created_at":"2024-06-22T12:28:43.000Z","updated_at":"2025-02-16T22:54:02.000Z","dependencies_parsed_at":"2024-07-09T21:18:13.094Z","dependency_job_id":"c1e7ad01-4cea-49ac-a1b8-3375ed459137","html_url":"https://github.com/mulder82/TNDisplay","commit_stats":{"total_commits":27,"total_committers":1,"mean_commits":27.0,"dds":0.0,"last_synced_commit":"5d9a1148650e5474bfcbb206baf18111786a4332"},"previous_names":["mulder82/tndisplay"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mulder82%2FTNDisplay","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mulder82%2FTNDisplay/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mulder82%2FTNDisplay/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mulder82%2FTNDisplay/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mulder82","download_url":"https://codeload.github.com/mulder82/TNDisplay/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248538679,"owners_count":21121023,"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":["home-assistant","home-assistant-device","homeassistant","homeassistant-device","nextion","node-red","node-red-flow","nodered","nx3224t024","tasmota","tasmota-device","wemos","wemos-d1"],"created_at":"2024-09-24T14:10:32.361Z","updated_at":"2025-04-12T08:26:13.711Z","avatar_url":"https://github.com/mulder82.png","language":null,"funding_links":["https://github.com/sponsors/mulder82","https://paypal.me/ArturSoft"],"categories":[],"sub_categories":[],"readme":"# TNDisplay\nThe goal of the project is to create a wireless touchscreen display that can be programmed using NodeRed and used to control HomeAssistant powered SmartHome.\n# Demonstration videos\nHomeAssistant control|Demo application\n--- | ---\n[![Watch the video](https://img.youtube.com/vi/P3XaIMjOvjI/hqdefault.jpg)](https://www.youtube.com/shorts/P3XaIMjOvjI)|[![Watch the video](https://img.youtube.com/vi/vB-uo-am9LA/hqdefault.jpg)](https://www.youtube.com/shorts/vB-uo-am9LA)\n\n1|2|3 \n--- | --- | ---\n![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/tndisplay.jpg)|![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/wiring/wiring1.jpg)|![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/wiring/wiring2.jpg)\n# Requirements\n## Hardware\n1. Nextion HMI Display, model [NX3224T024](https://nextion.tech/basic-series-introduction/) or other Nextion display with resolution 320x240px\n2. [Wemos D1 mini lite](https://www.wemos.cc/en/latest/d1/d1_mini_lite.html) or other ESP MCU with 5v power pin\n## Software\n1. MQTT broker (see [mosquitto](https://mosquitto.org/download/))\n2. Node-Red  (see [getting started with node-red](https://nodered.org/docs/getting-started/))\n# Configuration\n## Nextion display (upload TFT project)\n### Option A (using SDCard)\nTo upload TFT project using SDCard use [TNDisplay.tft](https://github.com/mulder82/TNDisplay/blob/main/Nextion/TNDispay.tft) file and follow [this instructions](https://nextion.tech/faq-items/using-nextion-microsd/)\n### Option B (using ttl adapter)\n1. Download and install [NextionEditor](https://nextion.tech/nextion-editor/#_section1)\n2. Download [TNDisplay.hmi](https://github.com/mulder82/TNDisplay/blob/main/Nextion/TNDispay.HMI)\n3. Connect display and upload project ([see instructions](https://www.youtube.com/watch?v=xgBq5L0nSWk))\n# Wemos D1 module\n1. Flash ESP module with Tasmota ([see instructions](https://tasmota.github.io/docs/Getting-Started/#needed-software))\n2. Configure Tasmota (set WiFi connection, [MQTT connection](https://tasmota.github.io/docs/MQTT/#configure-mqtt)) and [import](https://tasmota.github.io/docs/Templates/) following template:\n```console\n{\"NAME\":\"TNDisplay\",\"GPIO\":[0,0,320,0,0,0,0,0,0,0,0,0,0,0],\"FLAG\":0,\"BASE\":18}\n```\nMQTT Settings | Template Settings\n--- | ---\n![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/Tasmota/mqtt.JPG) | ![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/Tasmota/template.JPG)\n\n3. Change serial baudrate to 9600. Open tasmota console and execute following command:\n```console\nbaudrate 9600\n```\n4. Set Tasmota rule to initialize communication and show informations when connecting/disconnecting wifi and mqtt:\n```console\nRule1 ON System#Init DO serialsend5 64696d3d313030ffffff ENDON ON Wifi#Connected DO serialsend5 706167652036ffffff54312e7478743d2257494649204f4b22ffffff50312e7069633d3237ffffff ENDON ON Wifi#Disconnected DO serialsend5 706167652036ffffff54312e7478743d2257494649204f46464c494e4522ffffff50312e7069633d3531ffffff ENDON ON Mqtt#Connected DO serialsend5 706167652036ffffff54312e7478743d224d515454204f4b22ffffff50312e7069633d3236ffffff ENDON ON Mqtt#Disconnected DO serialsend5 706167652036ffffff54312e7478743d224d515454204f46464c494e4522ffffff50312e7069633d3434ffffff ENDON\n```\n5. Enable Rule1:\n```console\nRule1 1\n```\n6. Connect ESP module with Nextion display:\n\n\u003e [!CAUTION]  \n\u003e Disconnect power supply when making connections!\n\nNextion PIN | ESP Pin\n--- | ---\n+5V (black) | 5V\nTX (red) | RX\nRX (white) | TX\nGND (yellow) | G\n\n\u003e [!IMPORTANT]  \n\u003e Note the crossover RX TX pins\n   \n7. At this stage if you have done everything correctly after restarting tasmota the screen should sequentially show the information \"WiFi OK\", \"MQTT OK\".\n\n\u003e [!TIP]\n\u003e If the display shows only \"TNDisplay\" screen with logo and nothing changes check [this issue discussion](https://github.com/mulder82/TNDisplay/issues/1)\n\n# NodeRed\n1. Import node red [flow file](https://github.com/mulder82/TNDisplay/blob/main/NodeRed/TNDisplay.json)  [(see instructions)](https://nodered.org/docs/user-guide/editor/workspace/import-export)\n2. Check the settings, mainly that the topics in the MQTT nodes match those you set in Tasmota, and that the MQTT configuration node is configured correctly.\n3. At this stage, if you have done everything correctly, after deploy flow in NodeRed the display should show the demo application.\n\n# Casing\nIf you want to print the casing, use the project files included in the [Casing](https://github.com/mulder82/TNDisplay/tree/main/Casing) folder.\n\n1 | 2\n-- | --\n![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/casing/3dPrint.jpg) | ![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/casing/assembly.jpg)\n\n# Available Pages\n\n0 | 1 | 2 | 3 | 4\n--- | --- | --- | --- | ---\n![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/nextion/pages/Page0.JPG) | ![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/nextion/pages/Page1.JPG) | ![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/nextion/pages/Page2.JPG) | ![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/nextion/pages/Page3.JPG) | ![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/nextion/pages/Page4.JPG)\n\n5 | 6 | 7 | 8 | 9\n--- | --- | --- | --- | ---\n![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/nextion/pages/Page5.JPG) | ![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/nextion/pages/Page6.JPG) | ![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/nextion/pages/Page7.JPG) | ![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/nextion/pages/Page8.JPG) | ![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/nextion/pages/Page9.JPG)\n\n# Available Icons\n## 50x50px (for use in header (PH.pic))\n\n11 | 12 | 13 | 14 | 15 | 16 | 17 | 66 | 67 | 68 | 69\n-- | -- | -- | -- | -- | -- | -- | -- | -- | -- | --\n![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/nextion/icons/50/11.png) | ![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/nextion/icons/50/12.png) | ![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/nextion/icons/50/13.png) | ![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/nextion/icons/50/14.png) | ![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/nextion/icons/50/15.png) | ![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/nextion/icons/50/16.png) | ![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/nextion/icons/50/17.png) | ![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/nextion/icons/50/66.png) | ![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/nextion/icons/50/67.png) | ![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/nextion/icons/50/68.png) | ![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/nextion/icons/50/69.png)\n\n## 70x70px (for use as buttons images (P1.pic, P2.pic etc.)\n\n18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27\n-- | -- | -- | -- | -- | -- | -- | -- | -- | --\n![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/nextion/icons/70/18.png) | ![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/nextion/icons/70/19.png) | ![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/nextion/icons/70/20.png) | ![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/nextion/icons/70/21.png) | ![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/nextion/icons/70/22.png) | ![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/nextion/icons/70/23.png) | ![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/nextion/icons/70/24.png) | ![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/nextion/icons/70/25.png) | ![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/nextion/icons/70/26.png) | ![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/nextion/icons/70/27.png)\n\n28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37\n-- | -- | -- | -- | -- | -- | -- | -- | -- | --\n![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/nextion/icons/70/28.png) | ![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/nextion/icons/70/29.png) | ![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/nextion/icons/70/30.png) | ![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/nextion/icons/70/31.png) | ![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/nextion/icons/70/32.png) | ![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/nextion/icons/70/33.png) | ![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/nextion/icons/70/34.png) | ![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/nextion/icons/70/35.png) | ![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/nextion/icons/70/36.png) | ![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/nextion/icons/70/37.png)\n\n38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47\n-- | -- | -- | -- | -- | -- | -- | -- | -- | --\n![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/nextion/icons/70/38.png) | ![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/nextion/icons/70/39.png) | ![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/nextion/icons/70/40.png) | ![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/nextion/icons/70/41.png) | ![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/nextion/icons/70/42.png) | ![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/nextion/icons/70/43.png) | ![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/nextion/icons/70/44.png) | ![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/nextion/icons/70/45.png) | ![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/nextion/icons/70/46.png) | ![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/nextion/icons/70/47.png)\n\n48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57\n-- | -- | -- | -- | -- | -- | -- | -- | -- | --\n![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/nextion/icons/70/48.png) | ![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/nextion/icons/70/49.png) | ![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/nextion/icons/70/50.png) | ![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/nextion/icons/70/51.png) | ![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/nextion/icons/70/52.png) | ![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/nextion/icons/70/53.png) | ![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/nextion/icons/70/54.png) | ![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/nextion/icons/70/55.png) | ![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/nextion/icons/70/56.png) | ![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/nextion/icons/70/57.jpg)\n\n58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 70 | 71\n-- | -- | -- | -- | -- | -- | -- | -- | -- | --\n![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/nextion/icons/70/58.jpg) | ![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/nextion/icons/70/59.jpg) | ![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/nextion/icons/70/60.jpg) | ![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/nextion/icons/70/61.jpg) | ![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/nextion/icons/70/62.jpg) | ![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/nextion/icons/70/63.jpg) | ![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/nextion/icons/70/64.png) | ![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/nextion/icons/70/65.jpg) | ![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/nextion/icons/70/70.png) | ![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/nextion/icons/70/71.png)\n\n72 | 73 | 85 \n-- | -- | -- \n![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/nextion/icons/70/72.png) | ![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/nextion/icons/70/73.png) | ![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/nextion/icons/70/85.jpg)\n\n\u003e [!IMPORTANT]\n\u003e If you have successfully completed your project using this repository, please share photos in the [discussion](https://github.com/mulder82/TNDisplay/discussions/categories/show-and-tell) so that I can show others what can be accomplished. \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmulder82%2Ftndisplay","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmulder82%2Ftndisplay","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmulder82%2Ftndisplay/lists"}