NEWS
[gelöst] SourceAnalytix neuer Alias, hist. Werte übernehmen
-
Liebes Forum!
Ich bin gerade dabei holprig aber doch, mittels Blockly und Alias, die Werte des SA Adapters vor negativen Werten nach einem Stromausfall zu schützen.
Jetzt logge ich aber schon seit längerer Zeit mit und verliere natürlich alle historischen Daten sobald ich einen Alias anstelle des alten "Energy_Total" tracke.
Ich habe aus dem Jahre 2020 einen Beitrag von @paul53 gefunden,
welches die Struktur (Daten auch?) kopiert aber das Script ist nur rot unterlegt und läuft dadurch natürlich nicht.
Ich möchte gerne z.B. sämtliche DP samt Werten
"sourceanalytix.0.hm-rpc__0__KEQ0965973__2__ENERGY_COUNTER.*"
nach
"sourceanalytix.0.alias__0__Energie__Strom__Poolpumpe__CONSUMPTION."
kopieren um dort ab jetzt die neuen Daten adaptiv zu erfassen.
Kann mir eventuell jemand helfen?LG, mxa
Edit: Hatte Fehler in meinem adaptierten Script, zumindest die Datenstruktur konnte ich schon vollständig übertragen. -
@metaxa hier ging es ebenfalls um das Thema
https://forum.iobroker.net/post/835238 -
@crunchip Danke für den Hinweis!!!! Warum hatte ich den nicht selbst gefunden Ich mach damit mal weiter!
Edit, bin nun einen großen Schritt weiter, alle Werte sind dort wo ich sie haben will :
Dieses Script von @a200 hat sofort alle DP perfekt des aktuellen Jahr 2023 übertragen, danke dafür!
Leider wurden aber samtliche Daten des Vorjahrs 2022 ignoriert, ich vermute weil die DP im aktuell angelegten SA nicht vorhanden sind.
Da gab es noch das Script von @paul53
das bei meinen ersten Versuchen jedoch nur die Datenstruktur ohne Werte übertrug.Eh schon egal, probierte ich somit eine 2 Scriptvariante aus:
Ergebnis: ALLE Daten da wo ich sie haben will!
Fazit: Geht wahrscheinlich einfach auch mit nur EINEM Script, aber dafür fehlt mir das Wissen, die Geduld und die Nerven
Danke diesem aktiven Forum!
mxa -
@metaxa sagte: Geht wahrscheinlich einfach auch mit nur EINEM Script
const idsSrc = $('samsung_tizen.0.command.*'); idsSrc.each(function(id, i) { let idDst = id.replace('samsung_tizen.0', 'samsung_tizen.1'); let obj = getObject(id); if(!existsObject(idDst)) setObject(idDst, obj, function() { setState(idDst, getState(id).val, true); }); });
-
@paul53 Wieder einmal mehr, danke!
Eine Stelle wird vom JS-Adapter angemeckert, scheint aber nur ein Schönheitsfehler zu sein da dein Script tadellos funktioniert.
const idsSrc = $('sourceanalytix.0.hm-rpc__0__KEQ0965973__2__ENERGY_COUNTER.*'); idsSrc.each(function(id, i) { let idDst = id.replace('sourceanalytix.0.hm-rpc__0__KEQ0965973__2__ENERGY_COUNTER', 'sourceanalytix.0.alias__0__Energie__Strom__Poolpumpe__CONSUMPTION'); let obj = getObject(id); if(!existsObject(idDst)) setObject(idDst, obj ,function() { setState(idDst, getState(id).val, true); }); });