├── Tasmota ├── mqtt.JPG └── template.JPG ├── Casing ├── TNDisplay.stl └── TNDisplay.rsdocx ├── Nextion ├── TNDispay.HMI ├── TNDispay.tft └── Design │ ├── Design.psd │ ├── Mockup.jpg │ ├── Assets │ ├── B1P.jpg │ ├── B2P.jpg │ ├── B3P.jpg │ ├── B4P.jpg │ ├── B6P.jpg │ ├── B7P.jpg │ ├── B8P.jpg │ ├── PB1.jpg │ ├── PB4.jpg │ ├── PB5.jpg │ ├── PB6.jpg │ ├── PB7.jpg │ ├── PB8.jpg │ ├── B5P1.jpg │ ├── B5P2.jpg │ ├── B5P3.jpg │ ├── B5P4.jpg │ ├── PB2H.jpg │ ├── PB2V.jpg │ ├── PB3B.jpg │ ├── PB3T.jpg │ └── PSTATUS.jpg │ └── Fonts │ ├── verdana_20.zi │ ├── verdana_30.zi │ ├── verdana_40.zi │ └── CharactersList.txt ├── _media ├── tndisplay.jpg ├── casing │ ├── 3dPrint.jpg │ └── assembly.jpg ├── wiring │ ├── wiring1.jpg │ └── wiring2.jpg └── nextion │ ├── icons │ ├── 50 │ │ ├── 11.png │ │ ├── 12.png │ │ ├── 13.png │ │ ├── 14.png │ │ ├── 15.png │ │ ├── 16.png │ │ ├── 17.png │ │ ├── 66.png │ │ ├── 67.png │ │ ├── 68.png │ │ └── 69.png │ └── 70 │ │ ├── 18.png │ │ ├── 19.png │ │ ├── 20.png │ │ ├── 21.png │ │ ├── 22.png │ │ ├── 23.png │ │ ├── 24.png │ │ ├── 25.png │ │ ├── 26.png │ │ ├── 27.png │ │ ├── 28.png │ │ ├── 29.png │ │ ├── 30.png │ │ ├── 31.png │ │ ├── 32.png │ │ ├── 33.png │ │ ├── 34.png │ │ ├── 35.png │ │ ├── 36.png │ │ ├── 37.png │ │ ├── 38.png │ │ ├── 39.png │ │ ├── 40.png │ │ ├── 41.png │ │ ├── 42.png │ │ ├── 43.png │ │ ├── 44.png │ │ ├── 45.png │ │ ├── 46.png │ │ ├── 47.png │ │ ├── 48.png │ │ ├── 49.png │ │ ├── 50.png │ │ ├── 51.png │ │ ├── 52.png │ │ ├── 53.png │ │ ├── 54.png │ │ ├── 55.png │ │ ├── 56.png │ │ ├── 57.jpg │ │ ├── 58.jpg │ │ ├── 59.jpg │ │ ├── 60.jpg │ │ ├── 61.jpg │ │ ├── 62.jpg │ │ ├── 63.jpg │ │ ├── 64.png │ │ ├── 65.jpg │ │ ├── 70.png │ │ ├── 71.png │ │ ├── 72.png │ │ ├── 73.png │ │ └── 85.jpg │ └── pages │ ├── Page0.JPG │ ├── Page1.JPG │ ├── Page10.JPG │ ├── Page2.JPG │ ├── Page3.JPG │ ├── Page4.JPG │ ├── Page5.JPG │ ├── Page6.JPG │ ├── Page7.JPG │ ├── Page8.JPG │ └── Page9.JPG ├── .github ├── FUNDING.yml └── ISSUE_TEMPLATE │ └── bug_report.md ├── README.md └── NodeRed └── TNDisplay.json /Tasmota/mqtt.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/Tasmota/mqtt.JPG -------------------------------------------------------------------------------- /Casing/TNDisplay.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/Casing/TNDisplay.stl -------------------------------------------------------------------------------- /Nextion/TNDispay.HMI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/Nextion/TNDispay.HMI -------------------------------------------------------------------------------- /Nextion/TNDispay.tft: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/Nextion/TNDispay.tft -------------------------------------------------------------------------------- /Tasmota/template.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/Tasmota/template.JPG -------------------------------------------------------------------------------- /_media/tndisplay.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/tndisplay.jpg -------------------------------------------------------------------------------- /Casing/TNDisplay.rsdocx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/Casing/TNDisplay.rsdocx -------------------------------------------------------------------------------- /Nextion/Design/Design.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/Nextion/Design/Design.psd -------------------------------------------------------------------------------- /Nextion/Design/Mockup.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/Nextion/Design/Mockup.jpg -------------------------------------------------------------------------------- /_media/casing/3dPrint.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/casing/3dPrint.jpg -------------------------------------------------------------------------------- /_media/casing/assembly.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/casing/assembly.jpg -------------------------------------------------------------------------------- /_media/wiring/wiring1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/wiring/wiring1.jpg -------------------------------------------------------------------------------- /_media/wiring/wiring2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/wiring/wiring2.jpg -------------------------------------------------------------------------------- /Nextion/Design/Assets/B1P.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/Nextion/Design/Assets/B1P.jpg -------------------------------------------------------------------------------- /Nextion/Design/Assets/B2P.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/Nextion/Design/Assets/B2P.jpg -------------------------------------------------------------------------------- /Nextion/Design/Assets/B3P.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/Nextion/Design/Assets/B3P.jpg -------------------------------------------------------------------------------- /Nextion/Design/Assets/B4P.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/Nextion/Design/Assets/B4P.jpg -------------------------------------------------------------------------------- /Nextion/Design/Assets/B6P.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/Nextion/Design/Assets/B6P.jpg -------------------------------------------------------------------------------- /Nextion/Design/Assets/B7P.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/Nextion/Design/Assets/B7P.jpg -------------------------------------------------------------------------------- /Nextion/Design/Assets/B8P.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/Nextion/Design/Assets/B8P.jpg -------------------------------------------------------------------------------- /Nextion/Design/Assets/PB1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/Nextion/Design/Assets/PB1.jpg -------------------------------------------------------------------------------- /Nextion/Design/Assets/PB4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/Nextion/Design/Assets/PB4.jpg -------------------------------------------------------------------------------- /Nextion/Design/Assets/PB5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/Nextion/Design/Assets/PB5.jpg -------------------------------------------------------------------------------- /Nextion/Design/Assets/PB6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/Nextion/Design/Assets/PB6.jpg -------------------------------------------------------------------------------- /Nextion/Design/Assets/PB7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/Nextion/Design/Assets/PB7.jpg -------------------------------------------------------------------------------- /Nextion/Design/Assets/PB8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/Nextion/Design/Assets/PB8.jpg -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: mulder82 2 | custom: ['https://paypal.me/ArturSoft','https://buycoffee.to/mulder82'] 3 | -------------------------------------------------------------------------------- /Nextion/Design/Assets/B5P1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/Nextion/Design/Assets/B5P1.jpg -------------------------------------------------------------------------------- /Nextion/Design/Assets/B5P2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/Nextion/Design/Assets/B5P2.jpg -------------------------------------------------------------------------------- /Nextion/Design/Assets/B5P3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/Nextion/Design/Assets/B5P3.jpg -------------------------------------------------------------------------------- /Nextion/Design/Assets/B5P4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/Nextion/Design/Assets/B5P4.jpg -------------------------------------------------------------------------------- /Nextion/Design/Assets/PB2H.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/Nextion/Design/Assets/PB2H.jpg -------------------------------------------------------------------------------- /Nextion/Design/Assets/PB2V.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/Nextion/Design/Assets/PB2V.jpg -------------------------------------------------------------------------------- /Nextion/Design/Assets/PB3B.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/Nextion/Design/Assets/PB3B.jpg -------------------------------------------------------------------------------- /Nextion/Design/Assets/PB3T.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/Nextion/Design/Assets/PB3T.jpg -------------------------------------------------------------------------------- /_media/nextion/icons/50/11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/nextion/icons/50/11.png -------------------------------------------------------------------------------- /_media/nextion/icons/50/12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/nextion/icons/50/12.png -------------------------------------------------------------------------------- /_media/nextion/icons/50/13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/nextion/icons/50/13.png -------------------------------------------------------------------------------- /_media/nextion/icons/50/14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/nextion/icons/50/14.png -------------------------------------------------------------------------------- /_media/nextion/icons/50/15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/nextion/icons/50/15.png -------------------------------------------------------------------------------- /_media/nextion/icons/50/16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/nextion/icons/50/16.png -------------------------------------------------------------------------------- /_media/nextion/icons/50/17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/nextion/icons/50/17.png -------------------------------------------------------------------------------- /_media/nextion/icons/50/66.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/nextion/icons/50/66.png -------------------------------------------------------------------------------- /_media/nextion/icons/50/67.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/nextion/icons/50/67.png -------------------------------------------------------------------------------- /_media/nextion/icons/50/68.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/nextion/icons/50/68.png -------------------------------------------------------------------------------- /_media/nextion/icons/50/69.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/nextion/icons/50/69.png -------------------------------------------------------------------------------- /_media/nextion/icons/70/18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/nextion/icons/70/18.png -------------------------------------------------------------------------------- /_media/nextion/icons/70/19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/nextion/icons/70/19.png -------------------------------------------------------------------------------- /_media/nextion/icons/70/20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/nextion/icons/70/20.png -------------------------------------------------------------------------------- /_media/nextion/icons/70/21.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/nextion/icons/70/21.png -------------------------------------------------------------------------------- /_media/nextion/icons/70/22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/nextion/icons/70/22.png -------------------------------------------------------------------------------- /_media/nextion/icons/70/23.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/nextion/icons/70/23.png -------------------------------------------------------------------------------- /_media/nextion/icons/70/24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/nextion/icons/70/24.png -------------------------------------------------------------------------------- /_media/nextion/icons/70/25.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/nextion/icons/70/25.png -------------------------------------------------------------------------------- /_media/nextion/icons/70/26.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/nextion/icons/70/26.png -------------------------------------------------------------------------------- /_media/nextion/icons/70/27.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/nextion/icons/70/27.png -------------------------------------------------------------------------------- /_media/nextion/icons/70/28.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/nextion/icons/70/28.png -------------------------------------------------------------------------------- /_media/nextion/icons/70/29.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/nextion/icons/70/29.png -------------------------------------------------------------------------------- /_media/nextion/icons/70/30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/nextion/icons/70/30.png -------------------------------------------------------------------------------- /_media/nextion/icons/70/31.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/nextion/icons/70/31.png -------------------------------------------------------------------------------- /_media/nextion/icons/70/32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/nextion/icons/70/32.png -------------------------------------------------------------------------------- /_media/nextion/icons/70/33.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/nextion/icons/70/33.png -------------------------------------------------------------------------------- /_media/nextion/icons/70/34.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/nextion/icons/70/34.png -------------------------------------------------------------------------------- /_media/nextion/icons/70/35.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/nextion/icons/70/35.png -------------------------------------------------------------------------------- /_media/nextion/icons/70/36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/nextion/icons/70/36.png -------------------------------------------------------------------------------- /_media/nextion/icons/70/37.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/nextion/icons/70/37.png -------------------------------------------------------------------------------- /_media/nextion/icons/70/38.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/nextion/icons/70/38.png -------------------------------------------------------------------------------- /_media/nextion/icons/70/39.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/nextion/icons/70/39.png -------------------------------------------------------------------------------- /_media/nextion/icons/70/40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/nextion/icons/70/40.png -------------------------------------------------------------------------------- /_media/nextion/icons/70/41.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/nextion/icons/70/41.png -------------------------------------------------------------------------------- /_media/nextion/icons/70/42.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/nextion/icons/70/42.png -------------------------------------------------------------------------------- /_media/nextion/icons/70/43.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/nextion/icons/70/43.png -------------------------------------------------------------------------------- /_media/nextion/icons/70/44.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/nextion/icons/70/44.png -------------------------------------------------------------------------------- /_media/nextion/icons/70/45.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/nextion/icons/70/45.png -------------------------------------------------------------------------------- /_media/nextion/icons/70/46.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/nextion/icons/70/46.png -------------------------------------------------------------------------------- /_media/nextion/icons/70/47.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/nextion/icons/70/47.png -------------------------------------------------------------------------------- /_media/nextion/icons/70/48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/nextion/icons/70/48.png -------------------------------------------------------------------------------- /_media/nextion/icons/70/49.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/nextion/icons/70/49.png -------------------------------------------------------------------------------- /_media/nextion/icons/70/50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/nextion/icons/70/50.png -------------------------------------------------------------------------------- /_media/nextion/icons/70/51.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/nextion/icons/70/51.png -------------------------------------------------------------------------------- /_media/nextion/icons/70/52.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/nextion/icons/70/52.png -------------------------------------------------------------------------------- /_media/nextion/icons/70/53.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/nextion/icons/70/53.png -------------------------------------------------------------------------------- /_media/nextion/icons/70/54.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/nextion/icons/70/54.png -------------------------------------------------------------------------------- /_media/nextion/icons/70/55.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/nextion/icons/70/55.png -------------------------------------------------------------------------------- /_media/nextion/icons/70/56.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/nextion/icons/70/56.png -------------------------------------------------------------------------------- /_media/nextion/icons/70/57.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/nextion/icons/70/57.jpg -------------------------------------------------------------------------------- /_media/nextion/icons/70/58.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/nextion/icons/70/58.jpg -------------------------------------------------------------------------------- /_media/nextion/icons/70/59.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/nextion/icons/70/59.jpg -------------------------------------------------------------------------------- /_media/nextion/icons/70/60.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/nextion/icons/70/60.jpg -------------------------------------------------------------------------------- /_media/nextion/icons/70/61.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/nextion/icons/70/61.jpg -------------------------------------------------------------------------------- /_media/nextion/icons/70/62.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/nextion/icons/70/62.jpg -------------------------------------------------------------------------------- /_media/nextion/icons/70/63.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/nextion/icons/70/63.jpg -------------------------------------------------------------------------------- /_media/nextion/icons/70/64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/nextion/icons/70/64.png -------------------------------------------------------------------------------- /_media/nextion/icons/70/65.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/nextion/icons/70/65.jpg -------------------------------------------------------------------------------- /_media/nextion/icons/70/70.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/nextion/icons/70/70.png -------------------------------------------------------------------------------- /_media/nextion/icons/70/71.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/nextion/icons/70/71.png -------------------------------------------------------------------------------- /_media/nextion/icons/70/72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/nextion/icons/70/72.png -------------------------------------------------------------------------------- /_media/nextion/icons/70/73.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/nextion/icons/70/73.png -------------------------------------------------------------------------------- /_media/nextion/icons/70/85.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/nextion/icons/70/85.jpg -------------------------------------------------------------------------------- /_media/nextion/pages/Page0.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/nextion/pages/Page0.JPG -------------------------------------------------------------------------------- /_media/nextion/pages/Page1.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/nextion/pages/Page1.JPG -------------------------------------------------------------------------------- /_media/nextion/pages/Page10.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/nextion/pages/Page10.JPG -------------------------------------------------------------------------------- /_media/nextion/pages/Page2.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/nextion/pages/Page2.JPG -------------------------------------------------------------------------------- /_media/nextion/pages/Page3.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/nextion/pages/Page3.JPG -------------------------------------------------------------------------------- /_media/nextion/pages/Page4.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/nextion/pages/Page4.JPG -------------------------------------------------------------------------------- /_media/nextion/pages/Page5.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/nextion/pages/Page5.JPG -------------------------------------------------------------------------------- /_media/nextion/pages/Page6.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/nextion/pages/Page6.JPG -------------------------------------------------------------------------------- /_media/nextion/pages/Page7.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/nextion/pages/Page7.JPG -------------------------------------------------------------------------------- /_media/nextion/pages/Page8.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/nextion/pages/Page8.JPG -------------------------------------------------------------------------------- /_media/nextion/pages/Page9.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/_media/nextion/pages/Page9.JPG -------------------------------------------------------------------------------- /Nextion/Design/Assets/PSTATUS.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/Nextion/Design/Assets/PSTATUS.jpg -------------------------------------------------------------------------------- /Nextion/Design/Fonts/verdana_20.zi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/Nextion/Design/Fonts/verdana_20.zi -------------------------------------------------------------------------------- /Nextion/Design/Fonts/verdana_30.zi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/Nextion/Design/Fonts/verdana_30.zi -------------------------------------------------------------------------------- /Nextion/Design/Fonts/verdana_40.zi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mulder82/TNDisplay/HEAD/Nextion/Design/Fonts/verdana_40.zi -------------------------------------------------------------------------------- /Nextion/Design/Fonts/CharactersList.txt: -------------------------------------------------------------------------------- 1 | ABCDEFGHIJKLMNOPQRSTUWXYZabcdefghijklmnopqrstuwxyzżółćęśąźńŻÓŁĆĘŚĄŹŃ`1234567890-=[]\;',./~!@#$%^&*()_+{}|:"<>? -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Describe the bug** 11 | A clear and concise description of what the bug is. 12 | 13 | **To Reproduce** 14 | Steps to reproduce the behavior: 15 | 1. Go to '...' 16 | 2. Click on '....' 17 | 3. Scroll down to '....' 18 | 4. See error 19 | 20 | **Expected behavior** 21 | A clear and concise description of what you expected to happen. 22 | 23 | **Screenshots** 24 | If applicable, add screenshots to help explain your problem. 25 | 26 | **Desktop (please complete the following information):** 27 | - OS: [e.g. iOS] 28 | - Browser [e.g. chrome, safari] 29 | - Version [e.g. 22] 30 | 31 | **Smartphone (please complete the following information):** 32 | - Device: [e.g. iPhone6] 33 | - OS: [e.g. iOS8.1] 34 | - Browser [e.g. stock browser, safari] 35 | - Version [e.g. 22] 36 | 37 | **Additional context** 38 | Add any other context about the problem here. 39 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # TNDisplay 2 | The goal of the project is to create a wireless touchscreen display that can be programmed using NodeRed and used to control HomeAssistant powered SmartHome. 3 | # Demonstration videos 4 | HomeAssistant control|Demo application 5 | --- | --- 6 | [![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) 7 | 8 | 1|2|3 9 | --- | --- | --- 10 | ![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) 11 | # Requirements 12 | ## Hardware 13 | 1. Nextion HMI Display, model [NX3224T024](https://nextion.tech/basic-series-introduction/) or other Nextion display with resolution 320x240px 14 | 2. [Wemos D1 mini lite](https://www.wemos.cc/en/latest/d1/d1_mini_lite.html) or other ESP MCU with 5v power pin 15 | ## Software 16 | 1. MQTT broker (see [mosquitto](https://mosquitto.org/download/)) 17 | 2. Node-Red (see [getting started with node-red](https://nodered.org/docs/getting-started/)) 18 | # Configuration 19 | ## Nextion display (upload TFT project) 20 | ### Option A (using SDCard) 21 | To 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/) 22 | ### Option B (using ttl adapter) 23 | 1. Download and install [NextionEditor](https://nextion.tech/nextion-editor/#_section1) 24 | 2. Download [TNDisplay.hmi](https://github.com/mulder82/TNDisplay/blob/main/Nextion/TNDispay.HMI) 25 | 3. Connect display and upload project ([see instructions](https://www.youtube.com/watch?v=xgBq5L0nSWk)) 26 | # Wemos D1 module 27 | 1. Flash ESP module with Tasmota ([see instructions](https://tasmota.github.io/docs/Getting-Started/#needed-software)) 28 | 2. 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: 29 | ```console 30 | {"NAME":"TNDisplay","GPIO":[0,0,320,0,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":18} 31 | ``` 32 | MQTT Settings | Template Settings 33 | --- | --- 34 | ![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/Tasmota/mqtt.JPG) | ![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/Tasmota/template.JPG) 35 | 36 | 3. Change serial baudrate to 9600. Open tasmota console and execute following command: 37 | ```console 38 | baudrate 9600 39 | ``` 40 | 4. Set Tasmota rule to initialize communication and show informations when connecting/disconnecting wifi and mqtt: 41 | ```console 42 | Rule1 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 43 | ``` 44 | 5. Enable Rule1: 45 | ```console 46 | Rule1 1 47 | ``` 48 | 6. Connect ESP module with Nextion display: 49 | 50 | > [!CAUTION] 51 | > Disconnect power supply when making connections! 52 | 53 | Nextion PIN | ESP Pin 54 | --- | --- 55 | +5V (black) | 5V 56 | TX (red) | RX 57 | RX (white) | TX 58 | GND (yellow) | G 59 | 60 | > [!IMPORTANT] 61 | > Note the crossover RX TX pins 62 | 63 | 7. At this stage if you have done everything correctly after restarting tasmota the screen should sequentially show the information "WiFi OK", "MQTT OK". 64 | 65 | > [!TIP] 66 | > If the display shows only "TNDisplay" screen with logo and nothing changes check [this issue discussion](https://github.com/mulder82/TNDisplay/issues/1) 67 | 68 | # NodeRed 69 | 1. 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) 70 | 2. 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. 71 | 3. At this stage, if you have done everything correctly, after deploy flow in NodeRed the display should show the demo application. 72 | 73 | # Casing 74 | If you want to print the casing, use the project files included in the [Casing](https://github.com/mulder82/TNDisplay/tree/main/Casing) folder. 75 | 76 | 1 | 2 77 | -- | -- 78 | ![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/casing/3dPrint.jpg) | ![Screenshot](https://github.com/mulder82/TNDisplay/blob/main/_media/casing/assembly.jpg) 79 | 80 | # Available Pages 81 | 82 | 0 | 1 | 2 | 3 | 4 83 | --- | --- | --- | --- | --- 84 | ![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) 85 | 86 | 5 | 6 | 7 | 8 | 9 87 | --- | --- | --- | --- | --- 88 | ![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) 89 | 90 | # Available Icons 91 | ## 50x50px (for use in header (PH.pic)) 92 | 93 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 66 | 67 | 68 | 69 94 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- 95 | ![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) 96 | 97 | ## 70x70px (for use as buttons images (P1.pic, P2.pic etc.) 98 | 99 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 100 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- 101 | ![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) 102 | 103 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 104 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- 105 | ![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) 106 | 107 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 108 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- 109 | ![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) 110 | 111 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 112 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- 113 | ![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) 114 | 115 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 70 | 71 116 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- 117 | ![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) 118 | 119 | 72 | 73 | 85 120 | -- | -- | -- 121 | ![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) 122 | 123 | > [!IMPORTANT] 124 | > 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. 125 | 126 | 127 | 128 | [![buycoffee](https://buycoffee.to/static/img/share/share-button-primary.png)](https://buycoffee.to/mulder82) 129 | -------------------------------------------------------------------------------- /NodeRed/TNDisplay.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "id": "058350134626a518", 4 | "type": "tab", 5 | "label": "TNDisplayDemo", 6 | "disabled": true, 7 | "info": "", 8 | "env": [] 9 | }, 10 | { 11 | "id": "23daae5d43583853", 12 | "type": "group", 13 | "z": "058350134626a518", 14 | "name": "TNDisplay", 15 | "style": { 16 | "label": true, 17 | "fill": "#d1d1d1", 18 | "color": "#000000" 19 | }, 20 | "nodes": [ 21 | "72acd53358212cd2", 22 | "bad9d9dfdc38dc28", 23 | "465127a11a275f69", 24 | "e8241a58cfa5a4d6", 25 | "92bccbec0d8f02a4", 26 | "cbac6d6ae67104ad", 27 | "e9efc3f9c71ce7a2", 28 | "989928ae2df37d14", 29 | "63d32947f0bd660c", 30 | "5d675502f77439c6", 31 | "23c4cad5cfd0d0a9", 32 | "56ee813de2bed706", 33 | "9e0db0ffd1910d54", 34 | "4431d6297ea34ebb", 35 | "1b60f7cec1c796bf", 36 | "055d8c1b699fc420", 37 | "f227e1c4c789e7e5", 38 | "53285918866da7ef", 39 | "a6045862c22aba1e", 40 | "bcd7673614d7bee2", 41 | "ddb09a91bd565485", 42 | "c658c203312fcb2b", 43 | "409a3d5fb81110c4", 44 | "d4d2ee19bd409ba9", 45 | "c7460f36f5f03708", 46 | "4e9d67da852d25a5", 47 | "d977694e13ebba0d", 48 | "54ff99385d39728b", 49 | "c03591b3c7772991", 50 | "9a004ea1f9d818c2", 51 | "933bb0e9d034a313", 52 | "3b10f11590bca83a", 53 | "832f248e11e48436", 54 | "2731a69f7225ab9c", 55 | "5cbbe3d4bf354ac0", 56 | "19f9f406adec1c1e", 57 | "8445636e656371cf", 58 | "d3d9b276401b7fc6", 59 | "80b2eac79f38e86f", 60 | "67ed26c068daba20", 61 | "615f60c84d219701", 62 | "ebe1ced7f3548e2f", 63 | "4cc14ee35efe7758", 64 | "02b7e36035c69350", 65 | "b0d6ab1724a5fb8b", 66 | "6763c817122e93ea", 67 | "d53a3194d199fe97", 68 | "637cf2edc7fd846e", 69 | "2b066b6883eef7f9", 70 | "e3a5a1916e4050e7", 71 | "6ad32793c92250e9", 72 | "5f22a1be9c0b8003", 73 | "be3f1f5e289553b5", 74 | "6690ed4d98913c33", 75 | "4dafe6e37a9e334b", 76 | "e37b53a874bec2a9", 77 | "ae5674db37c13fb8", 78 | "bf45c6be37a75ed5", 79 | "0d451cc596c22d0c", 80 | "f42bb67d2a1aac0f", 81 | "bee5427a0c2b7bea", 82 | "939f2f1c6ce52b36", 83 | "8fbed76a75dab554", 84 | "c4b10b236a0e7384", 85 | "b5473a73c75a4c4c", 86 | "6ffa65bbd83a8672", 87 | "33fd63030fe9c254", 88 | "6c55eca31cbd9f2a", 89 | "1a9a063ce229e336", 90 | "1e2000ab75523fa5", 91 | "93915fe8a4166700", 92 | "27a7d1d77d525634" 93 | ], 94 | "x": 14, 95 | "y": 19, 96 | "w": 812, 97 | "h": 1382 98 | }, 99 | { 100 | "id": "9215034f16704d56", 101 | "type": "group", 102 | "z": "058350134626a518", 103 | "name": "Menu", 104 | "style": { 105 | "fill": "#d1d1d1", 106 | "label": true, 107 | "color": "#000000" 108 | }, 109 | "nodes": [ 110 | "7bad635f7720fd08", 111 | "366b171d68087f0d", 112 | "ca2ad7aea0bf5db2", 113 | "90b684ddc6cecd8c", 114 | "2078fa37d67695bd", 115 | "131c68ad1a8fa1ac", 116 | "9e3fddf3c36162ca", 117 | "47ae6960f841fa05", 118 | "32a3c23245f7cada", 119 | "ab72c1bbb5770de5", 120 | "6a66a2eec8731baf", 121 | "66ba09169d8ceff8" 122 | ], 123 | "x": 14, 124 | "y": 1699, 125 | "w": 812, 126 | "h": 282 127 | }, 128 | { 129 | "id": "c1c36a044e741e7c", 130 | "type": "group", 131 | "z": "058350134626a518", 132 | "name": "Back to menu handler", 133 | "style": { 134 | "fill": "#d1d1d1", 135 | "label": true, 136 | "color": "#000000" 137 | }, 138 | "nodes": [ 139 | "5b4de4155f7f86ef", 140 | "e12f18cdb6eaf58c", 141 | "74022aa8d9547893", 142 | "c42380dfb704ebae", 143 | "86acf31792089cd5" 144 | ], 145 | "x": 14, 146 | "y": 1419, 147 | "w": 812, 148 | "h": 82 149 | }, 150 | { 151 | "id": "c627231e5235c4bc", 152 | "type": "group", 153 | "z": "058350134626a518", 154 | "name": "Swithes", 155 | "style": { 156 | "fill": "#d1d1d1", 157 | "label": true, 158 | "color": "#000000" 159 | }, 160 | "nodes": [ 161 | "31e0eb16c048efd4", 162 | "74b5e6620f6e03c5", 163 | "2025656e1cf3dd82", 164 | "c4c908bb21a3804a", 165 | "d9d54cb288868ec9", 166 | "cc09fab64062f9c9", 167 | "95011b83bf444e4d", 168 | "89e58d24c962e4ad", 169 | "a8fc3062a59a5951", 170 | "2f96ccb1ad44314d", 171 | "0cbe50632c7e2a2f", 172 | "3e4ca50560eb0c93" 173 | ], 174 | "x": 14, 175 | "y": 1999, 176 | "w": 812, 177 | "h": 282 178 | }, 179 | { 180 | "id": "d0e06e6b6c84cfe0", 181 | "type": "group", 182 | "z": "058350134626a518", 183 | "name": "Initialize dummy states object", 184 | "style": { 185 | "fill": "#d1d1d1", 186 | "label": true, 187 | "color": "#000000" 188 | }, 189 | "nodes": [ 190 | "71fd28ee3c83825e", 191 | "e0bd266a1b4ca4bc" 192 | ], 193 | "x": 14, 194 | "y": 1519, 195 | "w": 812, 196 | "h": 82 197 | }, 198 | { 199 | "id": "5fefab6ccf77a5a0", 200 | "type": "group", 201 | "z": "058350134626a518", 202 | "name": "Lights", 203 | "style": { 204 | "fill": "#d1d1d1", 205 | "label": true, 206 | "color": "#000000" 207 | }, 208 | "nodes": [ 209 | "337e7bdcb9b882c4", 210 | "8274af2dc46e9930", 211 | "fed18dbc9e53f606", 212 | "11759b3b938bd10f", 213 | "71350883ba0a6e95", 214 | "3cec5f5b727a1058", 215 | "9c1b91c840318f02", 216 | "2ec03856cd2710e4", 217 | "562cbd938e7dd950", 218 | "cc13a1331567b091", 219 | "d9adc6ad1f8fa290", 220 | "1dd09baa2d47c4cc" 221 | ], 222 | "x": 14, 223 | "y": 2299, 224 | "w": 812, 225 | "h": 282 226 | }, 227 | { 228 | "id": "e1b59c07fcef23be", 229 | "type": "group", 230 | "z": "058350134626a518", 231 | "name": "Climate", 232 | "style": { 233 | "fill": "#d1d1d1", 234 | "label": true, 235 | "color": "#000000" 236 | }, 237 | "nodes": [ 238 | "b36bf48cc39db361", 239 | "7fea696da82ad1b0", 240 | "657594311f37ab99", 241 | "4cf8f1f654412971", 242 | "86944a0fbc7aa57c", 243 | "defc2aa4a3a6dffd", 244 | "5d32ee45a61a68d5", 245 | "2d126c307885bf21", 246 | "ae28e12ce6a6f751" 247 | ], 248 | "x": 14, 249 | "y": 2599, 250 | "w": 812, 251 | "h": 142 252 | }, 253 | { 254 | "id": "3d06d3a0a7110909", 255 | "type": "group", 256 | "z": "058350134626a518", 257 | "name": "Shutters", 258 | "style": { 259 | "fill": "#d1d1d1", 260 | "label": true, 261 | "color": "#000000" 262 | }, 263 | "nodes": [ 264 | "4a87a3a49286eb46", 265 | "ac47b00a7650a750", 266 | "fc323641543f31b7", 267 | "bd9a4980ef027af7", 268 | "bbb8bc4fcfce4373", 269 | "d1dd6af4fddd3a6f", 270 | "8422e547d8be51cc", 271 | "5bf48c4333e9641b", 272 | "bcce3c819ba81549" 273 | ], 274 | "x": 14, 275 | "y": 2759, 276 | "w": 812, 277 | "h": 142 278 | }, 279 | { 280 | "id": "72acd53358212cd2", 281 | "type": "link in", 282 | "z": "058350134626a518", 283 | "g": "23daae5d43583853", 284 | "name": "SendCommand", 285 | "links": [ 286 | "bcd7673614d7bee2", 287 | "d4d2ee19bd409ba9", 288 | "ddb09a91bd565485", 289 | "ca2ad7aea0bf5db2", 290 | "2025656e1cf3dd82", 291 | "fed18dbc9e53f606", 292 | "657594311f37ab99", 293 | "fc323641543f31b7" 294 | ], 295 | "x": 120, 296 | "y": 100, 297 | "wires": [ 298 | [ 299 | "1b60f7cec1c796bf" 300 | ] 301 | ], 302 | "l": true 303 | }, 304 | { 305 | "id": "bad9d9dfdc38dc28", 306 | "type": "mqtt in", 307 | "z": "058350134626a518", 308 | "g": "23daae5d43583853", 309 | "name": "", 310 | "topic": "TNDisplay/tele/RESULT", 311 | "qos": "2", 312 | "datatype": "auto-detect", 313 | "broker": "c8c345b8e366ede5", 314 | "nl": false, 315 | "rap": true, 316 | "rh": 0, 317 | "inputs": 0, 318 | "x": 140, 319 | "y": 160, 320 | "wires": [ 321 | [ 322 | "465127a11a275f69" 323 | ] 324 | ] 325 | }, 326 | { 327 | "id": "465127a11a275f69", 328 | "type": "function", 329 | "z": "058350134626a518", 330 | "g": "23daae5d43583853", 331 | "name": "Process", 332 | "func": "var rawSerial = msg.payload.SerialReceived;\nif(!rawSerial)\n return null;\n\nfunction rawDataToMsg(rawData)\n{\n let payload =\n {\n RawData:rawData,\n ReturnCode:\"\",\n RawValue:\"\"\n };\n\n if(rawData.length<2)\n return {payload:payload};\n \n payload.ReturnCode=payload.RawData.substring(0,2);\n payload.RawValue = payload.RawData.slice(2);\n return {payload:payload};\n}\n\nrawSerial=rawSerial.toUpperCase().split(\"FFFFFF\").filter((rc)=>!!rc);\nrawSerial.forEach((rs)=>node.send(rawDataToMsg(rs)));\nnode.done();\nreturn;", 333 | "outputs": 1, 334 | "timeout": 0, 335 | "noerr": 0, 336 | "initialize": "", 337 | "finalize": "", 338 | "libs": [], 339 | "x": 340, 340 | "y": 160, 341 | "wires": [ 342 | [ 343 | "e9efc3f9c71ce7a2" 344 | ] 345 | ] 346 | }, 347 | { 348 | "id": "e8241a58cfa5a4d6", 349 | "type": "link out", 350 | "z": "058350134626a518", 351 | "g": "23daae5d43583853", 352 | "name": "onStringReceived", 353 | "mode": "link", 354 | "links": [ 355 | "70ca51fee5412238", 356 | "947ed452e48dee77", 357 | "ebe1ced7f3548e2f" 358 | ], 359 | "x": 710, 360 | "y": 340, 361 | "wires": [], 362 | "l": true 363 | }, 364 | { 365 | "id": "92bccbec0d8f02a4", 366 | "type": "function", 367 | "z": "058350134626a518", 368 | "g": "23daae5d43583853", 369 | "name": "Encode", 370 | "func": "function strToHex(input)\n{\n return Buffer.from(input).toString(\"hex\");\n}\n\nvar output = msg.payload.split(\";\").\n map(c =>strToHex(c.trim()) + \"FFFFFF\").\n join(\"\");\n \nreturn [{payload:output}];", 371 | "outputs": 1, 372 | "timeout": 0, 373 | "noerr": 0, 374 | "initialize": "", 375 | "finalize": "", 376 | "libs": [], 377 | "x": 480, 378 | "y": 100, 379 | "wires": [ 380 | [ 381 | "cbac6d6ae67104ad" 382 | ] 383 | ], 384 | "outputLabels": [ 385 | "HexCommand" 386 | ] 387 | }, 388 | { 389 | "id": "cbac6d6ae67104ad", 390 | "type": "mqtt out", 391 | "z": "058350134626a518", 392 | "g": "23daae5d43583853", 393 | "name": "", 394 | "topic": "TNDisplay/cmnd/serialsend5", 395 | "qos": "", 396 | "retain": "", 397 | "respTopic": "", 398 | "contentType": "", 399 | "userProps": "", 400 | "correl": "", 401 | "expiry": "", 402 | "broker": "c8c345b8e366ede5", 403 | "x": 680, 404 | "y": 100, 405 | "wires": [] 406 | }, 407 | { 408 | "id": "e9efc3f9c71ce7a2", 409 | "type": "switch", 410 | "z": "058350134626a518", 411 | "g": "23daae5d43583853", 412 | "name": "ReturnCode", 413 | "property": "payload.ReturnCode", 414 | "propertyType": "msg", 415 | "rules": [ 416 | { 417 | "t": "eq", 418 | "v": "1A", 419 | "vt": "str" 420 | }, 421 | { 422 | "t": "eq", 423 | "v": "66", 424 | "vt": "str" 425 | }, 426 | { 427 | "t": "eq", 428 | "v": "68", 429 | "vt": "str" 430 | }, 431 | { 432 | "t": "eq", 433 | "v": "87", 434 | "vt": "str" 435 | }, 436 | { 437 | "t": "eq", 438 | "v": "70", 439 | "vt": "str" 440 | }, 441 | { 442 | "t": "eq", 443 | "v": "86", 444 | "vt": "str" 445 | }, 446 | { 447 | "t": "else" 448 | } 449 | ], 450 | "checkall": "true", 451 | "repair": false, 452 | "outputs": 7, 453 | "x": 210, 454 | "y": 320, 455 | "wires": [ 456 | [ 457 | "5f22a1be9c0b8003" 458 | ], 459 | [ 460 | "63d32947f0bd660c" 461 | ], 462 | [], 463 | [ 464 | "56ee813de2bed706" 465 | ], 466 | [ 467 | "989928ae2df37d14" 468 | ], 469 | [ 470 | "23c4cad5cfd0d0a9" 471 | ], 472 | [ 473 | "6ad32793c92250e9" 474 | ] 475 | ], 476 | "outputLabels": [ 477 | "0x1A > Invalid Variable name or attribute", 478 | "0x66 > Current Page Number", 479 | "0x68 > Touch Coordinate (sleep) (Ignorujemy)", 480 | "0x87 > Auto Wake from Sleep", 481 | "0x70 > String Data Enclosed", 482 | "0x86 > Auto Entered Sleep Mode", 483 | "Otherwise" 484 | ] 485 | }, 486 | { 487 | "id": "989928ae2df37d14", 488 | "type": "function", 489 | "z": "058350134626a518", 490 | "g": "23daae5d43583853", 491 | "name": "HexToStr", 492 | "func": "function hexToStr(str)\n{\n return str.split(/(\\w\\w)/g)\n .filter(p => !!p)\n .map(c => String.fromCharCode(parseInt(c, 16)))\n .join(\"\");\n}\n\nmsg.payload.DataType=\"String\";\nmsg.payload.Value=hexToStr(msg.payload.RawValue);\n\nreturn msg;", 493 | "outputs": 1, 494 | "timeout": 0, 495 | "noerr": 0, 496 | "initialize": "", 497 | "finalize": "", 498 | "libs": [], 499 | "x": 460, 500 | "y": 340, 501 | "wires": [ 502 | [ 503 | "e8241a58cfa5a4d6" 504 | ] 505 | ] 506 | }, 507 | { 508 | "id": "63d32947f0bd660c", 509 | "type": "function", 510 | "z": "058350134626a518", 511 | "g": "23daae5d43583853", 512 | "name": "current_page", 513 | "func": "var currentPage = parseInt(msg.payload.RawValue,16);\nvar oldPage = flow.get(\"current_page\");\n\nif(currentPage!=oldPage)\n{\n flow.set(\"current_page\",currentPage);\n if(oldPage!=-1)\n {\n return{payload:{\"current_page\":currentPage}};\n }\n}\n\nreturn null;", 514 | "outputs": 1, 515 | "timeout": 0, 516 | "noerr": 0, 517 | "initialize": "", 518 | "finalize": "", 519 | "libs": [], 520 | "x": 480, 521 | "y": 260, 522 | "wires": [ 523 | [ 524 | "5d675502f77439c6" 525 | ] 526 | ] 527 | }, 528 | { 529 | "id": "5d675502f77439c6", 530 | "type": "link out", 531 | "z": "058350134626a518", 532 | "g": "23daae5d43583853", 533 | "name": "onCurrentPageChanged", 534 | "mode": "link", 535 | "links": [ 536 | "7bc2ce7cfb3eb948", 537 | "67ed26c068daba20" 538 | ], 539 | "x": 690, 540 | "y": 260, 541 | "wires": [], 542 | "l": true 543 | }, 544 | { 545 | "id": "23c4cad5cfd0d0a9", 546 | "type": "function", 547 | "z": "058350134626a518", 548 | "g": "23daae5d43583853", 549 | "name": "sleep_mode=T", 550 | "func": "flow.set(\"sleep_mode\",true);\nreturn {payload:\"onSleep\"};", 551 | "outputs": 1, 552 | "timeout": 0, 553 | "noerr": 0, 554 | "initialize": "", 555 | "finalize": "", 556 | "libs": [], 557 | "x": 480, 558 | "y": 380, 559 | "wires": [ 560 | [ 561 | "4431d6297ea34ebb" 562 | ] 563 | ] 564 | }, 565 | { 566 | "id": "56ee813de2bed706", 567 | "type": "function", 568 | "z": "058350134626a518", 569 | "g": "23daae5d43583853", 570 | "name": "sleep_mode=F", 571 | "func": "flow.set(\"sleep_mode\",false);\nreturn {payload:\"onWake\"};", 572 | "outputs": 1, 573 | "timeout": 0, 574 | "noerr": 0, 575 | "initialize": "", 576 | "finalize": "", 577 | "libs": [], 578 | "x": 480, 579 | "y": 300, 580 | "wires": [ 581 | [ 582 | "9e0db0ffd1910d54" 583 | ] 584 | ] 585 | }, 586 | { 587 | "id": "9e0db0ffd1910d54", 588 | "type": "link out", 589 | "z": "058350134626a518", 590 | "g": "23daae5d43583853", 591 | "name": "onWake", 592 | "mode": "link", 593 | "links": [ 594 | "c7460f36f5f03708", 595 | "adfcdc4f60942fe2" 596 | ], 597 | "x": 740, 598 | "y": 300, 599 | "wires": [], 600 | "l": true 601 | }, 602 | { 603 | "id": "4431d6297ea34ebb", 604 | "type": "link out", 605 | "z": "058350134626a518", 606 | "g": "23daae5d43583853", 607 | "name": "onSleep", 608 | "mode": "link", 609 | "links": [ 610 | "d3d9b276401b7fc6" 611 | ], 612 | "x": 740, 613 | "y": 380, 614 | "wires": [], 615 | "l": true 616 | }, 617 | { 618 | "id": "1b60f7cec1c796bf", 619 | "type": "function", 620 | "z": "058350134626a518", 621 | "g": "23daae5d43583853", 622 | "name": "Process", 623 | "func": "const SLEEP_WHITELIST = [\"get \",\"print \",\"printh \",\"wup=\",\"sleep=\"];\nconst SLEEP_CMND = \"sleep=1\";\n//Auto Entered Sleep Mode\t0x86 0xFF 0xFF 0xFF\nconst SLEEP_MSG = {payload:{SerialReceived:\"86FFFFFF\"}};\nconst AWAKE_CMND = \"sleep=0\";\n//Auto Wake from Sleep\t0x87 0xFF 0xFF 0xFF\nconst AWAKE_MSG = {payload:{SerialReceived:\"87FFFFFF\"}};\nconst PAGE_CMND = \"page \";\nconst SENDME_CMND = \"sendme\";\n\nvar currentSleepMode = flow.get(\"sleep_mode\");\nvar currentPage = flow.get(\"current_page\");\n\nvar inputCommands = msg.payload.split(\";\");\nvar outputCommands=[];\nvar outputMessages=[];\n\ninputCommands.forEach((command)=>\n{\n command=command.trim();\n \n if(command==SLEEP_CMND)\n {\n currentSleepMode=true;\n outputMessages.push(SLEEP_MSG);\n }\n\n if(command==AWAKE_CMND)\n {\n currentSleepMode=false;\n outputMessages.push(AWAKE_MSG);\n }\n\n if(currentSleepMode)\n {\n if(SLEEP_WHITELIST.some((wlc)=>command.startsWith(wlc)))\n {\n outputCommands.push(command);\n }\n }\n else\n {\n if(command.startsWith(PAGE_CMND))\n {\n let newPage = command.substring(PAGE_CMND.length);\n if(newPage!=currentPage)\n {\n outputCommands.push(command);\n outputCommands.push(SENDME_CMND);\n currentPage=newPage;\n }\n }\n else\n {\n outputCommands.push(command);\n }\n }\n});\n\n//If there is more than one command\nif(outputCommands.length>1)\n{\n //Stop refreshing screen before all commands\n outputCommands.unshift(\"ref_stop\");\n //Ressume refreshing screen after all commands\n outputCommands.push(\"ref_star\");\n}\n\noutputCommands=outputCommands.length==0?null:{payload:outputCommands.join(\";\")};\nreturn[outputCommands,outputMessages];", 624 | "outputs": 2, 625 | "timeout": 0, 626 | "noerr": 0, 627 | "initialize": "", 628 | "finalize": "", 629 | "libs": [], 630 | "x": 300, 631 | "y": 100, 632 | "wires": [ 633 | [ 634 | "c4b10b236a0e7384", 635 | "92bccbec0d8f02a4" 636 | ], 637 | [ 638 | "465127a11a275f69" 639 | ] 640 | ] 641 | }, 642 | { 643 | "id": "055d8c1b699fc420", 644 | "type": "link in", 645 | "z": "058350134626a518", 646 | "g": "23daae5d43583853", 647 | "name": "Wake", 648 | "links": [ 649 | "939e9ab52ff43826", 650 | "b4f0035b68f24e80", 651 | "366ebc9c8e84fe19", 652 | "cab2851853bf980e", 653 | "e78602ba2a844410", 654 | "386d69b88ff1bfc3", 655 | "93915fe8a4166700" 656 | ], 657 | "x": 90, 658 | "y": 600, 659 | "wires": [ 660 | [ 661 | "5cbbe3d4bf354ac0", 662 | "f227e1c4c789e7e5" 663 | ] 664 | ], 665 | "l": true 666 | }, 667 | { 668 | "id": "f227e1c4c789e7e5", 669 | "type": "function", 670 | "z": "058350134626a518", 671 | "g": "23daae5d43583853", 672 | "name": "Process", 673 | "func": "var sleep_mode = flow.get(\"sleep_mode\");\n\nif(!sleep_mode)\n return null;\n\nreturn {payload:\"sleep=0\"};", 674 | "outputs": 1, 675 | "timeout": 0, 676 | "noerr": 0, 677 | "initialize": "", 678 | "finalize": "", 679 | "libs": [], 680 | "x": 460, 681 | "y": 600, 682 | "wires": [ 683 | [ 684 | "ddb09a91bd565485" 685 | ] 686 | ] 687 | }, 688 | { 689 | "id": "53285918866da7ef", 690 | "type": "link in", 691 | "z": "058350134626a518", 692 | "g": "23daae5d43583853", 693 | "name": "Initialize", 694 | "links": [ 695 | "832f248e11e48436" 696 | ], 697 | "x": 90, 698 | "y": 520, 699 | "wires": [ 700 | [ 701 | "2731a69f7225ab9c", 702 | "a6045862c22aba1e" 703 | ] 704 | ], 705 | "l": true 706 | }, 707 | { 708 | "id": "a6045862c22aba1e", 709 | "type": "function", 710 | "z": "058350134626a518", 711 | "g": "23daae5d43583853", 712 | "name": "Process", 713 | "func": "flow.set(\"current_page\", -1);\nflow.set(\"sleep_mode\", false);\n\nvar display_mode=flow.get(\"display_mode\");\nif(!display_mode)\n{\n //Initial screen \"menu\"\n flow.set(\"display_mode\",\"menu\");\n}\n\n//Initialization commands:\n//sleep=0 -> Exit sleep mode\n//thsp=10 -> Sets no-touch-then-sleep timer to 10 seconds\n//thup=1 -> Wake on touch\n//sendme -> send current page id to first update display\nmsg.payload=\"sleep=0; thsp=10; thup=1; sendme\";\nreturn msg;", 714 | "outputs": 1, 715 | "timeout": 0, 716 | "noerr": 0, 717 | "initialize": "", 718 | "finalize": "", 719 | "libs": [], 720 | "x": 460, 721 | "y": 520, 722 | "wires": [ 723 | [ 724 | "bcd7673614d7bee2" 725 | ] 726 | ] 727 | }, 728 | { 729 | "id": "bcd7673614d7bee2", 730 | "type": "link out", 731 | "z": "058350134626a518", 732 | "g": "23daae5d43583853", 733 | "name": "SendCommand", 734 | "mode": "link", 735 | "links": [ 736 | "72acd53358212cd2" 737 | ], 738 | "x": 720, 739 | "y": 520, 740 | "wires": [], 741 | "l": true 742 | }, 743 | { 744 | "id": "ddb09a91bd565485", 745 | "type": "link out", 746 | "z": "058350134626a518", 747 | "g": "23daae5d43583853", 748 | "name": "SendCommand", 749 | "mode": "link", 750 | "links": [ 751 | "72acd53358212cd2" 752 | ], 753 | "x": 720, 754 | "y": 600, 755 | "wires": [], 756 | "l": true 757 | }, 758 | { 759 | "id": "c658c203312fcb2b", 760 | "type": "link in", 761 | "z": "058350134626a518", 762 | "g": "23daae5d43583853", 763 | "name": "Sleep", 764 | "links": [ 765 | "4a08594510d98be0" 766 | ], 767 | "x": 90, 768 | "y": 680, 769 | "wires": [ 770 | [ 771 | "8445636e656371cf", 772 | "409a3d5fb81110c4" 773 | ] 774 | ], 775 | "l": true 776 | }, 777 | { 778 | "id": "409a3d5fb81110c4", 779 | "type": "function", 780 | "z": "058350134626a518", 781 | "g": "23daae5d43583853", 782 | "name": "Process", 783 | "func": "var sleep_mode = flow.get(\"sleep_mode\");\n\nif(sleep_mode)\n return null;\n\nreturn {payload:\"sleep=1\"};", 784 | "outputs": 1, 785 | "timeout": 0, 786 | "noerr": 0, 787 | "initialize": "", 788 | "finalize": "", 789 | "libs": [], 790 | "x": 460, 791 | "y": 680, 792 | "wires": [ 793 | [ 794 | "d4d2ee19bd409ba9" 795 | ] 796 | ] 797 | }, 798 | { 799 | "id": "d4d2ee19bd409ba9", 800 | "type": "link out", 801 | "z": "058350134626a518", 802 | "g": "23daae5d43583853", 803 | "name": "SendCommand", 804 | "mode": "link", 805 | "links": [ 806 | "72acd53358212cd2" 807 | ], 808 | "x": 720, 809 | "y": 680, 810 | "wires": [], 811 | "l": true 812 | }, 813 | { 814 | "id": "c7460f36f5f03708", 815 | "type": "link in", 816 | "z": "058350134626a518", 817 | "g": "23daae5d43583853", 818 | "name": "onWake", 819 | "links": [ 820 | "9e0db0ffd1910d54" 821 | ], 822 | "x": 100, 823 | "y": 1200, 824 | "wires": [ 825 | [ 826 | "19f9f406adec1c1e", 827 | "4e9d67da852d25a5" 828 | ] 829 | ], 830 | "l": true 831 | }, 832 | { 833 | "id": "4e9d67da852d25a5", 834 | "type": "link out", 835 | "z": "058350134626a518", 836 | "g": "23daae5d43583853", 837 | "name": "UpdateDisplay", 838 | "mode": "link", 839 | "links": [ 840 | "d977694e13ebba0d" 841 | ], 842 | "x": 720, 843 | "y": 1200, 844 | "wires": [], 845 | "l": true 846 | }, 847 | { 848 | "id": "d977694e13ebba0d", 849 | "type": "link in", 850 | "z": "058350134626a518", 851 | "g": "23daae5d43583853", 852 | "name": "UpdateDisplay", 853 | "links": [ 854 | "27a7d1d77d525634", 855 | "4e9d67da852d25a5", 856 | "66ba09169d8ceff8", 857 | "c42380dfb704ebae", 858 | "0419664ffabdc98d", 859 | "a8fc3062a59a5951", 860 | "562cbd938e7dd950", 861 | "ae28e12ce6a6f751", 862 | "bcce3c819ba81549" 863 | ], 864 | "x": 120, 865 | "y": 760, 866 | "wires": [ 867 | [ 868 | "54ff99385d39728b", 869 | "c03591b3c7772991" 870 | ] 871 | ], 872 | "l": true 873 | }, 874 | { 875 | "id": "54ff99385d39728b", 876 | "type": "change", 877 | "z": "058350134626a518", 878 | "g": "23daae5d43583853", 879 | "name": "Debug msg", 880 | "rules": [ 881 | { 882 | "t": "set", 883 | "p": "payload", 884 | "pt": "msg", 885 | "to": "UpdateDisplay", 886 | "tot": "str" 887 | } 888 | ], 889 | "action": "", 890 | "property": "", 891 | "from": "", 892 | "to": "", 893 | "reg": false, 894 | "x": 470, 895 | "y": 720, 896 | "wires": [ 897 | [ 898 | "bf45c6be37a75ed5" 899 | ] 900 | ] 901 | }, 902 | { 903 | "id": "c03591b3c7772991", 904 | "type": "link out", 905 | "z": "058350134626a518", 906 | "g": "23daae5d43583853", 907 | "name": "onUpdateDisplay", 908 | "mode": "link", 909 | "links": [ 910 | "7bad635f7720fd08", 911 | "31e0eb16c048efd4", 912 | "337e7bdcb9b882c4", 913 | "b36bf48cc39db361", 914 | "4a87a3a49286eb46" 915 | ], 916 | "x": 710, 917 | "y": 760, 918 | "wires": [], 919 | "l": true 920 | }, 921 | { 922 | "id": "9a004ea1f9d818c2", 923 | "type": "mqtt in", 924 | "z": "058350134626a518", 925 | "g": "23daae5d43583853", 926 | "name": "", 927 | "topic": "TNDisplay/tele/LWT", 928 | "qos": "2", 929 | "datatype": "auto-detect", 930 | "broker": "c8c345b8e366ede5", 931 | "nl": false, 932 | "rap": true, 933 | "rh": 0, 934 | "inputs": 0, 935 | "x": 130, 936 | "y": 1280, 937 | "wires": [ 938 | [ 939 | "6763c817122e93ea", 940 | "933bb0e9d034a313" 941 | ] 942 | ] 943 | }, 944 | { 945 | "id": "933bb0e9d034a313", 946 | "type": "delay", 947 | "z": "058350134626a518", 948 | "g": "23daae5d43583853", 949 | "name": "", 950 | "pauseType": "delay", 951 | "timeout": "1", 952 | "timeoutUnits": "seconds", 953 | "rate": "1", 954 | "nbRateUnits": "1", 955 | "rateUnits": "second", 956 | "randomFirst": "1", 957 | "randomLast": "5", 958 | "randomUnits": "seconds", 959 | "drop": false, 960 | "allowrate": false, 961 | "outputs": 1, 962 | "x": 320, 963 | "y": 1320, 964 | "wires": [ 965 | [ 966 | "3b10f11590bca83a" 967 | ] 968 | ] 969 | }, 970 | { 971 | "id": "3b10f11590bca83a", 972 | "type": "function", 973 | "z": "058350134626a518", 974 | "g": "23daae5d43583853", 975 | "name": "Online?", 976 | "func": "if(msg.payload==\"Online\")\n{\n return msg;\n}\nreturn null;", 977 | "outputs": 1, 978 | "timeout": 0, 979 | "noerr": 0, 980 | "initialize": "", 981 | "finalize": "", 982 | "libs": [], 983 | "x": 480, 984 | "y": 1320, 985 | "wires": [ 986 | [ 987 | "832f248e11e48436" 988 | ] 989 | ] 990 | }, 991 | { 992 | "id": "832f248e11e48436", 993 | "type": "link out", 994 | "z": "058350134626a518", 995 | "g": "23daae5d43583853", 996 | "name": "Initialize", 997 | "mode": "link", 998 | "links": [ 999 | "53285918866da7ef" 1000 | ], 1001 | "x": 740, 1002 | "y": 1320, 1003 | "wires": [], 1004 | "l": true 1005 | }, 1006 | { 1007 | "id": "2731a69f7225ab9c", 1008 | "type": "change", 1009 | "z": "058350134626a518", 1010 | "g": "23daae5d43583853", 1011 | "name": "Debug msg", 1012 | "rules": [ 1013 | { 1014 | "t": "set", 1015 | "p": "payload", 1016 | "pt": "msg", 1017 | "to": "Initialize", 1018 | "tot": "str" 1019 | } 1020 | ], 1021 | "action": "", 1022 | "property": "", 1023 | "from": "", 1024 | "to": "", 1025 | "reg": false, 1026 | "x": 470, 1027 | "y": 480, 1028 | "wires": [ 1029 | [ 1030 | "be3f1f5e289553b5" 1031 | ] 1032 | ] 1033 | }, 1034 | { 1035 | "id": "5cbbe3d4bf354ac0", 1036 | "type": "change", 1037 | "z": "058350134626a518", 1038 | "g": "23daae5d43583853", 1039 | "name": "Debug msg", 1040 | "rules": [ 1041 | { 1042 | "t": "set", 1043 | "p": "payload", 1044 | "pt": "msg", 1045 | "to": "Wake", 1046 | "tot": "str" 1047 | } 1048 | ], 1049 | "action": "", 1050 | "property": "", 1051 | "from": "", 1052 | "to": "", 1053 | "reg": false, 1054 | "x": 470, 1055 | "y": 560, 1056 | "wires": [ 1057 | [ 1058 | "6690ed4d98913c33" 1059 | ] 1060 | ] 1061 | }, 1062 | { 1063 | "id": "19f9f406adec1c1e", 1064 | "type": "change", 1065 | "z": "058350134626a518", 1066 | "g": "23daae5d43583853", 1067 | "name": "Debug msg", 1068 | "rules": [ 1069 | { 1070 | "t": "set", 1071 | "p": "payload", 1072 | "pt": "msg", 1073 | "to": "onWake", 1074 | "tot": "str" 1075 | } 1076 | ], 1077 | "action": "", 1078 | "property": "", 1079 | "from": "", 1080 | "to": "", 1081 | "reg": false, 1082 | "x": 470, 1083 | "y": 1160, 1084 | "wires": [ 1085 | [ 1086 | "4dafe6e37a9e334b" 1087 | ] 1088 | ] 1089 | }, 1090 | { 1091 | "id": "8445636e656371cf", 1092 | "type": "change", 1093 | "z": "058350134626a518", 1094 | "g": "23daae5d43583853", 1095 | "name": "Debug msg", 1096 | "rules": [ 1097 | { 1098 | "t": "set", 1099 | "p": "payload", 1100 | "pt": "msg", 1101 | "to": "Sleep", 1102 | "tot": "str" 1103 | } 1104 | ], 1105 | "action": "", 1106 | "property": "", 1107 | "from": "", 1108 | "to": "", 1109 | "reg": false, 1110 | "x": 470, 1111 | "y": 640, 1112 | "wires": [ 1113 | [ 1114 | "e37b53a874bec2a9" 1115 | ] 1116 | ] 1117 | }, 1118 | { 1119 | "id": "d3d9b276401b7fc6", 1120 | "type": "link in", 1121 | "z": "058350134626a518", 1122 | "g": "23daae5d43583853", 1123 | "name": "onSleep", 1124 | "links": [ 1125 | "4431d6297ea34ebb" 1126 | ], 1127 | "x": 100, 1128 | "y": 960, 1129 | "wires": [ 1130 | [ 1131 | "80b2eac79f38e86f" 1132 | ] 1133 | ], 1134 | "l": true 1135 | }, 1136 | { 1137 | "id": "80b2eac79f38e86f", 1138 | "type": "change", 1139 | "z": "058350134626a518", 1140 | "g": "23daae5d43583853", 1141 | "name": "Debug msg", 1142 | "rules": [ 1143 | { 1144 | "t": "set", 1145 | "p": "payload", 1146 | "pt": "msg", 1147 | "to": "onSleep", 1148 | "tot": "str" 1149 | } 1150 | ], 1151 | "action": "", 1152 | "property": "", 1153 | "from": "", 1154 | "to": "", 1155 | "reg": false, 1156 | "x": 470, 1157 | "y": 960, 1158 | "wires": [ 1159 | [ 1160 | "ae5674db37c13fb8" 1161 | ] 1162 | ] 1163 | }, 1164 | { 1165 | "id": "67ed26c068daba20", 1166 | "type": "link in", 1167 | "z": "058350134626a518", 1168 | "g": "23daae5d43583853", 1169 | "name": "onCurrentPageChanged", 1170 | "links": [ 1171 | "5d675502f77439c6" 1172 | ], 1173 | "x": 150, 1174 | "y": 1000, 1175 | "wires": [ 1176 | [ 1177 | "615f60c84d219701" 1178 | ] 1179 | ], 1180 | "l": true 1181 | }, 1182 | { 1183 | "id": "615f60c84d219701", 1184 | "type": "change", 1185 | "z": "058350134626a518", 1186 | "g": "23daae5d43583853", 1187 | "name": "Debug msg", 1188 | "rules": [ 1189 | { 1190 | "t": "set", 1191 | "p": "payload", 1192 | "pt": "msg", 1193 | "to": "onCurrentPageChanged", 1194 | "tot": "str" 1195 | } 1196 | ], 1197 | "action": "", 1198 | "property": "", 1199 | "from": "", 1200 | "to": "", 1201 | "reg": false, 1202 | "x": 470, 1203 | "y": 1000, 1204 | "wires": [ 1205 | [ 1206 | "0d451cc596c22d0c" 1207 | ] 1208 | ] 1209 | }, 1210 | { 1211 | "id": "ebe1ced7f3548e2f", 1212 | "type": "link in", 1213 | "z": "058350134626a518", 1214 | "g": "23daae5d43583853", 1215 | "name": "onStringReceived", 1216 | "links": [ 1217 | "e8241a58cfa5a4d6" 1218 | ], 1219 | "x": 130, 1220 | "y": 1040, 1221 | "wires": [ 1222 | [ 1223 | "4cc14ee35efe7758", 1224 | "02b7e36035c69350" 1225 | ] 1226 | ], 1227 | "l": true 1228 | }, 1229 | { 1230 | "id": "4cc14ee35efe7758", 1231 | "type": "change", 1232 | "z": "058350134626a518", 1233 | "g": "23daae5d43583853", 1234 | "name": "Debug msg", 1235 | "rules": [ 1236 | { 1237 | "t": "set", 1238 | "p": "payload", 1239 | "pt": "msg", 1240 | "to": "onStringReceived", 1241 | "tot": "str" 1242 | } 1243 | ], 1244 | "action": "", 1245 | "property": "", 1246 | "from": "", 1247 | "to": "", 1248 | "reg": false, 1249 | "x": 470, 1250 | "y": 1040, 1251 | "wires": [ 1252 | [ 1253 | "f42bb67d2a1aac0f" 1254 | ] 1255 | ] 1256 | }, 1257 | { 1258 | "id": "02b7e36035c69350", 1259 | "type": "function", 1260 | "z": "058350134626a518", 1261 | "g": "23daae5d43583853", 1262 | "name": "Check", 1263 | "func": "var value = msg.payload.Value;\n\nif(value.endsWith(\"_click\"))\n{\n return { payload: msg.payload.Value }; \n}\n\nreturn null;", 1264 | "outputs": 1, 1265 | "timeout": 0, 1266 | "noerr": 0, 1267 | "initialize": "", 1268 | "finalize": "", 1269 | "libs": [], 1270 | "x": 290, 1271 | "y": 1120, 1272 | "wires": [ 1273 | [ 1274 | "b5473a73c75a4c4c", 1275 | "b0d6ab1724a5fb8b" 1276 | ] 1277 | ] 1278 | }, 1279 | { 1280 | "id": "b0d6ab1724a5fb8b", 1281 | "type": "link out", 1282 | "z": "058350134626a518", 1283 | "g": "23daae5d43583853", 1284 | "name": "onClick", 1285 | "mode": "link", 1286 | "links": [ 1287 | "90b684ddc6cecd8c", 1288 | "5b4de4155f7f86ef", 1289 | "c4c908bb21a3804a", 1290 | "11759b3b938bd10f", 1291 | "4cf8f1f654412971", 1292 | "bd9a4980ef027af7" 1293 | ], 1294 | "x": 740, 1295 | "y": 1120, 1296 | "wires": [], 1297 | "l": true 1298 | }, 1299 | { 1300 | "id": "6763c817122e93ea", 1301 | "type": "change", 1302 | "z": "058350134626a518", 1303 | "g": "23daae5d43583853", 1304 | "name": "Debug msg", 1305 | "rules": [ 1306 | { 1307 | "t": "set", 1308 | "p": "payload", 1309 | "pt": "msg", 1310 | "to": "TNDisplay/tele/LWT", 1311 | "tot": "str" 1312 | } 1313 | ], 1314 | "action": "", 1315 | "property": "", 1316 | "from": "", 1317 | "to": "", 1318 | "reg": false, 1319 | "x": 330, 1320 | "y": 1280, 1321 | "wires": [ 1322 | [ 1323 | "bee5427a0c2b7bea" 1324 | ] 1325 | ] 1326 | }, 1327 | { 1328 | "id": "d53a3194d199fe97", 1329 | "type": "link in", 1330 | "z": "058350134626a518", 1331 | "g": "23daae5d43583853", 1332 | "name": "Debug", 1333 | "links": [ 1334 | "2b066b6883eef7f9", 1335 | "e3a5a1916e4050e7", 1336 | "be3f1f5e289553b5", 1337 | "6690ed4d98913c33", 1338 | "4dafe6e37a9e334b", 1339 | "e37b53a874bec2a9", 1340 | "ae5674db37c13fb8", 1341 | "bf45c6be37a75ed5", 1342 | "0d451cc596c22d0c", 1343 | "f42bb67d2a1aac0f", 1344 | "311a738f8459808a", 1345 | "bee5427a0c2b7bea", 1346 | "39f0f163b9eabd23", 1347 | "c4b10b236a0e7384", 1348 | "6ffa65bbd83a8672", 1349 | "1a9a063ce229e336", 1350 | "2f89e673089410e0" 1351 | ], 1352 | "x": 90, 1353 | "y": 1360, 1354 | "wires": [ 1355 | [ 1356 | "637cf2edc7fd846e" 1357 | ] 1358 | ], 1359 | "l": true 1360 | }, 1361 | { 1362 | "id": "637cf2edc7fd846e", 1363 | "type": "debug", 1364 | "z": "058350134626a518", 1365 | "g": "23daae5d43583853", 1366 | "name": "TNDisplayDebug", 1367 | "active": true, 1368 | "tosidebar": true, 1369 | "console": false, 1370 | "tostatus": false, 1371 | "complete": "payload", 1372 | "targetType": "msg", 1373 | "statusVal": "", 1374 | "statusType": "auto", 1375 | "x": 690, 1376 | "y": 1360, 1377 | "wires": [] 1378 | }, 1379 | { 1380 | "id": "2b066b6883eef7f9", 1381 | "type": "link out", 1382 | "z": "058350134626a518", 1383 | "g": "23daae5d43583853", 1384 | "name": "Debug", 1385 | "mode": "link", 1386 | "links": [ 1387 | "d53a3194d199fe97" 1388 | ], 1389 | "x": 610, 1390 | "y": 220, 1391 | "wires": [], 1392 | "icon": "font-awesome/fa-bug", 1393 | "l": true 1394 | }, 1395 | { 1396 | "id": "e3a5a1916e4050e7", 1397 | "type": "link out", 1398 | "z": "058350134626a518", 1399 | "g": "23daae5d43583853", 1400 | "name": "Debug", 1401 | "mode": "link", 1402 | "links": [ 1403 | "d53a3194d199fe97" 1404 | ], 1405 | "x": 610, 1406 | "y": 420, 1407 | "wires": [], 1408 | "icon": "font-awesome/fa-bug", 1409 | "l": true 1410 | }, 1411 | { 1412 | "id": "6ad32793c92250e9", 1413 | "type": "change", 1414 | "z": "058350134626a518", 1415 | "g": "23daae5d43583853", 1416 | "name": "Debug msg", 1417 | "rules": [ 1418 | { 1419 | "t": "set", 1420 | "p": "payload", 1421 | "pt": "msg", 1422 | "to": "Unsuported return code", 1423 | "tot": "str" 1424 | } 1425 | ], 1426 | "action": "", 1427 | "property": "", 1428 | "from": "", 1429 | "to": "", 1430 | "reg": false, 1431 | "x": 470, 1432 | "y": 420, 1433 | "wires": [ 1434 | [ 1435 | "e3a5a1916e4050e7" 1436 | ] 1437 | ] 1438 | }, 1439 | { 1440 | "id": "5f22a1be9c0b8003", 1441 | "type": "change", 1442 | "z": "058350134626a518", 1443 | "g": "23daae5d43583853", 1444 | "name": "Debug msg", 1445 | "rules": [ 1446 | { 1447 | "t": "set", 1448 | "p": "payload", 1449 | "pt": "msg", 1450 | "to": "Invalid Variable name or attribute", 1451 | "tot": "str" 1452 | } 1453 | ], 1454 | "action": "", 1455 | "property": "", 1456 | "from": "", 1457 | "to": "", 1458 | "reg": false, 1459 | "x": 470, 1460 | "y": 220, 1461 | "wires": [ 1462 | [ 1463 | "2b066b6883eef7f9" 1464 | ] 1465 | ] 1466 | }, 1467 | { 1468 | "id": "be3f1f5e289553b5", 1469 | "type": "link out", 1470 | "z": "058350134626a518", 1471 | "g": "23daae5d43583853", 1472 | "name": "Debug", 1473 | "mode": "link", 1474 | "links": [ 1475 | "d53a3194d199fe97" 1476 | ], 1477 | "x": 610, 1478 | "y": 480, 1479 | "wires": [], 1480 | "icon": "font-awesome/fa-bug", 1481 | "l": true 1482 | }, 1483 | { 1484 | "id": "6690ed4d98913c33", 1485 | "type": "link out", 1486 | "z": "058350134626a518", 1487 | "g": "23daae5d43583853", 1488 | "name": "Debug", 1489 | "mode": "link", 1490 | "links": [ 1491 | "d53a3194d199fe97" 1492 | ], 1493 | "x": 610, 1494 | "y": 560, 1495 | "wires": [], 1496 | "icon": "font-awesome/fa-bug", 1497 | "l": true 1498 | }, 1499 | { 1500 | "id": "4dafe6e37a9e334b", 1501 | "type": "link out", 1502 | "z": "058350134626a518", 1503 | "g": "23daae5d43583853", 1504 | "name": "Debug", 1505 | "mode": "link", 1506 | "links": [ 1507 | "d53a3194d199fe97" 1508 | ], 1509 | "x": 610, 1510 | "y": 1160, 1511 | "wires": [], 1512 | "icon": "font-awesome/fa-bug", 1513 | "l": true 1514 | }, 1515 | { 1516 | "id": "e37b53a874bec2a9", 1517 | "type": "link out", 1518 | "z": "058350134626a518", 1519 | "g": "23daae5d43583853", 1520 | "name": "Debug", 1521 | "mode": "link", 1522 | "links": [ 1523 | "d53a3194d199fe97" 1524 | ], 1525 | "x": 610, 1526 | "y": 640, 1527 | "wires": [], 1528 | "icon": "font-awesome/fa-bug", 1529 | "l": true 1530 | }, 1531 | { 1532 | "id": "ae5674db37c13fb8", 1533 | "type": "link out", 1534 | "z": "058350134626a518", 1535 | "g": "23daae5d43583853", 1536 | "name": "Debug", 1537 | "mode": "link", 1538 | "links": [ 1539 | "d53a3194d199fe97" 1540 | ], 1541 | "x": 610, 1542 | "y": 960, 1543 | "wires": [], 1544 | "icon": "font-awesome/fa-bug", 1545 | "l": true 1546 | }, 1547 | { 1548 | "id": "bf45c6be37a75ed5", 1549 | "type": "link out", 1550 | "z": "058350134626a518", 1551 | "g": "23daae5d43583853", 1552 | "name": "Debug", 1553 | "mode": "link", 1554 | "links": [ 1555 | "d53a3194d199fe97" 1556 | ], 1557 | "x": 610, 1558 | "y": 720, 1559 | "wires": [], 1560 | "icon": "font-awesome/fa-bug", 1561 | "l": true 1562 | }, 1563 | { 1564 | "id": "0d451cc596c22d0c", 1565 | "type": "link out", 1566 | "z": "058350134626a518", 1567 | "g": "23daae5d43583853", 1568 | "name": "Debug", 1569 | "mode": "link", 1570 | "links": [ 1571 | "d53a3194d199fe97" 1572 | ], 1573 | "x": 610, 1574 | "y": 1000, 1575 | "wires": [], 1576 | "icon": "font-awesome/fa-bug", 1577 | "l": true 1578 | }, 1579 | { 1580 | "id": "f42bb67d2a1aac0f", 1581 | "type": "link out", 1582 | "z": "058350134626a518", 1583 | "g": "23daae5d43583853", 1584 | "name": "Debug", 1585 | "mode": "link", 1586 | "links": [ 1587 | "d53a3194d199fe97" 1588 | ], 1589 | "x": 610, 1590 | "y": 1040, 1591 | "wires": [], 1592 | "icon": "font-awesome/fa-bug", 1593 | "l": true 1594 | }, 1595 | { 1596 | "id": "bee5427a0c2b7bea", 1597 | "type": "link out", 1598 | "z": "058350134626a518", 1599 | "g": "23daae5d43583853", 1600 | "name": "Debug", 1601 | "mode": "link", 1602 | "links": [ 1603 | "d53a3194d199fe97" 1604 | ], 1605 | "x": 470, 1606 | "y": 1280, 1607 | "wires": [], 1608 | "icon": "font-awesome/fa-bug", 1609 | "l": true 1610 | }, 1611 | { 1612 | "id": "939f2f1c6ce52b36", 1613 | "type": "comment", 1614 | "z": "058350134626a518", 1615 | "g": "23daae5d43583853", 1616 | "name": "-------------------------------------------------------------Event handlers -------------------------------------------------------------", 1617 | "info": "", 1618 | "x": 420, 1619 | "y": 920, 1620 | "wires": [] 1621 | }, 1622 | { 1623 | "id": "8fbed76a75dab554", 1624 | "type": "comment", 1625 | "z": "058350134626a518", 1626 | "g": "23daae5d43583853", 1627 | "name": "---------------------------------------------------------------Triggers -------------------------------------------------------------------", 1628 | "info": "", 1629 | "x": 420, 1630 | "y": 1240, 1631 | "wires": [] 1632 | }, 1633 | { 1634 | "id": "c4b10b236a0e7384", 1635 | "type": "link out", 1636 | "z": "058350134626a518", 1637 | "g": "23daae5d43583853", 1638 | "name": "Debug", 1639 | "mode": "link", 1640 | "links": [ 1641 | "d53a3194d199fe97" 1642 | ], 1643 | "x": 470, 1644 | "y": 60, 1645 | "wires": [], 1646 | "icon": "font-awesome/fa-bug", 1647 | "l": true 1648 | }, 1649 | { 1650 | "id": "b5473a73c75a4c4c", 1651 | "type": "change", 1652 | "z": "058350134626a518", 1653 | "g": "23daae5d43583853", 1654 | "name": "Debug msg", 1655 | "rules": [ 1656 | { 1657 | "t": "set", 1658 | "p": "payload", 1659 | "pt": "msg", 1660 | "to": "onClick", 1661 | "tot": "str" 1662 | } 1663 | ], 1664 | "action": "", 1665 | "property": "", 1666 | "from": "", 1667 | "to": "", 1668 | "reg": false, 1669 | "x": 470, 1670 | "y": 1080, 1671 | "wires": [ 1672 | [ 1673 | "6ffa65bbd83a8672" 1674 | ] 1675 | ] 1676 | }, 1677 | { 1678 | "id": "6ffa65bbd83a8672", 1679 | "type": "link out", 1680 | "z": "058350134626a518", 1681 | "g": "23daae5d43583853", 1682 | "name": "Debug", 1683 | "mode": "link", 1684 | "links": [ 1685 | "d53a3194d199fe97" 1686 | ], 1687 | "x": 610, 1688 | "y": 1080, 1689 | "wires": [], 1690 | "icon": "font-awesome/fa-bug", 1691 | "l": true 1692 | }, 1693 | { 1694 | "id": "33fd63030fe9c254", 1695 | "type": "link in", 1696 | "z": "058350134626a518", 1697 | "g": "23daae5d43583853", 1698 | "name": "UpdateWakeDisplay", 1699 | "links": [], 1700 | "x": 130, 1701 | "y": 860, 1702 | "wires": [ 1703 | [ 1704 | "6c55eca31cbd9f2a", 1705 | "1e2000ab75523fa5" 1706 | ] 1707 | ], 1708 | "l": true 1709 | }, 1710 | { 1711 | "id": "6c55eca31cbd9f2a", 1712 | "type": "change", 1713 | "z": "058350134626a518", 1714 | "g": "23daae5d43583853", 1715 | "name": "Debug msg", 1716 | "rules": [ 1717 | { 1718 | "t": "set", 1719 | "p": "payload", 1720 | "pt": "msg", 1721 | "to": "UpdateWakeDisplay", 1722 | "tot": "str" 1723 | } 1724 | ], 1725 | "action": "", 1726 | "property": "", 1727 | "from": "", 1728 | "to": "", 1729 | "reg": false, 1730 | "x": 470, 1731 | "y": 800, 1732 | "wires": [ 1733 | [ 1734 | "1a9a063ce229e336" 1735 | ] 1736 | ] 1737 | }, 1738 | { 1739 | "id": "1a9a063ce229e336", 1740 | "type": "link out", 1741 | "z": "058350134626a518", 1742 | "g": "23daae5d43583853", 1743 | "name": "Debug", 1744 | "mode": "link", 1745 | "links": [ 1746 | "d53a3194d199fe97" 1747 | ], 1748 | "x": 610, 1749 | "y": 800, 1750 | "wires": [], 1751 | "icon": "font-awesome/fa-bug", 1752 | "l": true 1753 | }, 1754 | { 1755 | "id": "1e2000ab75523fa5", 1756 | "type": "function", 1757 | "z": "058350134626a518", 1758 | "g": "23daae5d43583853", 1759 | "name": "Process", 1760 | "func": "var sleep_mode = flow.get(\"sleep_mode\");\n\nif(sleep_mode)\n{\n return [msg,null];\n}\nelse\n{\n return [null,msg];\n}", 1761 | "outputs": 2, 1762 | "timeout": 0, 1763 | "noerr": 0, 1764 | "initialize": "", 1765 | "finalize": "", 1766 | "libs": [], 1767 | "x": 460, 1768 | "y": 860, 1769 | "wires": [ 1770 | [ 1771 | "93915fe8a4166700" 1772 | ], 1773 | [ 1774 | "27a7d1d77d525634" 1775 | ] 1776 | ] 1777 | }, 1778 | { 1779 | "id": "93915fe8a4166700", 1780 | "type": "link out", 1781 | "z": "058350134626a518", 1782 | "g": "23daae5d43583853", 1783 | "name": "Wake", 1784 | "mode": "link", 1785 | "links": [ 1786 | "055d8c1b699fc420" 1787 | ], 1788 | "x": 750, 1789 | "y": 840, 1790 | "wires": [], 1791 | "l": true 1792 | }, 1793 | { 1794 | "id": "27a7d1d77d525634", 1795 | "type": "link out", 1796 | "z": "058350134626a518", 1797 | "g": "23daae5d43583853", 1798 | "name": "UpdateDisplay", 1799 | "mode": "link", 1800 | "links": [ 1801 | "d977694e13ebba0d" 1802 | ], 1803 | "x": 720, 1804 | "y": 880, 1805 | "wires": [], 1806 | "l": true 1807 | }, 1808 | { 1809 | "id": "cc997e972a45715f", 1810 | "type": "comment", 1811 | "z": "058350134626a518", 1812 | "name": "---------------------------------------------------------------Screens -------------------------------------------------------------------", 1813 | "info": "", 1814 | "x": 420, 1815 | "y": 1660, 1816 | "wires": [] 1817 | }, 1818 | { 1819 | "id": "7bad635f7720fd08", 1820 | "type": "link in", 1821 | "z": "058350134626a518", 1822 | "g": "9215034f16704d56", 1823 | "name": "onUpdateDisplay", 1824 | "links": [ 1825 | "c03591b3c7772991" 1826 | ], 1827 | "x": 120, 1828 | "y": 1740, 1829 | "wires": [ 1830 | [ 1831 | "131c68ad1a8fa1ac" 1832 | ] 1833 | ], 1834 | "l": true 1835 | }, 1836 | { 1837 | "id": "366b171d68087f0d", 1838 | "type": "function", 1839 | "z": "058350134626a518", 1840 | "g": "9215034f16704d56", 1841 | "name": "Compose", 1842 | "func": "var commands=[];\n\ncommands.push(\"page 5\");\ncommands.push(\"PH.pic=67\",'TH.txt=\"MENU\"');\n\ncommands.push(\"P1.pic=48\",'T1.txt=\"Switches\"');\ncommands.push(\"P2.pic=23\",'T2.txt=\"Lights\"');\ncommands.push(\"P3.pic=52\",'T3.txt=\"Climate\"');\ncommands.push(\"P4.pic=45\",'T4.txt=\"Shutters\"');\n\nreturn{payload:commands.join(\";\")};", 1843 | "outputs": 1, 1844 | "timeout": 0, 1845 | "noerr": 0, 1846 | "initialize": "", 1847 | "finalize": "", 1848 | "libs": [], 1849 | "x": 480, 1850 | "y": 1740, 1851 | "wires": [ 1852 | [ 1853 | "ca2ad7aea0bf5db2" 1854 | ] 1855 | ] 1856 | }, 1857 | { 1858 | "id": "ca2ad7aea0bf5db2", 1859 | "type": "link out", 1860 | "z": "058350134626a518", 1861 | "g": "9215034f16704d56", 1862 | "name": "SendCommand", 1863 | "mode": "link", 1864 | "links": [ 1865 | "72acd53358212cd2" 1866 | ], 1867 | "x": 720, 1868 | "y": 1740, 1869 | "wires": [], 1870 | "l": true 1871 | }, 1872 | { 1873 | "id": "90b684ddc6cecd8c", 1874 | "type": "link in", 1875 | "z": "058350134626a518", 1876 | "g": "9215034f16704d56", 1877 | "name": "onClick", 1878 | "links": [ 1879 | "b0d6ab1724a5fb8b" 1880 | ], 1881 | "x": 90, 1882 | "y": 1880, 1883 | "wires": [ 1884 | [ 1885 | "9e3fddf3c36162ca" 1886 | ] 1887 | ], 1888 | "l": true 1889 | }, 1890 | { 1891 | "id": "2078fa37d67695bd", 1892 | "type": "switch", 1893 | "z": "058350134626a518", 1894 | "g": "9215034f16704d56", 1895 | "name": "Event", 1896 | "property": "payload", 1897 | "propertyType": "msg", 1898 | "rules": [ 1899 | { 1900 | "t": "eq", 1901 | "v": "1_click", 1902 | "vt": "str" 1903 | }, 1904 | { 1905 | "t": "eq", 1906 | "v": "2_click", 1907 | "vt": "str" 1908 | }, 1909 | { 1910 | "t": "eq", 1911 | "v": "3_click", 1912 | "vt": "str" 1913 | }, 1914 | { 1915 | "t": "eq", 1916 | "v": "4_click", 1917 | "vt": "str" 1918 | } 1919 | ], 1920 | "checkall": "false", 1921 | "repair": false, 1922 | "outputs": 4, 1923 | "x": 330, 1924 | "y": 1880, 1925 | "wires": [ 1926 | [ 1927 | "47ae6960f841fa05" 1928 | ], 1929 | [ 1930 | "32a3c23245f7cada" 1931 | ], 1932 | [ 1933 | "ab72c1bbb5770de5" 1934 | ], 1935 | [ 1936 | "6a66a2eec8731baf" 1937 | ] 1938 | ] 1939 | }, 1940 | { 1941 | "id": "131c68ad1a8fa1ac", 1942 | "type": "switch", 1943 | "z": "058350134626a518", 1944 | "g": "9215034f16704d56", 1945 | "name": "Menu?", 1946 | "property": "display_mode", 1947 | "propertyType": "flow", 1948 | "rules": [ 1949 | { 1950 | "t": "eq", 1951 | "v": "menu", 1952 | "vt": "str" 1953 | } 1954 | ], 1955 | "checkall": "true", 1956 | "repair": false, 1957 | "outputs": 1, 1958 | "x": 310, 1959 | "y": 1740, 1960 | "wires": [ 1961 | [ 1962 | "366b171d68087f0d" 1963 | ] 1964 | ] 1965 | }, 1966 | { 1967 | "id": "9e3fddf3c36162ca", 1968 | "type": "switch", 1969 | "z": "058350134626a518", 1970 | "g": "9215034f16704d56", 1971 | "name": "Menu?", 1972 | "property": "display_mode", 1973 | "propertyType": "flow", 1974 | "rules": [ 1975 | { 1976 | "t": "eq", 1977 | "v": "menu", 1978 | "vt": "str" 1979 | } 1980 | ], 1981 | "checkall": "true", 1982 | "repair": false, 1983 | "outputs": 1, 1984 | "x": 210, 1985 | "y": 1880, 1986 | "wires": [ 1987 | [ 1988 | "2078fa37d67695bd" 1989 | ] 1990 | ] 1991 | }, 1992 | { 1993 | "id": "47ae6960f841fa05", 1994 | "type": "change", 1995 | "z": "058350134626a518", 1996 | "g": "9215034f16704d56", 1997 | "name": "Switches", 1998 | "rules": [ 1999 | { 2000 | "t": "set", 2001 | "p": "display_mode", 2002 | "pt": "flow", 2003 | "to": "switches", 2004 | "tot": "str" 2005 | } 2006 | ], 2007 | "action": "", 2008 | "property": "", 2009 | "from": "", 2010 | "to": "", 2011 | "reg": false, 2012 | "x": 480, 2013 | "y": 1820, 2014 | "wires": [ 2015 | [ 2016 | "66ba09169d8ceff8" 2017 | ] 2018 | ] 2019 | }, 2020 | { 2021 | "id": "32a3c23245f7cada", 2022 | "type": "change", 2023 | "z": "058350134626a518", 2024 | "g": "9215034f16704d56", 2025 | "name": "Lights", 2026 | "rules": [ 2027 | { 2028 | "t": "set", 2029 | "p": "display_mode", 2030 | "pt": "flow", 2031 | "to": "lights", 2032 | "tot": "str" 2033 | } 2034 | ], 2035 | "action": "", 2036 | "property": "", 2037 | "from": "", 2038 | "to": "", 2039 | "reg": false, 2040 | "x": 470, 2041 | "y": 1860, 2042 | "wires": [ 2043 | [ 2044 | "66ba09169d8ceff8" 2045 | ] 2046 | ] 2047 | }, 2048 | { 2049 | "id": "ab72c1bbb5770de5", 2050 | "type": "change", 2051 | "z": "058350134626a518", 2052 | "g": "9215034f16704d56", 2053 | "name": "Climate", 2054 | "rules": [ 2055 | { 2056 | "t": "set", 2057 | "p": "display_mode", 2058 | "pt": "flow", 2059 | "to": "climate", 2060 | "tot": "str" 2061 | } 2062 | ], 2063 | "action": "", 2064 | "property": "", 2065 | "from": "", 2066 | "to": "", 2067 | "reg": false, 2068 | "x": 480, 2069 | "y": 1900, 2070 | "wires": [ 2071 | [ 2072 | "66ba09169d8ceff8" 2073 | ] 2074 | ] 2075 | }, 2076 | { 2077 | "id": "6a66a2eec8731baf", 2078 | "type": "change", 2079 | "z": "058350134626a518", 2080 | "g": "9215034f16704d56", 2081 | "name": "Shutters", 2082 | "rules": [ 2083 | { 2084 | "t": "set", 2085 | "p": "display_mode", 2086 | "pt": "flow", 2087 | "to": "shutters", 2088 | "tot": "str" 2089 | } 2090 | ], 2091 | "action": "", 2092 | "property": "", 2093 | "from": "", 2094 | "to": "", 2095 | "reg": false, 2096 | "x": 480, 2097 | "y": 1940, 2098 | "wires": [ 2099 | [ 2100 | "66ba09169d8ceff8" 2101 | ] 2102 | ] 2103 | }, 2104 | { 2105 | "id": "66ba09169d8ceff8", 2106 | "type": "link out", 2107 | "z": "058350134626a518", 2108 | "g": "9215034f16704d56", 2109 | "name": "UpdateDisplay", 2110 | "mode": "link", 2111 | "links": [ 2112 | "d977694e13ebba0d" 2113 | ], 2114 | "x": 720, 2115 | "y": 1880, 2116 | "wires": [], 2117 | "l": true 2118 | }, 2119 | { 2120 | "id": "5b4de4155f7f86ef", 2121 | "type": "link in", 2122 | "z": "058350134626a518", 2123 | "g": "c1c36a044e741e7c", 2124 | "name": "onClick", 2125 | "links": [ 2126 | "b0d6ab1724a5fb8b" 2127 | ], 2128 | "x": 90, 2129 | "y": 1460, 2130 | "wires": [ 2131 | [ 2132 | "e12f18cdb6eaf58c" 2133 | ] 2134 | ], 2135 | "l": true 2136 | }, 2137 | { 2138 | "id": "e12f18cdb6eaf58c", 2139 | "type": "switch", 2140 | "z": "058350134626a518", 2141 | "g": "c1c36a044e741e7c", 2142 | "name": "!Menu?", 2143 | "property": "display_mode", 2144 | "propertyType": "flow", 2145 | "rules": [ 2146 | { 2147 | "t": "neq", 2148 | "v": "menu", 2149 | "vt": "str" 2150 | } 2151 | ], 2152 | "checkall": "true", 2153 | "repair": false, 2154 | "outputs": 1, 2155 | "x": 220, 2156 | "y": 1460, 2157 | "wires": [ 2158 | [ 2159 | "74022aa8d9547893" 2160 | ] 2161 | ] 2162 | }, 2163 | { 2164 | "id": "74022aa8d9547893", 2165 | "type": "switch", 2166 | "z": "058350134626a518", 2167 | "g": "c1c36a044e741e7c", 2168 | "name": "0_click?", 2169 | "property": "payload", 2170 | "propertyType": "msg", 2171 | "rules": [ 2172 | { 2173 | "t": "eq", 2174 | "v": "0_click", 2175 | "vt": "str" 2176 | } 2177 | ], 2178 | "checkall": "false", 2179 | "repair": false, 2180 | "outputs": 1, 2181 | "x": 360, 2182 | "y": 1460, 2183 | "wires": [ 2184 | [ 2185 | "86acf31792089cd5" 2186 | ] 2187 | ] 2188 | }, 2189 | { 2190 | "id": "c42380dfb704ebae", 2191 | "type": "link out", 2192 | "z": "058350134626a518", 2193 | "g": "c1c36a044e741e7c", 2194 | "name": "UpdateDisplay", 2195 | "mode": "link", 2196 | "links": [ 2197 | "d977694e13ebba0d" 2198 | ], 2199 | "x": 720, 2200 | "y": 1460, 2201 | "wires": [], 2202 | "l": true 2203 | }, 2204 | { 2205 | "id": "86acf31792089cd5", 2206 | "type": "function", 2207 | "z": "058350134626a518", 2208 | "g": "c1c36a044e741e7c", 2209 | "name": "mode->menu", 2210 | "func": "flow.set(\"display_mode\",\"menu\");\nreturn msg;", 2211 | "outputs": 1, 2212 | "timeout": 0, 2213 | "noerr": 0, 2214 | "initialize": "", 2215 | "finalize": "", 2216 | "libs": [], 2217 | "x": 530, 2218 | "y": 1460, 2219 | "wires": [ 2220 | [ 2221 | "c42380dfb704ebae" 2222 | ] 2223 | ] 2224 | }, 2225 | { 2226 | "id": "31e0eb16c048efd4", 2227 | "type": "link in", 2228 | "z": "058350134626a518", 2229 | "g": "c627231e5235c4bc", 2230 | "name": "onUpdateDisplay", 2231 | "links": [ 2232 | "c03591b3c7772991" 2233 | ], 2234 | "x": 120, 2235 | "y": 2040, 2236 | "wires": [ 2237 | [ 2238 | "cc09fab64062f9c9" 2239 | ] 2240 | ], 2241 | "l": true 2242 | }, 2243 | { 2244 | "id": "74b5e6620f6e03c5", 2245 | "type": "function", 2246 | "z": "058350134626a518", 2247 | "g": "c627231e5235c4bc", 2248 | "name": "Compose", 2249 | "func": "var commands=[];\nvar states = flow.get(\"states\");\n\ncommands.push(\"page 5\");\ncommands.push(\"PH.pic=15\",'TH.txt=\"Switches\"');\n\ncommands.push(\"P1.pic=\"+(states.switches[0]?\"49\":\"48\"),'T1.txt=\"Switch1\"');\ncommands.push(\"P2.pic=\"+(states.switches[1]?\"49\":\"48\"),'T2.txt=\"Switch2\"');\ncommands.push(\"P3.pic=\"+(states.switches[2]?\"49\":\"48\"),'T3.txt=\"Switch3\"');\ncommands.push(\"P4.pic=\"+(states.switches[3]?\"49\":\"48\"),'T4.txt=\"Switch4\"');\n\nreturn{payload:commands.join(\";\")};", 2250 | "outputs": 1, 2251 | "timeout": 0, 2252 | "noerr": 0, 2253 | "initialize": "", 2254 | "finalize": "", 2255 | "libs": [], 2256 | "x": 520, 2257 | "y": 2040, 2258 | "wires": [ 2259 | [ 2260 | "2025656e1cf3dd82" 2261 | ] 2262 | ] 2263 | }, 2264 | { 2265 | "id": "2025656e1cf3dd82", 2266 | "type": "link out", 2267 | "z": "058350134626a518", 2268 | "g": "c627231e5235c4bc", 2269 | "name": "SendCommand", 2270 | "mode": "link", 2271 | "links": [ 2272 | "72acd53358212cd2" 2273 | ], 2274 | "x": 720, 2275 | "y": 2040, 2276 | "wires": [], 2277 | "l": true 2278 | }, 2279 | { 2280 | "id": "c4c908bb21a3804a", 2281 | "type": "link in", 2282 | "z": "058350134626a518", 2283 | "g": "c627231e5235c4bc", 2284 | "name": "onClick", 2285 | "links": [ 2286 | "b0d6ab1724a5fb8b" 2287 | ], 2288 | "x": 90, 2289 | "y": 2180, 2290 | "wires": [ 2291 | [ 2292 | "95011b83bf444e4d" 2293 | ] 2294 | ], 2295 | "l": true 2296 | }, 2297 | { 2298 | "id": "d9d54cb288868ec9", 2299 | "type": "switch", 2300 | "z": "058350134626a518", 2301 | "g": "c627231e5235c4bc", 2302 | "name": "Event", 2303 | "property": "payload", 2304 | "propertyType": "msg", 2305 | "rules": [ 2306 | { 2307 | "t": "eq", 2308 | "v": "1_click", 2309 | "vt": "str" 2310 | }, 2311 | { 2312 | "t": "eq", 2313 | "v": "2_click", 2314 | "vt": "str" 2315 | }, 2316 | { 2317 | "t": "eq", 2318 | "v": "3_click", 2319 | "vt": "str" 2320 | }, 2321 | { 2322 | "t": "eq", 2323 | "v": "4_click", 2324 | "vt": "str" 2325 | } 2326 | ], 2327 | "checkall": "false", 2328 | "repair": false, 2329 | "outputs": 4, 2330 | "x": 350, 2331 | "y": 2180, 2332 | "wires": [ 2333 | [ 2334 | "89e58d24c962e4ad" 2335 | ], 2336 | [ 2337 | "2f96ccb1ad44314d" 2338 | ], 2339 | [ 2340 | "0cbe50632c7e2a2f" 2341 | ], 2342 | [ 2343 | "3e4ca50560eb0c93" 2344 | ] 2345 | ] 2346 | }, 2347 | { 2348 | "id": "cc09fab64062f9c9", 2349 | "type": "switch", 2350 | "z": "058350134626a518", 2351 | "g": "c627231e5235c4bc", 2352 | "name": "Switches?", 2353 | "property": "display_mode", 2354 | "propertyType": "flow", 2355 | "rules": [ 2356 | { 2357 | "t": "eq", 2358 | "v": "switches", 2359 | "vt": "str" 2360 | } 2361 | ], 2362 | "checkall": "true", 2363 | "repair": false, 2364 | "outputs": 1, 2365 | "x": 320, 2366 | "y": 2040, 2367 | "wires": [ 2368 | [ 2369 | "74b5e6620f6e03c5" 2370 | ] 2371 | ] 2372 | }, 2373 | { 2374 | "id": "95011b83bf444e4d", 2375 | "type": "switch", 2376 | "z": "058350134626a518", 2377 | "g": "c627231e5235c4bc", 2378 | "name": "Switches?", 2379 | "property": "display_mode", 2380 | "propertyType": "flow", 2381 | "rules": [ 2382 | { 2383 | "t": "eq", 2384 | "v": "switches", 2385 | "vt": "str" 2386 | } 2387 | ], 2388 | "checkall": "true", 2389 | "repair": false, 2390 | "outputs": 1, 2391 | "x": 220, 2392 | "y": 2180, 2393 | "wires": [ 2394 | [ 2395 | "d9d54cb288868ec9" 2396 | ] 2397 | ] 2398 | }, 2399 | { 2400 | "id": "71fd28ee3c83825e", 2401 | "type": "inject", 2402 | "z": "058350134626a518", 2403 | "g": "d0e06e6b6c84cfe0", 2404 | "name": "", 2405 | "props": [], 2406 | "repeat": "", 2407 | "crontab": "", 2408 | "once": true, 2409 | "onceDelay": 0.1, 2410 | "topic": "", 2411 | "x": 110, 2412 | "y": 1560, 2413 | "wires": [ 2414 | [ 2415 | "e0bd266a1b4ca4bc" 2416 | ] 2417 | ] 2418 | }, 2419 | { 2420 | "id": "e0bd266a1b4ca4bc", 2421 | "type": "change", 2422 | "z": "058350134626a518", 2423 | "g": "d0e06e6b6c84cfe0", 2424 | "name": "", 2425 | "rules": [ 2426 | { 2427 | "t": "set", 2428 | "p": "states", 2429 | "pt": "flow", 2430 | "to": "{\"switches\":[false,true,false,false],\"lights\":[true,true,false,false],\"climate\":false,\"shutters\":true}", 2431 | "tot": "json" 2432 | } 2433 | ], 2434 | "action": "", 2435 | "property": "", 2436 | "from": "", 2437 | "to": "", 2438 | "reg": false, 2439 | "x": 720, 2440 | "y": 1560, 2441 | "wires": [ 2442 | [] 2443 | ] 2444 | }, 2445 | { 2446 | "id": "89e58d24c962e4ad", 2447 | "type": "function", 2448 | "z": "058350134626a518", 2449 | "g": "c627231e5235c4bc", 2450 | "name": "Toggle1", 2451 | "func": "var states = flow.get(\"states\");\nstates.switches[0]=!states.switches[0];\nflow.set(\"states\",states);\nreturn msg;", 2452 | "outputs": 1, 2453 | "timeout": 0, 2454 | "noerr": 0, 2455 | "initialize": "", 2456 | "finalize": "", 2457 | "libs": [], 2458 | "x": 520, 2459 | "y": 2120, 2460 | "wires": [ 2461 | [ 2462 | "a8fc3062a59a5951" 2463 | ] 2464 | ] 2465 | }, 2466 | { 2467 | "id": "a8fc3062a59a5951", 2468 | "type": "link out", 2469 | "z": "058350134626a518", 2470 | "g": "c627231e5235c4bc", 2471 | "name": "UpdateDisplay", 2472 | "mode": "link", 2473 | "links": [ 2474 | "d977694e13ebba0d" 2475 | ], 2476 | "x": 720, 2477 | "y": 2180, 2478 | "wires": [], 2479 | "l": true 2480 | }, 2481 | { 2482 | "id": "2f96ccb1ad44314d", 2483 | "type": "function", 2484 | "z": "058350134626a518", 2485 | "g": "c627231e5235c4bc", 2486 | "name": "Toggle2", 2487 | "func": "var states = flow.get(\"states\");\nstates.switches[1]=!states.switches[1];\nflow.set(\"states\",states);\nreturn msg;", 2488 | "outputs": 1, 2489 | "timeout": 0, 2490 | "noerr": 0, 2491 | "initialize": "", 2492 | "finalize": "", 2493 | "libs": [], 2494 | "x": 520, 2495 | "y": 2160, 2496 | "wires": [ 2497 | [ 2498 | "a8fc3062a59a5951" 2499 | ] 2500 | ] 2501 | }, 2502 | { 2503 | "id": "0cbe50632c7e2a2f", 2504 | "type": "function", 2505 | "z": "058350134626a518", 2506 | "g": "c627231e5235c4bc", 2507 | "name": "Toggle3", 2508 | "func": "var states = flow.get(\"states\");\nstates.switches[2]=!states.switches[2];\nflow.set(\"states\",states);\nreturn msg;", 2509 | "outputs": 1, 2510 | "timeout": 0, 2511 | "noerr": 0, 2512 | "initialize": "", 2513 | "finalize": "", 2514 | "libs": [], 2515 | "x": 520, 2516 | "y": 2200, 2517 | "wires": [ 2518 | [ 2519 | "a8fc3062a59a5951" 2520 | ] 2521 | ] 2522 | }, 2523 | { 2524 | "id": "3e4ca50560eb0c93", 2525 | "type": "function", 2526 | "z": "058350134626a518", 2527 | "g": "c627231e5235c4bc", 2528 | "name": "Toggle4", 2529 | "func": "var states = flow.get(\"states\");\nstates.switches[3]=!states.switches[3];\nflow.set(\"states\",states);\nreturn msg;", 2530 | "outputs": 1, 2531 | "timeout": 0, 2532 | "noerr": 0, 2533 | "initialize": "", 2534 | "finalize": "", 2535 | "libs": [], 2536 | "x": 520, 2537 | "y": 2240, 2538 | "wires": [ 2539 | [ 2540 | "a8fc3062a59a5951" 2541 | ] 2542 | ] 2543 | }, 2544 | { 2545 | "id": "337e7bdcb9b882c4", 2546 | "type": "link in", 2547 | "z": "058350134626a518", 2548 | "g": "5fefab6ccf77a5a0", 2549 | "name": "onUpdateDisplay", 2550 | "links": [ 2551 | "c03591b3c7772991" 2552 | ], 2553 | "x": 120, 2554 | "y": 2340, 2555 | "wires": [ 2556 | [ 2557 | "3cec5f5b727a1058" 2558 | ] 2559 | ], 2560 | "l": true 2561 | }, 2562 | { 2563 | "id": "8274af2dc46e9930", 2564 | "type": "function", 2565 | "z": "058350134626a518", 2566 | "g": "5fefab6ccf77a5a0", 2567 | "name": "Compose", 2568 | "func": "var commands=[];\nvar states = flow.get(\"states\");\n\ncommands.push(\"page 5\");\ncommands.push(\"PH.pic=15\",'TH.txt=\"Lights\"');\n\ncommands.push(\"P1.pic=\"+(states.lights[0]?\"24\":\"23\"),'T1.txt=\"Light1\"');\ncommands.push(\"P2.pic=\"+(states.lights[1]?\"30\":\"29\"),'T2.txt=\"Light2\"');\ncommands.push(\"P3.pic=\"+(states.lights[2]?\"32\":\"31\"),'T3.txt=\"Light3\"');\ncommands.push(\"P4.pic=\"+(states.lights[3]?\"36\":\"35\"),'T4.txt=\"Light4\"');\n\nreturn{payload:commands.join(\";\")};", 2569 | "outputs": 1, 2570 | "timeout": 0, 2571 | "noerr": 0, 2572 | "initialize": "", 2573 | "finalize": "", 2574 | "libs": [], 2575 | "x": 480, 2576 | "y": 2340, 2577 | "wires": [ 2578 | [ 2579 | "fed18dbc9e53f606" 2580 | ] 2581 | ] 2582 | }, 2583 | { 2584 | "id": "fed18dbc9e53f606", 2585 | "type": "link out", 2586 | "z": "058350134626a518", 2587 | "g": "5fefab6ccf77a5a0", 2588 | "name": "SendCommand", 2589 | "mode": "link", 2590 | "links": [ 2591 | "72acd53358212cd2" 2592 | ], 2593 | "x": 720, 2594 | "y": 2340, 2595 | "wires": [], 2596 | "l": true 2597 | }, 2598 | { 2599 | "id": "11759b3b938bd10f", 2600 | "type": "link in", 2601 | "z": "058350134626a518", 2602 | "g": "5fefab6ccf77a5a0", 2603 | "name": "onClick", 2604 | "links": [ 2605 | "b0d6ab1724a5fb8b" 2606 | ], 2607 | "x": 90, 2608 | "y": 2480, 2609 | "wires": [ 2610 | [ 2611 | "9c1b91c840318f02" 2612 | ] 2613 | ], 2614 | "l": true 2615 | }, 2616 | { 2617 | "id": "71350883ba0a6e95", 2618 | "type": "switch", 2619 | "z": "058350134626a518", 2620 | "g": "5fefab6ccf77a5a0", 2621 | "name": "Event", 2622 | "property": "payload", 2623 | "propertyType": "msg", 2624 | "rules": [ 2625 | { 2626 | "t": "eq", 2627 | "v": "1_click", 2628 | "vt": "str" 2629 | }, 2630 | { 2631 | "t": "eq", 2632 | "v": "2_click", 2633 | "vt": "str" 2634 | }, 2635 | { 2636 | "t": "eq", 2637 | "v": "3_click", 2638 | "vt": "str" 2639 | }, 2640 | { 2641 | "t": "eq", 2642 | "v": "4_click", 2643 | "vt": "str" 2644 | } 2645 | ], 2646 | "checkall": "false", 2647 | "repair": false, 2648 | "outputs": 4, 2649 | "x": 350, 2650 | "y": 2480, 2651 | "wires": [ 2652 | [ 2653 | "2ec03856cd2710e4" 2654 | ], 2655 | [ 2656 | "cc13a1331567b091" 2657 | ], 2658 | [ 2659 | "d9adc6ad1f8fa290" 2660 | ], 2661 | [ 2662 | "1dd09baa2d47c4cc" 2663 | ] 2664 | ] 2665 | }, 2666 | { 2667 | "id": "3cec5f5b727a1058", 2668 | "type": "switch", 2669 | "z": "058350134626a518", 2670 | "g": "5fefab6ccf77a5a0", 2671 | "name": "Lights?", 2672 | "property": "display_mode", 2673 | "propertyType": "flow", 2674 | "rules": [ 2675 | { 2676 | "t": "eq", 2677 | "v": "lights", 2678 | "vt": "str" 2679 | } 2680 | ], 2681 | "checkall": "true", 2682 | "repair": false, 2683 | "outputs": 1, 2684 | "x": 320, 2685 | "y": 2340, 2686 | "wires": [ 2687 | [ 2688 | "8274af2dc46e9930" 2689 | ] 2690 | ] 2691 | }, 2692 | { 2693 | "id": "9c1b91c840318f02", 2694 | "type": "switch", 2695 | "z": "058350134626a518", 2696 | "g": "5fefab6ccf77a5a0", 2697 | "name": "Lights?", 2698 | "property": "display_mode", 2699 | "propertyType": "flow", 2700 | "rules": [ 2701 | { 2702 | "t": "eq", 2703 | "v": "lights", 2704 | "vt": "str" 2705 | } 2706 | ], 2707 | "checkall": "true", 2708 | "repair": false, 2709 | "outputs": 1, 2710 | "x": 220, 2711 | "y": 2480, 2712 | "wires": [ 2713 | [ 2714 | "71350883ba0a6e95" 2715 | ] 2716 | ] 2717 | }, 2718 | { 2719 | "id": "2ec03856cd2710e4", 2720 | "type": "function", 2721 | "z": "058350134626a518", 2722 | "g": "5fefab6ccf77a5a0", 2723 | "name": "Toggle1", 2724 | "func": "var states = flow.get(\"states\");\nstates.lights[0]=!states.lights[0];\nflow.set(\"states\",states);\nreturn msg;", 2725 | "outputs": 1, 2726 | "timeout": 0, 2727 | "noerr": 0, 2728 | "initialize": "", 2729 | "finalize": "", 2730 | "libs": [], 2731 | "x": 520, 2732 | "y": 2420, 2733 | "wires": [ 2734 | [ 2735 | "562cbd938e7dd950" 2736 | ] 2737 | ] 2738 | }, 2739 | { 2740 | "id": "562cbd938e7dd950", 2741 | "type": "link out", 2742 | "z": "058350134626a518", 2743 | "g": "5fefab6ccf77a5a0", 2744 | "name": "UpdateDisplay", 2745 | "mode": "link", 2746 | "links": [ 2747 | "d977694e13ebba0d" 2748 | ], 2749 | "x": 720, 2750 | "y": 2480, 2751 | "wires": [], 2752 | "l": true 2753 | }, 2754 | { 2755 | "id": "cc13a1331567b091", 2756 | "type": "function", 2757 | "z": "058350134626a518", 2758 | "g": "5fefab6ccf77a5a0", 2759 | "name": "Toggle2", 2760 | "func": "var states = flow.get(\"states\");\nstates.lights[1]=!states.lights[1];\nflow.set(\"states\",states);\nreturn msg;", 2761 | "outputs": 1, 2762 | "timeout": 0, 2763 | "noerr": 0, 2764 | "initialize": "", 2765 | "finalize": "", 2766 | "libs": [], 2767 | "x": 520, 2768 | "y": 2460, 2769 | "wires": [ 2770 | [ 2771 | "562cbd938e7dd950" 2772 | ] 2773 | ] 2774 | }, 2775 | { 2776 | "id": "d9adc6ad1f8fa290", 2777 | "type": "function", 2778 | "z": "058350134626a518", 2779 | "g": "5fefab6ccf77a5a0", 2780 | "name": "Toggle3", 2781 | "func": "var states = flow.get(\"states\");\nstates.lights[2]=!states.lights[2];\nflow.set(\"states\",states);\nreturn msg;", 2782 | "outputs": 1, 2783 | "timeout": 0, 2784 | "noerr": 0, 2785 | "initialize": "", 2786 | "finalize": "", 2787 | "libs": [], 2788 | "x": 520, 2789 | "y": 2500, 2790 | "wires": [ 2791 | [ 2792 | "562cbd938e7dd950" 2793 | ] 2794 | ] 2795 | }, 2796 | { 2797 | "id": "1dd09baa2d47c4cc", 2798 | "type": "function", 2799 | "z": "058350134626a518", 2800 | "g": "5fefab6ccf77a5a0", 2801 | "name": "Toggle4", 2802 | "func": "var states = flow.get(\"states\");\nstates.lights[3]=!states.lights[3];\nflow.set(\"states\",states);\nreturn msg;", 2803 | "outputs": 1, 2804 | "timeout": 0, 2805 | "noerr": 0, 2806 | "initialize": "", 2807 | "finalize": "", 2808 | "libs": [], 2809 | "x": 520, 2810 | "y": 2540, 2811 | "wires": [ 2812 | [ 2813 | "562cbd938e7dd950" 2814 | ] 2815 | ] 2816 | }, 2817 | { 2818 | "id": "b36bf48cc39db361", 2819 | "type": "link in", 2820 | "z": "058350134626a518", 2821 | "g": "e1b59c07fcef23be", 2822 | "name": "onUpdateDisplay", 2823 | "links": [ 2824 | "c03591b3c7772991" 2825 | ], 2826 | "x": 120, 2827 | "y": 2640, 2828 | "wires": [ 2829 | [ 2830 | "defc2aa4a3a6dffd" 2831 | ] 2832 | ], 2833 | "l": true 2834 | }, 2835 | { 2836 | "id": "7fea696da82ad1b0", 2837 | "type": "function", 2838 | "z": "058350134626a518", 2839 | "g": "e1b59c07fcef23be", 2840 | "name": "Compose", 2841 | "func": "var commands=[];\nvar states = flow.get(\"states\");\n\ncommands.push(\"page 0\");\ncommands.push(\"PH.pic=16\",'TH.txt=\"Climate\"');\n\ncommands.push(\"P1.pic=\"+(states.climate?\"53\":\"52\"),'T1.txt=\"Fan\"');\n\nreturn{payload:commands.join(\";\")};", 2842 | "outputs": 1, 2843 | "timeout": 0, 2844 | "noerr": 0, 2845 | "initialize": "", 2846 | "finalize": "", 2847 | "libs": [], 2848 | "x": 480, 2849 | "y": 2640, 2850 | "wires": [ 2851 | [ 2852 | "657594311f37ab99" 2853 | ] 2854 | ] 2855 | }, 2856 | { 2857 | "id": "657594311f37ab99", 2858 | "type": "link out", 2859 | "z": "058350134626a518", 2860 | "g": "e1b59c07fcef23be", 2861 | "name": "SendCommand", 2862 | "mode": "link", 2863 | "links": [ 2864 | "72acd53358212cd2" 2865 | ], 2866 | "x": 720, 2867 | "y": 2640, 2868 | "wires": [], 2869 | "l": true 2870 | }, 2871 | { 2872 | "id": "4cf8f1f654412971", 2873 | "type": "link in", 2874 | "z": "058350134626a518", 2875 | "g": "e1b59c07fcef23be", 2876 | "name": "onClick", 2877 | "links": [ 2878 | "b0d6ab1724a5fb8b" 2879 | ], 2880 | "x": 90, 2881 | "y": 2700, 2882 | "wires": [ 2883 | [ 2884 | "5d32ee45a61a68d5" 2885 | ] 2886 | ], 2887 | "l": true 2888 | }, 2889 | { 2890 | "id": "86944a0fbc7aa57c", 2891 | "type": "switch", 2892 | "z": "058350134626a518", 2893 | "g": "e1b59c07fcef23be", 2894 | "name": "Event", 2895 | "property": "payload", 2896 | "propertyType": "msg", 2897 | "rules": [ 2898 | { 2899 | "t": "eq", 2900 | "v": "1_click", 2901 | "vt": "str" 2902 | } 2903 | ], 2904 | "checkall": "false", 2905 | "repair": false, 2906 | "outputs": 1, 2907 | "x": 350, 2908 | "y": 2700, 2909 | "wires": [ 2910 | [ 2911 | "2d126c307885bf21" 2912 | ] 2913 | ] 2914 | }, 2915 | { 2916 | "id": "defc2aa4a3a6dffd", 2917 | "type": "switch", 2918 | "z": "058350134626a518", 2919 | "g": "e1b59c07fcef23be", 2920 | "name": "Climate?", 2921 | "property": "display_mode", 2922 | "propertyType": "flow", 2923 | "rules": [ 2924 | { 2925 | "t": "eq", 2926 | "v": "climate", 2927 | "vt": "str" 2928 | } 2929 | ], 2930 | "checkall": "true", 2931 | "repair": false, 2932 | "outputs": 1, 2933 | "x": 320, 2934 | "y": 2640, 2935 | "wires": [ 2936 | [ 2937 | "7fea696da82ad1b0" 2938 | ] 2939 | ] 2940 | }, 2941 | { 2942 | "id": "5d32ee45a61a68d5", 2943 | "type": "switch", 2944 | "z": "058350134626a518", 2945 | "g": "e1b59c07fcef23be", 2946 | "name": "Climate?", 2947 | "property": "display_mode", 2948 | "propertyType": "flow", 2949 | "rules": [ 2950 | { 2951 | "t": "eq", 2952 | "v": "climate", 2953 | "vt": "str" 2954 | } 2955 | ], 2956 | "checkall": "true", 2957 | "repair": false, 2958 | "outputs": 1, 2959 | "x": 220, 2960 | "y": 2700, 2961 | "wires": [ 2962 | [ 2963 | "86944a0fbc7aa57c" 2964 | ] 2965 | ] 2966 | }, 2967 | { 2968 | "id": "2d126c307885bf21", 2969 | "type": "function", 2970 | "z": "058350134626a518", 2971 | "g": "e1b59c07fcef23be", 2972 | "name": "Toggle", 2973 | "func": "var states = flow.get(\"states\");\nstates.climate=!states.climate;\nflow.set(\"states\",states);\nreturn msg;", 2974 | "outputs": 1, 2975 | "timeout": 0, 2976 | "noerr": 0, 2977 | "initialize": "", 2978 | "finalize": "", 2979 | "libs": [], 2980 | "x": 490, 2981 | "y": 2700, 2982 | "wires": [ 2983 | [ 2984 | "ae28e12ce6a6f751" 2985 | ] 2986 | ] 2987 | }, 2988 | { 2989 | "id": "ae28e12ce6a6f751", 2990 | "type": "link out", 2991 | "z": "058350134626a518", 2992 | "g": "e1b59c07fcef23be", 2993 | "name": "UpdateDisplay", 2994 | "mode": "link", 2995 | "links": [ 2996 | "d977694e13ebba0d" 2997 | ], 2998 | "x": 720, 2999 | "y": 2700, 3000 | "wires": [], 3001 | "l": true 3002 | }, 3003 | { 3004 | "id": "4a87a3a49286eb46", 3005 | "type": "link in", 3006 | "z": "058350134626a518", 3007 | "g": "3d06d3a0a7110909", 3008 | "name": "onUpdateDisplay", 3009 | "links": [ 3010 | "c03591b3c7772991" 3011 | ], 3012 | "x": 120, 3013 | "y": 2800, 3014 | "wires": [ 3015 | [ 3016 | "d1dd6af4fddd3a6f" 3017 | ] 3018 | ], 3019 | "l": true 3020 | }, 3021 | { 3022 | "id": "ac47b00a7650a750", 3023 | "type": "function", 3024 | "z": "058350134626a518", 3025 | "g": "3d06d3a0a7110909", 3026 | "name": "Compose", 3027 | "func": "var commands=[];\nvar states = flow.get(\"states\");\n\ncommands.push(\"page 0\");\ncommands.push(\"PH.pic=68\",'TH.txt=\"Shutters\"');\n\ncommands.push(\"P1.pic=\"+(states.shutters?\"46\":\"45\"));\ncommands.push(\"T1.txt=\"+(states.shutters?'\"Close\"':'\"Open\"'));\n\nreturn{payload:commands.join(\";\")};", 3028 | "outputs": 1, 3029 | "timeout": 0, 3030 | "noerr": 0, 3031 | "initialize": "", 3032 | "finalize": "", 3033 | "libs": [], 3034 | "x": 480, 3035 | "y": 2800, 3036 | "wires": [ 3037 | [ 3038 | "fc323641543f31b7" 3039 | ] 3040 | ] 3041 | }, 3042 | { 3043 | "id": "fc323641543f31b7", 3044 | "type": "link out", 3045 | "z": "058350134626a518", 3046 | "g": "3d06d3a0a7110909", 3047 | "name": "SendCommand", 3048 | "mode": "link", 3049 | "links": [ 3050 | "72acd53358212cd2" 3051 | ], 3052 | "x": 720, 3053 | "y": 2800, 3054 | "wires": [], 3055 | "l": true 3056 | }, 3057 | { 3058 | "id": "bd9a4980ef027af7", 3059 | "type": "link in", 3060 | "z": "058350134626a518", 3061 | "g": "3d06d3a0a7110909", 3062 | "name": "onClick", 3063 | "links": [ 3064 | "b0d6ab1724a5fb8b" 3065 | ], 3066 | "x": 90, 3067 | "y": 2860, 3068 | "wires": [ 3069 | [ 3070 | "8422e547d8be51cc" 3071 | ] 3072 | ], 3073 | "l": true 3074 | }, 3075 | { 3076 | "id": "bbb8bc4fcfce4373", 3077 | "type": "switch", 3078 | "z": "058350134626a518", 3079 | "g": "3d06d3a0a7110909", 3080 | "name": "Event", 3081 | "property": "payload", 3082 | "propertyType": "msg", 3083 | "rules": [ 3084 | { 3085 | "t": "eq", 3086 | "v": "1_click", 3087 | "vt": "str" 3088 | } 3089 | ], 3090 | "checkall": "false", 3091 | "repair": false, 3092 | "outputs": 1, 3093 | "x": 350, 3094 | "y": 2860, 3095 | "wires": [ 3096 | [ 3097 | "5bf48c4333e9641b" 3098 | ] 3099 | ] 3100 | }, 3101 | { 3102 | "id": "d1dd6af4fddd3a6f", 3103 | "type": "switch", 3104 | "z": "058350134626a518", 3105 | "g": "3d06d3a0a7110909", 3106 | "name": "Shutters?", 3107 | "property": "display_mode", 3108 | "propertyType": "flow", 3109 | "rules": [ 3110 | { 3111 | "t": "eq", 3112 | "v": "shutters", 3113 | "vt": "str" 3114 | } 3115 | ], 3116 | "checkall": "true", 3117 | "repair": false, 3118 | "outputs": 1, 3119 | "x": 320, 3120 | "y": 2800, 3121 | "wires": [ 3122 | [ 3123 | "ac47b00a7650a750" 3124 | ] 3125 | ] 3126 | }, 3127 | { 3128 | "id": "8422e547d8be51cc", 3129 | "type": "switch", 3130 | "z": "058350134626a518", 3131 | "g": "3d06d3a0a7110909", 3132 | "name": "Shutters?", 3133 | "property": "display_mode", 3134 | "propertyType": "flow", 3135 | "rules": [ 3136 | { 3137 | "t": "eq", 3138 | "v": "shutters", 3139 | "vt": "str" 3140 | } 3141 | ], 3142 | "checkall": "true", 3143 | "repair": false, 3144 | "outputs": 1, 3145 | "x": 220, 3146 | "y": 2860, 3147 | "wires": [ 3148 | [ 3149 | "bbb8bc4fcfce4373" 3150 | ] 3151 | ] 3152 | }, 3153 | { 3154 | "id": "5bf48c4333e9641b", 3155 | "type": "function", 3156 | "z": "058350134626a518", 3157 | "g": "3d06d3a0a7110909", 3158 | "name": "Toggle", 3159 | "func": "var states = flow.get(\"states\");\nstates.shutters=!states.shutters;\nflow.set(\"states\",states);\nreturn msg;", 3160 | "outputs": 1, 3161 | "timeout": 0, 3162 | "noerr": 0, 3163 | "initialize": "", 3164 | "finalize": "", 3165 | "libs": [], 3166 | "x": 490, 3167 | "y": 2860, 3168 | "wires": [ 3169 | [ 3170 | "bcce3c819ba81549" 3171 | ] 3172 | ] 3173 | }, 3174 | { 3175 | "id": "bcce3c819ba81549", 3176 | "type": "link out", 3177 | "z": "058350134626a518", 3178 | "g": "3d06d3a0a7110909", 3179 | "name": "UpdateDisplay", 3180 | "mode": "link", 3181 | "links": [ 3182 | "d977694e13ebba0d" 3183 | ], 3184 | "x": 720, 3185 | "y": 2860, 3186 | "wires": [], 3187 | "l": true 3188 | }, 3189 | { 3190 | "id": "c8c345b8e366ede5", 3191 | "type": "mqtt-broker", 3192 | "name": "mosquitto-local", 3193 | "broker": "172.17.0.1", 3194 | "port": "1883", 3195 | "clientid": "node-red", 3196 | "autoConnect": true, 3197 | "usetls": false, 3198 | "protocolVersion": "4", 3199 | "keepalive": "60", 3200 | "cleansession": true, 3201 | "autoUnsubscribe": true, 3202 | "birthTopic": "", 3203 | "birthQos": "0", 3204 | "birthRetain": "false", 3205 | "birthPayload": "", 3206 | "birthMsg": {}, 3207 | "closeTopic": "", 3208 | "closeQos": "0", 3209 | "closeRetain": "false", 3210 | "closePayload": "", 3211 | "closeMsg": {}, 3212 | "willTopic": "", 3213 | "willQos": "0", 3214 | "willRetain": "false", 3215 | "willPayload": "", 3216 | "willMsg": {}, 3217 | "userProps": "", 3218 | "sessionExpiry": "" 3219 | } 3220 | ] --------------------------------------------------------------------------------