EN probeer even door te zetten, canbus is VEEL beter dan sturen via TCP, met TCP heb je helaas een polling nodig, dus je hebt geen instant verkeer, en je kan je polling niet op bv 1 sec zetten, dan is te veel data voor de max200
Heb mij een Mcp2515 besteld, eens kijken of het daar wel mee werkt. Ik hou je op de hoogte
Waarom geen canable USB adapter? Staat je HA niet in de buurt van je kast?
Klopt, staat momenteel aan de andere kant van het huis. Zal misschien later kijken om de boel te verplaatsen en het via een canable te doen.
Nuja, denk nog steeds dat je ergens een foutje in de code hebt
Het is gelukt
switch:
- platform: template
name: "Bureel Midden"
optimistic: true
id: bureel_midden
turn_on_action:
- canbus.send:
canbus_id: dobiss_canbus
data: [0x00, 0x41, 0x06, 0x01]
turn_off_action:
- canbus.send:
canbus_id: dobiss_canbus
data: [0x00, 0x41, 0x06, 0x00]
canbus:
- platform: esp32_can
id: dobiss_canbus
can_id: 0x00800102
tx_pin: GPIO5
rx_pin: GPIO4
bit_rate: 125kbps
use_extended_id: true
on_frame:
- can_id: 0x100ff00
use_extended_id: true
then:
- lambda: |-
if (x.size() ==4 and x[0] == 0x00 and x[1] == 0x41 and x[2] == 0x06) {
if (x[3] == 0x01) {
id(bureel_midden).publish_state(true);
} else {
id(bureel_midden).publish_state(false);
}
}
Ik ben wel fan van die switches, is direct duidelijk of ze aan of uit staan. Zou jij hier nog iets aan aanpassen?
Is er een canbus commando om alle states op te vragen? (zo kan ik alles goedzetten bij het opstarten).
je kan ook het light domain gebruiken voor je lampen en switch domain voor je schakelaars, is mooier toch in HA … Heb je ook dimmers op je dobiss? Die kan je dan ook in je canbus zetten, moet je wel berekingen maken met de hex waardes , om die om te zetten naar 0…255
Anyway, wat je nog mist in je code , is je value template, want stel dat je de lamp aan doet via een drukknop, dat weet je dat niet in HA
De message om de status op te vragen van alle relays, is onderstaande
cansend can0 00800101#00
Dit commando heb ik in een automation gezet bij elke herstart van HA, zodat alle states goed gezet worden adhv een sensor… Bij de herstart van HA, dump ik alle states in een template sensor zoals je kan zien in de screenshot; en ik gebruik dan bv deze value_template voor een lamp/schakelaar
Ook als er een nieuwe state op canbus gezet wordt, dan update mijn sensor
Als de waarde 01 is, dan is de lamp aan, alsook in HA
keukeneiland:
friendly_name: "Keuken Eiland"
value_template: "{{ state_attr('sensor.dobiss', '4104') == '01' }}"
turn_on:
....
Wat was nu trouwens het probleem?
Edit: was nu even aan het kijken in je code, en je hebt idd geen value template nodig, je doet dan in die lambda
Netjes
Het foute can_id op de canbus, waardoor de verzonden frames niet het juiste extended ID hadden stom maar ben blij dat het nu werkt
Ik heb idd ook dimmers, dat wordt nog even zoeken…
Bedankt voor je hulp!
Ja, als je kijkt naar mijn code, dan weet je hoe je de omzetting kan doen…
De dimmers sturen van 0 … 90 (maar dan Hex) in waarden van 10 … Dus 00…10…20…90
Maar 90 is eigenlijk 100% brightness
Die hex waarden zet je om naar 0…255
En omgekeerd dus ook als je het wilt sturen…
Enfin de voorbeelden staan in mijn code
Hmm, ik heb de code precies niet shared van een dimmer, anyway, zie hieronder, bespaart je al wat opzoekwerk en formules… Momenteel zitten er nog input_numbers in als helpers, maar zoo ook perfect zonder kunnen
Input_number:
dimmer1:
name: Eethoek Raam
initial: 0
min: 0
max: 255
step: 1
lights:
dimmer1:
friendly_name: "Eethoek Raam"
value_template: "{{ state_attr('sensor.dobiss', '4500') != '00' }}"
level_template: "{{ ( state_attr('sensor.dobiss', '4500') | int(base=16,default=0) / 90 * 255 ) | int(default=0) }}"
turn_on:
- service: input_number.set_value
data:
entity_id: input_number.dimmer1
value: 255
- service: shell_command.dobiss
data_template:
module: 45
id: 00
power: "{{ '%02.f'%((((states('input_number.dimmer1') | float / 255 ) * 90) // 10) * 10) }}"
turn_off:
- service: input_number.set_value
data:
entity_id: input_number.dimmer1
value: 0
- service: shell_command.dobiss
data_template:
module: 45
id: 00
power: "{{ '%02.f'%((((states('input_number.dimmer1') | float / 255 ) * 90) // 10) * 10) }}"
set_level:
- service: input_number.set_value
data_template:
entity_id: input_number.dimmer1
value: "{{ brightness }}"
- service: shell_command.dobiss
data_template:
module: 45
id: 00
power: "{{ '%02.f'%((((states('input_number.dimmer1') | float / 255 ) * 90) // 10) * 10) }}"
Hierbij zonder input_number helper, weer wat code minder
dimmer1:
friendly_name: "Eethoek Raam"
value_template: "{{ state_attr('sensor.dobiss', '4500') != '00' }}"
level_template: "{{ ( state_attr('sensor.dobiss', '4500') | int(base=16,default=0) / 90 * 255 ) | int(default=0) }}"
turn_on:
- service: shell_command.dobiss
data_template:
module: 45
id: 00
power: 90
turn_off:
- service: shell_command.dobiss
data_template:
module: 45
id: 00
power: 00
set_level:
data_template:
module: 45
id: 00
power: "{{ '%02.f'%(((( brightness | float / 255 ) * 90) // 10) * 10) }}"