Hauptmenü

FHEM Wdget (iOS)

Begonnen von HaPeRiebmann, 07 Dezember 2015, 21:46:23

Vorheriges Thema - Nächstes Thema

Fhemschorsch

Zitat von: HaPeRiebmann am 18 Juli 2016, 12:22:01
Hallo zusammen,

die 1.4 ist mittlerweile im Review. Hier habe ich mal ein experimentelles Feature eingebaut, einen Sync.
Der funktioniert im Prinzip so, dass, wenn aktiviert, die App sowohl lokal als auch an meinem Server nach dem Status anfrägt. Auf eurer FHEM Büchse installiert ihr euch einen Sync client, der die Devices, die ihr auch in der App habt, ausliest und auf den Server pusht und gleichzeitig die gesetzten Commands an den FHEM weiterreicht.

Ihr müsst also euren FHEM nicht mehr von außen öffnen um von extern zu steuern.

Wen es interessiert: http://tasior.de/FHEM_Widget/Sync_Instructions

Derzeit ist der Dienst kostenlos. Nachdem ich aber den Server nicht kostenlos bekomme muss ich beobachten was so anfällt und mir dann bei Interesse ein Bezahlmodell überlegen. Wenn kein Interesse da ist dann schalte ich es potentiell auch wieder ab.

Wäre denn hier in der Community Interesse da? Und was wäre akzeptabel?

VG
Michael

Find ich super! Bei mir ist es so, dass ich eigentlich immer per VPN von meinem iPhone/iPad auf mein "Netz" zugreife und dann einfach so agiere. Ein Sync-Dienst wäre auch toll, wobei wenn das mit VPN funktioniert, bin ich auch erst einmal glücklich.

Ich werd mir die App gleich mal runterladen und nachher ausprobieren...

HaPeRiebmann

Hi,

VPN funktioniert sehr gut, du musst es allerdings immer erst einschalten. Der Punkt hier ist dass du dein Netz garnicht aufmachen musst und es trotzdem sofort alle Stati anzeigt. Allerdings brauchst du den Client in deinem Netz. Steht aber auch alles in der Anleitung :-)

In der 1.4.2 kommt jetzt außerdem der ThreeStateSwitch.

VG
Raspberry Pi | Homematic Komponenten | Brennenstuhl Funksteckdosen | homebridge
http://fhemwidget.de.tasior.de
Slack: fhemwidget.slack.com
https://itunes.apple.com/us/app/fhem-widget-2/id1169530472?l=de&ls=1&mt=8

Fhemschorsch

Habs runtergeladen, und schon einen Schalter sowie 2 Werte eingebunden - funktioniert super!

VPN geht auch. Das mit dem Sync überleg ich mir noch. Eigentlich will ich damit auch das Garagentor öffnen und mein persönlicher Internet-Codex sagt, dass ich sowas nicht über einen Synchronisierungsdienst schicke:-).

oberlon

Hallo,

habe auf meinem iPad die public beta von ios10 laufen.
Ich weiß dass deine App schon mal mit ios10 funktioniert hat.
Hab letzte Woche das iPad neu aufgesetzt und danach fhem widget installiert. In der App holt er sich auch die freigegebenen Devices zeigt sie leider nicht im Widget an (leeres Widget).
Weiß nicht ob du schon ein Gerät auf ios10 hast... vielleicht kannst du es dir mal anschauen.

FR:
Ansonsten würde ich es schön finden wenn man vielleicht etwas Platz sparen könnte. Ich habe einige Schalter für Licht und vielleicht ist es ja irgendwann möglich die in eine Zeile zu bekommen.
Muss dann ja nicht unbedingt der on/off Schalter sein. Vielleicht als flat-Button mit toggle-Funktion in unterschiedlichen Farben... So könnte man 2-4 Buttons in eine Reihe kriegen.
Kannst du dir ja mal überlegen.

HaPeRiebmann

Hi,

Danke für das Feedback. iOS 10 hab ich bisher im Simulator laufen und da ging es bisher. Ich hab aber noch nicht so viel gemacht damit.

Zum FR: den Ansatz hab ich auch schon mal überlegt. Mein Problem war dass ich noch keine elegante Lösung gefunden habe. Das JSON wird mittlerweile unübersichtlich und Leute ohne Programmiererfahrung kommen sehr schwer klar. Hier noch Layouting einbauen ist da kontraproduktiv. Ich hab ein paar Ideen aber das braucht noch. Steht aber auf meiner Liste.
Raspberry Pi | Homematic Komponenten | Brennenstuhl Funksteckdosen | homebridge
http://fhemwidget.de.tasior.de
Slack: fhemwidget.slack.com
https://itunes.apple.com/us/app/fhem-widget-2/id1169530472?l=de&ls=1&mt=8

oberlon

Kann mir gut vorstellen dass du das json nicht unbedingt erweitern willst obwohl fhem User ja einiges gewöhnt sind  ;D
Auf die schnelle fällt mir nur ein z.B. ein group Attribut hinzuzufügen.
Na du machst das schon. Freue mich auf jeden Fall das die Entwicklung weiter geht.

HaPeRiebmann

Version 1.4.2 ist gerade in Review gegangen, hier wird der ThreeStateSwitch enthalten sein.

@oberlon: Steht in meinem Backlog
Raspberry Pi | Homematic Komponenten | Brennenstuhl Funksteckdosen | homebridge
http://fhemwidget.de.tasior.de
Slack: fhemwidget.slack.com
https://itunes.apple.com/us/app/fhem-widget-2/id1169530472?l=de&ls=1&mt=8

Fhemschorsch

Was ich auch als Feature toll finden würde:

Wenn man keinen Zugriff von unterwegs hat, sollten die Schalter nicht wählbar sein. Bei den Werten sieht man ja schon Striche, woran man erkennt, dass kein Wert übermittelt wird, aber die Schalter kann man noch drücken. Vielleicht ausgrauen?

(http://uploads.tapatalk-cdn.com/20160802/3d5848eec460b937b33df01b7fe66d1f.png)

HaPeRiebmann

Eigentlich solltest du immer von unterwegs Zugriff drauf haben, dafür hab ich einen Syncservice gebaut :-)
Raspberry Pi | Homematic Komponenten | Brennenstuhl Funksteckdosen | homebridge
http://fhemwidget.de.tasior.de
Slack: fhemwidget.slack.com
https://itunes.apple.com/us/app/fhem-widget-2/id1169530472?l=de&ls=1&mt=8

Fhemschorsch

Ich meine ja nur, andere Widgets verhalten sich auch anders, wenn keine Verbindung zu den Daten besteht. Flugmodus, Roaming aus im Ausland, ...
Jetzt fühl ich mich wie im Büro, dabei hab ich doch Elternzeit:-)

HaPeRiebmann

Stimmt auch :-D

Die 1.4.2 wurde gerade freigegeben
Raspberry Pi | Homematic Komponenten | Brennenstuhl Funksteckdosen | homebridge
http://fhemwidget.de.tasior.de
Slack: fhemwidget.slack.com
https://itunes.apple.com/us/app/fhem-widget-2/id1169530472?l=de&ls=1&mt=8

oberlon

#131
Heute ist mein LED-Profil für meine Küche angekommen und ich habe es gleich mal verbaut.
Ich habe hier RGBWW-Stripes die ich mit dem Modul WifiLight anspreche. Über Fhem auch alles okay.
Über das Widget würde ich gerne den "dim" Wert bestimmen (0 = aus, 30, 50, 75, 100).
WifiLight hat zwar ein setter für dim aber kein Reading. Deswegen bin ich meiner eigenen Empfehlung gefolgt und habe ein userReading dim angelegt.
Soweit so gut, ich kann die Werte hochschalten.
Aber nun ;)

1. Drücke ich + springt er z.B. von 50 auf 75. Drücke ich - geht der Wert auf 0.
2. Stelle ich manuell den dim/brightness Wert auf 63 zeigt er mir im Widget 6 an. Drücke ich auf + springt er auf 50

Schau dir das bitte mal an. Ich denke das ist nicht so gewollt.

Und danke für die neue Version.
ThreeStateSwitch habe ich schon mal probiert. Weiß zwar noch nicht wofür ich es nutze aber wird sich schon was finden:)

edit:
Ach ja, bei Switch, ThreeState... und normaler Ausgabe von Infos (Allowed ist leer) hast du unterschiedliche Schriftgrößen... Ich hänge mal ein Bild an.

Fhemschorsch

Und ich hab mal die Sync-Funktion getestet. Vielleicht bin ich ja etwas doof, aber ich bekomme immer einen 400er:

java.io.IOException: Server returned HTTP response code: 400 for URL: https://tasior.info:42333/fhem?op=gcml
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1840)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1441)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)
at de.tasior.Util.getCommandList(Util.java:164)
at de.tasior.LoopHandler.getCommands(LoopHandler.java:90)
at de.tasior.LoopHandler.<init>(LoopHandler.java:37)
at de.tasior.Main.main(Main.java:42)


Laufen tut das Skript auf einem Raspberry Pi (3), der natürlich Zugriff auf das Internet hat und auf dem der FHEM läuft. Ansonsten hoffe ich, dass ich alles soweit nach Anleitung gemacht habe...

HaPeRiebmann

#133
@oberlon: die Schriftgrößen hab ich mal aufgenommen, kommen in die nächste Version. Das Problem mit dem Springen liegt daran, dass in den userReadings technisch nur Strings drin stehen. Ich selbst benutze auch gemischte Arrays. Darum muss ich, um den aktuellen Status zu bekommen, auch Stringvergleiche machen. Wenn du also jetzt nur ein Subset der möglichen Werte ins FHEM Widget json einbaust kann es sein dass der gerade gesetzte Wert nicht gefunden wird und die Iteration mit + und - nicht funktioniert. Das hat manchmal zum Crash geführt. Jetzt gehe ich einfach in die Mitte des Arrays, suche den Wert und nehme den nächsten. Das führt bei fünf Werten genau so wie du es beschreibst. Bei minus springt er auf 0 und bei Plus auf den vorletzten.
Probier mal mit mehr Werten rum dann sollte es besser werden.

@Fhemschorsch: starte den Client mal mit -v und poste den gesamten Output. Kann es sein dass du den Token-Dummy nicht angelegt hast?
Raspberry Pi | Homematic Komponenten | Brennenstuhl Funksteckdosen | homebridge
http://fhemwidget.de.tasior.de
Slack: fhemwidget.slack.com
https://itunes.apple.com/us/app/fhem-widget-2/id1169530472?l=de&ls=1&mt=8

Fhemschorsch

Der Token ist angelegt

define fhem_widget_sync_token dummy

Und im State des Dummys ist der Token enthalten.

state       12345678-ff0-0000-0000-0000000000     2016-08-02 23:40:16

Hier der Auszug beim Start mit der Option -v:

FHEM Sync Client Build 17
Verbose on
FHEM URL: http://192.168.178.24:8083
Room:

Getting all Devices using: http://192.168.178.24:8083/fhem?cmd=jsonlist2&XHR=1
java.io.IOException: Server returned HTTP response code: 401 for URL: http://192.168.178.24:8083/fhem?cmd=jsonlist2&XHR=1
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1840)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1441)
at de.tasior.Util.getDevicesForFHEMWidget(Util.java:49)
at de.tasior.Main.main(Main.java:38)

Devices found:
==============================

Loop started with 1000ms loop
Getting Device States
FHEM Device States changed, uploading new ones
Error 21: Server returned HTTP response code: 400 for URL: https://tasior.info:42333/fhem?op=sufl
Error 29: Server returned HTTP response code: 400 for URL: https://tasior.info:42333/fhem?op=gcml
Error 29: Server returned HTTP response code: 400 for URL: https://tasior.info:42333/fhem?op=gcml
Error 29: Server returned HTTP response code: 400 for URL: https://tasior.info:42333/fhem?op=gcml
Error 29: Server returned HTTP response code: 400 for URL: https://tasior.info:42333/fhem?op=gcml
^XError 29: Server returned HTTP response code: 400 for URL: https://tasior.info:42333/fhem?op=gcml


(Ich hatte zuerst localhost, anstelle der IP, da war das gleiche Verhalten...)