NEWS
JSON Tabelle - Clients aus Fritzbox auslesen
-
danke an @MCU für die vorlage - kommt von: https://forum.iobroker.net/post/949240
das script erzeugt eine json tabelle (z.b json inventwo widget) für die vis aus der Fritzbox ausgelesen (active Clients)
- im javascript setting muss xml-js als zusätzliche node angegeben werden
- es muss der tr064 adapter für die fritzbbox installiert sein
- datenpunkt(zeichenkette) muss selber angelegt und im script eingetragen werden
-
Hallo @liv-in-sky, ich weiß nicht ,ob Du oder jemand anders noch das Script nutzt.
Wäre es vielleicht möglich, (falls es Deine Zeit erlaubt) dass Du es auf "httpGet" umstellen kannst?
Ich habe alles versucht, leider ohne Erfolg.Vielen Dank
-
Das Script ist ja wild. Hier eine überarbeitete Version (nicht getestet mangels Hardware):
// @liv-in-sky 18.02.2023-17:13 // @haus-automatisierung.com 07.11.2024-12:12 // dank an @MCU für die Vorlage const convert = require('xml-js'); const wlan = '1'; // 1 -> 2.4GHz (für diesen Fall missverständlich) const fritzCommandDP = 'tr-064.0.states.command'; const fritzResultDP = 'tr-064.0.states.commandResult'; const ipFritzBox = '192.168.178.1'; const dataPoint = '0_userdata.0.FritzBoxDevices'; const cmdHostListPath = { service: `urn:dslforum-org:service:Hosts:${wlan}`, action: 'X_AVM-DE_GetHostListPath', params: {} }; async function sendCMD() { setState(fritzCommandDP, JSON.stringify(cmdHostListPath)); const obj = await once({ id: fritzResultDP }); const erg = JSON.parse(obj.state.val); httpGet(`http://${ipFritzBox}:49000${erg['NewX_AVM-DE_HostListPath']}`, { timeout: 3000 }, (err, response) => { if (!err) { const theNameDate = `NAME (Last Update: ${formatDate(Date.now(), 'SS:mm - TT.MM.')})`; const result = JSON.parse(convert.xml2json(response.data, { compact: true, spaces: 2, ignoreAttributes:true })); const tableData = []; const resultList = result.List; for (let i = 0; i < resultList.Item.length; i++) { if (resultList.Item[i].Active['_text'] == 1) { tableData.push({ [theNameDate]: resultList.Item[i].HostName['_text'], IP: resultList.Item[i].IPAddress['_text'], MAC: resultList.Item[i].MACAddress['_text'], }); } } setState(dataPoint, { val: JSON.stringify(tableData), ack: true }); } else { console.log(err); } }); } schedule('*/5 * * * *', sendCMD); sendCMD();
-
Vielen herzlichen Dank für Deine Bemühungen.
Es scheint aktuell zu laufen!Danke!