peter9teufel / iobmobile-issues

Repository to only track issues with IOB Mobile, code is not hosted in this repository.
10 stars 0 forks source link

Einbindung trashschedule #37

Closed loemic87 closed 2 months ago

loemic87 commented 3 months ago

Hi,

ich Versuche die Informationen aus dem trashschedule-adapter einzubinden. Ideal wäre da denke ich das vom Adapter bereitgestellte json im Ordner "Types". Wenn ich den DP in der App einbinden erhalte ich als Ausgabe "Kein Wert gesetzt". Mache ich etwas falsch?

Kann man die Daten des trashschedule-Adapters evtl. Anders sinnvoll einbinden, gerne auch mit einem Script und dann über die Userdata-DPe.

peter9teufel commented 3 months ago

kannst du mir mal das JSON schicken, das der Adapter bereitstellt? Dann kann ich es mir näher anschauen.

LG, Peter

loemic87 commented 3 months ago

Hi,

Hier das json von mir:

[{"name":"Restmüll","daysLeft":1,"nextDate":1723068000000,"_completed":false,"_description":"Leerungserinnerung","_color":"#e11414"},{"name":"Gelber Sack","daysLeft":7,"nextDate":1723586400000,"_completed":false,"_description":"Leerungserinnerung","_color":"#ffff00"},{"name":"Bio","daysLeft":12,"nextDate":1724018400000,"_completed":false,"_description":"Leerungserinnerung","_color":"#20c200"},{"name":"Papier","daysLeft":15,"nextDate":1724277600000,"_completed":false,"_description":"Leerungserinnerung","_color":"#010dbc"},{"name":"Grünschnitt","daysLeft":19,"nextDate":1724623200000,"_completed":false,"_description":"Leerungserinnerung","_color":"#721f03"}]

peter9teufel commented 3 months ago

Super, danke! Eine Möglichkeit wäre, dass du dir per Script/Blockly in einem Userdata Datenpunkt ein Json Objekt ablegst und dieses dann mit dem Kachel Typ "JSON". Ein passendes Format dafür wäre zb:

{ "Restmüll": "12.08.2024", "Bio": "16.08.2024", usw. }

Vorteil wäre, dass du im Skript frei entscheiden kannst, welche Termine im JSON zur Anzeige landen, also zB. nur jene die in den nächsten 5 Tagen sind o.ä.

Wenn Zeit ist kann ich dafür mal einen eigenen Datenpunkt Typ ergänzen, der wird aber auf Grund der Einstellmöglichkeiten etwas aufwändiger, würde auf jeden Fall noch etwas dauern.

LG, Peter

philg1234 commented 3 months ago

@loemic87

hast du bereits weitergemacht mit der Trashschedule Integration über z.B. den vorgeschlagenen Weg von @peter9teufel ? Ich will auch demnächst mit der Integration beginnen.

Edit:

Ich habe soeben den Vorschlag von @peter9teufel getestet -> funktioniert wunderbar. Ich baue mir eine Text Datei aus den Datenpunkten und schreibe diese dann in einen Datenpunkt vom Typ JSON zurück.

Falls du dies nicht angehen willst, kannst du eigentlich auch direkt auf die Trashschedule Datenpunkte verweisen mit dem Typ "Mehrere Werte" in der App.

Kommt dann aufs gleiche raus und du kannst die gewünschten Datenpunkte einfach angeben.


Mega wäre jetzt natürlich, wenn man irgendwie die Werte oder irgendwann Symbole farbig anhand des Mülltyps einstellen könnte.

loemic87 commented 3 months ago

Kannst du mir dein Script oder den Weg den du genommen hast zeigen? Ich hatte noch keine Gelegenheit, mich damit zu befassen

Edit: ich wollte eigentlich gern eine Ausgabe, die immer die nächsten Termine anzeigt sortiert nach Datum. Da führt glaube ich ein weg um ein Script nicht drumherum

philg1234 commented 3 months ago

Ich habs jetzt ganz quick & dirty mit zusammenfügen von Text Dateien gemacht und dies dann eben zurückgeschrieben.

Aber in dem Adapter Treshschedule gibt es doch Datenpunkte welche immer sortiert nach dem nächsten Termin angezeigt werden:

Next und NextAfter ist genau das was du willst.

image

loemic87 commented 3 months ago

Next und next after passen, sofern man nur 2 kommende Abholungen anzeigen lassen möchte.

Ich hab hier 4 bzw 5 Typen. Und würde gerne jeweils die nächsten pro Typ (sortiert nach Datum) anzeigen lassen. Das geht dann glaube ich nicht, oder irre ich mich?

philg1234 commented 3 months ago

Hast du Recht. Mir Reicht das mit den zwei nächsten Abholungen aus.

In deinem Fall müsste man sich nochmals genauer überlegen, wie man das umsetzten könnte. hier müsste man sich die JSOn Werte ziehen und dann weiter verarbeiten.

philg1234 commented 3 months ago

@loemic87 kurzes Update.

Ich habe das ganze jetzt kurz getestet und dementsprechend wie du gewünscht hast umgesetzt. Wo ich mir nur nicht sicher bin, ob die JSON immer aktualisiert wird und das nächste aktuelle Datum dann nach oben rutscht, sobald ein Termin durchlaufen ist. Kannst du mir das zufällig sagen?

Ansonsten hier meine Umsetzung:

Wie gesagt, quick and dirty. Im Idealfall schreibst du dann die Objects zusammen und lässt dir daraus über Blockly wieder ein JSON erstellen, wozu ich jetzt gerade zu faul war.

image

Das ganze dann eben in einen Datenpunkt vom Typ JSON schreiben, wo das Ergebnis dann so aussieht:

image

Diesen DP kannst du dann in der APP als JSON einbinden :).

Wie gesagt, die Geschichte mit dem Formatieren/bauen des JSON Files kann man noch besser lösen (Konvertieren aus Objecten).

Hoffe konnte dir weiterhelfen.

Grüße Phil

loemic87 commented 3 months ago

@philg1234

deine "quick-and-dirty"-Lösung funktioniert einwandfrei. Morgen ist bei uns die nächste planmäßige Abholung, da wird sich zeigen, ob das dann auch so klappt, dass vernünftig aktualisiert wird. Leider fehlt mir das blockly know-how um das anders/besser zu lösen, so wie du es beschreibst. Aber mit der Lösung bin ich voll zufrieden! Vielen Dank!

Formatierung des Outputs wäre wieder eine andere Sache, aber mir reicht das so erstmal definitiv.

loemic87 commented 3 months ago

Screenshot_20240818-165927 So sieht mein "Endergebnis" jetzt aus. Habe dein blockly noch um die Wochentage ergänzt. Wer Interesse an dem blockly hat:

Abfallkalender.iobmobile_abfallkalender.zip

Der jeweils eigene DP in userdata muss natürlich angepasst werden.

peter9teufel commented 2 months ago

Top wie sich hier gegenseitig geholfen wird 🙂

Ich kann mir das Blockly mal ansehen und in ein Skript umwandeln das sich den benötigten Datenpunkt selbst anlegt und in dem über ein paar Variablen dann festgelegt werden kann, wie viele zukünftigen Termine angezeigt werden sollen.

LG, Peter

peter9teufel commented 2 months ago

Hi nochmal, ich hab jetzt in Javascript nochmal ein Skript zum Aufbereiten der Daten für den DP Typ JSON in der App geschrieben und dieses als erstes Skript hier im Repo reingegeben. Der Aufbau ist so, dass am Beginn des Skripts einzelne Parameter an die eigenen Wünsche angepasst werden können (wie viele nächste Termine, Wochentag anzeigen ja/nein, Wochentag kurz/lang, etc.).

https://github.com/peter9teufel/iobmobile-issues/tree/main/scripts/trashschedule

Das Skript kann einfach direkt kopiert und in ein neues Javascript in ioBroker eingefügt werden.

Schaut mal ob das verständlich ist, ich hab versucht es möglichst gut zu kommentieren was angepasst werden kann.

LG, Peter

philg1234 commented 2 months ago

Getestet und für gut befunden 👌👌

Sehr gut find ich den Teil 😁:

image

Ich denke für die Zukunft ist das ganze sicher der richtige Weg, so die Scripts weiterzugeben. Die Frage ist, ob es vllt für manche Anwender auch sinnvoll ist Blockly Scripts bereitzustellen, welche nicht viel mit Javascript oder Programmierung am Hut haben (in Bezug auf Erweiterung).

Oder willst du das Repository nur mit Javascript befüllen?

Grüße Phil

peter9teufel commented 2 months ago

Wenn gute Blockly Skripte kommen gerne, kann die selber halt schwer überprüfen weil ich mich damit so gar nicht beschäftige. Nehm aber Blocklys gerne ins Repo auf 👍

wenn das Skript funktioniert mach ich hier mal zu.

Lg, Peter