I would like to adjust my monitors' brightness (and on/off status) along with my existing ambient lighting using HA.
Ideally they would be a separate device per monitor with sensors and controls, with a persistent id based on the serial nr. If that is not feasible, then they can be sensors under the existing device.
At least brightness (backlight, in % preferably) and power (on/off) capabilities should be supported, but more may be handy for other use cases (color temp, source/input selection, display mode, ...)
In my ideal world I would:
- Be able to use scenes to switch between work, gaming, movie, ... modes, which would power on/off some of my displays along with my existing lighting changes.
- Have the brightness of my monitors automatically follow Circadian Lighting.
My current solution is to use an applet in my DM that lets me adjust the brightness only, and one monitor at a time. It's quite buggy, although the underlying CLI app works well, so I don't think this is related to the protocol.
Related resources:
CLI output for ddccontrol on my system
[dries@DriesPC ~]$ ddcutil --show-table detect
Display 1
I2C bus: /dev/i2c-6
DRM_connector: card1-HDMI-A-1
EDID synopsis:
Mfg id: DEL - Dell Inc.
Model: DELL U2312HM
Product code: 16498 (0x4072)
Serial number: KF87Y3AM407S
Binary serial number: 875575123 (0x34303753)
Manufacture year: 2013, Week: 43
VCP version: 2.1
Display 2
I2C bus: /dev/i2c-7
DRM_connector: card1-DP-1
EDID synopsis:
Mfg id: DEL - Dell Inc.
Model: DELL U2720Q
Product code: 16819 (0x41b3)
Serial number: 9G7HVS2
Binary serial number: 825309516 (0x3131394c)
Manufacture year: 2020, Week: 4
VCP version: 2.1
Display 3
I2C bus: /dev/i2c-8
DRM_connector: card1-DP-2
EDID synopsis:
Mfg id: DEL - Dell Inc.
Model: DELL P2317H
Product code: 16627 (0x40f3)
Serial number: 9KFDW649084L
Binary serial number: 808989772 (0x3038344c)
Manufacture year: 2016, Week: 15
VCP version: 2.1
Display 4
I2C bus: /dev/i2c-9
DRM_connector: card1-DP-3
EDID synopsis:
Mfg id: DEL - Dell Inc.
Model: DELL P2418D
Product code: 53441 (0xd0c1)
Serial number: MY3ND98O1X4T
Binary serial number: 827864148 (0x31583454)
Manufacture year: 2019, Week: 34
VCP version: 2.1
[dries@DriesPC ~]$ ddcutil -d 1 capabilities
Model: U2312HM
MCCS version: 2.1
Commands:
Op Code: 01 (VCP Request)
Op Code: 02 (VCP Response)
Op Code: 03 (VCP Set)
Op Code: 07 (Timing Request)
Op Code: 0C (Save Settings)
Op Code: E3 (Capabilities Reply)
Op Code: F3 (Capabilities Request)
VCP Features:
Feature: 02 (New control value)
Feature: 04 (Restore factory defaults)
Feature: 05 (Restore factory brightness/contrast defaults)
Feature: 06 (Restore factory geometry defaults)
Feature: 08 (Restore color defaults)
Feature: 10 (Brightness)
Feature: 12 (Contrast)
Feature: 14 (Select color preset)
Values:
04: 5000 K
05: 6500 K
06: 7500 K
08: 9300 K
09: 10000 K
0b: User 1
0c: User 2
Feature: 16 (Video gain: Red)
Feature: 18 (Video gain: Green)
Feature: 1A (Video gain: Blue)
Feature: 52 (Active control)
Feature: 60 (Input Source)
Values:
01: VGA-1
03: DVI-1
0f: DisplayPort-1
Feature: AA (Screen Orientation)
Values:
01: 0 degrees
02: 90 degrees
Feature: AC (Horizontal frequency)
Feature: AE (Vertical frequency)
Feature: B2 (Flat panel sub-pixel layout)
Feature: B6 (Display technology type)
Feature: C6 (Application enable key)
Feature: C8 (Display controller type)
Feature: C9 (Display firmware level)
Feature: D6 (Power mode)
Values:
01: DPM: On, DPMS: Off
04: DPM: Off, DPMS: Off
05: Write only value to turn off display
Feature: DC (Display Mode)
Values:
00: Standard/Default mode
02: Mixed
03: Movie
05: Games
Feature: DF (VCP Version)
Feature: E0 (Manufacturer specific feature)
Feature: E1 (Manufacturer specific feature)
Feature: F0 (Manufacturer specific feature)
Feature: FD (Manufacturer specific feature)
Thanks for the consideration 😄. Unfortunately I'm totally unfamiliar with Go, otherwise I would love to contribute.
I would like to adjust my monitors' brightness (and on/off status) along with my existing ambient lighting using HA.
Ideally they would be a separate device per monitor with sensors and controls, with a persistent id based on the serial nr. If that is not feasible, then they can be sensors under the existing device.
At least brightness (backlight, in % preferably) and power (on/off) capabilities should be supported, but more may be handy for other use cases (color temp, source/input selection, display mode, ...)
In my ideal world I would:
My current solution is to use an applet in my DM that lets me adjust the brightness only, and one monitor at a time. It's quite buggy, although the underlying CLI app works well, so I don't think this is related to the protocol.
Related resources:
CLI output for ddccontrol on my system
Thanks for the consideration 😄. Unfortunately I'm totally unfamiliar with Go, otherwise I would love to contribute.