Les Carnets de Byfeel domotique , Objets connectés , DIY , Programmation, Nouvelles Technologies ….

NotifHeureXL avec Home Assistant

Cet article , explique comment utiliser le NotifHeureXL , avec Home Assistant. Le NotifHeure , utilise le protocole MQTT ou HTTP pour communiquer. Dans cet article , je vais me concentrer sur le fonctionnement avec MQTT via home Assistant.

En prérequis , il faut avoir installé un broker MQTT sur votre réseau.

Configuration du Broker dans le NotifHeureXL

Au démarrage , MQTT n’est pas activé. Il faut se rendre dans le menu Admin et cliquez sur Configuration.

Dans la partie communication , cocher l’option « client MQTT ».

Remplir les champs suivants :

  • IP serveur MQTT ( Obligatoire ) : Adresse IP de votre Broker MQTT ( ex: 192.168.1.10 )
  • login MQTT ( optionnel ) : A renseigner si authentification nécessaire / vide si connexion anonyme
  • Mot de passe MQTT ( optionnel ) : A renseigner si authentification.
  • Numéro de port ( Par défaut 1883 ) : A modifier si besoin.
  • Temporisation des publications MQTT ( par défaut 120 s ) : Intervalle de publication des Etats NotifheureXL
    • Etat Seconde
    • Etat Horloge
    • Etat Luminosité
    • Si présent :
      • Capteur température
      • Capteur Humidité
      • Etat LED
    • Si un des états est modifié , une publication immédiate est faite ( sauf pour la partie température et humidité ).

Puis Clic sur bouton SAUVEGARDER. Le NotifHeureXL va redémarrer pour activer le mode client et tester la connexion.

Clic sur l’onglet MQTT de la page d’accueil du NotifHeure :

Si le test de connexion est réussi , un message OK est affiché. Les topics créés par le notifHeure sont affiché en bas de page. Ils sont au nombre de 3. Dans le cadre bleu une explication , afin de savoir comment les utiliser.

  • Send Notif : Pour l’envoi des notifications
    • byfeel/NotifheureXL/2234540/salon/message ( la partie 2234540/salon correspond à l’id unique de votre NotifHeureXL et son emplacement défini par le nom donné .
  • Set Options : Pour modifier les Options du NotifHeureXL
    • byfeel/NotifheureXL/2234540/salon/options
  • Get State : Pour récupérer les infos du notifHeure ( c’est celui ci qui est publié toutes les 120 secondes par défaut )
    • byfeel/NotifheureXL/2234540/salon/state

Intégration Home Assistant – Les entités :

Il y a deux possibilités d’intégrer les Options et états du notifheure sous Home Assistant .

1) Méthode Manuelle :

En configurant un par un toutes les options du notifHeure. Par exemple création d’un switch MQTT pour activer ou désactiver l’affichage des secondes . Dans le fichier configuration.yaml ou switch.yaml .

### NOTIFHEURE switch secondes  ( dans fichier switch.yaml ) 
### si options switch:!include switch.yaml dans fichier configuration.yaml

  - platform: mqtt
    name: "switch secondes notif salon"
    state_topic: 'byfeel/NotifheureXL/2234540/salon/state'
    command_topic: "byfeel/NotifheureXL/2234540/salon/options"
    value_template: "{{ value_json.sec }}"
    payload_on: '{"sec":"true"}'
    payload_off: '{"sec":"false"}'
    state_on: true
    state_off: false

Pour le switch : Affichage / masquage horloge il suffit de remplacer sec par hor , et ainsi de suite pour les autres options.

Pour la partie capteur ( température et humidité ) si option présentent.

## exemple dans sensors.yaml
## NOTIFHEURE sensor
   - platform: mqtt
     state_topic: 'byfeel/NotifheureXL/2234540/salon/state'
     name: 'humidite notif salon'
     device_class: 'humidity'
     unit_of_measurement: '%'
     value_template: '{{ value_json.humidity }}'
   - platform: mqtt
     state_topic: 'byfeel/NotifheureXL/2234540/salon/state'
     name: 'Temperature notif salon'
     device_class: 'temperature'
     unit_of_measurement: '°C'
     value_template: '{{ value_json.temperature }}'

Pour la LED ou Neopixel si present :

# Exemple light dans lights.yaml
  - platform: mqtt
    name:Led notifheure Salon
    schema: template
    command_topic: "byfeel/NotifheureXL/2234540/salon/options"
    state_topic: 'byfeel/NotifheureXL/2234540/salon/state'
    command_on_template: >
      {"led": "true"
      {%- if brightness is defined -%}
      , "ledint": {{ brightness }}
      {%- endif -%} 
      }
    command_off_template: "{'led':'false'}"
    state_template: "{{ value_json.ledState }}"
    brightness_template: "{{ value_json.brightnessLed }}"

2) Méthode automatique

Afin de gagner du temps , j’ai mis en place un topic dédié à la création auto des entités du notifheureXL dans home assistant.

Pour activer ce mode , il faut retourner dans la page de configuration du NotifHeureXL et cocher la case « Activer publication pour MQTT discovery ».

Il est possible de modifier le prefix , par défaut dans Home Assistant c’est « homeassistant« . Puis Sauvegarder.

Une fois activé , l’information apparait dans l’interface du NotifHeureXL , onglet MQTT .

La configuration est envoyé , lors du démarrage du NotifHeureXL. Il est possible de forcer l’envoie en cliquant sur le bouton « Envoie config vers HA » dans la Zone Bleue.

Si vous utilisez le Broker intégré à home assistant et que vous êtes passé par l’intégration automatique , il suffit d’activer l’option suivante :

Si vous avez configuré , via le fichier de configuration.yaml. Plus d’information sur cette page.

# Exemple configuration.yaml
mqtt:
  discovery: true
  discovery_prefix: homeassistant

Les entités du nouveau NotifHeureXL , sont disponible dans dans le menu entités de Home Assistant ( il est possible de filtrer l’affichage en recherchant les entités commençant par notif_ )

Il suffit de les réunir dans une carte sous l’interface graphique « lovelace » de Home Assistant.

exemple de carte NotifHeureXL

Intégration Home Assistant – Publier une Notification :

Pour publier une notification sur le NotifHeureXL via home assistant , il faut utiliser le service mqtt.publish. Il est possible de tester le service « en live » dans les outils de développement de HA, je sélectionne le service mqtt.publish.

Quand le service est sélectionné , un exemple des paramétres est indiqué.

Au minimum , il suffit de renseigner les deux champs suivants :

  • topic : Le topic sur lequel est envoyé le message
    • byfeel/NotifheureXL/2234540/salon/message
  • payload: la chaine json , contenant le message et les éventuels options
    • « {msg:’hello depuis HA via Mqtt’} »

La notification « hello depuis HA via MQTT » doit défiler sur votre NotifHeureXL .

Il est possible de créer un script , afin de faciliter l’utilisation du service , sans avoir à renseigner le topic , à chaque fois.

## exemple depuis fichier script.yaml
## script pour notifier sur un notifHeure prédéfini. 
notify_notifheure_salon:
    sequence:
      - service: mqtt.publish
        data_template:
          payload: '{"msg":"{{ message }}","opt":"{{ options }}"}'
          topic: byfeel/NotifheureXL/2234540/salon/message
          retain: false
          qos: 1

l’utilisation de ce script est très simple , il suffit de renseigner le champs message et le champs options si besoin.

Exemple :

ou avec options ( ici une pause de 5 secondes et affichage dans la zone 1 )

Si vous avez plusieurs NotifHeure sur votre réseau , il est préférable de centraliser les appels des différents NotifHeureXL depuis un script plus généraliste.

Ce script a les paramètres suivants :

  • message : La notification à envoyer
  • options : Les options d’affichage ( optionnel )
  • target: Le notifHeureXL concerné par la notification ( optionnel , si défaut convient )
##################################
############ script.yaml #########
###################################
##### script notifHeure
####  - message : Notification a envoyer   ( obligatoire )
####  - options : Les options d'affichage ( optionnel )
####  - target : Quel notifHeure  ( par défaut le bureau )
####################################
notify_notifheure:
    sequence:
      - service: mqtt.publish
        data_template:
          payload: '{"msg":"{{ message }}","opt":"{{ options }}"}'
          topic: >
           {% if target == "bureau" %}
           byfeel/NotifheureXL/42ffdc/bureau/message
           {% elif target =="salon" %}
            byfeel/NotifheureXL/2234540/salon/message
           {% else %}
  ### Par défaut dans le bureau si aucune target précisé
           byfeel/NotifheureXL/42ffdc/bureau/message
           {% endif %}
          retain: false
          qos: 1

Pour l’utiliser : exemple , afficher « hello » en mode FIX sur le notifHeure Bureau.

Il est trés simple d’intégrer ce service , au sein d’un automatisqme dans Home Assistant . Par exemple appel depuis Automation , dans la partie action.

ce qui donne l’automatisation suivante ( notifie si porte garage est ouverte depuis plus de 5 minutes )

## exemple dans automation.yaml
- id: '1592838144779'
  alias: notify notifHeure sonnette
  description: envoi une notification sur pression sonnette sur afficheur bureau
  trigger:
  - event_data:
      entity_id: switch.sonnette
    event_type: button_pressed
    platform: event
  condition: []
  action:
  - data:
      message: On sonne au portail
      target: bureau
    service: script.notify_notifheure

Rappels sur les options possibles pour les notifications:

  • nzo : Numéro de Zone si plusieurs zones ( 0,1,2 ….zone-1 )
  • audio: Volume si MP3 installé
  • num: numéro de la piste à jouer ( Buzzer ou MP3 )
  • ledfx: effet pour Led si installé ( voir interface notifHeure pour liste des effets )
  • color: Couleur de la led si Neopixel
  • loop: répéter x fois l’effet led
  • ledlum: luminosité de la led ou neopixel
  • flash ou breath : effet préprogrammé pour led ou neopixel
  • intnotif ou lum: intensité de la notification ( de 0 à 15 )
  • speed: vitesse de défilement
  • pause: temps de pause en fin de notification
  • fx: Numéro d’effet pour affichage notification ( si texte à affiché inférieur à affichage écran )
  • anim: Numéro d’animation avant affichage ( si texte à affiché inférieur à affichage écran )
  • cycle: Répétition de l’affichage x fois
  • type: Type affichage ( INFO,FIX,PAC,ARROW,ROLL) numéro ou Majuscule.
  • fi et fo et fio : effet fx pour l’entrée et la sortie de l’affichage ( si fio=3 alors fi=3 et fo=3 )
  • important: flag le document sur important , pour historique

2 commentaires sur “NotifHeureXL avec Home Assistant”

Les commentaires sont fermés.