@oliverio
Erstmal Danke für die Hilfe
Ich habe es hinbekommen.
Heute Abend werde ich den Weg hier beschreiben.
Mit diesem Blockly hole ich die Daten und wandle ich sie in lesbares JSON um.
...sagt mir Payload to large.....
Sorry kann ich nicht hochladen..
???
als Javascript:
var originalText, suchText, tauschText, Text2, AnzZeichenSuchtext, timeout, MeinText, Stelle, pos_daten, result, neuerText, klammerauf1, klammerauf2, Teil_1, Teil_2, klammerzu1, klammerzu2, Tracker1, Tracker2, timeout2;
// Beschreibe diese Funktion …
async function changeText(originalText, suchText, tauschText) {
Text2 = originalText;
AnzZeichenSuchtext = suchText.length;
Stelle = Text2.indexOf(suchText) + 1;
while (Stelle > 0) {
if (Stelle == 1) {
// steht am Textanfang
Teil_1 = tauschText;
} else {
Teil_1 = Text2.slice(0, Stelle - 1);
}
Teil_2 = Text2.slice(((Stelle + AnzZeichenSuchtext) - 1), Text2.length);
Text2 = [Teil_1,tauschText,Teil_2].join('');
Stelle = Text2.indexOf(suchText) + 1;
}
return Text2;
}
on({id: 'javascript.0.Weenect.buttons.get_pos_butt', change: "any"}, async function (obj) {
var value = obj.state.val;
var oldValue = obj.oldState.val;
exec('bash /home/iobroker/pos_get_sh.sh', async function (error, result, stderr) {
timeout = setTimeout(async function () {
pos_daten = result;
setState("javascript.0.Weenect.js_rohdaten"/*Weenect.js_rohdaten*/, pos_daten, true);
}, 1000);
});
MeinText = String(pos_daten).toLowerCase();
if (!!MeinText.length) {
neuerText = await changeText(MeinText, '\'', '"');
neuerText = await changeText(neuerText, 'none', '"unbekannt"');
}
klammerauf1 = neuerText.indexOf('{') + 1;
klammerauf2 = neuerText.lastIndexOf('{') + 1;
klammerzu1 = neuerText.indexOf('}') + 1;
klammerzu2 = neuerText.lastIndexOf('}') + 1;
Tracker1 = neuerText.slice((klammerauf1 - 1), klammerzu1);
Tracker2 = neuerText.slice((klammerauf2 - 1), klammerzu2);
console.log(('Daten Tracker 1'));
console.log(('Daten Tracker 2'));
await wait(500);
timeout2 = setTimeout(async function () {
setStateDelayed('javascript.0.Weenect.js_Tracker1', Tracker1, true, 0, false);
setStateDelayed('javascript.0.Weenect.js_Tracker2', Tracker2, true, 0, false);
}, 1000);
});
Dann hole ich jeweils für einen Tracker die Daten raus und schreibe sie in die Objekte.
const idJson = 'javascript.0.Weenect.js_Tracker1';
const path = 'Weenect.Tracker1.';
const js = 'javascript.0.';
on(idJson, function(dp) { // triggert bei Wertänderung
let obj = JSON.parse(dp.state.val);
for(let prop in obj) {
if(existsState(js + path + prop)) setState(path + prop, obj[prop], true);
else createState(path + prop, obj[prop], {type: typeof obj[prop]});
}
});