NEWS
Wert von Dateien / Objekten splitten
-
Hallo zusammen,
ich versuche gerade meine App Usage Stats von Android in den iobroker zu bekommen. Mit der App Tasker kann ich mir diese entweder in eine Datei (z.B. *.txt) oder via iot-Service in ein iobroker Objekt schreiben lassen.
Das Problem ist allerdings, dass App Namen und die jeweilige Nutzungszeit getrennt ausgegeben werden. Einmal alle App Namen, sortiert nach höchster Nutzungszeit, kommagetrennt und die Nutzungszeiten der Apps, sortiert nach höchster Nutzungszeit, kommagetrennt.
Wie gehe ich nun in Blockly am besten vor um den Inhalt der beiden Ausgaben zu splitten und mit dem Gegenstück aus der anderen Ausgabe zusammen zu bringen? Am besten wäre es, wenn ich am Ende ein Objekt mit dem jeweiligen App Namen als ID hätte, das die Nutzungszeit als Wert enthält.
Hier noch Beispiele wie die beiden Ausgaben aussehen.
App Name
Launcher,Vanadium,Tasker,Spotify,Termux,Signal,Einstellungen,mydealz
App Nutzungszeit
569771,113438,31293,12793,12020,11545,9781,9691
Viele Grüsse
Chris -
@el-lutschi ich kann dir das jetzt nicht auswendig genau schreiben, aber wenn die Reihenfolge von App und Wert gleich ist, musst du zwei Listen anlegen, dann jeweils den ersten, zweiten, usw... Eintrag extrahieren und die beiden Werte zusammenstellen.
-
@homoran vielen Dank für die schnelle Hilfe. Der Tipp mit den Listen hat mich schon ein Stück weitergebracht. Ich habe es geschafft die einzelnen App Namen zu extrahieren und in Variablen zu schreiben.
Nun ist es ja aber so, dass die Listenposition der App Namen variable ist und auch neue Apps dazu kommen können. Wie bekomme ich es nun hin, dass automatisch Objekte mit dem App Namen erstellt werden und die Nutzungszeit auch bei einem Positionswechsel wieder richtig erkannt wird?
-
@el-lutschi sagte in Wert von Dateien / Objekten splitten:
dass die Listenposition der App Namen variable ist und auch neue Apps dazu kommen können.
das wäre nicht das Problem, solange die zugehörigen Werte an der selben Position in der anderen Liste stehen.
Würde das Ganze nur etwas aufwändiger machen.
@el-lutschi sagte in Wert von Dateien / Objekten splitten:
in Variablen zu schreiben.
Meinst du das, oder willst du die Einzeldaten in einzelne Datenpunkte schreiben.
Oder snders gefrsgt: was soll bei erfolgreicher Implementierung rauskommen? -
@homoran aktuell sieht mein Blockly so aus:
Ich hätte am Ende gerne, dass automatisch Objekte anhand der App Namen auf der Liste erzeugt werden und die dazugehörige Nutzungszeit als Wert in den Datenpunkt geschrieben wird. Die App Namen und Nutzungszeit Listen werden alle 5 Minuten von meinem Android aktualisiert und an iobroker übermittelt. Um das ganze dann auch noch schön darzustellen, möchte ich die Werte an InfluxDB übergeben und mit Grafana visualisieren.
-
@el-lutschi Welcher von den 2 Datenpunkten wird als erstes aktualisiert ? App oder Zeit ?
-
@el-lutschi sagte in Wert von Dateien / Objekten splitten:
aktuell sieht mein Blockly so aus:
sieht doch schon mal gut aus.
Das könnte man wahrscheinlich mit Schleifen deutlich vereinfachen. Ich bin nicht manjetzt müsste man "nur" noch die Appnamen identifizieren um den zugehörigen Wert in drn entsprechenden Datenpunkt zu schreiben.
der wird dann geloggt -
@djmarc75 das könnte ich selbst bestimmen. Wieso fragst du?
-
@el-lutschi sagte in Wert von Dateien / Objekten splitten:
Wieso fragst du?
wahrscheinlich damit die Listen synchronisiert werden können und nicht auf unterschiedlich alte Listen mit unterschiedlicher Reihenfolge zugegriffen wird
-
@homoran Das wäre nicht das Problem. Das lässt sich ja mit nem kleinen Timeout auf jeden Fall umgehen.
Gibt es eine Möglichkeit zu prüfen ob ein Datenpunkt bereits vorhanden ist?
-
@el-lutschi sagte in Wert von Dateien / Objekten splitten:
Gibt es eine Möglichkeit zu prüfen ob ein Datenpunkt bereits vorhanden ist?
ja! Warum?
ob es die Möglichkeit auch in Blockly gibt weiss ich nicht.
createState wird meines Wissens eh nur ausgeführt wenn es den Stste noch nicht gibt. -
@el-lutschi sagte in Wert von Dateien / Objekten splitten:
Wieso fragst du?
Weil ich Dir grad ein Blockly bastle
-
So funktioniert es wenn der DP Apps als zweites quasi ankommen würde, auf diesen wird in meinem Beispiel getriggert:
Funktion:
createState('0_userdata.0.Testdaten.Listen.Apps.' + id);
Im Bild der rote Pfeil bedeutet dass Du dort die Attribute per "erstelle Text aus" Block den jeweiligen Datenpunkt detailiert (Namen, Typ, usw) anlegen kannst - musst Du aber für Dich selbst entscheiden
edit: Blocklybild getauscht
-
@djmarc75 sagte in Wert von Dateien / Objekten splitten:
edit: Blocklybild getauscht
ohne roten Pfeil?
-
-
Nochmals etwas gepimpt:
Funktion:
createState('0_userdata.0.Testdaten.Listen.Apps.' + id, JSON.parse(common));
-
-
@el-lutschi Weil Du Dich so brav bedankt hast schick ich mal noch den Code zum Importieren und Anpassen
-
@djmarc75 Das ist lieb von dir