HomePlus - Hybrid frontend mobile-app UI-Framework (Android, iOS, Web)

Begonnen von Real-TTX, 22 November 2016, 20:57:19

Vorheriges Thema - Nächstes Thema

Real-TTX

Hi,

vielen Dank  8)

Habe erst jetzt deine Nachricht gesehen - mein Tapatalk wollte mir keine Push-Nachricht senden...


Zu deinem Problem:

Hast du ein self-signed Zertifikat oder ist dies gültig? (Let's Encrypt...?)
Hast du schon die aktuelle Version 0.7.8 ?
Kommst du mit deinem Safari auf die FHEM Seite? Kannst du hier dem Zertifikat dauerhaft vertrauen, oder ist es gar ungültig?

Aktuell ist ein Bug in der automatischen Formatierung der Host-Adresse als URL: https://my-ip:port/fhem  bzw https://my-ip:port ist case-sensitive und muss klein geschrieben sein.

Nutzt du nginx oder HTTPS direkt mit FHEMWEB ?


Viele Grüße


Server: 3x Supermicro A1SAi-2750F, FHEM @ Debian-VM
Bandwidth: 800 Mbit / 100 Mbit, Failover LTE
Homematic: 2x HM-MOD-RPI-PCB (via Pi3 socat)
Z-Wave: Z-Wave.Me USB Stick (via Pi3 socat)
RFXTrx: RFXCom (via Pi3 socat)

wiewaldi

Hallo,

1. Es ist ein self-signed Zertifikat
2. Installierte iOS Version ist 0.7.8 beta
3. Mit Safari komme ich auf die Fhemseite, dem Zertifikat wird dauerhaft vertraut und es ist gültig.
4. Nutze HTTPS direkt mit FHEMWEB

Wie gesagt mit der Android Version: 0.5.6 #beta (20170131) funktioniert es...



Real-TTX

Uhhh.. lade dir mal die aktuelle Version aus dem Play-Store herunter. Du verwendest eine recht alte Version.

Aktuell ist 0.7.8

Bei den neueren Versionen funktioniert das leider nicht mehr mit self-signed Zertifikaten. Bei der alten hat es auch nur funktioniert, weil es ein Debug-Build war. Android lässt das bei  den Release-Apps nicht zu. Ist ja wie bereits geschrieben ein Teil der Sicherheit mit einem Zertifikat. Werde hierfür aber eine Lösung finden...

Viele Grüße
Server: 3x Supermicro A1SAi-2750F, FHEM @ Debian-VM
Bandwidth: 800 Mbit / 100 Mbit, Failover LTE
Homematic: 2x HM-MOD-RPI-PCB (via Pi3 socat)
Z-Wave: Z-Wave.Me USB Stick (via Pi3 socat)
RFXTrx: RFXCom (via Pi3 socat)

Gorean

Hallo Real-TTX,

ich war die letzten beiden Wochen leider busy, konnte aber über Ostern weiter testen.

Mit der neuen Version funktioniert (fast) alles wie geplant. Ich kann über die WebApp connecten und auch über den IOS Client. Bei letzterem aber komischerweise nur, wenn ich kein SSL verwende. Hierzu habe ich zum Testen zwei neue HTTPSRV angelegt, beide ohne SSL und einen ohne Basic Auth. Connected wird bei beiden und alle Devices werden sauber angezeigt. Hierfür erst einmal Danke, es funktioniert!

Leider schaffe ich es nicht, über SSL und Basic Auth zu connecten. Ein einfaches (case sensitives) https:// vor dem FHEM String scheint an meinem self-signed certificate zu scheitern. Kannst Du das bestätigen? Dann würde ich vorerst mal auf reine Basic Auth setzen.

Ich laufe jedoch noch auf ein weiteres Problem auf. Weisst Du zufällig, ob sich bei STRUCTURES die Attribute vererben?

Konkreter Fall:

Ich habe STRUCTURES um meine HUE Leuchten zu Lampen zusammenzufassen.



define HUE.Wohnzimmer_Deckenlicht structure room LCT010.Wohnzimmer_Deckenleuchte_1 LCT010.Wohnzimmer_Deckenleuchte_2
attr HUE.Wohnzimmer_Deckenlicht alias Deckenlicht Wohnzimmer
attr HUE.Wohnzimmer_Deckenlicht room Wohnzimmer,_Siri,_Alexa
attr HUE.Wohnzimmer_Deckenlicht uiDisplayName Deckenlicht Wohnzimmer
attr HUE.Wohnzimmer_Deckenlicht uiDisplayRoom Wohnzimmer


attr HUE.* genericDeviceType switch
attr HUE.* group Licht Structures
attr HUE.* icon light_ceiling_light
attr HUE.* uiDeviceType SWITCH
attr HUE.* uiGet [[DEVICE:*:state|IF:"%1%"="on",1,0]]
attr HUE.* uiSet set %D% [[IF:"%VALUE%"="1",on,off]]
attr HUE.* uiDeviceTypeParameter Eingeschaltet
attr HUE.* uiDeviceColor assertive
attr HUE.* uiDeviceIcon ion-ios-lightbulb-outline
attr HUE.* uiShow 1


Die unten stehende Notation (HUE.*) verwende ich, da diese Parameter für alle HUE Leuchten gelten. Die korrespondierenden Deckenleuchten sind wie folgt definiert:


define LCT010.Wohnzimmer_Deckenleuchte_1 HUEDevice 35  IODev=hueBridge
attr LCT010.Wohnzimmer_Deckenleuchte_1 IODev hueBridge
attr LCT010.Wohnzimmer_Deckenleuchte_1 alias Wohnzimmer Deckenleuchte 1


define LCT010.Wohnzimmer_Deckenleuchte_2 HUEDevice 36  IODev=hueBridge
attr LCT010.Wohnzimmer_Deckenleuchte_2 IODev hueBridge
attr LCT010.Wohnzimmer_Deckenleuchte_2 alias Wohnzimmer Deckenleuchte 2


attr LCT010.* userattr room_map structexclude
attr LCT010.* color-icons 2
attr LCT010.* devStateIcon {(HUEDevice_devStateIcon($name),"toggle")}
attr LCT010.* icon hue_filled_white_and_color_e27_b22
attr LCT010.* model LCT010
attr LCT010.* room _HUEDevice
attr LCT010.* subType extcolordimmer
attr LCT010.* webCmd rgb:rgb ff0000:rgb DEFF26:rgb 0000ff:ct 490:ct 380:ct 270:ct 160:toggle:on:off



Bei den Leuchtmitteln steht also in meiner Config *nix* von Homeplus drin. Sobald ich die Config jedoch neu lade, macht FHEM daraus folgendes:



define LCT010.Wohnzimmer_Deckenleuchte_1 HUEDevice 35  IODev=hueBridge
attr LCT010.Wohnzimmer_Deckenleuchte_1 IODev hueBridge
attr LCT010.Wohnzimmer_Deckenleuchte_1 alias Wohnzimmer Deckenleuchte 1
attr LCT010.Wohnzimmer_Deckenleuchte_1 userattr room_map structexclude
attr LCT010.Wohnzimmer_Deckenleuchte_1 color-icons 2
attr LCT010.Wohnzimmer_Deckenleuchte_1 devStateIcon {(HUEDevice_devStateIcon($name),"toggle")}
attr LCT010.Wohnzimmer_Deckenleuchte_1 icon hue_filled_white_and_color_e27_b22
attr LCT010.Wohnzimmer_Deckenleuchte_1 model LCT010
attr LCT010.Wohnzimmer_Deckenleuchte_1 room _HUEDevice
attr LCT010.Wohnzimmer_Deckenleuchte_1 subType extcolordimmer
attr LCT010.Wohnzimmer_Deckenleuchte_1 webCmd rgb:rgb ff0000:rgb DEFF26:rgb 0000ff:ct 490:ct 380:ct 270:ct 160:toggle:on:off
attr LCT010.Wohnzimmer_Deckenleuchte_1 uiDisplayName Deckenlicht Wohnzimmer
attr LCT010.Wohnzimmer_Deckenleuchte_1 uiDisplayRoom Wohnzimmer
attr LCT010.Wohnzimmer_Deckenleuchte_1 uiDeviceType SWITCH
attr LCT010.Wohnzimmer_Deckenleuchte_1 uiGet [[DEVICE:*:state|IF:"%1%"="on",1,0]]
attr LCT010.Wohnzimmer_Deckenleuchte_1 uiSet set %D% [[IF:"%VALUE%"="1",on,off]]
attr LCT010.Wohnzimmer_Deckenleuchte_1 uiDeviceTypeParameter Eingeschaltet
attr LCT010.Wohnzimmer_Deckenleuchte_1 uiDeviceColor assertive
attr LCT010.Wohnzimmer_Deckenleuchte_1 uiDeviceIcon ion-ios-lightbulb-outline
attr LCT010.Wohnzimmer_Deckenleuchte_1 uiShow 1


Damit wird mir in jedem Raum zusätzlich zu den Geräten auch die Leuchtmittel angezeigt. Das ist für meine Zwecke überflüssig. Seitdem das passiert, kommt auch Alexa durcheinander, da sie immer mehrere Geräte mit gleichem Namen findet.

Eventuell hast Du ja einen Tip, wie man das lösen kann.

Beste Grüße,
Peter








Real-TTX

Hi Gorean,

1.) Web-App Funktioniert immer: Same-Origin + Im Browser hast du bereits (für die Sitzung) das"untrusted" Zertifikat akzeptiert.

2.) iOS Client, wie du schon vermutet hast funktioniert es leider nicht. Bin aber dran... Und lass mir was einfallen... (Workaround kann auch ein z.B. Let's Encrypt Zertifikat sein)


Zu deinem Problem mit dem STRUCTURES Device kann ich nicht viel sagen. Habe ich noch nie verwendet. Ich wusste auch nicht, dass ich beim setzen von Attributen ein Regex verwenden kann  :-[

Werde es aber mal testen und mich erneut melden...  ;)

Viele Grüße
Server: 3x Supermicro A1SAi-2750F, FHEM @ Debian-VM
Bandwidth: 800 Mbit / 100 Mbit, Failover LTE
Homematic: 2x HM-MOD-RPI-PCB (via Pi3 socat)
Z-Wave: Z-Wave.Me USB Stick (via Pi3 socat)
RFXTrx: RFXCom (via Pi3 socat)

wiewaldi

Hallo Real-TTX,

Zitat von: Real-TTX am 19 April 2017, 18:49:49
Uhhh.. lade dir mal die aktuelle Version aus dem Play-Store herunter. Du verwendest eine recht alte Version.

Aktuell ist 0.7.8


OK, habe jetzt zum testen HTTPS rausgenommen, die aktuelle Version 0.7.8 auf iOS und Android installiert.

In der App unter "Server" nur IP:Port  also -> 192.168.0.60:8083 sowie in "Authentication" Username und Passwort eingetragen.
der Test gibt zurück: Connection: OK

Mir werden jetzt die Räume angezeigt,
wähle ich nun einen Raum aus, erscheinen die angelegten Geräte allerdings ohne Werte und es fehlen die Icons.
dann funktioniert Homeplus nicht mehr, es kann nichts mehr ausgewählt werden.

Das gleiche passiert in der 0.7.8 iOS Version.

Wie gesagt die Version 0.5.6 auf dem Android läuft ohne Probleme.

Hier mal ein Bild der Version 0.5.6  sowie der Version 0.7.8 (gleicher Raum)

Real-TTX

Hi wiewaldi,

das liegt aktuell daran, dass die Fehlerprüfung der Geräte noch nicht vollständig implementiert ist. Es liegt an einem "faulen" Gerät / Gerätedefinition. Du musst herausfinden, an welchem Gerät es liegt.....

Es hat sich ggf. eine Schnittstelle zur alten Version geändert...

Kannst mir alternativ auch alle Gerät schicken (List / Gerät) die du mit uiShow anzeigst.

Server: 3x Supermicro A1SAi-2750F, FHEM @ Debian-VM
Bandwidth: 800 Mbit / 100 Mbit, Failover LTE
Homematic: 2x HM-MOD-RPI-PCB (via Pi3 socat)
Z-Wave: Z-Wave.Me USB Stick (via Pi3 socat)
RFXTrx: RFXCom (via Pi3 socat)

wiewaldi

Hallo Real-TTX,

Vielen Dank für die schnelle Rückmeldung,

Zitat von: Real-TTX am 21 April 2017, 21:29:23
das liegt aktuell daran, dass die Fehlerprüfung der Geräte noch nicht vollständig implementiert ist. Es liegt an einem "faulen" Gerät / Gerätedefinition. Du musst herausfinden, an welchem Gerät es liegt.....

Es hat sich ggf. eine Schnittstelle zur alten Version geändert...

Ok, ich habe nun alle Geräte mittels "uishow 0" rausgenommen und einzeln wieder aktiviert,
so konnte ich die "faulen" Geräte finden.

Der Fehler war bei allen Geräten die ich mit
uiDeviceType RANGE angelegt habe, aufgrund der Icon Definition:

uiDeviceIcon: iconleft ion-social-windows;iconright ion-social-windows-outline


Ich habe das uiDeviceIcon Attribut gelöscht uns siehe da das "RANGE" Gerat funktioniert auch !

Das ist schon mal gut, allerdings wird bei keinem Gerät, also nicht nur bei "RANGE" Geräten, das definierte ICON angezeigt.

z.B. bei einem "SWITCH"

Definition:
uiDeviceIcon ion-ios-lightbulb

in der alten Version 0.5.6 sind die Icons alle da.

Die Ausnahme ist natürlich der uiDeviceType THERMOSTAT hier sind die Icons ja vorgegeben und auch zu sehen.



Weiterhin ist mir aufgefallen das bei der uiGet Anweisung

z.B ein:  uiGet [[DEVICE:*:pct]] nicht funktioniert sondern  nur mit [[DEVICE:%D%:pct]]

Bei einer state Abfrage funktionieren allerdings beide Varianten:

uiGet [[DEVICE:*:state]] und uiGet [[DEVICE:%D%:state]]

Was ist nun richtig ?


desmoloch

Klasse App!! So was habe ich gesucht :)
Ich habe nun angefangen meine Heizungen einzubinden. Folgendes ist mir dabei aufgefallen:
1) meine homematic Thermostate haben eine range von on->5.0->30.0->on. Wie lässt sich das mit uiDeviceTypeParameter abbilden?
2) das Einstellen mittels dem Schieber führt direkt zum senden, ohne das ich loslasse. Damit führt ein schieben von rechts nach links und zurück zum totalen Chaos:

2017-04-22 10:18:32 CUL_HM SZ_Heizung desired-temp: 18.0
2017-04-22 10:18:33 CUL_HM SZ_Heizung desired-temp: 17.0
2017-04-22 10:18:34 CUL_HM SZ_Heizung desired-temp: 15.0
2017-04-22 10:18:36 CUL_HM SZ_Heizung desired-temp: 16.0
2017-04-22 10:18:36 CUL_HM SZ_Heizung desired-temp: 14.0
2017-04-22 10:18:38 CUL_HM SZ_Heizung desired-temp: 13.0
2017-04-22 10:18:39 CUL_HM SZ_Heizung desired-temp: 11.0
2017-04-22 10:18:40 CUL_HM SZ_Heizung desired-temp: 9.0
2017-04-22 10:18:41 CUL_HM SZ_Heizung desired-temp: 10.0
2017-04-22 10:18:44 CUL_HM SZ_Heizung desired-temp: 8.0
2017-04-22 10:18:45 CUL_HM SZ_Heizung desired-temp: 7.0
2017-04-22 10:18:46 CUL_HM SZ_Heizung desired-temp: 6.0

Hier sollte eine Verzögerung drin sein, damit nicht jeder kleine Zustandswechsel gesendet wird. Oder auch vielleicht ein Bug? :)

3) ich würde gerne die valveposition im Thermostat anzeigen. Feature request :)

Gruß

Real-TTX

@wiewaldi:
Super!
Die Icons, die jetzt funktionieren, sind zu finden unter https://ionicframework.com/docs/ionicons/. Alternativ Awesome Font fa-xxxx. Wenn Irgendwo ein Icon wirklich fehlt, einfach nochmal melden. Bug wird entfernt .. Ich meine Icon hinzugefügt 8)

@desmoloch:
1.) uiDeviceParameter wäre in diesem Fall 5;30;1. Beim lesen und schreiben musst du einfach dein "off"  in 5 umwandeln:

Aus dem Kopf (Ist hier aber irgendwo im Thread schon zu finden....)
uiGet [[DEVICE:mydevice:desired-temp|IF:"%1%"="off",5]]
uiSet set mydevice desired-temp [[IF:"%VALUE%"="5",off,%VALUE%]]

2.) Ohne Frage könnte man den "debounce" erhöhen - Aktuell nur ein paar ms. (Werde ggf. die Debounce-Time Einstellbar machen)

3.) Ist bereits von einem anderen User auf der Todo.. Werde es aufgrund deines Requests ein bisschen nach oben schieben  8)


Viele Grüße
Server: 3x Supermicro A1SAi-2750F, FHEM @ Debian-VM
Bandwidth: 800 Mbit / 100 Mbit, Failover LTE
Homematic: 2x HM-MOD-RPI-PCB (via Pi3 socat)
Z-Wave: Z-Wave.Me USB Stick (via Pi3 socat)
RFXTrx: RFXCom (via Pi3 socat)

gloob

Guten Morgen,

Irgendwie komme ich mit den Einstellungen für ein Device nicht klar. Hat jemand vielleicht ein Sample für mich um einen normalen Schalter in der App anzuzeigen und nutzen zu können.

Kann auch gerne ein Dummy sein:

define dummySwitch dummy
Raspberry Pi 3 | miniCUL 433MHz | nanoCUL 868 MHz | nanoCUL 433 MHz | MySensors WLAN Gateway | LaCrosse WLAN Gateway | SignalESP 433 MHz | SignalESP 868 MHz | HM-MOD-UART WLAN Gateway | IR - 360 Grad WLAN Gateway

wiewaldi

Hallo Real-TTX,

Zitat von: Real-TTX am 22 April 2017, 20:28:11
@wiewaldi:
Super!
Die Icons, die jetzt funktionieren, sind zu finden unter https://ionicframework.com/docs/ionicons/. Alternativ Awesome Font fa-xxxx. Wenn Irgendwo ein Icon wirklich fehlt, einfach nochmal melden. Bug wird entfernt .. Ich meine Icon hinzugefügt 8)

1. Ja, beide Varianten habe ich auch getestet, das kein Icon angezeigt wird liegt am "uiDeviceType"

Ich verwende im Test System die Typen: SWITCH , THERMOSTAT , RANGE und LABEL-VALUE

Typ: SWITCH         -> Icon wird angezeigt
Typ: THERMOSTAT -> Icons sind da, sind ja vorgegeben
Typ: RANGE           -> Icons werden angezeigt (iconLeft und iconRight)

Nur beim Type LABEL-VALUE wird kein Icon angezeigt !

Andere uiDeviceTypen habe ich noch nicht getestet.

2. Ich wolle die Funktion  "uiDeviceColor" mal ausprobieren, nach dem Eintrag:
"uiDeviceColor assertive" ändert sich aber nichts, muss ich noch etwas beachten ?

Wo genau wird die geänderte Farbe angezeigt in der Oberfläche im uiDisplayName oder im uiDeviceTypeParameter ?


Real-TTX

@gloob:

Standardmäßig kann SWITCH nur mit 0 oder 1 umgehen. In FHEM ist in vielen Fällen allerdings "on" bzw "off" richtig. Deswegen musst du beim einlesen aus on eine 1 machnen und beim senden aus 1 ein on. Bei "off" das gleiche:

uiDeviceType SWITCH
uiDeviceTypeParameter Switched on?
uiDisplayName Light
uiDisplayRoom Living Room
uiGet [[DEVICE:%D%:state|IF:="on",1,0]]
uiSet set %D% [[IF:"%VALUE%"="1",on,off]]
uiShow 1


Beachte, dass %D% eine Variable für den aktuellen Gerätename ist. In diesem Fall das Dummy.

@wiewaldi:

1.) uiDeviceColor ist je nach Gerät unterschiedlich. Meistens soll das icon eingefärbt werden....

2.) LABEL-VALUE Icon wird gefixt.

3.) Mit welchem Gerät hast du uiDeviceColor ausprobiert?


Viele Grüße


Server: 3x Supermicro A1SAi-2750F, FHEM @ Debian-VM
Bandwidth: 800 Mbit / 100 Mbit, Failover LTE
Homematic: 2x HM-MOD-RPI-PCB (via Pi3 socat)
Z-Wave: Z-Wave.Me USB Stick (via Pi3 socat)
RFXTrx: RFXCom (via Pi3 socat)

desmoloch

Zitat von: Real-TTX am 22 April 2017, 20:28:11
@desmoloch:
1.) uiDeviceParameter wäre in diesem Fall 5;30;1. Beim lesen und schreiben musst du einfach dein "off"  in 5 umwandeln:

Aus dem Kopf (Ist hier aber irgendwo im Thread schon zu finden....)
uiGet [[DEVICE:mydevice:desired-temp|IF:"%1%"="off",5]]
uiSet set mydevice desired-temp [[IF:"%VALUE%"="5",off,%VALUE%]]

ah super danke! Dann stelle ich meinen meinen DeviceParameter auf 4.5;30.5;0.5 (auch kleine Schritte gehen :)) 4.5 und 30.5 würde ich wählen, damit ich aus 4.5 -> off machen kann und aus 30.5 -> on. Denn das Thermostat hat neben 5-30 auch noch on und off. Gibt es auch eine Möglichkeit on und off bei uiGet anzueigen oder sind nur Zahlen erlaubt? Hier auch noch on und off anzeigen zu können wäre klasse.


Zitat von: Real-TTX am 22 April 2017, 20:28:11
2.) Ohne Frage könnte man den "debounce" erhöhen - Aktuell nur ein paar ms. (Werde ggf. die Debounce-Time Einstellbar machen)
Eine Einstellung wäre super. Ich habe hier 3 Thermostate im ClimaTeam. Die drehen alle durch wenn ich mit deiner App die Temperatur ändere. Daher kann ich momentan dei Thermostate nicht damit regeln. Wie wäre es mit der Möglichkeit die Temp auch per Direkteingabe und +/- Buttons einzustellen? Fände ich auch gut.

Zitat von: Real-TTX am 22 April 2017, 20:28:11
3.) Ist bereits von einem anderen User auf der Todo.. Werde es aufgrund deines Requests ein bisschen nach oben schieben  8)

Klasse!

Real-TTX

Theoretisch ja, ist aber ein Bug in der aktuellen Version: Range / Thermostat gehen nur ganze Zahlen :/ Melde mich zu deinen anderen Punkten später...

Gesendet von meinem Pixel XL mit Tapatalk

Server: 3x Supermicro A1SAi-2750F, FHEM @ Debian-VM
Bandwidth: 800 Mbit / 100 Mbit, Failover LTE
Homematic: 2x HM-MOD-RPI-PCB (via Pi3 socat)
Z-Wave: Z-Wave.Me USB Stick (via Pi3 socat)
RFXTrx: RFXCom (via Pi3 socat)