NEWS
Script auf mehrere Objekte + Wert Parent-Ordners auslesen
-
hi,
ich habe mich gerade mit openepaperlink beschäftigt und möchte meine tags nun einbinden.
dazu habe ich ein blockly aus dem forum genommen, etwas angepast. damit kann ich dann einfach ein json-objekt, das in einer uservariablen steckt, anpassen, und es wird an den e-tag geschickt. funktioniert soweit.
jetzt würde ich mir wünschen, dass ich die tags in eigenen ordnern verwalten kann. der ordner soll dabei die mac des E-Tags als namen haben.
innerhalb des ordners gibt es dann das json, ggf. noch weitere informationen, die ich später verwenden kann (z.g. AP oder sonstiges).jetzt habe ich zwei ziele:
- sobald unterhalb des Ordners "etags" sich etwas ändert, möchte ich, dass das script losläuft und dann entsprechend die werte ausliest (in diesem fall sz.b. alle variablen namens "json" unterhalb der einzelnen ordner).
bei einem geänderten json soll er aus dem parent-ordner die mac-adresse auslesen und damit einen post-request gegen den AP absetzen.
ist das machbar?
alternativ könnte ich alles in einen ordner packen und anstatt der variablen "json" die mac-adresse als variablenname verwenden, dann wäre ich nicht mehr ganz so flexibel, was weitere parameter angehen würde. wäre aber auch erstmal verkraftbar.
habt ihr hier ideen, wie ich das umsetzen kann?
gruß und danke,
astrakid - sobald unterhalb des Ordners "etags" sich etwas ändert, möchte ich, dass das script losläuft und dann entsprechend die werte ausliest (in diesem fall sz.b. alle variablen namens "json" unterhalb der einzelnen ordner).
-
@astrakid sagte: unterhalb des Ordners "etags" sich etwas ändert
Wie sieht die Ordner-Struktur aus? Ist sie konstant oder kann sich die Struktur ändern?
-
@paul53 fester startordner, also bis dahin statisch. darunter dann ordner mit den mac-adressen als namen.
aktuell:
"0_userdata.0.vars.etags.00000AF509EF3E10.json",weitere dann z.b.
"0_userdata.0.vars.etags.0000112233445566.json",
"0_userdata.0.vars.etags.0000AB12CD34EF56.json",
... -
@astrakid sagte: darunter dann ordner mit den mac-adressen als namen.
Es sind bei Skriptstart evtl. noch nicht alle Ordner vorhanden? In dem Fall muss man RegExp zum Triggern verwenden.
-
@paul53 ach cool, regex ist möglich? super. dann ist der trigger schon mal einfach.
in der variablen kanalname steht dann die id des objekts drin? oder kann ich auch mit regex-gruppen o.ä. arbeiten, um die mac zu erhalten? -
@astrakid sagte: in der variablen kanalname steht dann die id des objekts drin?
Der Kanalname enthält den Namen des Parent-Objektes vom Datenpunkt "json".
-
@paul53 hervorragend, vielen dank für die infos, die mir sehr weiterhelfen!!!
-
hier übrigens das script für alle, die daran interessiert sind. AP von 10.1.1.1 entsprechend auf euren AP setzen:
var url, TagMini1, jsonMini1; async function encodeURL(url) { url = encodeURIComponent(url); return url; } on({ id: [].concat(new RegExp('0_userdata\\.0\\.vars\\.etags\\..+\\.json')), change: 'ne' }, async (obj) => { let value = obj.state.val; let oldValue = obj.oldState.val; jsonMini1 = await encodeURL(String((obj.state ? obj.state.val : ''))); httpPost('http://10.1.1.1/jsonupload', (['mac=',obj.channelName,'&json=',jsonMini1].join('')), { timeout: 15000, responseType: 'text' }, async (err, response) => { }); });