NEWS
Unifi WLAN Script
-
@dslraser magst du mal testen
async function getClients() { return new Promise(async (resolve, reject) => { dlog("nur mal so"); if(!loggedIn) await login().catch((e) => reject(e)); let resp = await request.get({ url: unifi_controller + "/api/s/default/stat/sta/", headers: { Cookie: cookies.join("; ") } }).catch((e) => { dlog("getStatus reject " + e); reject(e) }); dlog("got response " + JSON.stringify(resp)); dlog(typeof resp); log("--------------------- " + resp); resp = JSON.parse(resp); //log("--------------------- " + resp); dlog(resp.meta); dlog(resp.meta.rc); dlog(resp.data[2].hostname); log(resp.data.length); for (var i = 0; i < resp.data.length; i++) { log(resp.data[i].hostname); } }); }
diese funktion hineinkopieren und am ende getClients(); aufrufen - dann sollten die geräte gezeigt werden
-
@liv-in-sky sagte in Unifi WLAN Script:
getClients();
alle da. Nur die "dummen Alexen" haben keinen eindeutigen Namen
-
@liv-in-sky
das sind aber alle Geräte in diesem Netz, nicht nur WLAN, also auch LAN Geräte -
@dslraser - ja ich weiß - bei mir auch - aber die abfrage für diesen wert verlangt keine wifi_id - ich müßte also die wifi_id noch in die abfrage selbst verarbeiten - arbeite noch dran
wie sollen wir die liste mit den clients machen - damit sie gut in die vis passen - eigentlich brauchen wir 2 listen für jedes netzwerk
das mit dem voucher kannte ich nicht .- siehe gerade youtube um zu lernen
-
@liv-in-sky sagte in Unifi WLAN Script:
das mit dem voucher kannte ich nicht
sieht ungefähr so aus....(den halben Voucher habe ich nicht im Bild)
Die haben alle dieses Format
26124-22157 -
hab da was missverstanden - es werden nur die wlan geräte angezeigt von allen wlannetzwerken in getClients() - keine lan-geräte - die info hat er ja garnicht - bei mir jedenfalls
im log ist auch die anzahl zu sehen - bei mir 38 wlangeräte
-
@liv-in-sky
bei mir sind WLAN und LAN Geräte in der Liste. Anzahl stimmt auch. -
@dslraser siehst du die auch wenn du im browser den unifi controller aufrufst ? - du hast doch eine fritzbox - oder einen unifi router ?
-
@liv-in-sky
Fritzbox und dahinterWobei doppel NAT schon deaktiviert ist.
-
@liv-in-sky sagte in Unifi WLAN Script:
siehst du die auch wenn du im browser den unifi controller aufrufst ?
ja, da sehe ich die auch
-
@dslraser oh mann - warum sollte es einfach sein
lass das script mal laufen und poste das lange log unter dem script - darin müßte man irgendwie erkennen, in welchen netzwerk der client ist - damit könnte man dann eine aufteilung machen eine liste:
clientname - macadresse - netzwerkname
evtl in html formatiert und in einen string geschrieben ?
-
@liv-in-sky
Ich bin erst vor kurzem in die Unifi Welt eingestiegen. Bei der ersten Einrichtung hatte ich hervorragenden Support (telefonisch und per WhatsApp) von @Samson71 .
Über dieses Script hier wird er sich besonders freuen, da er es haben wollte und auch nicht wusste wie es geht. -
@liv-in-sky sagte in Unifi WLAN Script:
lass das script mal laufen und poste das lange log
Mache ich gern später, jetzt gibt es erst mal Abendessen.
-
@dslraser lass dir schmecken
ersetze später die logzeile in setClients() (in der for schleife) mit
log(resp.data[i].hostname + " --- " + resp.data[i].essid + " --- " + resp.data[i].mac);
da sieht man die mac adresse und die wifi id zum hostnamen - wäre das was ?
-
@dslraser mal als beispiel - html tabelle als string abgespeichert in datenpunkt:
ACHTUNG meine Datenpunkte sind anders als bei dir - bitte anpassen
createState("WLANUnifi.Wifi_Clients", { name: 'Unifi Wifi Status', role: 'string', read: true, write: true, });
async function getClients() { return new Promise(async (resolve, reject) => { dlog("nur mal so"); if(!loggedIn) await login().catch((e) => reject(e)); let resp = await request.get({ url: unifi_controller + "/api/s/default/stat/sta/", headers: { Cookie: cookies.join("; ") } }).catch((e) => { dlog("getStatus reject " + e); reject(e) }); dlog("got response " + JSON.stringify(resp)); dlog(typeof resp); dlog("--------------------- " + resp); resp = JSON.parse(resp); //log("--------------------- " + resp); dlog(resp.meta); dlog(resp.meta.rc); dlog(resp.data[2].hostname); dlog(resp.data.length); var clientListe = "<table>"; for (var i = 0; i < resp.data.length; i++) { dlog(resp.data[i].hostname + " --- " + resp.data[i].essid + " --- " + resp.data[i].mac); clientListe = clientListe.concat("<tr><td>"+resp.data[i].hostname+" </td><td>"+resp.data[i].essid+"    </td><td>"+resp.data[i].mac+"</td></tr>"); dlog(clientListe); } setState("javascript.2.WLANUnifi.Wifi_Clients", clientListe.concat(clientListe+"</table>")); }); }
-
@liv-in-sky
also ich bekomme eine Liste, damit
nun wollte ich diese Liste mit dem gleichen Befehl alle 10 Sekunden aktualisieren, aber dazu bin ich iwi zu blöd...
-
@dslraser ich habe getClient(); in den teil geschrieben, der alle 10 sekunden aktualisiert wird -nur ich mach das alle 20 minuten
setInterval(async () => { getStatus(); setTimeout(function () { getClients(); }, 8000); /* let state = await getStatus(); setState("javascript.2.WLANUnifi.Wifi_Status", state, true); log(state);*/ }, 1200000); // Aktualisiert alle 10 Sekunden.
-
@liv-in-sky
und ich hatte die Funktion nochmals gemacht/kopiert für getClient, das ging dann wahrscheinlich schief -
Wenn ich an die Voucher fürs Gäste Wlan dran kommen könnte wäre das gigantisch!
-
mein ganzes script - auch mit anzahl der clients - es fehlen die oberen variablen - die mit den passwörtern