Widget für iOS

JSAnyone
Beiträge: 291
Registriert: Fr Jun 05, 2020 5:56 pm

Widget für iOS

Beitrag von JSAnyone »

Weiter unten im Thread gibt es eine aktualisierte Version, bei der kein Eingriff in die openWB mehr nötig ist!
Das hier am Anfang vorgestellte Widget ist mittlerweile stark veraltet, es sieht mittlerweile ganz anders aus!


Erstmal ein paar Bilder des Widgets, dank iOS14 kann das Widget natürlich frei auf dem Homescreen platziert werden:
256D1C2A-F4BE-4ECE-AE4C-B9843F281A0D.jpeg
D7D81338-B212-4BE1-9EAA-DA230F628971.jpeg

Ich bin so jemand, der seine PV-Anlage einfach gerne überwacht und anschließend auswertet.
Um lange Zeiträume umfangreich auszuwerten habe ich mir ein Grafana-Dashbaord erstellt, das habe ich hier schon vorgestellt:

https://www.photovoltaikforum.com/thre ... /?pageNo=1

Um aber einfach mal schnell nachzuschauen, wieviel Überschuss ich gerade so habe, ist es mir zu umständlich entweder Grafana oder die openWB-Website zu öffnen. Dazu kommt noch, dass Grafana-Dashboards am Handy oft nicht so toll aussehen.
Eigentlich habe ich immer gehofft das es mit der Integration von openWB in die Apple-Home App mal vorangeht, aber da scheint Apple mit den Einheiten ja nicht gerade einfach zu sein:

viewtopic.php?f=4&t=483&hilit=home+apple

In letzter Zeit habe ich dann immer wieder mal von Leuten gelesen, die sich mit der App „Scriptable“ selbst Corona-Widgets zusammenbauen, die etwa die Inzidenz oder auch die Anzahl der in D geimpften Personen anzeigen. Mein openWB-Widget ist im Prinzip nur ein solches abgewandeltes Widget:

https://gist.github.com/m4p/20cc77b6d9f ... ab6eed0ff3

Erstmal muss openWB die Daten natürlich bereitstellen. Dazu müssen per SSH zwei Skripte auf dem Raspi der oWB abgelegt werden. Macht das also nur wenn ihr wisst was ihr tut!
Die beiden angehängten Skripte „iosWidget.php“ und „iosWidget.py“ müssen auf dem openWB-Raspi in dem Ordner /var/www/html/cust/ abgelegt werden. Das „.txt“ muss entfernt werden! Aus „iosWidget.php.txt“ müsst ihr „iosWidget.php“ machen und aus „iosWidget.py.txt“ müsst ihr „iosWidget.py“ machen.

Kurze Erklärung der Skripte:
Das PHP Skript ruft eigentlich nur das Python Skript auf und leitet die Rückgabe des Python Skripts weiter. Sicher hätte man es auch nur mit einem PHP Skript lösen können, ich arbeite aber lieber mit Python.
Das Python Skript holt sich die Daten aus den entsprechenden Ramdisk-Dateien, und berechnet daraus einige Werte, wie Farbe oder Footnote. Anschließend werden all diese Daten zusammen mit einem Timestamp zu einem Json-String „gebastelt“, der dann an das PHP-Skript zurückgegeben wird.
Die gerade erwähnte Berechnung von Footnote und Farbe der einzelnen Werte hätte ich natürlich auch direkt in der Scriptable-App machen können. Wenn ich dann aber was anpassen wollen würde müsste ich es auf allen Geräten auf denen das Widget angezeigt werden soll einzeln machen. Dadurch, dass diese Berechnungen aber in dem Python-Skript erfolgen muss ich es nur einmal dort anpassen, was die nachträgliche Anpassung etwas vereinfacht.

Das war‘s dann auch schon am openWB-Raspi. Als nächstes muss die Scriptable-App heruntergeladen werden:

https://apps.apple.com/de/app/scriptable/id1405459188

Dann braucht ihr die Datei „PV-Widget.scriptable.txt“. Diese muss wieder umbenannt werden, in „PV-Widget.scriptable“.Entweder das wird dann direkt in der App geöffnet, oder man muss noch auf das Teilen-Symbol klicken und dann Scriptable auswählen.

Um das Widget dann zum Home-Screen hinzuzufügen muss man zum Homescreen zuerst ein Scriptable-Widget hinzufügen. Danach lange auf dieses Widget Tippen um es zu bearbeiten und als Skript PV-Widget auswählen. Alle anderen Werte einfach so lassen.

In der Scriptable-App kann man das Widget dann nach belieben anpassen, z.B. welche Werte angezeigt werden, die Widget-Größe usw.
Was aber angepasst werden MUSS ist einmal die URL wo die Daten herkommen (<IP_der_openWB>/cust/iosWidget.php) und die URL auf die weitergeleitet werden soll wenn auf das Widget getippt wird, also z.B. die Home-Seite von oWB.
Beides sollte in dem Skript eigentlich relativ einfach zu finden sein, ich hab‘s auf jeden Fall mit einem entsprechenden Kommentar versehen.

Was noch suboptimal ist ist die Aktualisierung des Widgets, da dieses nicht so regelmäßig aktualisiert wird, meist irgendetwas zwischen 30 Sekunden und fünf Minuten. Das geht in iOS/Scriptable aber leider nicht anders, weswegen ich den Timestamp anzeige, damit man sieht von wann die Daten sind.

Auch sind es bis jetzt nur PV-,Speicher- und Netzdaten, noch keine Autodaten. Das liegt einerseits daran, dass ich die Autodaten (bis auf den SoC des Autos) nicht so interessant finde, und andererseits daran, dass die Lieferzeiten von E-Autos so verdammt lange sind ;)
Dateianhänge
PV-Widget.scriptable.txt
PV-Widget.scriptable
(3.27 KiB) 523-mal heruntergeladen
iosWidget.py.txt
iosWidget.py
(2.34 KiB) 439-mal heruntergeladen
iosWidget.php.txt
iosWidget.php
(136 Bytes) 426-mal heruntergeladen
Zuletzt geändert von JSAnyone am Do Aug 26, 2021 8:58 pm, insgesamt 7-mal geändert.
Smove
Beiträge: 235
Registriert: Mo Mär 09, 2020 8:56 pm

Re: Widget für iOS

Beitrag von Smove »

Tolles Widget und Anleitung hierzu. Kann deinen Wunsch nach einem schnellen Blick gut nachvollziehen, ertappe mich ebenfalls sehr oft dabei
@openWB Support: Gibt es die Möglichkeit diese Funktion in die openWB Software offiziell zu integrieren?

Gerne weitere Meinungen .

VG
Tobias
Fahrzeuge: VW eUP & Audi Q4 & Q7PHEV
PV: 8,4kWp & 15,2kWp
WB: 2x openWB Series 2+ & 2x openWB Series 2
nevs77
Beiträge: 131
Registriert: Do Dez 03, 2020 11:20 pm

Re: Widget für iOS

Beitrag von nevs77 »

Cool, tolle Idee. Fände ich auch ein geiles Feature (am besten auch für Android, wenn möglich), kann aber mangels IT-Kenntnissen leider nichts dazu beitragen. Und die Erläuterung klingt auch alles andere als trivial, zumindest für mich als IT-Laien.
JSAnyone
Beiträge: 291
Registriert: Fr Jun 05, 2020 5:56 pm

Re: Widget für iOS

Beitrag von JSAnyone »

Android habe ich nicht, weis leider nicht wie das da funktioniert.
Die Einrichtung in der Scriptable-App ist zwar nicht ganz ohne, aber auf jeden Fall machbar UND man kann nichts kaputt machen.
Problem ist halt, dass die beiden Files auf der oWB abgelegt werden, wofür man gewisse Linus-Kentnisse braucht.
Ein anderer Ansatz, der mir aber erst gerade eingefallen ist, wäre es natürlich mit der Scriptable-App direkt auf die Ramdisk-Files zuzugreifen und auch alle Berechnungen in der Scriptable-App vorzunehmen. Damit müsste man an der OpenWB gar nichts änderte und nur die App einrichten, dass wäre dann auf jeden Fall auch interessierter-Laie tauglich. Muss ich mal mal anschauen ob das mit Scriptable so einfach geht.
JSAnyone
Beiträge: 291
Registriert: Fr Jun 05, 2020 5:56 pm

Re: Widget für iOS

Beitrag von JSAnyone »

Ich habe das Widget jetzt mal wie oben beschreiben so konstruiert, dass keine Skripte mehr auf der openWB abgelegt werden muss. Das ganze geht jetzt also völlig ohne IT-Kentnisse, da das Widget (Scriptable) direkt auf die Ramdisk-Files zugreift und auch alle nötigen Berechnungen in der App durchgeführt werden.
Es sind nur noch die folgenden Schritte notwendig, die alle am iPhone/iPad ausgeführt werden müssen:

1. Scriptable-App downloaden:

https://apps.apple.com/de/app/scriptable/id1405459188

2. Skript downloaden und umbenennen:

Das angehängte Skript „openWB PV-Monitoring.scriptable.txt“ am PC/Mac herunterladen (nicht am iPhone/iPad). Dort muss das Skript dann umbenannt werden in „openWB PV-Monitoring.scriptable“, also ohne das „.txt“. Anschließend das umbenannte Skript aufs iPhone laden, z.B. per iCloud, AirDrop, Mail usw.

3. Skript in der Scriptable-App einrichten:

Anschließend das umbenannte Skript vom PC/Mac mit der Scriptable-App öffnen (lange auf die Datei tippen —> teilen —> Scriptable). Jetzt sollte sich die Scriptable-App öffnen, und das Script kann mit einem Klick auf „Add to My Scripts“ in die Scriptable-App importiert werden.
Danach wird das Skript sofort geöffnet. Ganz oben in dem Skript müssen zwei Werte angepasst werden. Einmal muss die IP-Adresse der openWB eingetragen werden und die URL die geöffnet werden soll wenn auf das Widget getippt wird, hier bietet sich die Home-Website der openWB an. Danach das Skript schließen (der „Done“ Knopf).

4. Widget einrichten:

Zuerst muss ein Scriptable-Widget zum Homescreen hinzugefügt werden, Dafür lange auf ein existierendes Widget/eine App tippen, dann auf Home-Bildschirm bearbeiten tippen und dann mit dem „+“ oben links ein Scriptable-Widget hinzufügen.
Nachdem dieses Widget hinzugefügt wurde den Bearbeitungsmodus verlassen (Home-Button). Dann lange auf das neue Widget tippen, Widget bearbeiten auswählen und unter Skript „openWB PV-Monitoring“ auswählen. Alle anderen Werte können so gelassen werden.

Das wars, ich hoffe das ist verständlich. Wenn alles geklappt hat werdet ihr mit folgendem Widget belohnt:
DFDA822D-69EC-46A5-9E8B-197C1B64ADDC.jpeg
34594FE7-523E-4376-BB20-D74B15DD5237.jpeg
Update: weiter unten eine Überarbeitung des Skripts.
Dateianhänge
openWB PV-Monitoring.scriptable.txt
openWB PV-Monitoring.scriptable
(4.92 KiB) 555-mal heruntergeladen
Zuletzt geändert von JSAnyone am Sa Feb 06, 2021 8:27 am, insgesamt 2-mal geändert.
Smove
Beiträge: 235
Registriert: Mo Mär 09, 2020 8:56 pm

Re: Widget für iOS

Beitrag von Smove »

Tolle Sache und vielen Dank für die schnelle Umsetzung.👍🏼
Habe es bereits bei mir eingepflegt.
Bei mir sieht es allerdings so aus:
BBEEA850-965E-43D5-B476-B81E487DA55C.jpeg
BBEEA850-965E-43D5-B476-B81E487DA55C.jpeg (23.38 KiB) 17206 mal betrachtet
Schrift ist auf kleinster Stufe auf einem ipad Pro 11

Verkleinerung der FontSize im Script hat auch nicht den gewünschten Effekt

Tipp was ich ändern kann?
Fahrzeuge: VW eUP & Audi Q4 & Q7PHEV
PV: 8,4kWp & 15,2kWp
WB: 2x openWB Series 2+ & 2x openWB Series 2
JSAnyone
Beiträge: 291
Registriert: Fr Jun 05, 2020 5:56 pm

Re: Widget für iOS

Beitrag von JSAnyone »

Smove hat geschrieben: Fr Jan 22, 2021 6:47 pm Tipp was ich ändern kann?
Probier mal das angehängte Skript aus ob es da nicht abgeschnitten ist.
Dateianhänge
openWB PV-Monitoring.scriptable.txt
openWB PV-Monitoring.scriptable
(4.93 KiB) 520-mal heruntergeladen
Smove
Beiträge: 235
Registriert: Mo Mär 09, 2020 8:56 pm

Re: Widget für iOS

Beitrag von Smove »

JSAnyone hat geschrieben: Fr Jan 22, 2021 7:18 pm
Smove hat geschrieben: Fr Jan 22, 2021 6:47 pm Tipp was ich ändern kann?
Probier mal das angehängte Skript aus ob es da nicht abgeschnitten ist.
Top - passt! Danke Dir
Fahrzeuge: VW eUP & Audi Q4 & Q7PHEV
PV: 8,4kWp & 15,2kWp
WB: 2x openWB Series 2+ & 2x openWB Series 2
evs65
Beiträge: 115
Registriert: So Aug 02, 2020 5:31 am

Re: Widget für iOS

Beitrag von evs65 »

Hallo,
erst einmal herzlichen Dank für die tolle Arbeit. Habe ich sofort auf meinem iPhone eingerichtet, was dank der guten Anleitung kein Problem war. Ein paar Fragen habe ich aber noch:

1. Wie bzw. wann werden die Daten aktualisiert? Wenn ich das Widget direkt in der App starte, habe ich alle Daten aktuell. Im Widget ist der Zeitstempel mehrere Minuten alt, teilweise stimmen die Daten, teilweise stehen sie auf 0.
2. Könnte man auch noch die Ladeleistung mit anzeigen, wenn ein Auto geladen wird?
3. Wäre es möglich, das so zu modifizieren, dass die Daten aus der Cloud kommen?

Vielen Dank schon vorab für die Antworten.

lg, evs
openWB-2 Standard+ | Fronius Hybrid 4.0-3-s | Fronius Smartmeter | Speicher BYD HV 9 kWh | Hyundai Kona EV 64 kWh
JSAnyone
Beiträge: 291
Registriert: Fr Jun 05, 2020 5:56 pm

Re: Widget für iOS

Beitrag von JSAnyone »

evs65 hat geschrieben: Sa Jan 23, 2021 7:31 am 1. Wie bzw. wann werden die Daten aktualisiert? Wenn ich das Widget direkt in der App starte, habe ich alle Daten aktuell. Im Widget ist der Zeitstempel mehrere Minuten alt, teilweise stimmen die Daten, teilweise stehen sie auf 0.
Dass das Widget nicht immer aktuell ist ist leider eine Einschränkung von Scriptable/iOS, da habe ich hier schon mal was zu geschrieben:
JSAnyone hat geschrieben: Di Jan 19, 2021 7:16 pm Was noch suboptimal ist ist die Aktualisierung des Widgets, da dieses nicht so regelmäßig aktualisiert wird, meist irgendetwas zwischen 30 Sekunden und fünf Minuten. Das geht in iOS/Scriptable aber leider nicht anders, weswegen ich den Timestamp anzeige, damit man sieht von wann die Daten sind.
Genaueres findest du hier:

https://talk.automators.fm/t/refresh-i ... idget/9011
evs65 hat geschrieben: Sa Jan 23, 2021 7:31 am 2. Könnte man auch noch die Ladeleistung mit anzeigen, wenn ein Auto geladen wird?
Ja, das müsste kein Problem sein, es bleiben nur folgende Fragen:
LP1? Oder die Summe aller Ladepunkte?
Welchen Wert soll die Ladeleistung denn dann ersetzten wenn das Auto geladen wird? Ich denke ein zusätzlicher Wert passt nicht mehr drauf.
Oder das Widget eine Größe größer, und eine zusätzliche Reihe mit Ladeleistung, Auto-SoC und Lademodus? Wobei ich von solchen Riesen-Widget kein Fan bin. Oder noch zusätzlich ein kleines quadratisches Widget, dass die drei oben genannten Werte anzeigt?
evs65 hat geschrieben: Sa Jan 23, 2021 7:31 am 3. Wäre es möglich, das so zu modifizieren, dass die Daten aus der Cloud kommen?
Das habe ich mit auch schon kurz überlegt. Ich habe mich aber leider noch nicht genauer mit der Cloud befasst, also keine Ahnung ob das geht.
Antworten