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
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.
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
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” ?
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
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) }}