Dobiss2mqtt

Heb je een value_template gedefinieerd? Deze zorgt voor de state van je lamp… Ik had alle waardes van alle lampen in 1 sensor staan, die ik had gebruik voor alle lampen

Dat is deze neem ik aan?
Het rare is van die erboven werkt het wel vlekkeloos.

Ja, en dan moet je zorgen dat je value template van de light matcht, je kan het valideren met de template editor in HA

De status komt anders binnen van de ene lamp die wel werkt 0308 tegenover de andere 030B die niet werkt.

image

Lijkt geen string te zijn? Anders string can maken in dat script?

Zal ergens iets gemist hebben bij het aanpassen van jouw script vrees ik.

def set_attribute(sensor_name, attribute, value):
    response = requests.get(url_states + sensor_name, headers=headers)
    msg = json.loads(response.text)
    msg['attributes'][attribute] = value
    payload = json.dumps({'state':  msg['state'], 'attributes': msg['attributes']})
    requests.post(url_states + sensor_name, headers=headers, data=payload)
    
def background():
    bus = can.interface.Bus(bustype='socketcan', channel='can0', bitrate=125000)
    while True:
        message = bus.recv()
        data = "[{}]".format(message.dlc)
        data = ""
        for i in range(0,message.dlc):
            data += " {:02X}".format(message.data[i])
        data = str(data.strip())
        _LOGGER.warning(data)
        if not message.data.hex()[2:4] == "99":  ## 57 programma
            if not message.data.hex()[2:4] == "58":
                if not message.data.hex()[2:4] == "5b":
                    try:
                        set_attribute(sensor_name, message.data.hex()[0:4], str(message.data.hex()[4:6]))
                    except:
                        pass

deze vermoed ik:

set_attribute(sensor_name, message.data.hex()[0:4], str(message.data.hex()[4:6]))

aanpassen naar:

set_attribute(sensor_name, str(message.data.hex()[0:4]), str(message.data.hex()[4:6]))

Dan is het eerste gedeelte ook een string

Merci, zal het wel morgen pas kunnen testen.

Nu is de status wel ok maar toch om de een of andere reden krijgt HA dit niet goed door en gaat de lamp in HA weer uit. Fysiek gaat de lamp wel aan.
En om ze uit te zetten moet ik heel snel ze aan en weer uit zetten.
Hieronder kan je zien dat de status word aangepast van 030b:00 naar 030b:01

chrome_KWQctxzWXx

kan je me de code eens laten zien van je light? hoe heb je de value_template geconfigureerd?

Zeker:

      bureau_1:
        friendly_name: "bureau 1"
        value_template: "{{ state_attr('sensor.dobiss', '030B') == '01' }}"
        turn_on:
          - service: shell_command.dobisscan
            data_template:
              master: "3"
              module: "03"
              id: "0B"
              power: "01"
        turn_off:
          - service: shell_command.dobisscan
            data_template:
              master: "3"
              module: "03"
              id: "0B"
              power: "00"

Doe de lamp eens aan, en gooi deze regel dan eens in de “developer tools - template”

Geeft hij dan een “True” terug?

{{ state_attr('sensor.dobiss', '030B') == '01' }}

Nee geeft False

Probeer eens:

{{ state_attr('sensor.dobiss', '30B') == '01' }}

Lijk erop dat hij dat nog steeds aanziet ans een integer precies? want het staat nog steeds niet tussen quotes zoals het geval was bij de “0308” ?

bij mij staat het trouwens ook allemaal zonder quotes in de sensor…

Enige wat ik wel anders zie is dat het een Kleine b is tegenover een B
Maar als ik dat test dan geeft hij het ook terug als false

ja, dat gaat het idd niet zijn, is volgens mij niet hoofdletter gevoelig

hmm, vreemd, snap het niet, zou goed moeten zijn

Het rare is dat die andere wel perfect werkt :smile:

light:
  - platform: template
    lights:
      keukeneiland:
        friendly_name: "4 op een rij"
        value_template: "{{ state_attr('sensor.dobiss', '0308') == '01' }}"
        turn_on:
          - service: shell_command.dobisscan
            data_template:
              master: "3"
              module: "03"
              id: "08"
              power: "01"
        turn_off:
          - service: shell_command.dobisscan
            data_template:
              master: "3"
              module: "03"
              id: "08"
              power: "00"

      bureau_1:
        friendly_name: "bureau 1"
        value_template: "{{ state_attr('sensor.dobiss', '030B') == '01' }}"
        turn_on:
          - service: shell_command.dobisscan
            data_template:
              master: "3"
              module: "03"
              id: "0B"
              power: "01"
        turn_off:
          - service: shell_command.dobisscan
            data_template:
              master: "3"
              module: "03"
              id: "0B"
              power: "00"

ja, het heeft iets te maken met integer vs string

die 0308 zal hij aanzien als een integer, en 030b als string

wat geeft de template editor terug als je dit erin zet?

{{ state_attr('sensor.dobiss', '0308') }}
{{ state_attr('sensor.dobiss', '030b') }}
{{ state_attr('sensor.dobiss', 0308) }}
{{ state_attr('sensor.dobiss', 030b) }}