Theengs passerelle BLE to MQTT

Bonjour,

jusqu’à présent, je n’avais qu’1 (Theengs) gateway. Donc pour capter mes nut, je faisais un sensor :

mqtt:
  sensor:
    - name: "Nut Guillaume (RSSI)"
      unique_id: nut_guillaume_rssi
      unit_of_measurement: "dBm"
      state_topic: "home/TheengsGateway/BTtoMQTT/xxxxxxxxxxxxxxx"
      value_template: "{{ value_json.rssi | is_defined }}"

    - name: "Nut Emma (RSSI)"
      unique_id: nut_emma_rssi
      unit_of_measurement: "dBm"
      state_topic: "home/TheengsGateway/BTtoMQTT/xxxxxxxxxxxxxxx"
      value_template: "{{ value_json.rssi | is_defined }}"

Et ensuite un template :

template:
  - binary_sensor:
      - name: "Nut Guillaume"
        unique_id: nut_guillaume
        state: >-
          {% if ( ( ( ( as_timestamp(now()) - as_timestamp(states.sensor.nut_guillaume_rssi.last_changed) ) | int ) | round(0) ) | int ) < ( states('input_number.variable_ble_timeout') | int ) %}
            on
          {% else %}
            off
          {% endif %}
      - name: "Nut Emma"
        unique_id: nut_emma
        state: >-
          {% if ( ( ( ( as_timestamp(now()) - as_timestamp(states.sensor.nut_emma_rssi.last_changed) ) | int ) | round(0) ) | int ) < ( states('input_number.variable_ble_timeout') | int ) %}
            on
          {% else %}
            off
          {% endif %}

Et je transformais ca avec une automation pour en faire des devices tracker :

alias: Nut vers device_tracker
description: Permet de créer un device_tracker à partir d'un sensor
triggers:
  - entity_id: binary_sensor.nut_guillaume
    trigger: state
    id: nut_guillaume
  - entity_id: binary_sensor.nut_emma
    trigger: state
    id: nut_emma
  - trigger: homeassistant
    event: start
    id: restart
conditions: []
actions:
  - if:
      - condition: trigger
        id:
          - nut_guillaume
          - restart
    then:
      - data:
          dev_id: nut_guillaume
          location_name: |-
            {% if states('binary_sensor.nut_guillaume') == 'on' %}
              home
            {% elif states('binary_sensor.nut_guillaume') == 'off' %}
              not_home
            {% else %}
               unknown
            {% endif %}
          source_type: router
        action: device_tracker.see
  - if:
      - condition: trigger
        id:
          - nut_emma
          - restart
    then:
      - data:
          dev_id: nut_emma
          location_name: |-
            {% if states('binary_sensor.nut_emma') == 'on' %}
              home
            {% elif states('binary_sensor.nut_emma') == 'off' %}
              not_home
            {% else %}
               unknown
            {% endif %}
          source_type: router
        action: device_tracker.see
mode: queued
max: 10

Le probème c’est que maintenant j’ai une gateway en plus… Donc mon nut peut-être soit dans state_topic: "home/TheengsGateway/BTtoMQTT/xxxxxxxxxxxxxxx"soit dans state_topic: "home/OMG_ETAGE1/BTtoMQTT/xxxxxxxxxxxxxxx".

Ma question est de savoir comment chercher au 2 endroits (AMHA la méthode sale), soit faire du discovery avec mes nut…
Mais il ne sont pas reconnus en temps que périphérie. Du coup si quelqu’un a une idée, je prends.

Bonjour,

Tu peux essayer de remplacer le nom de la passerelle par la wild card MQTT ‹ + ›:
state_topic: "home/+/BTtoMQTT/xxxxxxxxxxxxxxx"

Merci !

Mais il n’y a pas moyen de faire plus simple et que mes nut soient reconnus ? Car le MiBand de mon fils passe en device_dracker lui…

Vos NUT ne sont-ils pas reconnus et ne sont-ils pas automatiquement device_trackers?

Nous avons mis en place la découverte automatique pour NUTS, mais nous avons tellement de modèles que le vôtre n’est peut-être pas encore inclus.

Pouvez-vous donner quelques exemples de messages MQTT de votre NUT, avec PUBLISH_ADVDATA défini sur 1/ON?

C’est ça.

MACXXXXXXXXX = {"name": "nut", "id": "MAC:XX:XX:XX:XX:XX", "rssi": -72, "servicedatauuid": "180a", "servicedata": "MACXXXXXXXXX"}

La seule différence c’est :

  • servicedatauuid en plus;
  • servicedata qui reprend le MAC.

Après pour moi le fait le plus parlant, c’est "name": "nut".

Pour info j’ai des nut3.

J’ai ajusté le décodeur Nut pour reconnaître également votre Nut 3.

Vous pouvez télécharger la version de développement d’OpenMQTTGateway demain à l’adresse

et cela sera également inclus dans la prochaine mise à jour de Theengs Gateway.

1 « J'aime »