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

Hallo Zusammen,

bin aktuell dran eine Cross-Plattform App für FHEM zu bauen.

Ich habe für mich eine Lösung gesucht, welche die ganzen "komplizierten" Namen von Geräten, Channels, Readings versteckt. Einfach zu bedienen ist und auf jedem Gerät gleich aussieht. Egal ob Tablet, Handy oder am PC.

Die einfache Konfiguration in FHEM direkt über das eigentliche Gerät oder mit einem "dummy" Device - Alle Parameter sind frei konfigurierbar: Wie werden Daten von FHEM gelesen? Wie werden sie wieder abgeschickt?

Aktuelle Funktionen:
HTTP
HTTPS
BASIC AUTH
Autoupdate
Favoriten (Lokal)
Anzeigeberechtigung über Bit-Vergleich

Aktuelle Home-Expressions: (s. Screenshot "FHEM - Gerät-Konfiguration" - Ausdruck zur Manipulation bei lesen und schreiben von Werten)
IF
REGEX
REGEX-REPLACE
REPLACE
TEXT
DEVICE
DEVICE-READING-VALUE
DEVICE-READING-TIME
DEVICE-INTERNAL
MATH
MATH-ROUND

Aktuelle Controls:
GROUP
SWITCH
SWITCH-RANGE
RANGE
THERMOSTAT
LABEL
LABEL-VALUE
LABEL-VALUE-LIST
LABEL-BUTTON
LABEL-BUTTON-LIST
TEXT
TEXTBOX
TEXTBOX-BUTTON
BUTTON
BUTTON-BAR
COLOR-PICKER
DROPDOWN-LIST
RADIO-BUTTON-LIST
PROGRESS

Screenshots
http://homeplus.risx.de/Images/Screenshot_Room.png (App - Raum)
http://homeplus.risx.de/Images/Screenshot_Navigation.png (App - Menü)
http://homeplus.risx.de/Images/Screenshot_Device.png (App - Gerät)
http://homeplus.risx.de/Images/Screenshot_Web.png (App - Web)
http://homeplus.risx.de/Images/Screenshot_FHEM_Config.png (FHEM - Gerät-Konfiguration)

Dokumentation
http://homeplus.risx.de/Docs.aspx?Category=Default&Item=Installation

Download
http://homeplus.risx.de/Download.aspx

Erste Schritte
http://homeplus.risx.de/Install.aspx

Aktuelle Änderungen:
http://homeplus.risx.de/Changelog.aspx

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)

Real-TTX

@Mods: Habe es irgendwie geschafft die - IMHO - falsche Kategorie auszuwählen. Sollte doch lieber in "Mobile Devices"...  ::)
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)

visionsurfer

Hi,

das sieht gut aus. Klingt interessant.
Du musst mir nur mal erklären, wie ich das mit ios testen könnte ?
Das verstehe ich noch nicht ganz.

Ich bin schon länger auf der Suche nach einer guten Bedienung für mein IPHONE. Aktuell nutze ich die FHEM App. Aber eigentlich nur um mein Türschloss zu entriegeln. Weil gerade z.B. meine KNX Devices nicht in der App funktionieren.

Daher habe ich schon die ganze Zeit überlegt ob man nicht quasi eine Art Browser App bauen kann und das ganze so aussehen lassen könnte, das es wie eine native App wirkt.

Grüße,
Visionsurfer

Real-TTX

Hi visionsurfer,

mit dieser App würde das ganze funktionieren.

Zum testen schick mir einfach eine PN mit deiner E-Mail Adresse. Ich lade dich zum Testen ein.
Für alle weiteren Informationen, bin ich aktuell dran eine Doku zu schreiben.

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)

C0mmanda

Für iOS würd ich es mir auch mal anschauen wollen, kann momentan aber keine zeitliche Zusagen machen! (Aktuell wenig Zeit zum "basteln").

grtz
CmdA

visionsurfer

Hi,

Ich hab dir eine pn geschrieben.

Grüße
Visionsurfer

miche

Hi,

die IOS Version würde mich auch interessieren

visionsurfer

Hi,

also ich hab die IOS Version am laufen. Zumindest sehe ich jetzt mal in unsorted das Test dummy.

Nun wollte ich mal echte Geräte einbinden. Aber ich scheitere schon am einfachsten. Ich möchte einfach den an uns aus Schalter von meinem Esstischlampe aus dem Raum Essen einbinden.

uiDeviceType = Switch
uiDisplayName = Esstischlampe
uiShow = 1
uiDeviceTypeParameter ???
Hier weiß ich leider nicht was eingetragen werden muss um einen einfachen an und aus Button zu bekommen ?

Grüße,
Visionsurfer

Real-TTX

Habe vor kurzem die Doku aktualisiert. Dort findest du ein Bsp. zum Switch.
s.http://www.risx.de/HomePlus/

Denk daran, dass uiDeviceType case-sensitive ist :-)
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)

visionsurfer

Hi,

ok. Danke. Muss ich mir anschauen. Sieht auf den ersten Blick recht kompliziert aus.

Wobei ich auch kein Programmierer bin und keine Ahnung von diesen Dingen habe:

   Get:          value AS HOMEEXPRESSION(OF BOOL)
   Set:          cmd AS HOMEEXPRESSION
      Variables:    %VALUE% AS BOOL (0 or 1)

Meine Esstischlampe liefert im State z.B. on und off. Ich werde morgen mal deinen Code vom Beispiel übernehmen und schauen was passiert :)

Grüße,
Visionsurfer

Real-TTX

Hi visionsurfer,

das bedeutet:

uiGet: Ausdruck, der als Ergebnis 0 oder 1 liefert. (Konvertieren z.B. mit Home-Expression)
uiSet: Command, der ausgeführt werden soll. %VALUE% ist hier entweder 0 oder 1.

im Detail:

uiGet: "mydevice:state"  - ohne HomeExpression (wäre bei dir "on" oder "off")
uiGet: "[[DEVICE:mydevice:state]]" - mit HomeExpression, ohne Konvertierung (wäre bei dir "on" oder "off")
uiGet: "[[DEVICE:mydevice:state|IF:"%1%"="on",1,0]] - mit HomeExpression, mit Konvertierung wäre in deinem Fall dann 1 oder 0


IF:"%1%"="on",1,0

bedeutet soviel wie:

Falls der 1. Teil des Expressions also DEVICE:mydevice:state gleich on ist, ist das Ergebnis 1, ansonsten 0.

Ich habe mich dafür entschieden, dass jedes Control einen definierten Eingabe / Ausgabe Wert hat damit ich es für jedes Gerät verwenden kann. Egal ob Homematic, HUE oder sonst etwas. Ein Hue Device hat zb ein Reading "onoff" welches 0 oder 1 hat. Beim setzen eines Wertes wird aber ein "on" bzw. "off" erwartet. Somit würde ich auf die Schnauze fallen, sobald mein Control SWITCH einen "TRUE-VALUE" und "FALSE-VALUE" Parameter hat. Im Falle des HUE Devices ist nämlich das lesen von Werten anders als das schreiben von Werten.


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)

visionsurfer

Hi,

ok. Danke. Könnten wir vielleicht das ganze als Beispiel an einem genauen Device machen. Hier z.B. meine Esstischlampe. Hier das List:


Internals:
   DEF        1/1/12:dpt1
   DEVNAME    lamp1
   IODev      KNX
   KNX_MSGCNT 15
   KNX_RAWMSG C112bw110c00
   KNX_TIME   2016-11-28 23:24:31
   LASTInputDev KNX
   MSGCNT     15
   NAME       lamp1
   NR         147
   NTFY_ORDER 50-lamp1
   STATE      off
   TYPE       KNX
   Gaddr:
     1          1/1/12
   Gcode:
     1          110c
   Model:
     1          dpt1
   Readings:
     2016-11-28 23:24:31   getG1           off
     2016-11-28 23:24:31   last-sender     1/1/43
     2016-11-21 19:57:20   setG1           off
     2016-11-28 23:24:31   state           off
   Readingsname:
Attributes:
   IODev      KNX
   alias      esstischlampe
   room       Alexa,Essen
   uiDeviceType Switch
   webCmd     on:off


Weil ich muss doch dann Device und mydevice durch Werte vom Gerät ersetzen, oder ?

Grüße,
Visionsurfer

Real-TTX

Also.

1.) uiDeviceType ist case-sensitive! also "SWITCH" und nicht "Switch"

2.) uiShow muss 1 sein. Damit es in der App angezeigt wird.

3.) uiDeviceParameter muss angegeben sein. Beim Switch z.B.  "Eingeschaltet"

4.) uiGet wäre in deinem Fall : [[DEVICE:lamp1:state|IF:"%1%"="on",1,0]]

5.) uiSet wäre in deinem Fall : set lampe1 [[IF:"%VALUE%"="1",on,off]]

Jetzt sollte es gehen?


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)

visionsurfer

Hi,

ok. Danke. Nur das hier verstehe ich noch nicht. Was meinst du damit ?

Zitat3.) uiDeviceParameter muss angegeben sein. Beim Switch z.B.  "Eingeschaltet"

Grüße,
Visionsurfer

Real-TTX

uiDeviceParameter gibt die Parameter für das jeweilige Gerät an. Beim Switch wird hier ein Parameter verlangt. Der Parameter ist beim Switch das Label/der Text der vor dem Schalter angezeigt wird.  Deswegen kannst du ihn einfach auf "Eingeschaltet" setzen. Schaus dir dann einfach in der App an.
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)