Node Red: A widget based dashboard working with Homey trough MQTT

thank i guess copy and paste and thats it =)

  • And lots of configuration of topics on MQTT
  • And some flows on Homey to make the thermostat setting working


That first screenshot of the ipad on the wall is that your installation? What frame did you use?

Nice extended tutorial / blog btw

Thanks. It’s just some aluminium corner extrusion I cut together. The wall is actually a large hatch see:

is there a chance to control the brightness of an ipad via homey e.g. if no movement (via motion sensor) in front of the ipad then set the brightness of the ipad to 0…?

I think with the homey dashboard there was a virtual device… but how can I realize this with node red and homey?

You could probably change the stylesheet based on a incoming MQTT message. But I personally don’t think it’s worth the hassle. Dimming the light by adjusting colors on a webpage won’t conserve energy (on non-oled display’s) or prolong the lifetime of the device. Unless you are bothered by the light? There is an dark theme available inside node-red.

When I’m not around I turn the homescreen off with the help of homeyduino and a wire soldered to the magnetic smart cover sensor. I’ve also made a less intrusive solution by using an ESP32 to emulate a Bluetooth keyboard to lock and unlock the ipad with Homey:

Sadly this wont work with my old iPad2. It needs to support Bluetooth BLE to work.

One question related to Node Red. I have been trying to make code to sort array. In my point of view the output message should have following: Test_m_out=empty, m_out=original values and m_out_sorted=sorted values. But the output of the all arrays are sorted values. I don’t get it, help is needed. What am I missing.

[{"id":"94931480.7c10f8","type":"inject","z":"e728dd25.c0c07","name":"","topic":"","payload":"","payloadType":"date","repeat":"3600","crontab":"","once":false,"onceDelay":0.1,"x":230,"y":640,"wires":[["f5220f0f.6d486"]]},{"id":"f5220f0f.6d486","type":"function","z":"e728dd25.c0c07","name":"SortEmOut","func":"var msg1={}\n\nvar m_out=[]\n\nvar m_out_sorted=[]\n\nmsg1.Test_m_out=m_out //This should be empty\n\nm_out[0]=3\nm_out[1]=2\nm_out[2]=4\nm_out[3]=5\nm_out[4]=1\nm_out[5]=7\n\nm_out_sorted = m_out\nm_out_sorted = m_out_sorted.sort((a,b) => a-b)\n\nmsg1.m_out=m_out //This should have original values\nmsg1.m_out_sorted=m_out_sorted //This should have sorted values\n\nreturn msg1","outputs":1,"noerr":0,"x":390,"y":640,"wires":[["e9841710.80f4d8"]]},{"id":"e9841710.80f4d8","type":"debug","z":"e728dd25.c0c07","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","x":550,"y":640,"wires":[]}]

Hi, can this post help?

Thanks for the help. That is somewhat the same that I have made, but the problem is that also the “input” arrays are sorted although I dont sort them in the code.

then copy the input array to a new array perhaps, and use that one for sorting.

I have done that also, like presented in the example code. But it will still sort the input array also.

you need to use push (for existing array’s):


m_out_sorted = m_out_sorted.sort((a,b) => a-b);


1 Like

I am no programmer, but would love to have this working. Have spent quite a few hours to get it up and working - but how to get the layout and buttons working as I want seems to be out of my grasp. To be honest I do not want to learn to be good at this - just want to make it work and fulfill my basic demands to help my wifey to easily use our Homey.

Would it be possible to get your full code for your tab (to import to my own Node-RED) - so I can change to my values and connection and learn from what you have done as I go? It is more or less exacly how I want my layout to be and I ask politely and respect your choice if not to. But it would help me a lot! :wink: Thank you and have a great evening/day! :slight_smile:

1 Like

@Satoer Thank you for this manual. I have never ever did anything with programming but I still manage to come up with some kind of a dashboard.

Still need to add some weather items


@Joost_van_Liempt I would also like to have the traffic map on my dashboard. Can you please share the code you have used?

Hi Paul

Can i ask how you cast the dashboard to the google home. I have a https call which shows the dashboard on my computer but does not cast to my google.


Hell Ron,

Thanks for your message. It is a while ago, I have created this flow that does the job. To test it on Homey, i used a virtual button to trigger casting the URL of the dashboard to the nesthub. Later I also created a routine in Google Home that will sent the dashboard to the hub. I hope this helps, otherwise let me know.

Best regards,


Hi, I had that flow as well, which works for homeydash but not for nodered. it needs to be https . Could yo u share me the routine how to do this on google home. From there I should be able to figure out :wink:

The Routine is pretty simple. I have linked Homey to Google Home. The Routine is (sorry for Dutch language as my Google Apps do have Dutch as preferred language.
Ik zeg “Show Dashboard”

Dan doet de Assistent het volgende
X Instellingen aanpassen voor lampen, stekkers en meer
Open the cog and select the Virtual button mentioned in the flow (my previous post)

Save the Routine.

That is all. Google Assistant will switch the virtual button, which will broadcast the dashboard to the nest hub…

P.S. Some time ago, Routines were located in the Google Home app. but is not available today for unknow reason.
I was able to start Routines by going to the Google Assistant and give the command: “Open Routine Settings”.

Dankjewel. Ik denk dat er dan iets niet goed is met mijn dashboard. Ik doe exact hetzelfde.

I will continue to check my dashboard