OpenMQTTGateway + Nut Find 3

Bonjour

Alors je suis dans une phase de découverte de OMG mais aussi de NodeRed.
Je viens de flasher un ESP32 avec la version 1.0.0 d’OMG

Je cherche à capter un fois et une seule fois mon tag nut find 3 lors de la sortie de la zone de détection et même chose lors de mon entrée dans la zone.

Pour ce faire j’utilise enfin je tente d’utiliser NodeRed avec un flow de la sorte :

En paramétrage de l’ESP j’ai mis une liste blanche ainsi que d’autres paramètres :

{"white-list":["xx:xx:xx:xx:xx:xx",.........."yy:yy:yy:yy:yy:yy","discovery":false,"hasspresence":true,"interval":59000}
Code du Flow
[
    {
        "id": "9e7218e06f5f6d73",
        "type": "mqtt in",
        "z": "12b9999b.7256a6",
        "name": "BLE NUT 2",
        "topic": "OMG/OMG_Test/BTtoMQTT/D3E2D7F95ED9",
        "qos": "0",
        "datatype": "auto-detect",
        "broker": "dcad48e57379680d",
        "nl": false,
        "rap": true,
        "rh": 0,
        "inputs": 0,
        "x": 110,
        "y": 2200,
        "wires": [
            [
                "e4a564a7ec84163d",
                "6897612d0dcdfa90"
            ]
        ]
    },
    {
        "id": "e4a564a7ec84163d",
        "type": "timeouttrigger",
        "z": "12b9999b.7256a6",
        "ontimeouttype": "str",
        "ontimeoutval": "absent",
        "duration": "65",
        "units": "s",
        "passthrough": true,
        "name": "absent",
        "x": 290,
        "y": 2200,
        "wires": [
            [
                "b401b8f660a529ba",
                "c566ebea2807f081"
            ]
        ]
    },
    {
        "id": "c9a831a205d6e524",
        "type": "switch",
        "z": "12b9999b.7256a6",
        "name": "Si Absent",
        "property": "payload",
        "propertyType": "msg",
        "rules": [
            {
                "t": "eq",
                "v": "absent",
                "vt": "str"
            },
            {
                "t": "else"
            }
        ],
        "checkall": "true",
        "repair": false,
        "outputs": 2,
        "x": 760,
        "y": 2200,
        "wires": [
            [
                "35a5cadfda35e074",
                "bc54d2eb6b1fbc82"
            ],
            [
                "2c34854193359481",
                "f9dbeb0ed7a2daba"
            ]
        ]
    },
    {
        "id": "27e420e957267523",
        "type": "moment",
        "z": "12b9999b.7256a6",
        "name": "Jour Heure",
        "topic": "",
        "input": "",
        "inputType": "date",
        "inTz": "Europe/Paris",
        "adjAmount": 0,
        "adjType": "days",
        "adjDir": "add",
        "format": "DD/MM/YYYY à HH:mm:ss",
        "locale": "fr-FR",
        "output": "mytime",
        "outputType": "msg",
        "outTz": "Europe/Paris",
        "x": 590,
        "y": 2200,
        "wires": [
            [
                "c9a831a205d6e524",
                "0d2534918cd56c0f"
            ]
        ]
    },
    {
        "id": "b401b8f660a529ba",
        "type": "rbe",
        "z": "12b9999b.7256a6",
        "name": "Filtre Etat",
        "func": "rbe",
        "gap": "",
        "start": "",
        "inout": "in",
        "septopics": true,
        "property": "payload",
        "topi": "topic",
        "x": 440,
        "y": 2200,
        "wires": [
            [
                "27e420e957267523",
                "97107978f86b5b49"
            ]
        ]
    },
    {
        "id": "155e5627177cd29a",
        "type": "comment",
        "z": "12b9999b.7256a6",
        "name": "OMG",
        "info": "",
        "x": 90,
        "y": 2160,
        "wires": []
    },
    {
        "id": "6897612d0dcdfa90",
        "type": "debug",
        "z": "12b9999b.7256a6",
        "name": "debug 82",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "false",
        "statusVal": "",
        "statusType": "auto",
        "x": 240,
        "y": 2160,
        "wires": []
    },
    {
        "id": "c566ebea2807f081",
        "type": "debug",
        "z": "12b9999b.7256a6",
        "name": "debug 84",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "false",
        "statusVal": "",
        "statusType": "auto",
        "x": 400,
        "y": 2160,
        "wires": []
    },
    {
        "id": "97107978f86b5b49",
        "type": "debug",
        "z": "12b9999b.7256a6",
        "name": "debug 85",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "false",
        "statusVal": "",
        "statusType": "auto",
        "x": 560,
        "y": 2160,
        "wires": []
    },
    {
        "id": "0d2534918cd56c0f",
        "type": "debug",
        "z": "12b9999b.7256a6",
        "name": "debug 86",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "false",
        "statusVal": "",
        "statusType": "auto",
        "x": 720,
        "y": 2160,
        "wires": []
    },
    {
        "id": "dcad48e57379680d",
        "type": "mqtt-broker",
        "name": "Mosquitto Docker",
        "broker": "192.168.1.139",
        "port": "1883",
        "clientid": "",
        "autoConnect": true,
        "usetls": false,
        "protocolVersion": "5",
        "keepalive": "60",
        "cleansession": true,
        "birthTopic": "",
        "birthQos": "0",
        "birthRetain": "false",
        "birthPayload": "",
        "birthMsg": {},
        "closeTopic": "",
        "closeQos": "0",
        "closePayload": "",
        "closeMsg": {},
        "willTopic": "",
        "willQos": "0",
        "willPayload": "",
        "willMsg": {},
        "userProps": "",
        "sessionExpiry": ""
    }
]

Je dois passer à coté de beaucoup de chose car :

  • J’ai une message absent / présent par alternance quasi toute les minutes
  • J’ai aussi eu 2 messages identiques malgré l’intervalle de 59s mais seulement sur la présence !

Mais surtout comment faire pour ne pas avoir cette alternance de message et vraiment avoir une présence et une absence quand je sors de la zone ?

Je dois mettre au point ceci pour gérer la présence de mon fils qui n’a pas de téléphone avec un forfait data.

Merci par avance de votre aide sur le sujet


System Information

version core-2022.11.1
installation_type Home Assistant OS
dev false
hassio true
docker true
user root
virtualenv false
python_version 3.10.7
os_name Linux
os_version 5.15.74
arch x86_64
timezone Europe/Paris
config_dir /config
Home Assistant Community Store
GitHub API ok
GitHub Content ok
GitHub Web ok
GitHub API Calls Remaining 5000
Installed Version 1.28.3
Stage running
Available Repositories 1143
Downloaded Repositories 76
Home Assistant Cloud
logged_in true
subscription_expiration 1 janvier 2018 à 01:00
relayer_connected false
remote_enabled true
remote_connected false
alexa_enabled false
google_enabled false
remote_server null
can_reach_cert_server ok
can_reach_cloud_auth ok
can_reach_cloud ok
Home Assistant Supervisor
host_os Home Assistant OS 9.3
update_channel stable
supervisor_version supervisor-2022.10.2
agent_version 1.4.1
docker_version 20.10.18
disk_total 30.8 GB
disk_used 16.1 GB
healthy true
supported true
board ova
supervisor_api ok
version_api ok
installed_addons Samba share (10.0.0), File editor (5.4.1), Terminal & SSH (9.6.1), Studio Code Server (5.4.0), Check Home Assistant configuration (3.11.0), Network UPS Tools (0.11.0), Samba Backup (5.2.0), Home Assistant Google Drive Backup (0.108.4), Dropbox Sync (1.3.0), Node-RED (13.5.1), TheengsGateway (1.3.0), ESPHome (2022.10.2)
Dashboards
dashboards 3
resources 47
views 39
mode storage
Recorder
oldest_recorder_run 29 octobre 2022 à 13:39
current_recorder_run 3 novembre 2022 à 20:48
estimated_db_size 3693.72 MiB
database_engine sqlite
database_version 3.38.5
___

Hello

Quel rapport le Bluetooth et forfait data ?? je comprend pas la …

Après avec un tel tu peux installé une application ibeacon

Car il peut pas être géolocalisé avec l’app

Ensuite je veux arriver à mettre au point ceci avec le nut et pas partir sur autre chose.

Je prends note de la proposition mais je veux réutiliser ce que j’ai déjà chez moi. Ah oui en plus il a un vielle iPhone de récup

ok,

Mais pour info les nuts sont pas assez fiable…

ce déconnecte trop souvent

Alors non absolument pas
Aujourd’hui sur Jeedom avec le plugin BLEA aucun faux positif mais alors 0.
D’ailleurs s’il pouvait être MQTT se serait bien
Mon seul et unique soucis serait les batteries 1 fois par an

avec jeedom je d’accord mais avec HA pas la meme chose

Comme tu vois la stabilité de la connexion c’est pas encore ca

La ou j’vais le top de la connexion étais avec
bluetooth_le_tracker

C’est bien l’objet de mon flow NR de limiter ceci voir de l’annuler.

@1technophile je fais appel à toi car je suis toujours au même point !

via un ESP32 D1 mini je n’arrive pas avec node red à capter l’arrivée du nut et la sortie de celui ci !

Sur l’arrivée j’ai bien l’apparition du payload mais ensuite à chaque fois qu’il le détecte j’ai un autre payload et c’est pas le fonctionnement que je recherche quand mon fils arrive avec son nut sur un des ESP alors je le considère présent

Pour le départ, je n’arrive pas à faire en sorte qu’il y ait une génération d’un timeout au bout de 1 minute et un payload associé

Sur ces deux points est que tu peux me guider ?
Sur le premier je ne pense pas qu’il faille que ce soit l’antenne qui porte l’info car d’autres personne peuvent s’en servir pour une localisation dynamique dans la maison. Mais cela pourrait envoyer un payload = true par exemple au moins en plus du reste je pourrais ainsi filtrer la dessus.
Sur le second je me pose la question si l’antenne OMG ne pourrait pas généré ce payload = false en fonction d’un timeout soit en dur soit paramétrable

Merci pour tes retours

Salut,

En effet on pourrait générer ça pour les appareils reconnus

1 « J'aime »

Bonjour,

Je viens de regarder pour la présence, et en fait on peut le gérer déjà en l’état avec la fonction mqtt room presence
Il faut activer la présence avec OpenMQTTGateway avec ce switch:
image

Une fois activé, OMG va publier des messages au format room presence:
home/presence/XXYYZZAABBCC
XXYYZZAABBCC étant l’identifiant de l’ESP32

Ensuite identifier l’id de votre beacon ou sensor au format:
11:22:33:44:55:66

Et ajouter dans votre configuration.yaml le bloc ci dessous:

sensor:
  - platform: mqtt_room
    device_id: 11:22:33:44:55:66
    name: "Beacon test"
    state_topic: 'home/presence'
    timeout: 10
    away_timeout: 60

Controler le yaml et redemarrer Home Assistant.

Vous devriez voir l’entité apparaitre dans HA:

Elle peut maintenant être utilisée dans vos automations.

Bonsoir
Je check ça ce soir merci @1technophile pour l’info je suis passé à coté en cherchant à attaquer le broker via node red uniquement

Bon et bien cela semble fonctionner comme il faut

:warning: votre topic est à modifier si besoin :warning:

mes déclarations de sensor dans un fichier sensors.yaml :

- platform: mqtt_room
  device_id: 11:22:33:44:55:66
  name: "Nut Mini Jérôme"
  state_topic: "OMG/presence"
  timeout: 10
  away_timeout: 60

Ma config Antenne
image

A voir avec un maillage et plusieurs antenne dans la maison

PS le lien est cassé pour bootloader
image

1 « J'aime »

Merci pour le retour, s’il y a des points à ameliorer n’hésite pas.

Corrigé, tu n’utilises pas le web uploader?

Alors non car à chaque fois que je tente de passer par la page web ça tourne en rond à l’infini.

Le flash ne passe qu’avec esp flasher en version 3.8 et pas supérieure

Je ne sais pas si cela vient de mes esp ou non mais ça marche que comme ça

Bon maintenant que j’ai vu qu’avec 2 esp cela fonctionne plutôt bien
Je vais tester de créer un groupe pour avoir l’info présence dans tous les cas et je vais tenter un maillage plus large que mon bureau :grinning:

Il aussi que je teste Theengs Gateway sur pi zéro car j’ai des antennes externe sur clé sena avec rallonge sur PiZéro.

Le tout associé pour avoir une gestion de présence complémentaire à ce que j’ai déjà comme la géolocalisation

1 « J'aime »

Il faut que j’ajoute la presence à Theengs gateway

1 « J'aime »

Ah yes avec ça cela va simplifier les choses
Dès que tu as fait l’ajout je commence les travaux :construction:

Salut @1technophile

La partie présence sur piZéro est ok ?

Je me replonge sur le sujet, et je teste en ce moment déjà plusieurs antennes en ESP32 pour voir comment avoir l’info dans HA de manière simple.

Pour info j’ai quand même pas mal de décrochage (antenne fixe et nut fixe) :

On peut régler les phases de déconnection ? par exemple valider un nombre de fois le timeout (3 par exemple) avant de déclarer la liason KO ?

Salut,

Je pense que tu peux essayer de changer le timeout.

Les ESP32 avec OMG scannent en continue ?

Pas encore malheureusement

Je suis sur téléphone et dans les transports je te regarde ça tout à l’heure

Mais je crois oui

Comme unau l’impression que la liste blanche ne reste toujours pas en stock dans la version 1.1.1 ?
Tu proposes quoi en paramètres on va dire de base ou de départ pour ce type d’appareil ?

Car les antennes ne vont servir qu’au tag de ce type j’ai rien d’autre en BT

Alors il y a des paramètres accessible qu’en local je suppose là je suis au bureau donc je n’ai que ce qu’il y a dans HA

En interval je mettrais 300ms, c’est certain qu’à 55000ms tu as des ratés.

La liste blanche ou autre paramètres doivent être publiés avec le retain flag pour être conservés.

1 « J'aime »

Bon je viens de passer à 300ms et mettre le retain en place aussi :wink:
On va laisser tourner sur le bureau quelques jours

Les deux derniers sont un peu loin donc normal que cela pas comme il faut

Dès que pour le piZéro c’est ok je peux tester avec le BT du pi mais aussi le BT d’une clé SENA sur le pi j’ai les deux config :wink: