I've seen that there are a number of TV contributed nodes. We're looking to upgrade our current TV and I'm wondering what would work best with node-red. I currently use the
cec-client command line tool to control my TV in exec nodes, but it's slow and buggy. The minimum basic controls I want are to be able to:
- Turn the TV on/off
- Switch input sources
Other controls would be nice, but WRT TV features outside of node-red (in case anyone has any recommendations), I'd also like a more fully supported CEC functionality so that I can program
CouchSlouch to control my computer using the TV remote.
Also, what are the pros & cons of contrib nodes for smart TVs and which are well maintained?
I mean, I don't have much experience - I am in the same boat.
but Android TV's (i.e SONY) seems like it has quite a few entry points.
I think "tizen" based TV's can also be abused quite easily.
My TV can be turned off remotely (TCP)
but then loses its connection when in standby, I therefore use a smart plug (TV set to power on after power failure) - Yuck!
I can still control its inputs via TCP - but it angers me the way I need to implement it (its about 14 years old) - was when 3D first become a thing.
A better question is which control device. I use CEC protocol for stuff direct connected, say raspberry Pi to HDMI on my SHARP TV. I use a Broad Link RM4 Mini (universal IR and RF) device. Use NR to create the interface(s) on a touch screen (HDMI) on a Raspberry Pi, and can control everything from that one touch screen. I also use a BOND bridge (RF device) to control the fans (303.875 MHz in US). The Broad Link can do 433MHz if I recall right.
Almost every TV, Receiver, even some Speakers talk CEC. The only issue with CEC is that it is wire based so somewhere you have to have a device that can generate CEC codes, almost every Receiver does. Even Game console do as well.
But the Broad Link since it does IR and RF is a big win. I think the Broad Link RM4 Pro can do almost anything IR 38K and several RF bands. The only trick was to mount the device is a good location in the room so that I could IR everything I wanted to, my media room has two TVs on opposite walls... one for the game console, and other for the pool table. Oh and both TVs linked into a media PC as well, but never found a PC video card that supported CEC... kind of dumb video cards not supporting CEC. But that may change as 4K and 8K TVs become as good as monitors.
How did you implement CEC? Did you compile from source? I do drive the cec-client, and have not had any issues as long as the HDMI cable is of good quality. I did have a cheaper cable, and that impacted the consistency of the results, just a thought? I would definitely recommend looking at the Broad Link... Btw way, there is a great CLI for the Broad Link based on python, that makes recording and playback of the remote signals painless. The Broad Link nodes are very old, and I could not get them working, but the python CLI script via an exec node is fast (faster than CEC by a lot) and so far 100% consistent.
Oh, and you run the Broad Link under NR, in local mode... no internet/cloud connection needed.
My rpi3B is connected directly to my TV via HDMI. I was using CEC exclusively for control, but occasionally (maybe once a month) CEC would hang and subsequently stop responding to any commands. I tried working around that for awhile but couldn't get the workaround to handle things automatically when it froze up. Incidentally, the CEC hang affected both my homebridge cec node and the command line client. I eventually gave up and set up my Broadlink RM Mini 3 (IR only), but it only has 1 code for both on & off, so I wrote an applescript to determine whether the TV is on or off (which runs on a mac mini that is also connected to the TV and infers the power state based on whether or not the display name is set or null.
But my point is, I'd rather not have to have all these multiple control points and have a smart TV that can be controlled using its own network interface, like a smart plug. So I just want to buy a larger TV that has a good interface.
Smart tv's can also have direct http/api interfaces that let you control them via http (and node-red). I use a logitech harmony hub, which is similar to a broadlink, nice node available for full controls. I despise CEC though and don't use it.
Many LG Tv & Monitors have a serial (RS232) bus or http.
google for lgtv rs232 http
My hisense OLED has a built-in MQTT broker. Can do pretty much anything through simple MQTT commands.
And can be powered on remotely by WOL
Now that is REALLY cool! I am planning to add a 4K or 8K TV for my XBox gaming (X series console), and I just added Hisense to the short list, given the MQTT support!
Wow, I have I guess just been the exception with using CEC, I have a 10 year old VIZIO that does CEC without issue with my Raspberry Pi... other than a bad cable once, other than that been fine.
Just be careful with the Hisense TVs - they do not get identified as an Android TV in the google play store so many of the apps that you would expect to work do not - they have their own competing app store.
Apparently the China parent also puts it onto the local countries to localise the TV for their environment - so in the case of Australia they were very slow in rolling out lots of key apps and the ones that they have rolled out are very buggy (Netflix, Prime, Kayo as examples)
It also feels to me that the processor if woefully underpowered - i am comparing this against a NVidia shield (2015 model) and this TV was a top of the line model in 2020. We get a lot more buffering and lock ups when skipping in streams nativly on the TV compared to on the Shield.
Yeah, I did some research, and I have to have a 120Hz or better 4K or 240Hz 8K to really leverage XBox Series X console to its potential. Only now post COVID are 120Hz TVs becoming the norm for 4K and 8K are still some time out... maybe even 2024, is what I am hearing my friends that are gaming nuts.
I don't need native apps... since I will have the XBox console connected, but I do want MQTT support as well as TCP socket support to avoid sole reliance on CEC. Even though I have not a had problems with CEC per se, really like the MQTT approach.
BTW, I spent some time this morning using 'cec-ctl' which works on a Raspberry Pi OS 11, with the KMS overly (NOT the FKMS overlay). It was a bit odd initially because I was used to using cec-utils/cec-client. But once I figure it out, it worked. The cec-ctl CLI does NOT rely on cec-utils package, i.e. use cec-client. So if you are having issues with cec-client and the applicable libCEC library? Try using direct kernel support via KMS overlay. I only tested on an old Pi 3B, but most of the examples via Google reference needed a recent firmware and Pi 3B/4B hardware. Will try on a Pi 2B when I have time. The biggest difference, is that cec-ctl appears to be MUCH faster than cec-client.
Status CEC Bus (via cheat testing HDMI output)...
$ sudo cec-ctl -d/dev/cec0 --playback -S
Driver Name : vc4_hdmi
Adapter Name : vc4
Capabilities : 0x0000011e
Remote Control Support
Driver version : 5.15.32
Available Logical Addresses: 1
DRM Connector Info : card 0, connector 32
Physical Address : 220.127.116.11
Logical Address Mask : 0x0010
CEC Version : 2.0
Vendor ID : 0x000c03 (HDMI)
OSD Name : 'Playback'
Logical Addresses : 1 (Allow RC Passthrough)
Logical Address : 4 (Playback Device 1)
Primary Device Type : Playback
Logical Address Type : Playback
All Device Types : Playback
RC TV Profile : None
Device Features :
System Information for device 0 (TV) from device 4 (Playback Device 1):
CEC Version : 1.3a
Physical Address : 0.0.0.0
Primary Device Type : TV
Vendor ID : 0x6b746d (Vizio)
OSD Name : 'TV'
Menu Language : eng
Power Status : On
18.104.22.168: Playback Device 1
Power On TV...
$ sudo cec-ctl -d /dev/cec0 --to 0 --image-view-on
Power Off TV...
$ sudo cec-ctl -d /dev/cec0 --to 0 --standby
Test HDMI Input...
$ sudo cec-ctl -d /dev/cec0 --tv -S
Test Power State For TV...
$ sudo cec-ctl -d /dev/cec0 --to 0 --give-device-power-status | grep pwr-state
pwr-state: on (0x00)
power-state: standby (0x01)
The better Sony TV's support a pretty sophisticated ethernet/wifi interface protocol.
I describe how I use NR to control my sony here
One thing that's not optimal that I do is that I poll the sony every few seconds to see if it was turned on. (via remote). But that works fine.
Turning on and off and selecting sources is very easy though.
It hasn't been revised recently, but that may be because it works as is, so doesn't need any changes.
BTW, it wasn't cheap but my 75" Sony looks really nice.
Samsung TV's have a node to control them.
Though you have to get the model with an ethernet port.
It works. Done via the ethernet cable.
It is a bit tricky - but I think any control system would be to set up.
On a side note:
I didn't think RS232 would be used these days.
Yeah RS232 in consumer devices (TVs) not so much - but in commercial ones (such as NEC, Panasonic and Sharp display panels (think the big display units you see making up walls in shopping centres etc) it is still pretty much entrenched
So something like this thing...
These nodes work really well on LG TVs. node-red-contrib-lgtv (node) - Node-RED.
I can send notifications, load apps, pause media (linked with Ring doorbell for when someone arrives at my door), open webpages etc etc
Can you turn on/off the TV?
Only off from the nodes.
"Turn your TV off (turning on over the Websocket API is not possible because the network interfaces are down when the TV is in standby. You can work around this via WakeOnLAN or Infrared)"
I actually use a Logitech Harmony Hub to do that part - but may try a WOL node.....node-red-node-wol (node) - Node-RED
My older SHARP has ethernet, but I have never found any documentation on its use per se. Once in a great while, a firmware update arrives. Unfortunately, I purchased mine in 2010, and I believe IP control was not available on SHARP TVs until about 2012.