Dobiss2mqtt

@pergola.fabio niet om je jaloers te maken of zo, maar dit is 1 van de recentste toevoegingen in de nieuwe dobiss NXT server. Nu kan je een drukknop configuereren als up/down, en dus precies zoals je vraag is, 1 knop gebruiken om ‘op - stop - neer - stop’ te implementeren. De relais module zelf zal de status bijhouden…

Jammer , maar er moet een manier zijn met de oudere systemen :-). Ik zoek nog even verder uit, desnoods gebruik ik de canbus module wel :slight_smile:

Heb jij trouwens een upgrade gedaan naar NXT of heb je een nieuw systeem pas geïmplementeerd?

ik heb net gebouwd, en dus de nieuwe dobiss NXT ineens geimplementeerd :slight_smile:

ik had trouwens gedacht om zulks ook in mijn systeem zelf te implementeren. Ik zou vlaggen gebruikt hebben om de laatste richting op te slaan. Is dat iets wat in het oudere systeem ook kan, vlaggen als viruele outputs en condities?

Hmm, zegt me niet direct iets

@spobo , misschien kan je in thread start even een anker leggen naar deze reply, alsook een linkje naar deze mooie feature : Dobiss NXT support

Anyway, zoals door een aantal gevraagd, hierbij een update van mijn code die ik gebruik voor Dobiss
Is een beetje werk, maar je moet dan geen gebruik maken van MQTT en je kan makkelijk dingen bijvoegen , zoals bv lichtcel, programmaties, canbus stuff …

Ik heb een update gedaan van de code omwille van:

  1. compactere code, niet meer voor elk commando aparte shell commando’s, ik maak nu gebruik van attributen
  2. Google Assistant, sinds een bepaalde versie van HA , werkt google via parallele commando’s ipv sequentieel, ik ben dus afgestapt van het netcat principe,
    Het probleem was dat als je meerdere lampen/switchen/rollruiken tegelijk wilt bedienen via Google, er dan parellel NC commandos gestuurd werden naar de dobiss controller, met als gevolg dat de dobiss dit niet kon verwerken
  3. in bijlage nog eens de API documentatie , alsook de 3 .py scriptjes die ik gebruik , zoals jullie weten ik heb de SX Evolution, de meeste van jullie hebben al de PRO, dus je moet je hex codes aanpassen
    https://www.dropbox.com/s/a55e1jsrt7a2eys/dobiss.zip?dl=0
#secrets.yaml
# dobissserver, dit is mijn TCP server, dobiss- & dobissreceive-, deze 2 sturen of lezen commandos, 
# dobiss_state & dobiss_state_dimme, zijn de state commandos, om direct het icoontje aan te passen, moet je niet wachten op de poll sensor ( gebruik ik in de template lights/switchen/dimmers)

dobiss_server-: nohup python3 /config/python_scripts/dobiss_server.py $1 > /dev/null 2>&1 &
dobissreceive-: python3 /config/python_scripts/dobissreceive.py 
dobiss-: python3 /config/python_scripts/dobisssend.py {{module}} {{id}} {{power}}
dobiss_state-: "curl -k -X POST -H \"Authorization: Bearer XXXXXX\" -d '{\"state\": \"{{power}}\",\"attributes\": {\"assumed_state\": true,\"friendly_name\": \"{{name}}\",\"icon\": \"{{icon}}\"}}' http://127.0.0.1:8123/api/states/{{api}}"
dobiss_state_dimmer-: "curl  -k -X POST -H \"Authorization: Bearer XXXXX\" -d '{\"state\": \"{{power}}\",\"attributes\": {\"brightness\": {{brightness}}, \"assumed_state\": true,\"friendly_name\": \"{{name}}\",\"icon\": \"{{icon}}\", \"supported_features\": 1}}' http://127.0.0.1:8123/api/states/{{api}}"

#shell_command.yaml
dobiss_server: !secret dobiss_server-
dobissreceive: !secret dobissreceive-
dobiss: !secret dobiss-
dobiss_state: !secret dobiss_state-
dobiss_state_dimmer: !secret dobiss_state_dimmer-



#Deel 1: Polling (states sensor), ik heb nu een eigen soort TCP server opgezet, dit is gewoon een py bestand dat ik start via een automation, bij de start/reboot van HA

#automations.yaml

#in dobissserver.py, hierin IP adres veranderen van dobiss, alsook de HEX strings voor de states van je lichten...

- alias: Dobiss Server
  initial_state: 'on'
  trigger:
    - platform: homeassistant
      event: start
  action:
    - service: shell_command.dobiss_server

#sensor.yaml  

# Polling doe ik om de 5 sec, hetgeen wat ik poll staat in dobiss_server.py
  - platform: command_line
    command: !secret dobissreceive-
    name: prog
    scan_interval: 
	
	
	
#Deel 2: Template lights en switchen , dis is gewoon copy paste werk :-)

#customize.yaml

light.keukeneiland:
  icon: mdi:lightbulb-on

#light.yaml / switch.yaml
# Elke turn on / off bestaat uit 2 services, 1 service voor effectief lamp aan/uit te doen, 2de service is het state commando, puur om direct het icoontje aan te passen, zodat je niet 5 sec moet wachten op de poll sensor
# Uiteraard hier de juiste relais + id aanpassen
# => dit stukje "{{ states.sensor.prog.state[12:14] == '01' }}" , komt uit de hex string die ik aanstuur via de poll sensor, indien je result 01 krijgt, dan is de lamp aan :-) , is voor elke lamp/switch dus anders, je kan dit uitlezen uit de lang string die je terug krijgt
- platform: template
  lights:
         
    keukeneiland:
      friendly_name: "Keuken Eiland"
      value_template: "{{ states.sensor.prog.state[12:14] == '01' }}"
      turn_on:
        - service: shell_command.dobiss
          data_template:
            module: 41
            id: 04
            power: 01
        - service: shell_command.dobiss_state
          data_template:
            power: "on"
            name: "Keuken Eiland"
            icon: "mdi:lightbulb-on"
            api: "light.keukeneiland"
      turn_off:
        - service: shell_command.dobiss
          data_template:
            module: 41
            id: 04
            power: 00
        - service: shell_command.dobiss_state
          data_template:
            power: "off"
            name: "Keuken Eiland"
            icon: "mdi:lightbulb-on"
            api: "light.keukeneiland" 
			
# Deel 3: covers, dobiss weet de states niet van mijn covers, dus ik heb hiervoor input booleans gemaakt, deze zijn persistent na een herstart van HA
# is eigenlijk ook copy/paste werk van een template light, alleen de state is anders


input_boolean:
  eetkamer:
    name: Eetkamer
	
#automations.yaml => ik gebruik 2 automations per rolluik om de input_boolean op on/off te zetten , rolluik omhoog/omlaag state

- alias: Screen Eetkamer omhoog
  initial_state: 'on'
  trigger:
    - platform: state
      entity_id: sensor.prog
  condition:
    - condition: template
      value_template: "{{ states.sensor.prog.state[80:82] == '01' }}"
  action:
  - service: input_boolean.turn_on
    entity_id: input_boolean.eetkamer
    
- alias: Screen Eetkamer omlaag
  initial_state: 'on'
  trigger:
    - platform: state
      entity_id: sensor.prog
  condition:
    - condition: template
      value_template: "{{ states.sensor.prog.state[82:84] == '01' }}"
  action:
  - service: input_boolean.turn_off
    entity_id: input_boolean.eetkamer
	
#covers.yaml
- platform: template
  covers:
    google_eetkamer:
      friendly_name: Eetkamer
      value_template: "{{ is_state('input_boolean.eetkamer', 'on' ) }}"
      open_cover:
        - service: shell_command.dobiss
          data_template:
            module: 53
            id: 13
            power: 01
      close_cover:
        - service: shell_command.dobiss
          data_template:
            module: 53
            id: 14
            power: 01
      stop_cover:
        - service: shell_command.dobiss
          data_template:
            module: 53
            id: "1B"
            power: 01
			
# Deel 4 , dimmers, onderstaande moet nog verbeterd worden, ik maak gebruik van input_dimmers, maar het zou ook zonder kunnen normaal, dus als iemand een idee heeft :-), dat spaart dan een extra service uit
# de brightness waarde van dobiss is helaas niet 0 ... 255 , maar is bij evolution 00 ... 90 , en dan ook nog eens in HEX gepresenteerd, dus ik maak gebruik van forumules om dit in 2 richtingen om te zetten, zowel sturen als ontvangen

#input_number.yaml

dimmer1:
    name: Eethoek Raam
    initial: 0
    min: 0
    max: 255
    step: 1
	
#automations.yaml

#lights.yaml

    dimmer1:
      friendly_name: "Eethoek Raam"
      value_template: "{{ states.sensor.prog.state[36:38] != '00' }}" 
      level_template: "{{ ( states('sensor.prog')[36:38] | int(base=16) / 90 * 255 ) | int }}"

      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) }}"     
        - service: shell_command.dobiss_state_dimmer
          data_template:
            power: "on"
            brightness: "{{states('input_number.dimmer1')}}"
            name: "Eethoek Raam"
            icon: "mdi:spotlight"
            api: "light.dimmer1"         
      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) }}"       
        - service: shell_command.dobiss_state_dimmer
          data_template:
            power: "off"
            brightness: "{{states('input_number.dimmer1')}}"
            name: "Eethoek Raam"
            icon: "mdi:spotlight"
            api: "light.dimmer1"         
      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) }}"          
        - service: shell_command.dobiss_state_dimmer
          data_template:
            power: "on"
            brightness: "{{states('input_number.dimmer1')}}"
            name: "Eethoek Raam"
            icon: "mdi:spotlight"
            api: "light.dimmer1"

en probeer uwe lijn zo eens te maken, dan hebt ge geen syntax error

{{ ‘%02.f’%((states(‘input_number.dimmer1’) | float / 255 ) * 1) }}

want deez %02.f , dat was voor de decimalen op te schuiven, die hebt ge mss niet nodig , dan moet ge doe x1 ook niet doen

Hello,

for all of you using esphome on my repository.
The todays commit will break your configs!

Just replace all “can_ext_id” with “use_extended_id” and it will work.

Daniel

Thnx for the info!

tried it, but that gives invalid yaml?

this one works :

    on_frame:
    - can_id: 0x100ff00
      use_extended_id: true

You are right, I updated my post to reduce confusion.

1 Like

Hallo,

Ik heb HA op een raspberry pi.
Installatie thuis is een Ambiance pro, maar het is me niet meteen duidelijk hoe ik de add on in HA krijg.
Of plaats ik die map er via ssh op?

Alvast bedankt voor de reacties.

Mvg,
LeFox

Nee, is een aparte, je moet die repository toevoegen…

Maar ik gebruik hem zelf niet, gebruik mijn eigen custom code

Ik krijg ‘Invalid add-on repository’ wanner ik de repository wil toevoegen (https://github.com/SpoBo/dobiss2mqtt.git)
Of gebruik ik de verkeerde url?

Denk dat je de extensie .git er niet moet achter zetten

Of probeer ook eens zonder de “dobiss2mqtt”

Nee, alle varianten blijven dezelfde error geven.

Mss heb je een niet supported systeem, denk er idd nu aan dat @spobo het niet voor alle os’ beschikbaar had

Hey @pergola.fabio. Heb je nog altijd een oplossing nodig voor je rolluiken met 1 knop te kunnen bedienen? Ik heb dit in mijn dobiss nxt integratie gestoken door de laatste richting bij te houden, en dan zelf de ‘toggle’ actie te implementeren. Dat werkt nu goed, enkel als ik HA herstart weet die dus niet of er ondertussen via dobiss zelf iets veranderd is. Maar dat is bijzaak voor mij. Ik gebruik verschillende zigbee knoppen, en het is wel handig van maar 1 knop/actie te moeten gebruiken voor het openen en sluiten (en stoppen) van rolluiken…
Ik vermoed dat je hetzelfde zou moeten kunnen door template covers te gebruiken, waarbij je de laatste richting ook opslaat in een Boolean of zo…

ja , ik gebruik idd template covers, met als input boolean de state , dus na een herstart is het idd nog hetzelfde

Het bijhouden van de richting heb je die in je Dobiss NXT gestoken of in HA?
Ik heb zelf geen NXT, maar kan je in Dobiss geen flag gebruiken om de richting bij te houden? En dan de state van die flag in HA in je template cover gebruiken?
Bij een herstart zou je ook niet eenmalig alle statussen van je dobiss entiteiten terug kunnen uitlezen om alles up to date te zetten in HA?