voilà j’ai avancé , probablement avec des solutions qui ne sont pas les plus optimums, mais ça marche
edit pour fixer le process:
-
- créer les lumières virtuelles (et les actions possibles)
- créer les scripts d’actions (turn_on, turn_off, set_level)
- ajouter le/les webhook pour les actions entrantes
- facultatif - ajouter un indicateur de temporisation - entrées de type interrupteur
- redémarrer HA pour prendre en compte tout ce qui précède
- créer (avec l’interface UI) les automatismes envois et reçois
- redémarrer HA
- créer une entrée dans lovelace pour la lampe (et facultatif pour voir l’interrupteur de temporisation)
- dans la box autre (lifedomus)
- ajouter une commande pour envoyer les ordres sur le « nom du webhook » créé avec l’intensité en paramètre
- créer les 3 variables (str: luminosité, str: valeur de reception, num; luminosité)
- créer les 2 automates envoi et reçois
détail:
j’ai créé une lampe virtuelle directement dans configuration.yaml
light:
- platform: template
lights:
virtual_light:
friendly_name: "lampe salon"
turn_on:
service: script.turn_on
entity_id: script.turn_on_virtual_light
turn_off:
service: script.turn_off
entity_id: script.turn_off_virtual_light
set_level:
service: script.set_level_virtual_light
data_template:
level: "{{ brightness | float / 255 * 100 }}"
- puis 3 script via l’éditeur de script
set_level_virtual_light:
sequence:
- service: light.turn_on
target:
entity_id: light.virtual_light
data_template:
entity_id: light.virtual_light
brightness: "{{ level | float / 100 * 255 }}"
alias: module lampe salon
mode: single
turn_on_virtual_light:
sequence:
- service: light.turn_on
target:
entity_id: light.virtual_light
data: {}
alias: allume lampe salon
mode: single
turn_off_virtual_light:
sequence:
- service: light.turn_off
target:
entity_id: light.virtual_light
data: {}
alias: eteint lampe salon
mode: single
et ajouté dans configuration.yaml les ordres d’envoi via Restfull
rest_command:
allume_lampe_salon_depuis_ha:
url: "http://192.168.1.38:8080/UniversalListen?HA_trame=ha_lampe_salon&HA_valeur=on"
eteint_lampe_salon_depuis_ha:
url: "http://192.168.1.38:8080/UniversalListen?HA_trame=ha_lampe_salon&HA_valeur=off"
module_lampe_salon_depuis_ha:
url: "http://192.168.1.38:8080/UniversalListen?HA_trame=ha_lampe_salon&HA_valeur={{state_attr('light.virtual_light', 'brightness')}}"
et enfin 2 automates via l’éditeur d’automatisme
pour envoyer les ordres d’allumage, d’extinction et de modulation de la lampe virtuelle dans HA vers la box lifedomus
pour recevoir via webhook les ordres d’allumage et d’extinction à positionner sur la lampe virtuelle
# automate pour envoyer les ordres à lifedomus
- id: '1703891181367'
alias: 'ha envoi modifie luminosité lampe salon '
description: ''
trigger:
- platform: state
entity_id:
- light.virtual_light
condition: []
action:
- service: rest_command.module_lampe_salon_depuis_ha
data: {}
mode: single
# automate pour recevoir les ordres depuis lifedomus
- id: '1703935803353'
alias: reçois modifie luminosité lampe salon
description: ''
trigger:
- platform: webhook
allowed_methods:
- POST
- PUT
- GET
local_only: true
webhook_id: module_lampe_salon
condition: []
action:
- service: input_boolean.turn_on
target:
entity_id: input_boolean.inter_lampe_salon
data: {}
- service: automation.turn_off
target:
entity_id: automation.ha_module_lampe_salon
data:
stop_actions: true
- service: light.turn_on
data_template:
entity_id: light.virtual_light
brightness: '{{ (trigger.query.luminosite | int) * 2.55 }}'
- delay:
hours: 0
minutes: 0
seconds: 2
milliseconds: 0
- service: input_boolean.turn_off
target:
entity_id: input_boolean.inter_lampe_salon
data: {}
- service: automation.turn_on
target:
entity_id: automation.ha_module_lampe_salon
data: {}
comme je le disais ce n’est probablement pas le plus optimisé, mais ça fonctionne
edit: trouvé: comment recevoir via le webhook un ordre de modulation à positionner sur la lampe virtuelle
mon ordre du côté lifedomus est un post ou un get c’est pareil :
http://ip_ha:8123/api/webhook/declenche_allume_lampe_salon&luminosite={position_luminosite}
edit: trouvé: je sais comment récupérer cet info et la positionner sur la lampe
dans l’automate de reception des ordres il y a la séquence :
data_template:
entity_id: light.virtual_light
brightness: '{{ (trigger.query.luminosite | int) * 2.55 }}'
et pour éviter l’effet boucle (modif sur l’un entraine modif sur l’autre qui entraine modif sur le 1er ect…
j’ai ajouté dans l’automate de réception des ordres une séquence qui désactive l’automate d’envoi des ordres pendant 2 secondes
#arrêt de l'automate qui va renvoyer le même ordre
- service: automation.turn_off
target:
entity_id: automation.ha_module_lampe_salon
data:
stop_actions: true
#execution du l'action
- service: light.turn_on
data_template:
entity_id: light.virtual_light
brightness: '{{ (trigger.query.luminosite | int) * 2.55 }}'
#attente de 2 secondes
- delay:
hours: 0
minutes: 0
seconds: 2
milliseconds: 0
# reactivation de l'automate qui transmet les ordres vers lifedomus
- service: automation.turn_on
target:
entity_id: automation.ha_module_lampe_salon
data: {}
tout fonctionne, allumer/éteindre/varier sur les 2 box ,avec alexa qui est actuelement couplée à lifedomus et les interrupteurs physiques en va et vient et variation.