Aller au contenu

Quick App - Monitoring UDM Pro SE et Pro


mprinfo

Messages recommandés

Quick App - Monitoring UDM Pro SE

 

 

 

Ce quick App et destiné aux UDM Pro SE et Pro

Aucune image

Voici les Informations qu'il retourne :

 

  • Etat de la connexion Internet
  • Nom de l'UDM Pro SE
  • La version du firmware de l'UDM Pro SE
  • Date Heure demarrage UDM Pro SE
  • Charge CPU de l'UDM Pro SE
  • Temperature du CPU de l'UDM Pro SE
  • La version du contrôleur UNIFI
  • Taille disque Interne
  • Utilisation du disque interne en Mo et %
  • Etat et la version du controleur UNIFI
  • Le nombre de Switch UNIFI totale
  • Le nombre d' AP UNIFI totale
  • Le nombre de Cilients Totale connectés
  • Le nombre de Clients Filaire connectés
  • Le nombre de Clients WIFI connectés
  • Le nombre de Clients invités connectés
  • une étiquette est réservée à l'affichage des messages d'erreur

 

 

UDM.jpg.e78754d6e409ee649b709b8eaaf53ebe.jpg

 

 

 

Saisir :

 

Adresse IP de l'USM

Nom d'utilisateur

Mots de passe

Prequency : le taux de rafraichissement

 

2.jpg.53b3f15e6213f73567434bbe9cecb53b.jpg       3.jpg.be15f35a2c3a8e21a55eaa85056bae5e.jpg

 

 

 

 

 

 

Version 1.00 UDM_Pro_Ver_1.00.fqa

 

Documentation API UDM Pro ICI

 

 

NOTE: All calls are relative to the base controller URL

Calls return both a web status as well as JSON formatted output. 200 codes indicate a successful call and other indicate errors. I am using the placeholder `{site}` for the site name which for many installations will be `default`.

# Login required
{ "data" : [ ] , "meta" : { "msg" : "api.err.LoginRequired" , "rc" : "error"}}
# Call was a success but returned no values
{ "data" : [ ] , "meta" : { "rc" : "ok"}}
# NOTE: If meta contains a count it's because the data values have been truncated
'meta': {'count': 4818, 'rc': 'ok'} # from the api/s/{site}/stat/event endpoint

UDM Pro API

NOTE: There are two critical differences between Unifi controllers and the UDM Pro's API:

  • The login endpoint is /api/auth/login
  • All API endpoints need to be prefixed with /proxy/network (e.g. https://192.168.0.1/proxy/network/api/s/default/self)

Examples

curl -k -X POST --data '{"username": "usr", "password": "$pw"}' -b cookie.txt https://udmp:443/proxy/network/api/auth/login
# responds with 'Not Found'
curl -k -X GET -b cookie.txt https://udmp/proxy/network/api/s/default/self
# responds with proper json

Controller Endpoints

These are REST calls that can be made without a site context. I do not believe any updates ( PUT ) can be called on these endpoints.

Path Method Notes
status GET Returns some very basic server information - This appears to be the only endpoint that can be reached without an authentication
 { "data" : [ ] , "meta" : { "rc" : "ok" , "server_version" : "5.7.23" , "up" : true , "uuid" : "0e727580-ffff-ffff-ffff-403dcd5a7bd4"}}  
api/login POST requires dict of username, password, and optionally remember=true for long-running sessions. Returns 200 for success and a cookie that is your session. NOTE: On UDM Pros this is api/auth/login.
api/logout POST destroys the sever side session id which will make future attempts with that cookie fail
api/self GET Logged in user NOTE: On UDM Pros this is api/users/self.
api/self/sites GET Get basic information for all sites on this controller
api/stat/sites GET Same as above with an additional information on health and new alerts for each site
api/stat/admin GET List administrators and permissions for all sites
api/system/poweroff POST Turns off the UDM NOTE: X-CSRF-Token header required (from e.g. the login response) + Super Admin access rights
api/system/reboot POST Reboot the UDM NOTE: X-CSRF-Token header required (from e.g. the login response) + Super Admin access rights

Site Endpoints

All commands are presumed to be prefixed with api/s/{site}

Path Method Notes
stat/health GET Health status of the site
self GET Logged in user
stat/ccode GET List of country codes
stat/current-channel GET List of all RF channels based on the site country code
stat/sysinfo GET Some high-level information about the controller
stat/event GET List site events by most recent first, 3000 result limit
rest/event GET List site events by oldest, no limit?
stat/alarm GET List alarms by most recent, 3000 result limit?
rest/alarm GET List alarms by oldest, no limit?
stat/sta GET List of all _active_ clients on the site
rest/user GET/POST/PUT List of all configured/known clients on the site
stat/device-basic GET List of site devices with only 'adopted', 'disabled', 'mac', 'state', 'type' keys, useful for filtering on type
stat/device GET/POST Detailed list of all devices on site. (Controller only) Can be filtered by POSTing {"macs": ["mac1", ... ]}
stat/device/{mac} GET (UDM only) Detailed list of device filtered by mac address
rest/device/{_id} PUT Updates to devices get PUT here, why?
rest/setting GET/PUT Detailed site settings, updating requires adding key and _id to path for PUT ../setting/{key}/{_id}
stat/routing GET All active routes on the device
rest/routing GET/PUT User defined routes
rest/firewallrule GET/PUT User defined firewall rules. This does not show auto-generated rules
rest/firewallgroup GET/PUT User defined firewall groups.
rest/wlanconf GET/PUT List WLANs, edit current WLANs and create new WLANs
rest/wlanconf/{_id} PUT Update configuration of current WLAN designated by '_id'
rest/tag GET/PUT? Tagged macs
stat/rogueap GET/POST Neighboring APs optional json post 'within' = seen in the last x hours
stat/sitedpi GET/POST DPI stats requires type="by_app" or "by_cat"
stat/stadpi GET/POST DPI stats requires type="by_app" or "by_cat" optionally filtered macs=[…, ]
stat/dynamicdns GET DynamicDNS information and status like current ip, last changed, and status
rest/dynamicdns GET/PUT DynamicDNS configuration
rest/portconf GET Switch port profiles
stat/spectrumscan GET Get RF scan results, can be for a specific mac by appending to endpoint
rest/radiusprofile GET/POST/PUT Radius profiles
rest/account GET/POST/PUT Radius accounts
rest/portforward GET List all port forwards configured on the site
stat/report/{interval}.{type} POST Intervals are '5minutes', 'hourly', and 'daily'. Report types are 'site', 'user', and 'ap'. Must specify attributes to be returned 'bytes', 'wan-tx_bytes', 'wan-rx_bytes', 'wlan_bytes', 'num_sta', 'lan-num_sta', 'wlan-num_sta', 'time', 'rx_bytes', 'tx_bytes'. Can be filtered with 'macs': […]

Callable commands

Posting to the endpoint api/s/{site}/cmd/<manager> with the json {"cmd": "command"} you can invoke commands on the controller.

Manager Call Notes
evtmgt archive-all-alarms  
sitemgr add-site desc = Descriptive name ( required ), name = shortname ( in the URL )
sitemgr delete-site name = short name ( required )
sitemgr update-site desc = Descriptive name ( required )
sitemgr get-admins List all administrators and permission for this site
sitemgr move-device mac = device mac ( required ), site_id = 24 digit id ( required )
sitemgr delete-device mac = device mac ( required )
stamgr block-sta mac = client mac ( required )
stamgr unblock-sta mac = client mac ( required )
stamgr kick-sta Disconnect: mac = client mac (required )
stamgr forget-sta Forget a client ( controller 5.9.x only )
stamgr unauthorize-guest Unauthorize a client device, mac = client mac (required)
devmgr adopt mac = device mac ( required )
devmgr restart mac = device mac ( required )
devmgr force-provision mac = device mac ( required )
devmgr power-cycle mac = switch mac ( required ), port_idx = PoE port to cycle ( required )
devmgr speedtest Start a speed test
devmgr speedtest-status get the current state of the speed test
devmgr set-locate mac = device mac ( required ) blink unit to locate
devmgr unset-locate mac = device mac ( required ) led to normal state
devmgr upgrade mac = device mac ( required ) upgrade firmware
devmgr upgrade-external mac = device mac ( required ), url = firmware URL ( required )
devmgr migrate mac = device mac ( required ), inform_url = New Inform URL to push to device (required)
devmgr cancel-migrate mac = device mac ( required )
devmgr spectrum-scan mac = device mac ( ap only, required ) trigger RF scan
backup list-backups list of autobackup files
backup delete-backup filename ( required )
system backup create a backup. This appears to backup to a fixed location in the filesystem
stat clear-dpi resets the site wide DPI counters
  • Like 6
  • Thanks 1
Lien vers le commentaire
Partager sur d’autres sites

C'est assez simple à faire

J'ai pas peu avoir la température elle n'est pas présente dans l api ni sur l'interface Web donc ?

Moi je viens de prendre un UDM Pro Se c'est top mais sur dimensionner par rapport à mes besoins.

Je viens aussi de passer en full unifi avant j'avais juste un switch poe et 3 bornes

J'ai donc viré mon Cisco SG350-28 que j'ai remplacé par un USW-24-Pro

Par contre plus cher c'est la facture électrique je suis à plus de 200w/h en consommation dans mon armoire réseau





Envoyé de mon BLA-L29 en utilisant Tapatalk

  • Like 1
Lien vers le commentaire
Partager sur d’autres sites

c'est cool! j'ai pris l'udm pour essayer, j'ai hésité avec la version pro et idem surdimensionné pour mon usage mais bon :2:j'ai aussi pris comme toi un usw-24-pro plus 2  flex mini qui sont en route et j'attends que le lite 8 poe soit dispo pour le garage. Et oui la conso pique un peu :D

EDIT:

j'oubliais j'ai également pris une nanoHD, je prendrai un peu plus tard 1 ou 2 autres AP pour l'extérieur puis idem pour l'intérieur. 

Modifié par TonyC
Lien vers le commentaire
Partager sur d’autres sites

je viens de faire une petite correction sur le qa

 

Si tu perds la connection internet le QA plante car la valeur de l'IP WAN et égale à nil

 

voici le correctif

                      if wan_ip == nil then
                         wan_ip = "Connection INTERNET Perdu"
                      end

A mettre en dessous de cette ligne (152)

                   if SysUDM['meta']['rc'] == "ok" then
                      local wan_ip = SysUDM['data'][2]['wan_ip']

 

  • Thanks 1
Lien vers le commentaire
Partager sur d’autres sites

Alors là c'est top ! penses tu pouvoir faire un switch off sur un port POE ? je n'ai pas encore eu le temps de trop me plonger dedans, je suis en plein recâblage, j'espère pouvoir y passer plus de temps le we prochain. 

Lien vers le commentaire
Partager sur d’autres sites

Pour le switch sur un port POE ou c'est faisable mais il faut passé par l'api du contrôleur

 

Avec ce QA je suis sur l'api de OS unifi

 

voici une nouvelle version du QA pourrais tu tester STP

 

version 1.0

 

Fichier QA version 1.0 : UDM_Pro_Ver_1.00.fqa

 

 

Lien vers le commentaire
Partager sur d’autres sites

Paris ne c'est pas fait en un jour

j'ai commencé à tirer mes premiers câbles en 2010, en 2012 j'ai installer mon armoire réseau et au fur et mesure que je refais une pièce je tire de nouveau câbles

Cette années je pense que je vais ajouter une dizaines de prises réseau car je dois refaire les sols du RDC

  • Like 1
Lien vers le commentaire
Partager sur d’autres sites

Salut @mprinfo quelques news, j'ai reçu et installé l'UDM pro, j'attends de recevoir un AP en début de semaine avant de tout rebasculer dessus.

Ca remplacera donc mon UDM qui fera un retour à l'envoyeur, que j'ai prévenu et chez qui j'ai repris la version pro.

Pour mémoire l'UDM (pas pro) fait aussi office d'AP, c'est donc la raison pour laquelle je dois attendre l'AP avant de terminer la migration.

En ce qui concerne la dernière version du QA il plante avec la version en prod de l'UDM don pas la version pro.

Il report sur des ports Ethernet qui sont au nombre de 8 sur la version pro et 4 sur la version "lite", j'ai en attendent patché à l'arrache car dès que la version pro sera up, ce problème sera résolu.

Avant de déconnecté mon UDM si j'y pense je remettrai la version originale du QA pour tracer les messages d'erreurs que je n'ai pas conservé, ça pourra être utile pour ceux qui auront la version UDM "lite".

Sinon pour les petits correctifs, il faudrait intervertir le résultat dans les labels mémoire et stockage interne qui dans ton exemple donne pour la mémoire 4.04Gb/1.7GB, il faudrait avoir l''inverse 1.7GB/4.04GB et comme évoqué idem sur le stockage interne.

Pour l'instant rien d'autre à signalé, je continuerai à regarder lorsque la version pro sera up and running !

Lien vers le commentaire
Partager sur d’autres sites

@tonyC le titre est bien explicite "UDM Pro ou UDM Pro SE" après je pourrai l'adapter pour qu'il soit compatible avec un UDM si il y a de la demande

 

Moi j'ai commencé avec un udm pro et après j'ai vu qu'il existait l'udm pro SE, j'ai donc gardé mon udm pro, 4 jours avant de le retourner

J'ai voulu être raisonnable j'ai donc acheté un USG PRO 4 pour 130 euros, j'avais une VM UNIFI sur mon GEN8 tout était parfait

Puis 5 jours plus tard j'ai trouvé un UDM Pro SE pour 400 euros avec facture il avait 1 mois

J'ai donc revendu mon USG PRO :D

 

Personnellement je t'aurais conseillé l'udm pro SE qui a plusieurs avantage, les 8 port sont 2.5GB et POE et le WAN RJ45 et 2.5GB, après il y a un ssd 128GO mais utilisable qu'avec protect donc inutile pour moi

 

L'avantage d'avoir du 2.5GB c'est que je ne suis plus dans l'optique d'acheter un switch 2.5GB comme par exemple USW enterprise. Pour une utilisation perso je pense que 8 ports en 2.5GB c'est largement suffisant perso je vais en utilisé 2, 1 pour mon nas et 1 pour mon PC.

 

les différences importantes entre USW-PRO et USW-Enterprise

 

USW-PRO = 1GB et POE++

USW-Enterprise = 2.5GB et POE+

 

dommage que la version enterprise ne soit pas POE++

 

Je ne passe pas mon NAS en 10GB car les cartes ont tendances à chauffer et la consommation électrique explose

 

Je me suis pris 2 SFP+ Fibre car a priori en cuivre la consommation d'un SFP+ est de 5 à 7w en fibre 0.5w

 

Si tu n'as pas beaucoup de devices POE l'udm suffit donc la aussi ca baissera la consommation électrique

 

Exemple de consommation a vide

USW-16- POE = 6w

UDM pro SE = 26w

USW-24-Pro = 10w

US-24-250w POE = 28w

 

j'ai donc virer mon US-24-250w et j'ai garder USW-24-Pro cela ma fait gagner environ 30w

 

Sachant que je consomme 200w 24/24 cela me coute environ 300 euros

 

Pour les modifs du QA je vais faire cela de suite

 

Par contre j'arrive a remonter la consommation des ports POE, il faudrait que l'on puisse affiché cela dans des childs mais la je sais pas trop comment faire j'ai joué avec les childs il y a longtemps

 

J'arrive aussi a remonter l'état des devices UNIFI pareil on pourrait faire des childs

 

Par contre je maitrise l'api UNIFI avec les GET mais pour les PUT ou POST la je sèche, je voudrais pouvoir allumé ou éteindre un port poe je sais ou modifier mais je sais pas comment faire

 

 

  • Like 1
Lien vers le commentaire
Partager sur d’autres sites

voici le correctif pour l'affichage

 

ligne 142

                 --memoire
                 self:updateView("memoire", "text", "Memoire : "
                    ..(math.floor((data["memory"]["total"]/10000))/100)-(math.floor((data["memory"]["available"]/10000))/100).."GB / "
                    ..(math.floor((data["memory"]["total"]/10000))/100).."GB - Utilisée : "
                    ..(math.floor((data["memory"]["total"]-data["memory"]["available"])/data["memory"]["total"]*1000)/10).." %"
                    )

                  --Internal Storage 
                  self:updateView("storage", "text", "Stockage Interne : "
                    ..(math.floor(data["storage"][1]["used"]/10000)/100).." Mo / "
                    ..(math.floor(data["storage"][1]["size"]/10000)/100).." Mo - : "
                    ..(math.floor(data["storage"][1]["used"]/data["storage"][1]["size"]*1000)/10).." %"
                    )

 

  • Thanks 1
Lien vers le commentaire
Partager sur d’autres sites

@mprinfo pour le POE j'utilise mon switch 24, sinon tu as absolument raison, il vaudrait mieux directement partir sur la version SE, mais cette dernière n'est pas encore officiellement commercialisée, tu as eu de la chance d'en toper une surtout à ce prix !

  Merci pour le patch pour réaligner les labelles !

Si tu as une api officielle de l'ubiquiti je serrais intéressé, à l'occase je jetterai un oeil pour commander les ports POE, avant d'utiliser l'unifi j'avais un switch poe sur lequel j'avais mes cameras, que je n'allumais qu'en cas d'absence ou dès que les volets se fermaient, c'était pas mal pour économiser qlqs watts...

 

Lien vers le commentaire
Partager sur d’autres sites

@TonyC il n'y a pas de doc officielle pour l'api.

 

Par contre tu peux regarder ici Documentation API UDM Pro ICI

 

 

NOTE: All calls are relative to the base controller URL

Calls return both a web status as well as JSON formatted output. 200 codes indicate a successful call and other indicate errors. I am using the placeholder `{site}` for the site name which for many installations will be `default`.

# Login required
{ "data" : [ ] , "meta" : { "msg" : "api.err.LoginRequired" , "rc" : "error"}}
# Call was a success but returned no values
{ "data" : [ ] , "meta" : { "rc" : "ok"}}
# NOTE: If meta contains a count it's because the data values have been truncated
'meta': {'count': 4818, 'rc': 'ok'} # from the api/s/{site}/stat/event endpoint

UDM Pro API

NOTE: There are two critical differences between Unifi controllers and the UDM Pro's API:

  • The login endpoint is /api/auth/login
  • All API endpoints need to be prefixed with /proxy/network (e.g. https://192.168.0.1/proxy/network/api/s/default/self)

Examples

curl -k -X POST --data '{"username": "usr", "password": "$pw"}' -b cookie.txt https://udmp:443/proxy/network/api/auth/login
# responds with 'Not Found'
curl -k -X GET -b cookie.txt https://udmp/proxy/network/api/s/default/self
# responds with proper json

Controller Endpoints

These are REST calls that can be made without a site context. I do not believe any updates ( PUT ) can be called on these endpoints.

Path Method Notes
status GET Returns some very basic server information - This appears to be the only endpoint that can be reached without an authentication
 { "data" : [ ] , "meta" : { "rc" : "ok" , "server_version" : "5.7.23" , "up" : true , "uuid" : "0e727580-ffff-ffff-ffff-403dcd5a7bd4"}}  
api/login POST requires dict of username, password, and optionally remember=true for long-running sessions. Returns 200 for success and a cookie that is your session. NOTE: On UDM Pros this is api/auth/login.
api/logout POST destroys the sever side session id which will make future attempts with that cookie fail
api/self GET Logged in user NOTE: On UDM Pros this is api/users/self.
api/self/sites GET Get basic information for all sites on this controller
api/stat/sites GET Same as above with an additional information on health and new alerts for each site
api/stat/admin GET List administrators and permissions for all sites
api/system/poweroff POST Turns off the UDM NOTE: X-CSRF-Token header required (from e.g. the login response) + Super Admin access rights
api/system/reboot POST Reboot the UDM NOTE: X-CSRF-Token header required (from e.g. the login response) + Super Admin access rights

Site Endpoints

All commands are presumed to be prefixed with api/s/{site}

Path Method Notes
stat/health GET Health status of the site
self GET Logged in user
stat/ccode GET List of country codes
stat/current-channel GET List of all RF channels based on the site country code
stat/sysinfo GET Some high-level information about the controller
stat/event GET List site events by most recent first, 3000 result limit
rest/event GET List site events by oldest, no limit?
stat/alarm GET List alarms by most recent, 3000 result limit?
rest/alarm GET List alarms by oldest, no limit?
stat/sta GET List of all _active_ clients on the site
rest/user GET/POST/PUT List of all configured/known clients on the site
stat/device-basic GET List of site devices with only 'adopted', 'disabled', 'mac', 'state', 'type' keys, useful for filtering on type
stat/device GET/POST Detailed list of all devices on site. (Controller only) Can be filtered by POSTing {"macs": ["mac1", ... ]}
stat/device/{mac} GET (UDM only) Detailed list of device filtered by mac address
rest/device/{_id} PUT Updates to devices get PUT here, why?
rest/setting GET/PUT Detailed site settings, updating requires adding key and _id to path for PUT ../setting/{key}/{_id}
stat/routing GET All active routes on the device
rest/routing GET/PUT User defined routes
rest/firewallrule GET/PUT User defined firewall rules. This does not show auto-generated rules
rest/firewallgroup GET/PUT User defined firewall groups.
rest/wlanconf GET/PUT List WLANs, edit current WLANs and create new WLANs
rest/wlanconf/{_id} PUT Update configuration of current WLAN designated by '_id'
rest/tag GET/PUT? Tagged macs
stat/rogueap GET/POST Neighboring APs optional json post 'within' = seen in the last x hours
stat/sitedpi GET/POST DPI stats requires type="by_app" or "by_cat"
stat/stadpi GET/POST DPI stats requires type="by_app" or "by_cat" optionally filtered macs=[…, ]
stat/dynamicdns GET DynamicDNS information and status like current ip, last changed, and status
rest/dynamicdns GET/PUT DynamicDNS configuration
rest/portconf GET Switch port profiles
stat/spectrumscan GET Get RF scan results, can be for a specific mac by appending to endpoint
rest/radiusprofile GET/POST/PUT Radius profiles
rest/account GET/POST/PUT Radius accounts
rest/portforward GET List all port forwards configured on the site
stat/report/{interval}.{type} POST Intervals are '5minutes', 'hourly', and 'daily'. Report types are 'site', 'user', and 'ap'. Must specify attributes to be returned 'bytes', 'wan-tx_bytes', 'wan-rx_bytes', 'wlan_bytes', 'num_sta', 'lan-num_sta', 'wlan-num_sta', 'time', 'rx_bytes', 'tx_bytes'. Can be filtered with 'macs': […]

Callable commands

Posting to the endpoint api/s/{site}/cmd/<manager> with the json {"cmd": "command"} you can invoke commands on the controller.

Manager Call Notes
evtmgt archive-all-alarms  
sitemgr add-site desc = Descriptive name ( required ), name = shortname ( in the URL )
sitemgr delete-site name = short name ( required )
sitemgr update-site desc = Descriptive name ( required )
sitemgr get-admins List all administrators and permission for this site
sitemgr move-device mac = device mac ( required ), site_id = 24 digit id ( required )
sitemgr delete-device mac = device mac ( required )
stamgr block-sta mac = client mac ( required )
stamgr unblock-sta mac = client mac ( required )
stamgr kick-sta Disconnect: mac = client mac (required )
stamgr forget-sta Forget a client ( controller 5.9.x only )
stamgr unauthorize-guest Unauthorize a client device, mac = client mac (required)
devmgr adopt mac = device mac ( required )
devmgr restart mac = device mac ( required )
devmgr force-provision mac = device mac ( required )
devmgr power-cycle mac = switch mac ( required ), port_idx = PoE port to cycle ( required )
devmgr speedtest Start a speed test
devmgr speedtest-status get the current state of the speed test
devmgr set-locate mac = device mac ( required ) blink unit to locate
devmgr unset-locate mac = device mac ( required ) led to normal state
devmgr upgrade mac = device mac ( required ) upgrade firmware
devmgr upgrade-external mac = device mac ( required ), url = firmware URL ( required )
devmgr migrate mac = device mac ( required ), inform_url = New Inform URL to push to device (required)
devmgr cancel-migrate mac = device mac ( required )
devmgr spectrum-scan mac = device mac ( ap only, required ) trigger RF scan
backup list-backups list of autobackup files
backup delete-backup filename ( required )
system backup create a backup. This appears to backup to a fixed location in the filesystem
stat clear-dpi resets the site wide DPI counters
 
  • Like 1
Lien vers le commentaire
Partager sur d’autres sites

Voila la façon pour récupérer le token avec curl

curl  --insecure --cookie ${cookie} --cookie-jar ${cookie} --header "Content-Type: application/json" \
  --request POST \
  --data '{"username":"Username","password":"Password"}' \
https://192.168.1.1/api/auth/login

 

Lien vers le commentaire
Partager sur d’autres sites

<?php
/**
 * Exemple d'utilisation de l'API PHP pour activer le PoE des ports de commutation sélectionnés sur "off" ou "auto"
 *
 * contribué par : @Kaltt
 * description : un cas d'utilisation de ce script consiste à désactiver le PoE du port auquel une caméra est connectée afin d'éteindre la caméra
 *
 * utilisation : si le fichier est appelé via une URL Web, il doit être appelé comme suit : update_switch_poe-mode.php?poe_mode=off
 * Si le fichier est appelé via la ligne de commande, il doit être appelé comme suit : php update_switch_poe-mode.php off
 * Les valeurs peuvent être "off" ou "auto"
 */

/**
 * en utilisant le chargeur automatique de compositeur
 */
require_once  'vendor/autoload.php' ;

/**
 * inclure le fichier de configuration (placez-y vos identifiants, etc. s'ils ne sont pas déjà présents)
 * voir le fichier config.template.php pour un exemple
 */
require_once  'config.php' ;

/**
 * le site à utiliser pour se connecter au contrôleur
 */
$ site_id = '<nom court d'un site auquel les informations d'identification utilisées ont accès>' ;

/**
 * l'adresse MAC de l'appareil AC-IW à reconfigurer
 */
$ device_mac = '<entrez l'adresse MAC>' ;

/**
 * $lanports est un tableau qui définit quels ports doivent être modifiés
 */
$ ports_lan = [ 6 ];

/**
 * Il s'agit de la fonction qui lit la configuration actuelle du port et modifie la valeur de poe_mode pour les ports définis dans $lanports
 */
fonction  update_ports ( $ running_config , $ ports , $ poe_mode ) {
    /**
     * Mettre à jour les ports déjà non par défaut
     */
    $ running_config_count = count ( $ running_config );
    for( $ je = 0 ; $ je < $ running_config_count ; $ je ++){
        if ( in_array ( $ running_config [ $ i ]-> port_idx , $ ports )){
            $ running_config [ $ i ]-> poe_mode = $ poe_mode ;
            unset( $ ports [ array_search ( $ running_config [ $ i ]-> port_idx , $ ports )]);
        }
    }

    $ add_conf = [] ;
    foreach ( $ ports  as  $ port ){
        $ add_conf [] = [
            'port_idx' => $ port ,
            'poe_mode' => $ poe_mode
        ] ;
    }

    return  array_merge ( $ running_config , $ add_conf );
}

$ unifi_connection = new  UniFi_API \ Client ( $ controlleruser , $ controllerpassword , $ controllerurl , $ site_id , $ controllerversion , false );
$ set_debug_mode    = $ unifi_connection -> set_debug ( faux );
$ loginresults      = $ unifi_connection -> connexion ();
$ data              = $ unifi_connection -> list_devices ( $ device_mac );
$ device_id         = $ data [ 0 ]-> device_id ;
$ current_conf      = $ data [ 0 ]-> port_overrides ;

/**
 * Cela lit les valeurs fournies via l'URL ou dans la ligne de commande, si rien n'est défini, poe_mode sera défini sur "auto"
 */
si ( isset ( $ _GET [ 'poe_mode' ])) {
    $ poe_mode = $ _GET [ 'poe_mode' ];
} elseif ( isset ( $ argv [ 1 ])) {
    $ poe_mode = $ argv [ 1 ];
} sinon {
    $ poe_mode = 'auto' ;
}

$ new_ports_config = [
    'port_overrides' => update_ports ( $ current_conf , $ lanports , $ poe_mode )
] ;

$ update_device = $ unifi_connection -> set_device_settings_base ( $ device_id , $ new_ports_config );

si (! $ update_device ) {
    $ erreur = $ unifi_connection -> get_last_results_raw ();
    echo  json_encode ( $ erreur , JSON_PRETTY_PRINT );
}

echo  json_encode ( $ update_device , JSON_PRETTY_PRINT );

 

Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...