Avant toute chose merci de (re)prendre connaissance de la charte et de la respecter.
Pour résumer :
- Avant de poser une question, je cherche si la réponse existe
- Je suis poli, courtois et je respecte tout un chacun sur le forum
- Si un post m'agace : je m'en éloigne plutôt que de répondre d'une façon qui pourrait être mal interprétée


Il n'est jamais du luxe que de rappeler des choses simples :
Courtoisie, amabilité, politesse et bonne humeur sont les maîtres mots pour un forum sympathique, bienveillant et accueillant :)

Toute la communauté vous remercie

[Plugin Tiers][Sujet Principal] Ubiquiti Unifi

Pour échanger sur les plugins classés en catégorie "Monitoring"
Shaad
Timide
Messages : 164
Inscription : 10 juin 2017, 11:14

Re: [Plugin Tiers][Sujet Principal] Ubiquiti Unifi

Message par Shaad » 10 oct. 2018, 23:18

Sinon pour en revenir au sujet, en attendant de pouvoir beta-tester le plugin à venir, j'ai enfin pris un peu de temps hier soir pour implémenter le suivi de nos smartphones Android depuis Jeedom via l'API Unifi.

But : savoir quand les smartphones sont détectés ou quand ils ne le sont plus
Pourquoi pas un simple PING ? car le ping IP n'est pas fiable du tout avec les derniers Androids (mode eco), et que mes smartphones étant sur un VLAN différent de mon Jeedom le PING ARP ne passe pas.

J'ai donc bricolé un script bash qui semble 100% fonctionnel pour le moment. Je dis bien "bricoler", je ne suis pas développeur.

Code : Tout sélectionner

#!/bin/bash

curl 'https://IP_Controleur_Unifi:8443/api/login' --data-binary '{"username":"Mon_User","password":"Mon_Password","strict":true}' --compressed --insecure -s -c /tmp/cookies.txt > /dev/null 2>&1
curl --insecure -b /tmp/cookies.txt -c /tmp/cookies.txt -s 'https://IP_Controleur_Unifi:8443/api/s/default/stat/sta' > /tmp/output.json

Redmi4_Time=`/bin/grep -ri -o -P '.{0,100}MAC_ADDRESS_SMARTPHONE.{0,0}' /tmp/output.json | /usr/bin/awk '//{print $9}'`
Current_Time=`date +%s`

LastSeen=$((Current_Time-Redmi4_Time))
Out=$((LastSeen > 500 ? 500 : LastSeen))

echo $Out
Ca me renvoie la durée en secondes depuis laquelle mon smartphone n'a pas été vue par le contrôleur (ou 500 quand il ne trouve rien).
C'est un simple script bash que j'appelle depuis le plugin Script et je stocke le résultat dans une valeur numérique.
Le script est appelé par un cron chaque minute.
Je déclare mon smartphone absent quand il est absent depuis plus de 70 secondes.

Avatar de l’utilisateur
Nebz
Actif
Messages : 3715
Inscription : 23 avr. 2017, 01:37
Localisation : Belgique

Re: [Plugin Tiers][Sujet Principal] Ubiquiti Unifi

Message par Nebz » 11 oct. 2018, 10:46

en plus du lastSeen, je pense que tu dois avoir un champ actif ou enabled ou up ou ?
Dev plugin Homebridge

- Fournissez les logs, la capture de vos commandes et vos types génériques svp
- Constructif et bonne humeur, on est pas là pour se lancer des périfs z-wave à la figure :-)

Un petit don ça fait toujours plaisir :)

Avatar de l’utilisateur
lionelb
Timide
Messages : 111
Inscription : 12 févr. 2018, 22:38
Contact :

Re: [Plugin Tiers][Sujet Principal] Ubiquiti Unifi

Message par lionelb » 21 oct. 2018, 01:23

Shaad a écrit :
10 oct. 2018, 23:18
Sinon pour en revenir au sujet, en attendant de pouvoir beta-tester le plugin à venir, j'ai enfin pris un peu de temps hier soir pour implémenter le suivi de nos smartphones Android depuis Jeedom via l'API Unifi.

But : savoir quand les smartphones sont détectés ou quand ils ne le sont plus
Pourquoi pas un simple PING ? car le ping IP n'est pas fiable du tout avec les derniers Androids (mode eco), et que mes smartphones étant sur un VLAN différent de mon Jeedom le PING ARP ne passe pas.

J'ai donc bricolé un script bash qui semble 100% fonctionnel pour le moment. Je dis bien "bricoler", je ne suis pas développeur.

Code : Tout sélectionner

#!/bin/bash

curl 'https://IP_Controleur_Unifi:8443/api/login' --data-binary '{"username":"Mon_User","password":"Mon_Password","strict":true}' --compressed --insecure -s -c /tmp/cookies.txt > /dev/null 2>&1
curl --insecure -b /tmp/cookies.txt -c /tmp/cookies.txt -s 'https://IP_Controleur_Unifi:8443/api/s/default/stat/sta' > /tmp/output.json

Redmi4_Time=`/bin/grep -ri -o -P '.{0,100}MAC_ADDRESS_SMARTPHONE.{0,0}' /tmp/output.json | /usr/bin/awk '//{print $9}'`
Current_Time=`date +%s`

LastSeen=$((Current_Time-Redmi4_Time))
Out=$((LastSeen > 500 ? 500 : LastSeen))

echo $Out
Ca me renvoie la durée en secondes depuis laquelle mon smartphone n'a pas été vue par le contrôleur (ou 500 quand il ne trouve rien).
C'est un simple script bash que j'appelle depuis le plugin Script et je stocke le résultat dans une valeur numérique.
Le script est appelé par un cron chaque minute.
Je déclare mon smartphone absent quand il est absent depuis plus de 70 secondes.
Bonsoir,
J'ai essayé ton script (je suis encore moins développeur que toi), bref j'ai toujours un 500...
https://www.canaletto.fr
Pi3 / RFPlayer / ZiBase / Visonic / Oregon / Chacon / /X2D / Xiaomi / Unifi / VMWare ESXi / Kodi / Emby / HDHomeRun & more...

Répondre

Revenir vers « [Catégorie] Monitoring »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 1 invité