Sidehistorik
Indholdsfortegnelse |
---|
After seeing some of the stuff my colleague Martin has done with Node-RED, I wanted to switch to oit, despite my KISS strategy, and Node-RED just introduces another device to mange.
...
Installing Node-RED as a Docker container
But, starting it on Docker on my Home Laptop (also used for Home Assistant on Docker and Plex Media Server):
...
And it was running on http://sparrow:1880. I saw some wierd stuff in the start, until i pressed "Deploy" the first time, after that every thing has just bee working.
NR Node-RED has no (as far as I know currently, any users or admin/management in front of it by default, and I wanted to be able to use it from pretty much everywherehome and work/work-vpn... so I created a dual stack of Reverse Proxies:
...
Setting the browser to http://nodered.mos-eisley.dk it hits my Confluence Server (in a Datacenter) and the Apache2 on it proxies it to http://cantina,mos-eisley.dk:1890 (Fiber Router with port forward to Home laptop), and the Apache2 on it the Laptop proxies it to sparrow:1880 (the Docker container on the Home Laptop).
On both Apache2 I have IP Restrictions, and on the first, username/password - otherwise all people at work could change my Node-RED setup:
Kodeblok |
---|
<VirtualHost nodered.mos-eisley.dk:80> ServerName nodered.mos-eisley.dk LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" combined ErrorLog ${APACHE_LOG_DIR}/nodered.mos-eisley.dk-error.log CustomLog ${APACHE_LOG_DIR}/nodered.mos-eisley.dk-access.log combined RewriteEngine on RewriteCond %{HTTP:Upgrade} ^WebSocket$ [NC] RewriteCond %{HTTP:Connection} Upgrade$ [NC] RewriteRule .*/(.*) "ws://cantina.mos-eisley.dk:1890/$1" [P,L] ProxyPreserveHost On ProxyRequests Off ProxyPass / http://cantina.mos-eisley.dk:1890/ ProxyPassReverse / http://cantina.mos-eisley.dk:1890/ <Proxy *> Order deny,allow Deny from all Allow from xxx.xxx.xxx.xxx Allow from yyy.yyy.yyy.yyy Authtype Basic Authname "Password Required" AuthUserFile /etc/apache2/.htpasswd Require valid-user </Proxy> </VirtualHost> |
Creating password:
Kodeblok |
---|
sudo htpasswd -c /etc/apache2/.htpasswd <username> |
Kodeblok | ||
---|---|---|
| ||
<VirtualHost *:1890> ServerAdmin webmaster@localhost RewriteEngine on RewriteCond %{HTTP:Upgrade} ^WebSocket$ [NC] RewriteCond %{HTTP:Connection} Upgrade$ [NC] RewriteRule .*/(.*) "ws://localhost:1880/$1" [P,L] ProxyPreserveHost On ProxyRequests Off ProxyPass / http://localhost:1880/ ProxyPassReverse / http://localhost:1880/ <Proxy *> Order deny,allow Deny from all Allow from 77.243.52.144 # www.mos-eisley.dk Allow from 10 # Local Lan </Proxy> </VirtualHost> |
...
Adding Node-RED To Home Assistant
Node-RED
In Node-RED, under Settings → Palette - Add "node-red-contrib-home-assistant-websocket":
Home Assistant
In Home Assistant, Add "Node-RED Companion" as an Integration:
Check out https://zachowj.github.io/node-red-contrib-home-assistant-websocket/guide/custom_integration/ for some tips also.
...
The "Listen" is listening om MQTT Directly and turns on the ZenseHome ceiling outlet (just to be sure) and turns on the Philis Philips Hue lightbulbs , the latter 2 both through Home Assistant.
I have also used the Philips Hue Zone "Christophers Ceiling Light" instead of turning on all three bulbs indivudually.
So, I moved all these similar automations from Home Assistant to Node-Red .in no time!
Stream Deck Support
My youngest son got a Stream Deck and we wanted to be able to trigger stuff from the buttons, so I looked into the Home Assistant API - and well, You need authetications and all sorts of "complicated" stuff.
...
Added the toogle for the Home Assistant entity (A Philips Hue Plug):
And wired them together:
...
So I turned (as and SMS alternative) to Discord, from the Settings → Palette - Add "node-red-contrib-discord-advanced":
The setup is a bit complicated - follow the links on https://github.com/Markoudstaal/node-red-contrib-discord-advanced
Before sending the Discord Message, a "function" node will set the message (msg) - that is the Yellow/orabge "Prepare Message":
Tip |
---|
The "msg.channel" is and ID and can be found in the URL for the Channel when running Discord in a Browser, its NOT a string like "#home-assistant". Thank for Support from the coders. |
And so, a few messages to Discord:
Result: