
How-to normalize home volume levels with Node-RED - niemyjski
https://blakeniemyjski.com/blog/how-to-normalize-home-volume-levels-with-node-red/
======
godot
I know this article is about Alexa/Echo, but I wish a feature like this is
built into TVs :)

I have a young kid now and she's in bed by 8:30. I'd like to watch TV in the
living room in the evening after her bed time. I want to watch a movie like
say, Avengers. I want to listen to the dialogue instead of/in addition to
reading subtitles. The problem is in most movies, you have low volume
dialogues, and then there's explosions and stuff with high volume (intended
effect; which is nice at the theater, but not nice with a kid sleeping in the
next room). I don't want to wear headphones. So I end up with a remote in
hand, keep adjusting the volume high or low on reaction as quickly as my
reflex allows me to.

~~~
cgriswald
You want dynamic range compression, which will quiet explosions and louden
whispers, usually at the expense of some minor audio quality. It’s probably
already in your TV, cable box, or whatever other device.

~~~
ZeroGravitas
There's often also explicit human voice boosters too.

------
RNCTX
It baffles me that more people have not found and found uses for Node Red.
It's one of the coolest utilities that I've stumbled across in the past 5
years.

In a sane world there would be no more Zapiers and IFTTT because of it, at the
very least.

~~~
johntash
I've been using Node Red for automation using home assistant (instead of their
built-in automation) and generally like it.

I'd like to use it more like IFTTT, but haven't really found any good uses so
far since I was never a fan of IFTTT and connecting all my various accounts to
one service. Do you have any examples of what you use it for?

~~~
RNCTX
I co-founded a disaster relief non-profit in 2017, so in that context, web
scraping of sites/services without APIs is an obvious one.

Imagine the day after a hurricane has passed, needing to go find information
before everyone else (even before the govt). Well, you can scan Twitter
accounts who are posting videos and pics within a certain radius, scan for
open local facebook groups with pic and video posts, scan instagram accounts
for pics and videos (no api available for instagram), scan for public security
camera feeds within a radius, etc. Being able to automate that makes your data
gathering infinitely more effective. Doing it manually has an upper limit of
what all you can check every hour, particularly when you get busy with other
things.

RSS-Bridge is a scraping framework specifically for this purpose, that allows
you to quickly write up scraping scripts and serve them as RSS feeds.

Of course scraping is all fine and good, but getting the data you find into a
central database is where the magic happens. Even if you automate the
scraping, you're going to have to centralize the data and serve your own API
to it, or build a simple site to render it all, and have it in a store that
allows it to be effectively queried. So how much time would it take to build
scrapers for 5-7 different sites, plus database schema and database queries to
store the data you get from them, plus a manually constructed API to serve the
data from your database back out, plus a UI to render it all? For one dev
that's a project of a few days at least, but you don't have a few days. The
whole thing, from the standpoint of a rapid-response NGO, is gonna be over in
a week when the FEMA and Red Cross trucks get deployed. You need to be able to
do all of this quickly.

With Node Red you can build all that in a couple of hours, rather than a
couple of days.

Being able to quickly integrate 3rd party API data and 3rd party libs with
minimal custom code is a huge benefit too, in the same sort of activity. Node
Red has a script that auto-generates nodes for Swagger API definitions, so you
don't have to read docs and write integration functions to tie in third party
data to a particular set of business logic, you just drag and drop it and
pluck out the parts of the response objects you need.

For example, I built a rudimentary UPC scanning capable inventory system, also
in about two hours. It went like...

Page with camera access button, quantity box, and submit button -> vanilla JS
UPC reading library -> screenshot to base64 on the image for UI rendering ->
Kroger product data API to fetch pricing info -> Postgres query for the
returned item, if it exists increment by qty, if it does not exist create it
with qty.

Now someone can scan donated items with their phone. Sure, it has rudimentary
(at best) error handling and you have to explain that to the person doing the
scanning, but if you're on a time limit and need something right now it can be
done.

How long would it take to write all that by hand? Surely more than 2 hours.
Re-creating oauth boilerplate for API authentication alone would probably take
a good chunk of the first hour, whereas with Node Red you just fill a form
with the headers and it's done.

------
rcarmo
I've been using Node-RED for a few years now, and I can automate my LG TV's
volume (handy for when the kids punch it up for cartoons) and control it via
Siri (which is wired into Node-RED).

One of the medium-complexity things I do with it is check the iOS App Store
prices for apps I'm interested to get notifications when they're discounted,
but all my home automation runs on it, and this post has links to most of the
series:

[https://taoofmac.com/space/blog/2019/01/13/1900](https://taoofmac.com/space/blog/2019/01/13/1900)

I also maintain my own Node-RED docker images for ARM and Intel:

[https://github.com/insightfulsystems/node-
red](https://github.com/insightfulsystems/node-red)

------
SparkyMcUnicorn
I've been doing a lot with Home Assistant lately, and lots of things that play
nicely like node-red.

Does anyone have a set up to manage music service playback to media players
like Google Home (or I guess it's Nest now) speakers?

It would be fantastic to start playing music via Spotify from the dashboard,
or based on events and node-red flows. Not sure if the new forked-daapd
integration will help me out here, but last time I tried to work with MPD
specifically (unrelated project) I ran into walls left and right trying to get
something working.

~~~
niemyjski
You can kind of do this with the mini-media-player and Spotify card. I guess I
need to do a write up on this. It doesn't work the greatest unless you have
audio groups setup. You could define a scene with the speakers and playlist
you want to play as well.

------
tunesmith
And then you have devices like the seemingly-cool Sonos One, that has two
different internal volume levels, one for Alexa, and one for the music, and
they're wildly different. And there doesn't appear to be any way to normalize
them. Maybe you could use this to hack it by adjusting volume levels
immediately before and after any music is played.

------
andrepd
I don't get the fixation on wiretapping one's home for marginal convenience
gains.

~~~
function_seven
This blog post happens to use Echos to play the music. That's not the
interesting part, though. Home Assistant and Node-RED are the cool bits, and
they're completely local network services; no wiretapping required.

I've done a lot of automation using HA and Zigbee and Tasmota devices, and
it's been awesome. I have no cloud I rely on for anything. When my Internet
service goes down seemingly every night at 12:30am, I'm glad I can still
control lights, alarms, etc.

~~~
niemyjski
You can also use a slightly modified version of these sub flows to mute all
Alexas of which I do. I try to do everything local behind a firewall. There is
just somethings like Spotify / speakers / mic that is really hard to do / very
few products that work local only.

