# OXRS web app setup

**URL:** <https://discourse.nodered.org/t/oxrs-web-app-setup/81634>\
**Category:** General\
**Created:** [28 September 2023 12:10 UTC](https://discourse.nodered.org/t/oxrs-web-app-setup/81634 "2023-09-28T12:10:04Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Sean-McG](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/sean-mcg/32/54677_2.png) [@Sean-McG](https://discourse.nodered.org/u/Sean-McG)\
**Post date:** [28 September 2023 12:10 UTC](https://discourse.nodered.org/t/oxrs-web-app-setup/81634/1 "2023-09-28T12:10:04Z")

</div>

@craigcurtin I saw your post on discord, but thought it would be better to respond here. I'm case there are any others interested.

I have the web demo app setup for testing in NR. [OXRS-IO-TouchPanel-WEB-APP](https://github.com/OXRS-IO/OXRS-IO-TouchPanel-WEB-APP)

Here is a small flow to serve the files from NR. Just change the file nodes path to match where you are hosting the files.

```auto
[{"id":"c7e341a0.381cc","type":"http in","z":"2df9d4297887de0c","name":"","url":"index.html","method":"get","upload":false,"swaggerDoc":"","x":680,"y":1785,"wires":[["2fb1c354.d04e3c"]]},{"id":"2fb1c354.d04e3c","type":"file in","z":"2df9d4297887de0c","name":"","filename":"/home/pi/.node-red/public/OSRX/index.html","filenameType":"str","format":"utf8","encoding":"none","allProps":false,"x":1030,"y":1785,"wires":[["88974243.7768c"]]},{"id":"88974243.7768c","type":"http response","z":"2df9d4297887de0c","name":"","statusCode":"","headers":{"content-type":"text/html; charset=utf-8"},"x":1365,"y":1785,"wires":[]},{"id":"d630c4ad8a88dcf6","type":"http in","z":"2df9d4297887de0c","name":"","url":"/assets/index.js","method":"get","upload":false,"swaggerDoc":"","x":690,"y":1830,"wires":[["bbeb8a46061e4591"]]},{"id":"bbeb8a46061e4591","type":"file in","z":"2df9d4297887de0c","name":"","filename":"/home/pi/.node-red/public/OSRX/assets/index.js","filenameType":"str","format":"utf8","encoding":"utf8","allProps":false,"x":1040,"y":1830,"wires":[["210ff19b92f15a5a"]]},{"id":"210ff19b92f15a5a","type":"http response","z":"2df9d4297887de0c","name":"","statusCode":"","headers":{"content-type":"application/javascript"},"x":1365,"y":1830,"wires":[]},{"id":"113fed623972d915","type":"http in","z":"2df9d4297887de0c","name":"","url":"/assets/TemplateView.css","method":"get","upload":false,"swaggerDoc":"","x":720,"y":1875,"wires":[["5e934e3617bed781"]]},{"id":"5e934e3617bed781","type":"file in","z":"2df9d4297887de0c","name":"","filename":"/home/pi/.node-red/public/OSRX/assets/TemplateView.css","filenameType":"str","format":"utf8","encoding":"none","allProps":false,"x":1070,"y":1875,"wires":[["7bbdd1801bf9a7cd"]]},{"id":"7bbdd1801bf9a7cd","type":"http response","z":"2df9d4297887de0c","name":"","statusCode":"","headers":{"content-type":"text/css"},"x":1365,"y":1875,"wires":[]},{"id":"170784114f0527c4","type":"http in","z":"2df9d4297887de0c","name":"","url":"/assets/TemplateView.js","method":"get","upload":false,"swaggerDoc":"","x":720,"y":1920,"wires":[["beb7d42dc4a65ce5"]]},{"id":"beb7d42dc4a65ce5","type":"file in","z":"2df9d4297887de0c","name":"","filename":"/home/pi/.node-red/public/OSRX/assets/TemplateView.js","filenameType":"str","format":"utf8","encoding":"none","allProps":false,"x":1070,"y":1920,"wires":[["fd2a6e0c7e75866f"]]},{"id":"fd2a6e0c7e75866f","type":"http response","z":"2df9d4297887de0c","name":"","statusCode":"","headers":{"content-type":"application/javascript"},"x":1365,"y":1920,"wires":[]}]

```

You need to enable Websocket support on the MQTT broker, I just added this section to mosquitto.conf

**listener 9001**  
**protocol websockets**  
**socket\_domain ipv4**

Not sure about the last line but it didn't work for me without it.

Once you have that setup navigate to NRserverIP:1880/index.html and click on settings. If you fill in the blanks to match your setup, but keep the topics, then it should work with my demo flows, which I will post in a short while 😉

 ![image](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/7/5/759977303a9c873324927692e2590e3f0230c40c.png)

There is also what looks like a selfcontained windows app here [OXRS-IO-TouchPanel-WIN-APP](https://github.com/OXRS-IO/OXRS-IO-TouchPanel-ESP32-FW/tree/main/OXRS-IO-TouchPanel-WIN-APP) but I haven't tried that.

---

<div class="post-metadata">

**Author:** ![Sean-McG](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/sean-mcg/32/54677_2.png) [@Sean-McG](https://discourse.nodered.org/u/Sean-McG)\
**Post date:** [28 September 2023 16:40 UTC](https://discourse.nodered.org/t/oxrs-web-app-setup/81634/2 "2023-09-28T16:40:07Z")

</div>

Basic flow to provide a demo "playground" -

```auto
[{"id":"568511c8093b81a3","type":"inject","z":"8d97cec16eabefaf","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"OXRS/conf/web","payload":"{\"screens\":[{\"screen\":1,\"label\":\"Demo\",\"tiles\":[{\"tile\":1,\"style\":\"colorPickerRgb\",\"icon\":\"_bulb\",\"label\":\"Office light\"},{\"tile\":2,\"style\":\"indicator\",\"label\":\"Temp / Hum\"}]}]}","payloadType":"json","x":380,"y":570,"wires":[["83dc0496a2adf9e7"]]},{"id":"db5727efc6b6174b","type":"mqtt out","z":"8d97cec16eabefaf","name":"","topic":"","qos":"","retain":"false","respTopic":"","contentType":"","userProps":"","correl":"","expiry":"","broker":"","x":1600,"y":555,"wires":[]},{"id":"3a95bb36457a77e1","type":"mqtt in","z":"8d97cec16eabefaf","name":"","topic":"oxrs/stat/oxrs1","qos":"2","datatype":"auto-detect","broker":"","nl":false,"rap":true,"rh":0,"inputs":0,"x":185,"y":375,"wires":[["645b7477715d7dec","3efd94a1d5975a40"]]},{"id":"1149fbc9159e0606","type":"function","z":"8d97cec16eabefaf","name":"Update temp","func":"let environment = global.get(\"environment\")\n\nmsg.topic = \"oxrs/cmnd/oxrs1\" \nmsg.payload =\n{\n \"tiles\": [\n {\n \"screen\": 1,\n \"tile\": 6,\n \"number\": {\n \"value\": environment.lounge.temperature.toString(),\n \"units\": \"°C\",\n \"subValue\": environment.lounge.humidity.toString(),\n \"subUnits\": \"%\"\n },\n \"subLabel\": \"Temp / Hum\"\n }\n]\n}\n\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":790,"y":660,"wires":[["ae884bd800a07565"]]},{"id":"ee700e286c7f9dc6","type":"inject","z":"8d97cec16eabefaf","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"60","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":395,"y":660,"wires":[["1149fbc9159e0606"]]},{"id":"83dc0496a2adf9e7","type":"function","z":"8d97cec16eabefaf","name":"Setup Screen 1","func":"msg.topic = \"oxrs/conf/oxrs1\"\nmsg.payload =\n{\n \"screens\": [\n {\n \"screen\": 1,\n \"label\": \"Kitchen\",\n \"backgroundColorRgb\": { \"r\": 50, \"g\": 50, \"b\": 100 },\n \"tiles\": [\n {\n \"tile\": 1,\n \"style\": \"colorPickerRgbCct\",\n \"icon\": \"ledstrip\",\n \"label\": \"Kitchen Cupboards\"\n },\n {\n \"tile\": 2,\n \"style\": \"button\",\n \"icon\": \"_onoff\",\n \"label\": \"Main Light\"\n }\n ,\n {\n \"tile\": 3,\n \"style\": \"button\",\n \"icon\": \"_bulb\",\n \"label\": \"Down Light\"\n },\n {\n \"tile\": 4,\n \"style\": \"button\",\n \"icon\": \"dishwasher\",\n \"label\": \"Dish Washer\"\n },\n {\n \"tile\": 5,\n \"style\": \"button\",\n \"icon\": \"washer\",\n \"label\": \"Washer Dryer\"\n },\n {\n \"tile\": 6,\n \"style\": \"indicator\",\n \"label\": \"Lounge\"\n },\n {\n \"tile\": 7,\n \"style\": \"dropDown\",\n \"icon\": \"_music\",\n \"label\": \"Select Preset\"\n }\n]\n }\n ]\n}\n\n\nreturn msg;\n\n","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":800,"y":570,"wires":[["db5727efc6b6174b"]]},{"id":"2f56c5f2b0ddb989","type":"comment","z":"8d97cec16eabefaf","name":"icons","info":"_3dprint\n_blind\n_bulb\n_ceilingfan\n_coffee\n_door\n_feed\n_locked\n_music\n_onoff\n_pause\n_play\n_remote\n_slider\n_speaker\n_thermometer\n_thermostat\n_unlocked\n_window","x":790,"y":480,"wires":[]},{"id":"c7cb9c86f32cfbdd","type":"function","z":"8d97cec16eabefaf","name":"Custom Icons","func":"\nmsg.topic = \"oxrs/cmnd/oxrs1\"\nmsg.payload =\n\n{\n \"addIcon\": {\n \"name\": \"dishwasher\",\n \"imageBase64\": \"iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAACXBIWXMAAAsTAAALEwEAmpwYAAADCUlEQVR4nO2aS4wMURSGv2YmRktIhBCbjk7ESEhk2o6NRzw3Hm2FkKDFkkzCxJJg4hHbXre9RywEC4LdWHiNMBvJCEMQMgsRj5KbnE5OrqrqqtJl6k7Xn5xF3XOr+nx9bt2+99yGXLk6RsuAmoN2EOhNAjwKeI7aWBJgz3FLDGyGiSsysebAWcnwFGAfcAHY4OPfKL690ldrOTAIHAGKrmT4kvXO7VK+PZbvogX7XfnuAgUXgD9bULeU77bl+6R8Z30mqIUuAL+wgm4o32XLN6x8Ry2fyfYsF4DXqCy/UlkyKgMjKrurla8ow7gJe0j5Mg1sNB1YBEzlb3WJrwd/lVVmnQFut9oC3MjA+jiqNdoB7DlqOXDUDHfcO1zDHeXAcZRnOCWVgAqwpEW/itgc14d0XT5nqA3x5MBZzrDZSAwAc1vEcw/Y7lMUcC7DnthXoBoST9MeAgsmA7AH/AQ2B8Sj7TkwIy3gopopk1opBPgpcBz4IddvgGk+8ZyzKiKn0wKutGFBX48wS+9X/asB8XQDD+T6g3qfnQQuAB+lbTAknqpqK6cNvDvmUB6OAWz0yKe/Hc8K1daXNnAl5rOGYgL79Y8STw4cR/Y32vcPGfYbopnPcFm1rYv5rNdy3xmXgHuAb9Jmfi+jah7wS+4zh9XOABvdlLaX8lsYRSfknt8tFh6ZBN6i2k9GeMZSYFz6Xwnok2ngAnBDZexUSKZXAW+l77icIjgHjFQcnij/iGzr1gMr5Tz3mnwhzfOfbQQrswsPrdnA1ZAlZNPMH2PWEq6wpaU5Gg2KZ2faS0s/mZP76+o99WRGfgz0AzNpLRv4gHrWjoB4umU/bK7fp7V5CFOX6n+YeNLbwwG1PRwN2B6eB+6oazOPTEgBwIvZv1UBYFPA87U9S7MA8L+AvwRMcjbsfWC+1SdV4JK1BdRDTLfHKeIdC6k76yLe1oko4tUjzNLeZKpL1zsNuBSx2tFKHXfU0k7lwHGUZ7hThrTnqMXWWAaCTmrvkgD3Sg2q5piZmBcnAc6VC/f0BxTZ3v5vasynAAAAAElFTkSuQmCC\"\n }\n}\n\nnode.send(msg);\n\nmsg.payload =\n\n{\n \"addIcon\": {\n \"name\": \"ledstrip\",\n \"imageBase64\": \"iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAACXBIWXMAAAsTAAALEwEAmpwYAAAC/0lEQVR4nO2ay2oUQRSGv5mFI4oo7r0sTIy3jTdInHjZzGhINF5fQRAFg8+QRQIGAoILV8l7CAE3OqB5iQER8TojcRFpKTgNh6GnZ6q7YleN/UNDU91Vfb45NadPnWooVaqUA10Frlj2OQPMEKCOAn/kODJknyawBUTAEoHpnBgeyfkgNRRsfDxnRIGbCvYbsKn6Lo0acEPBfgcuAvuBt6F5+rgy2JwP49nz6toBoOWbpyvAbWCsz/XHctjAXgZWZGzvoOfFkI9AzaJfGmxX2l/6CD2lDJlzCBv5Cl0F2mLEuiPYTg+cd9CrYsAPYLdlNDaqAz+l/RdwDdgDvFZwr+TH9SJ6TykDjuX07LTqsxfYKMrTFeAWMNHn+hPgkUPYwqHnBhjGDsBqaA1nXlkItM7IruNQ42KYDbQLWOR6/Oyu9De6IOOadvOc0zkZUx/cScmeioBtOmJMNeDmqMPGMoHrjgSPQbDGOK9hq8A9edWYcxsFB2v0QEW9tiQVBn4kYZFI97knn41SVjxBw8aqyXt3XVLAyCKpCA42CX7sf4HF0UIgTZf63H8W+CLtv4FZClQjVNjDUlyLj7TMybdpfMKywkJdCuQhRuNnanatyQyoDQO8bQHsC6zRQoLdn4BTrqa0T7D6/7+qyksRcBcH8hFWqyqZ4HyGVHh0onHInrWOxiHDZorGocLmisYhwsYqozEOonHTE8+m1b2dqekJbNa6d5CwWeve1p8GbXkCmzRWx/X0vqFC/QfZlUO2MeL2lmxz/Mt0cZi6d2YtK7h3Al2RDau4faMPdF7Yp8DDPtcmJIAl1b0LgZ7OCTuuxp6kAC0qA94DBwX6hWp/A+xztBDYBXyVe80SrxAtD+HplsP/7Jrc33aRSOwktKsANavGG2ZnozDorqNoXJOFQCQBCh+hVzLALkhETpJZ9dwvckoPgsYS9qQawyzkvddiQvS2ica2nw/jm6c3Lf+zQQL3etqm4BYssPa0TTQ+JMX+bTkPTjMZPg2qS3ZWqlQpcukvHk3apnhrkNEAAAAASUVORK5CYII=\"\n }\n}\n\nnode.send(msg);\n\nmsg.payload =\n\n{\n \"addIcon\": {\n \"name\": \"washer\",\n \"imageBase64\": \"iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAACXBIWXMAAAsTAAALEwEAmpwYAAADp0lEQVR4nO2bWUhVURSGv7KJJg0azLQyoqcGeyrLxhdpBCltgtAeJMKHBrLspYKihyB7quwlepAGiqIBooFKooIsgsgIooIsjLICm8zM2LAuLU73eq/nXO/dR88PGw/stddev3uftdda+1wIEKBbIgsoAkotbUViY1ywA2gB2ixvv4AKr2SXWkCko22JF8InRUkdMBx7YWx7JrYam13jgSg5iv04KrYam12jVpRUYT+qxFZjs68IzwYKgbQwfZOAVRE8si8JVynnUw9kqL71QKv0fQXy/E44I4zH3an63zn6Lvid8MgohN92NcIGhxWhN0A6/1Dq2NIz6AKEDWaJ00rlf0wEVgKZYfp8S9gtAsJuEKywC/QEpgF7gVvAc3E674F7wAmgHBiHz7d0ClACvOpAplMrGZrvCOdIhqXJfAbOyUpvlGaez0uflq0BJviF8BrgmzL+JrBYVjwSUiSPve34By2wnXAx8EfGfJQzs6NYDTSKjt/AClsJzwWaRd68t+M9zDsWeCG6fgC5thFOE68bLstxi0wVP5u/g2wiXClyLWHSNq+5caiAuM8WwllSMTRyh4g/jojun1F2TsIIl8dokFuMEt1mjs02EH7syE9TpRQzGujhYk4zZozoCGVMF2Mo0CWE8EB1DF0HHjkCCONs9jjy2khIF1lnov9QdLfJXAOSSXhqjCGj2ZLV4oR0ANILmCN9oW0breUkk3ChwxizEmWSxC8HTkvwoGWaJOysk2fdZ2RPActEh9F1wyFTmEzCxcqQ/Agy2XKkNLSzag0iYwKOcMhXsuuSSXihMiRc2UWjDzAf2CbndqU8zwN6RxmbpeYxN4VJI5yjDJlO52Gmmic3mYQHq6CjvTPSK7bKHM3thJgJO4evicwdOg/3ZY4r7cgkjHCZyLRKsBBvTFFn/QYbCKdJ7httBdziquj+BAyxJVvaopzKWuKHEqV3UxTZhBLuBzxVUZXxql6Rp6KvJ0Bf2yoe2cAHFU0VeJh3EfBFdDXGWD1JSk1rrgoXjRPbH+FiOxLMO3pAOakmibWtrlpOBl6rd8+s0C7xtpFg+naLYwqNe9lBr5/UuvQw4Li63tRXoDWSHVXLc71Dxow5Bgz1281DaOXOAt9jSPuMzBnZIW5gBeEQ+osTOwhcBu5KuyRJRIHIeIFVhBOBgLAbBCtsMYIt7Qbd7uPSkz75fHhEvD4fXhJjrdimZi7fPaFC1a1sbsbG7XSjH3lkxotsgAD4B38B4pHXKlNth+4AAAAASUVORK5CYII=\"\n }\n}\n\n\nreturn msg;\n\n// <img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAACXBIWXMAAAsTAAALEwEAmpwYAAAC/0lEQVR4nO2ay2oUQRSGv5mFI4oo7r0sTIy3jTdInHjZzGhINF5fQRAFg8+QRQIGAoILV8l7CAE3OqB5iQER8TojcRFpKTgNh6GnZ6q7YleN/UNDU91Vfb45NadPnWooVaqUA10Frlj2OQPMEKCOAn/kODJknyawBUTAEoHpnBgeyfkgNRRsfDxnRIGbCvYbsKn6Lo0acEPBfgcuAvuBt6F5+rgy2JwP49nz6toBoOWbpyvAbWCsz/XHctjAXgZWZGzvoOfFkI9AzaJfGmxX2l/6CD2lDJlzCBv5Cl0F2mLEuiPYTg+cd9CrYsAPYLdlNDaqAz+l/RdwDdgDvFZwr+TH9SJ6TykDjuX07LTqsxfYKMrTFeAWMNHn+hPgkUPYwqHnBhjGDsBqaA1nXlkItM7IruNQ42KYDbQLWOR6/Oyu9De6IOOadvOc0zkZUx/cScmeioBtOmJMNeDmqMPGMoHrjgSPQbDGOK9hq8A9edWYcxsFB2v0QEW9tiQVBn4kYZFI97knn41SVjxBw8aqyXt3XVLAyCKpCA42CX7sf4HF0UIgTZf63H8W+CLtv4FZClQjVNjDUlyLj7TMybdpfMKywkJdCuQhRuNnanatyQyoDQO8bQHsC6zRQoLdn4BTrqa0T7D6/7+qyksRcBcH8hFWqyqZ4HyGVHh0onHInrWOxiHDZorGocLmisYhwsYqozEOonHTE8+m1b2dqekJbNa6d5CwWeve1p8GbXkCmzRWx/X0vqFC/QfZlUO2MeL2lmxz/Mt0cZi6d2YtK7h3Al2RDau4faMPdF7Yp8DDPtcmJIAl1b0LgZ7OCTuuxp6kAC0qA94DBwX6hWp/A+xztBDYBXyVe80SrxAtD+HplsP/7Jrc33aRSOwktKsANavGG2ZnozDorqNoXJOFQCQBCh+hVzLALkhETpJZ9dwvckoPgsYS9qQawyzkvddiQvS2ica2nw/jm6c3Lf+zQQL3etqm4BYssPa0TTQ+JMX+bTkPTjMZPg2qS3ZWqlQpcukvHk3apnhrkNEAAAAASUVORK5CYII=\">\n\n","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":800,"y":525,"wires":[["db5727efc6b6174b"]]},{"id":"645b7477715d7dec","type":"function","z":"8d97cec16eabefaf","name":"toggle switches","func":"msg.topic = \"oxrs/cmnd/oxrs1\"\n\nmsg.payload = {\n \"tiles\": [\n {\n \"screen\": msg.payload.screen,\n \"tile\": msg.payload.tile,\n \"state\": msg.payload.state == \"off\" ? \"on\" : \"off\",\n \"subLabel\": \"\"\n }\n]\n}\n\n\nreturn msg","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":410,"y":390,"wires":[["33065d3ebc2dd869"]]},{"id":"33065d3ebc2dd869","type":"rbe","z":"8d97cec16eabefaf","name":"","func":"rbe","gap":"","start":"","inout":"out","septopics":true,"property":"payload","topi":"topic","x":560,"y":390,"wires":[["2ede5e294e05a833"]]},{"id":"19265a33dc2e8914","type":"function","z":"8d97cec16eabefaf","name":"Setup Screen 2","func":"msg.topic = \"oxrs/conf/oxrs1\"\nmsg.payload =\n{\n \"screens\": [\n {\n \"screen\": 2,\n \"label\": \"Somewhere\",\n \"tiles\": [\n {\n \"tile\": 1,\n \"style\": \"colorPickerRgb\",\n \"icon\": \"_bulb\",\n \"label\": \"Kitchen Cupboards\"\n },\n {\n \"tile\": 2,\n \"style\": \"button\",\n \"icon\": \"_bulb\",\n \"label\": \"Main Light\"\n }\n ,\n {\n \"tile\": 3,\n \"style\": \"button\",\n \"icon\": \"_bulb\",\n \"label\": \"Down Light\"\n },\n {\n \"tile\": 4,\n \"style\": \"button\",\n \"icon\": \"dishwasher\",\n \"label\": \"Dish Washer\"\n },\n {\n \"tile\": 5,\n \"style\": \"button\",\n \"icon\": \"washer\",\n \"label\": \"Washer Dryer\"\n },\n {\n \"tile\": 6,\n \"style\": \"indicator\",\n \"label\": \"Temp / Hum\"\n }\n]\n }\n ]\n}\n\n\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":800,"y":615,"wires":[["db5727efc6b6174b"]]},{"id":"99b23918b84fbb1a","type":"inject","z":"8d97cec16eabefaf","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":385,"y":615,"wires":[["19265a33dc2e8914"]]},{"id":"ddbb0ff67efbe9a2","type":"mqtt in","z":"8d97cec16eabefaf","name":"","topic":"oxrs/stat/oxrs1/lwt","qos":"2","datatype":"auto-detect","broker":"","nl":false,"rap":true,"rh":0,"inputs":0,"x":195,"y":525,"wires":[["db4372e86b15b8ab"]]},{"id":"db4372e86b15b8ab","type":"switch","z":"8d97cec16eabefaf","name":"Restarted","property":"payload.online","propertyType":"msg","rules":[{"t":"true"}],"checkall":"true","repair":false,"outputs":1,"x":375,"y":525,"wires":[["1149fbc9159e0606","c7cb9c86f32cfbdd","83dc0496a2adf9e7","19265a33dc2e8914"]]},{"id":"3efd94a1d5975a40","type":"debug","z":"8d97cec16eabefaf","name":"debug 342","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":400,"y":330,"wires":[]},{"id":"201f3390fbec7ce9","type":"inject","z":"8d97cec16eabefaf","name":"icons","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":620,"y":480,"wires":[["c7cb9c86f32cfbdd"]]},{"id":"772c68ff9e031084","type":"inject","z":"8d97cec16eabefaf","name":"startup","props":[{"p":"payload.online","v":"true","vt":"bool"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","x":380,"y":480,"wires":[["83dc0496a2adf9e7"]]},{"id":"8f2db35ff6f37c4c","type":"http request","z":"8d97cec16eabefaf","name":"","method":"GET","ret":"bin","paytoqs":"ignore","url":"192.168.1.56/api/snapshot.bmp","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[],"x":1060,"y":195,"wires":[["78e9b2104c732a7f"]]},{"id":"47c104c750991590","type":"inject","z":"8d97cec16eabefaf","name":"Screen Snapshot","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"1","payloadType":"str","x":875,"y":195,"wires":[["8f2db35ff6f37c4c"]]},{"id":"78e9b2104c732a7f","type":"image","z":"8d97cec16eabefaf","name":"","width":"480","data":"payload","dataType":"msg","thumbnail":false,"active":true,"pass":false,"outputs":0,"x":1480,"y":195,"wires":[]},{"id":"c92d2067235fe352","type":"mqtt in","z":"8d97cec16eabefaf","name":"","topic":"oxrs/stat/oxrs1/log","qos":"2","datatype":"auto-detect","broker":"","nl":false,"rap":true,"rh":0,"inputs":0,"x":195,"y":720,"wires":[["37e1627f326b3d50"]]},{"id":"37e1627f326b3d50","type":"debug","z":"8d97cec16eabefaf","name":"LOG","active":true,"tosidebar":true,"console":false,"tostatus":true,"complete":"payload","targetType":"msg","statusVal":"payload","statusType":"auto","x":385,"y":720,"wires":[]},{"id":"2ede5e294e05a833","type":"mqtt out","z":"8d97cec16eabefaf","name":"","topic":"","qos":"","retain":"false","respTopic":"","contentType":"","userProps":"","correl":"","expiry":"","broker":"","x":700,"y":390,"wires":[]},{"id":"beb8d5facac3a714","type":"inject","z":"8d97cec16eabefaf","name":"green Background","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":"1","topic":"oxrs/cmnd/oxrs1","payload":"{\"screens\":[{\"screen\":1,\"backgroundColorRgb\":{\"r\":50,\"g\":100,\"b\":50}}]}","payloadType":"json","x":1055,"y":360,"wires":[["db5727efc6b6174b"]]},{"id":"a8996a20f0304cd1","type":"inject","z":"8d97cec16eabefaf","name":"red Background","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":"1","topic":"oxrs/cmnd/oxrs1","payload":"{\"screens\":[{\"screen\":1,\"backgroundColorRgb\":{\"r\":100,\"g\":50,\"b\":50}}]}","payloadType":"json","x":1045,"y":405,"wires":[["db5727efc6b6174b"]]},{"id":"ae884bd800a07565","type":"delay","z":"8d97cec16eabefaf","name":"","pauseType":"delay","timeout":"1","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":990,"y":660,"wires":[["db5727efc6b6174b"]]},{"id":"ad30570f935b4c7b","type":"inject","z":"8d97cec16eabefaf","name":"Blue Background","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":true,"onceDelay":"1","topic":"oxrs/cmnd/oxrs1","payload":"{\"screens\":[{\"screen\":1,\"backgroundColorRgb\":{\"r\":50,\"g\":50,\"b\":100}}]}","payloadType":"json","x":1055,"y":315,"wires":[["db5727efc6b6174b"]]},{"id":"2f34d75c258c535e","type":"inject","z":"8d97cec16eabefaf","name":"footer","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"oxrs/cmnd/oxrs1","payload":"{\"screens\":[{\"screen\":1,\"footer\":{\"left\":\"Wed 07 Sep\",\"center\":\"center\",\"right\":\"20:49pm\"}}]}","payloadType":"json","x":1015,"y":450,"wires":[["db5727efc6b6174b"]]},{"id":"f4a3173f66fdd21c","type":"inject","z":"8d97cec16eabefaf","name":"footer off","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"oxrs/cmnd/oxrs1","payload":"{\"screens\":[{\"screen\":1,\"footer\":{}}]}","payloadType":"json","x":1025,"y":495,"wires":[["db5727efc6b6174b"]]}]

```

---

<div class="post-metadata">

**Author:** ![craigcurtin](https://avatars.discourse-cdn.com/v4/letter/c/94ad74/32.png) [@craigcurtin](https://discourse.nodered.org/u/craigcurtin)\
**Post date:** [29 September 2023 00:07 UTC](https://discourse.nodered.org/t/oxrs-web-app-setup/81634/3 "2023-09-29T00:07:51Z")

</div>

good man thanks - will try and make a start this weekend

Craig

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/1X/d073cd938eafa2e558d7c2cd59003b3ef4963033.png) [@system](https://discourse.nodered.org/u/system)\
**Post date:** [28 November 2023 00:08 UTC](https://discourse.nodered.org/t/oxrs-web-app-setup/81634/4 "2023-11-28T00:08:22Z")

</div>

This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.
