Dobiss lights integration

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 :slight_smile:

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 :slight_smile:

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 :slight_smile:

Het foute can_id op de canbus, waardoor de verzonden frames niet het juiste extended ID hadden :stuck_out_tongue: stom maar ben blij dat het nu werkt :slight_smile:
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 :slight_smile:

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 :slight_smile:

    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) }}"