Looks like presets are the only option in the custom component that talks to this hardware. No direct dimming control:
Perhaps a template light would allow you to catch this situation. Just check it out in the docsâŚ
It has been suggested.
A template switch is different from a template light right? Thatâs why I suggested it. Just figuring out the template light myself now, hoping it will also be dimmable.
Edit: here is my functioning template light:
- platform: template
lights:
keukentafel_auto:
friendly_name: "Lamp keukentafel auto"
level_template: "{{ state_attr('light.keukentafel','brightness') | int }}"
value_template: "{{ states('light.keukentafel') }}"
turn_on:
- service: light.turn_on
data_template:
entity_id: light.keukentafel
brightness_pct: "{{ states('sensor.brightness') }}"
transition: 3
turn_off:
service: light.turn_off
entity_id: light.keukentafel
set_level:
service: light.turn_on
data_template:
entity_id: light.keukentafel
brightness: "{{ brightness | int }}"
@uzelac: My suggestion would be to figure out the value templates for on, off and brightness level. Then integrate them into a template light. I donât know much about your particular hardware though, so youâll have to figure out if itâs working for you by yourself
Wow, thanks a lot, seems like some of this could work :).
It would be great to have one switch instead of 2/3, even if i waste dimmability. I have full control through original keypads, so simple on/off is still usable.
Of course, it would be much better to have full dimming control, I guess it is possible, but not through this custom component, at least until Troy makes it better :).
Since i have this gateway part of Dynalite installation, i can send something what i would call http request⌠not sure if this is correct name.
For example, if i âvisitâ this page through my web browser (192.168.1.25 is my Dynalite gateway):
http://192.168.1.25/SetDyNet.cgi?a=5&c=1&l=100
It will set my lights in Kitchen (Area 5) Main light (Channel 1) to Full power (Level 100)
So, can i make slider which will I program to send level I choose (X) via this HTTP request:
http://192.168.1.25/SetDyNet.cgi?a=5&c=1&l=X
How can i make⌠dimmable light entity ??? to have slider with 100 positions which will send this http request ?
I tried some of this with node-red, but without success ⌠too much noob
Interesting case
I think it could be done with a REST command, example is found here.
I think you donât actually need a separate slider. A template light contains a brightness slider by default, as long as you include the âset_levelâ part. In your set_level part, I imagine you would call the REST command.
In your configuration.yaml:
rest_command:
rest_brightness:
url: "http://192.168.1.25/SetDyNet.cgi?a=5&c=1&l={{ bri }}"
Part of your template light:
set_level:
- service: rest_command.rest_brightness
data:
bri: "{{ (brightness/255*100) | int }}" # regular brightness is scaled 0-255, but you need a percentage
Ofcourse I havenât tested this⌠I skipped the script (as shown in the linked example) but perhaps you need a script.
I did manage to combine on and off switches in one switch (and i hide original ones) and it works great, instead of 20+ i now have 3x times less. Great
I used template light, i picked that one first and it worked in few minutes. Thanks!
Now, to figure out dimmingâŚ
First i thought I could do it via node-red, to be honest never heard of rest command and it sounded something complicated. Than i took second look, and it looked it couldnât be easier so i gave it a try.
And it works (not really) from the start!
To be exact it works but not as it should, since it always sends brightness level 0 to my Dynalite.
Whatever brightness level i choos it sends 0 and ligths go out.
But, still, hey, great work!
Never played with variables, so i presume problem is there.
If i use fixed command (fixed brightness level) it works good, so definately variable and how it makes it. Im positive it is solvable.
Thanks once again!
Grrr⌠cant get this to work.
Is syntax for this brightness part ok ?
Whatever i do with syntax rest command allways sends zero for brightness.
Still, if i fix bri variable to some value, it will send it perfectly so it sounds rest is doing fine, issues is how to translate brightness 0-255 to 0-100 which my hardware can use.
Please. could someone confirm correct syntax.
Thanks
Can you post the full code for your template light? Makes it easier to troubleshoot.
Edit1: Try perhaps
bri: â{{ (brightness|float /255*100) | int }}â
Weâll get there
Edit2: I think I found my mistake. I used âdata:â instead of âdata_template:â. So it should be:
set_level:
- service: rest_command.rest_brightness
data_template:
bri: "{{ (brightness/255*100) | int }}" # regular brightness is scaled 0-255, but you need a percentage
Does that work?
If you are still using nodered, you can use a ârangeâ node to scale from 0-255 to 0-100.
https://cookbook.nodered.org/basic/map-between-different-number-ranges
Ha, still no go
Here it is (different light, not kitchen but living room, same thing)
configuration.yaml
rest_command:
dynet_level:
url: "http://192.168.1.25/SetDyNet.cgi?a={{ area }}&c=0&l={{ bri }}"
Plan is to copy/paste to all lights, and change fixed Area: variable to specific Area.
light.yaml (!included in config)
- platform: template
lights:
dnevna_svetlo:
friendly_name: "Dnevna"
turn_on:
service: light.turn_on
data:
entity_id: light.dnevna_on
turn_off:
service: light.turn_on
data:
entity_id: light.dnevna_off
set_level:
- service: rest_command.dynet_level
data_template:
area: 3
bri: â{{ (brightness|float /255*100) | int }}â
Well that just looks fine. The brightness calculation is correct in the template editor preview, even without the float.
An alternative instead of rest command is here. Perhaps @tom_l can help you out here with a shell command?
Edit:
@uzelac The quotes donât look correct to me. You need to use "
, but youâre using â
and â
.
bri: â{{ (brightness|float /255*100) | int }}â
Alternative:
set_level:
- service: rest_command.dynet_level
data_template:
area: 3
bri: >
{{ (brightness /255*100) | int }}
Oh yeah, thatâs it
Thanks again, works on all lights, now to fix lovelace/cards
Hi
Need help, hope it is last time on this one
Been polishing this up and encountered an problem with switching on/off and setting brightnessâŚ
So, when i switch on the light, HA will send command to turn on light and Dynalite will turn it on at maximum brightness.
And HA will show brightness at maximum level.
When i turn light off, all is ok, and brightness slider shows zero value.
If i use slider for brightness light will turn on at that level, so that works OK also.
If i set slider to zero, light will turn off and switch will be at OFF position, also OK.
Issues are:
-
if i set brightness to some value which is not maximum and then turn off light, next time i turn it on brightness level will show previous level even though command turned on light to maximum brightnessâŚ
-
if i turn on light by setting slider, it will turn on light but HA will show switch at off position.
So, i wonder, is there a way when i turn on light, to tell HA to set it up to maximum just so it will also âthinkâ and show on slider that that light is at maximum after turning on ?
Hope someone understood me
Here is a code for one template light:
- platform: template
lights:
dnevna_spot:
friendly_name: "Dnevna"
value_template: "{{ is_state('light.dy_dnevna_on', 'on') }}"
value_template: "{{ is_state('light.dy_dnevna_off', 'off') }}"
level_template: "{{ state_attr('light.dnevna','brightness') | int }}"
turn_on:
service: light.turn_on
entity_id: light.dy_dnevna_on
turn_off:
service: light.turn_on
entity_id: light.dy_dnevna_off
set_level:
service: rest_command.dynet_area_channel_level
data_template:
area: 3
chan: 10
bri: >
{{ (brightness /255*100) | int }}
Iâve never seen this before:
value_template: "{{ is_state('light.dy_dnevna_on', 'on') }}"
value_template: "{{ is_state('light.dy_dnevna_off', 'off') }}"
Two value_templates? I believe Home Assistant will only use the second one (it supersedes the first one). It may also explain the behavior you described.
A single value_template should report the Template Lightâs state.
You are right, only one needed. I corrected this
This is how connection to my other âsmart homeâ system (aka Dynalte) is done, via presets, so i have bot off and on lights in HA, When dynalite_some_light_off is on other light (dynalte_some_light_on) is ON. Light is on when ON version is ON⌠simple
Not that important, it worked with to templates, and it works the same with just one
I admit I donât understand the interaction between the three lights:
dy_deneva_on
dy_dneva_off
dneva
However, have you considered using the following value_template to indicate the template lightâs state?
value_template: "{{ state_attr('light.dnevna','brightness') | int > 0 }}"
If the lightâs brightness is greater than zero then the template evaluates to true
and the template lightâs state will be on
.
Hi
Ill go to english, dnevna = living room.
So, i have connection between dynalite home automation devices (through hassio - mqtt - dynalite bridge Troy Kelly made for home assistant).
When it runs it will create following lights:
- light.dy_livingroom_off
- light.dy_livingroom_on
So, not one but two. Itâs the way it works, not perfect, and far from finished. But it helps me big time.
So, if i switch on that light the dynalite-mqtt connection will report:
- light.dy_livingroom_on goes ON
- light.dy_livingroom_off goes OFF
When i turn that light off, opposite happens:
- light.dy_livingroom_on goes OFF
- light.dy_livingroom_off goes ON
To make life easier, i connected these two switches to one, called light.livingroom
Earlier, few people helped me to tie them up, and it works.
When dynalite reports:
- light.dy_livingroom_on goes OFF
- light.dy_livingroom_off goes ON
light.livingroom goes ON, and opposite happens.
Problem happens when i dimm these lights, since there is such cappability.
It makes sense but it doesnt work.
If i turn light off, it will go of.
If i raise brightness, phisically stuff works, light will go on at asked brightness but the switch in HA will stay off and icon will look off.
Full code is like this at the moment:
- platform: template
lights:
dnevna_spot:
friendly_name: "Dnevna"
value_template: "{{ is_state('light.dy_dnevna_on', 'on') }}"
value_template: "{{ state_attr('light.dnevna','brightness') | int > 0 }}"
turn_on:
service: light.turn_on
entity_id: light.dy_dnevna_on
turn_off:
service: light.turn_on
entity_id: light.dy_dnevna_off
set_level:
service: rest_command.dynet_area_channel_level
data_template:
area: 3
chan: 10
bri: >
{{ (brightness /255*100) | int }}
There should really be only 1 value_template, not two. They should both give you the same result, but youâll have to experiment which one is working for you. But just enable one at a time!
It seems perhaps the state of light.dy_livingroom_on & _off is not updated when you set the brightness. What is the state of these entities right after you change the brightness level (so when a) light is off and b) you set a brightness level)? Are they updated properly?