Windows Phone 8 App

Begonnen von Spiceweasel, 01 Juli 2013, 15:10:28

Vorheriges Thema - Nächstes Thema

Badflex

Ich bin so gespannt. Endlich tut sich was fur Windows Phone/mobile 10. Bin seit der ersten Stunde bei Windows Phone 7 dabei. Das einzige was mir immer gefehlt hat sind solche speziellen Apps.
Bitte macht weiter so ;-)
Raspberry Pi, CUL868(SlowRF), FB 7490, SmartVisu, fast nur HomeMatic wenig FS20, Netatmo

Dornemichel

Würde auch liebend gern die Beta testen!

Tedious

Ich schmeiß mal "Project Islandwood" in den Raum. Man bräuchte nur den Quellcode der/einer IOS-APP für FHEM, denn ließe sich das in eine native Win10Mobile App konvertieren. Ein Beispiel und Infos gibt es hier: http://www.drwindows.de/content/8918-projekt-islandwood-5-minuten-ios-windows-10.html

Man müsste nicht das Rad neu erfinden... ;)
FHEM auf Proxmox-VM (Intel NUC) mit 4xMapleCUN (433,3x868) und Jeelink, HUE, MiLight, Max!, SonOff, Zigbee, Alexa, uvm...

kingmathers

Also ich habe jetzt eine aktuellere Beta Version denjenigen verfügbar gemacht, die bisher Interesse geäußert hatten.

Falls ich jemanden vergessen habe oder noch jemand Interesse hat, bitte einfach melden.

Raspberry Pi B+, FS20, 1-Wire, HM
FHEM Home Control (App für Windows 10): https://forum.fhem.de/index.php/topic,49891.0.html
FHEM Arduino Library: https://forum.fhem.de/index.php/topic,94093.0.html

FlorianZ

Hallo,

Ich würde mich auch gerne am Betatest beteiligen.

Gruß
Florian

Badflex

Hat schon jemand eine Verbindung hinbekommen?
Raspberry Pi, CUL868(SlowRF), FB 7490, SmartVisu, fast nur HomeMatic wenig FS20, Netatmo

Adriano

Username / Passwort wird das Problem sein. Aktuell funktioniert die App wohl nur ohne.

Badflex

Jap,habe ich auch rausgefunden
Raspberry Pi, CUL868(SlowRF), FB 7490, SmartVisu, fast nur HomeMatic wenig FS20, Netatmo

kingmathers

#83
Die nachfolgenden Informationen gelten nur für die Windows Phone 8 Version die App.
Die Infos zur aktuellen Version für Windows 10 habe ich in einem neuen Thread untergebracht.

Also damit das nicht so unübersichtlich wird mache ich mir jetzt einmal hier die Mühe die relevanten Infos zur App bereitzustellen.

Im Moment arbeite ich daran das auf Windows 8.1/10 zu portieren, damit wäre auch eine Universal App möglich und Integration von Cortana, Band etc.

Falls jemand Interesse hat, die App in der aktuellen Form zu testen kann er sich jedoch gerne bei mir melden.

Zur Zeit ist die App auf Funktionen in FHEM (in der 99_myUtils-Datei) angewiesen um mit dem FHEM Server kommunizieren zu können. Passwort oder https werden nicht unterstützt.

Es werden nur einfache Ein/Aus-Geräte (Steckdose, Lichtschalter ohne Dimmer) und (jedoch etwas komplizierter) Heizungen (Thermostate, PID-Regler) unterstützt.

Beim Start der App wird die Funktion "FHEM_Home_Control_GetAllInfo" aufgerufen und eine Antwort in dieser Art erwartet:


<FHEM_Home_Control>
<Rooms number="1">
<room name="Wohnzimmer" />
</Rooms>
<SwitchDevices number="1">
<SwitchDevice id="0" name="Licht" room="Wohnzimmer" state="off" />
</SwitchDevices>
<HeatingDevices number="0">
</HeatingDevices>
</FHEM_Home_Control>


Dabei ist wichtig, dass der Wert hinter "number" jeweils auch der Anzahl der im folgenden genannten Geräte oder Räume entspricht. Außerdem muss jedes Gerät einem Raum zugeordnet sein, der bereits vorher unter "Rooms" auftauchte. Der Name des Gerätes ("Licht") sollte auch dem Namen in FHEM entsprechen, da zum schalten dann beispielsweise "set Licht on" verwendet wird. Die id sollte bei 0 anfangen und jedes Gerät sollte eine eigene id haben, diese wird jedoch nur intern verwendet.

Die sub in 99_myUtils kann zb so aussehen:

sub
FHEM_Home_Control_GetAllInfo
{
  my $room = "Wohnzimmer";
  my $device= "Licht";
  my $state = ReadingsVal($device, "state", "off");

  my $result = "<FHEM_Home_Control>\n<Rooms number=\"1\">\n<room name=\"" . $room . "\" />\n</Rooms>\n";

  $result = $result . "<SwitchDevices number=\"1\">\n<SwitchDevice id=\"0\" name=\"" . $device . "\" room=\"" . $room . "\" state=\"" . $state . "\" />\n</SwitchDevices>\n";

  $result = $result . "<HeatingDevices number=\"0\">\n</HeatingDevices>\n</FHEM_Home_Control>";

  return $result;


Das ganze kann natürlich für weitere Räume oder Geräte angepasst werden.

Um auch Heizungen zu steuern kann noch eine weiter Zeile mitübergeben werden, so dass das ganze dann etwa so aussieht:



<FHEM_Home_Control>
<Rooms number="1">
<room name="Wohnzimmer" />
</Rooms>
<SwitchDevices number="1">
<SwitchDevice id="0" name="Licht" room="Wohnzimmer" state="off" />
</SwitchDevices>
<HeatingDevices number="1">
<HeatingDevice id="0" name="Heizung_Wohnzimmer" desired="17" measured="21" Mode="auto" AutoTemp="12" Actuation="0" present="0" PresentAutoTemp="17" AbsentAutoTemp="12" />
</HeatingDevices>
</FHEM_Home_Control>


Zu den einzelnen Variablen:

Es wird eine Zahl als id übergeben. Jeder Kombination aus Thermostat und Stellantrieb wird eine id zugewiesen, beginnend mit 0. Die meisten Variablen wie name etc sind ja selbsterklärend. Bei desired und measured kann man ja z.B. die Werte aus dem Thermostat oder PID-Regler mit ReadingsVal() auslesen.

Was vielleicht nicht so einleuchtend ist:

Mode: entweder auto oder manual

AutoTemp: Die Temperatur, die eingestellt sein soll wenn die Heizung auf Auto steht.

Actuation: Öffnung vom Stellantrieb in Prozent, Zahl zwischen 0 und 100 ohne Prozentzeichen

present: entweder 0 (abwesend) oder 1 (anwesend) oder null (nicht definiert). Ich habe einige Räume, die nur geheizt werden, wenn die entsprechende Person zu Hause ist und nicht, wenn derjenige wegen Studium oder beruflich für einen längeren Zeitraum abwesend ist. Bei Räumen wo dies keinen Sinn macht (z.B. hier im Wohnzimmer), kann man "null" eintragen, dann wird die entsprechende Option nicht in der App angezeigt.

PresentAutoTemp, AbsentAutoTemp: Wie oben beschrieben kann es eine gewünschte Temperatur geben wenn die Person anwesend ist (z. B. 17 Grad) und eine andere wenn die Person abwesend ist (z. B. 12 Grad). Wenn dies nicht verwendet wird (present="null") am besten einfach bei beiden Werten die gewünschte Temperatur laut Heizplan übergeben.

Die Zeile sollte dann am Ende z.B. so wie oben aussehen

Die Reihenfolge der Argumente ist egal, aber es sollten alle vorkommen. Bei desired, PresentAutoTemp und AbsentAutoTemp werden aktuell nur ganze Zahlen zwischen 5 und 30 unterstützt.

Ist nicht sehr benutzerfreundlich, war jedoch für meine FHEM Installation so am einfachsten.

Geändert werden kann die gewünschte Temperatur dann auch in der App, dafür wird wiederum eine Funktion in FHEM benötigt. Diese Funktion heißt "FHEM_Home_Control_HeatingDeviceChange". Sie hat als Argumente die id der Heizung, den Modus (auto oder manual), die gewünschte Temperatur und den status anwesend oder nicht. Das ganze kann dann z.B. so aussehen:


sub
FHEM_Home_Control_HeatingDeviceChange
{
  my $id = $_[0];
  my $mode = $_[1];
  my $temp = $_[2];
  my $presence = $_[3];
}


Diese Variablen müssen dann an das Thermostat oder den PID-Regler übergeben werden.
Raspberry Pi B+, FS20, 1-Wire, HM
FHEM Home Control (App für Windows 10): https://forum.fhem.de/index.php/topic,49891.0.html
FHEM Arduino Library: https://forum.fhem.de/index.php/topic,94093.0.html

Badflex

Aha,werd das mal nacher testen.
Was warscheinlich nicht geht, was für mich aber bei present/absent nur sinn macht, ist das die Temperatur die voreingestellten Zeit/Temperatur nimmt.
So wie ich das lese kann man ja nur eine Temperaturzahl angeben. Wenn ich aber morgens per Temperaturliste 18 und abends 21C habe geht das so nicht. Oder?
Danke für die mühe.
Raspberry Pi, CUL868(SlowRF), FB 7490, SmartVisu, fast nur HomeMatic wenig FS20, Netatmo

kingmathers

Also ich verwende es so, dass aus dem Heizplan die aktuell gewünschte Temperatur ausgelesen wird und dieser Wert (bzw. diese beiden Werte) übergeben werden. Ob das in 1h oder so anders aussieht kann ich in der App nicht sehen.

Du kannst natürlich statt present die Temperatur für den Tag und statt absent die Temperatur für die Nacht übermitteln und tags present=1 und nachts present=0 verwenden. Die Anzeige in der App ist dann vielleicht etwas verwirrend, aber eventuell kann ich in einer späteren Version die Möglichkeit geben die Anzeige in der App frei zu gestalten.
Raspberry Pi B+, FS20, 1-Wire, HM
FHEM Home Control (App für Windows 10): https://forum.fhem.de/index.php/topic,49891.0.html
FHEM Arduino Library: https://forum.fhem.de/index.php/topic,94093.0.html

Badflex

Ich glaub ich muss warten bis es ohne die myutils.pm geht.
oder muß erst Programmieren lernen :-)
Raspberry Pi, CUL868(SlowRF), FB 7490, SmartVisu, fast nur HomeMatic wenig FS20, Netatmo

slor

+1 viel zu kompliziert.
SSL support und passwort wäre auch gut.
Man könnte ja anhand von attributen die geräte listen.

Badflex

Ich bekomm noch nicht mal 2 Räume rein. Geschweige denn eine Heizung.
Raspberry Pi, CUL868(SlowRF), FB 7490, SmartVisu, fast nur HomeMatic wenig FS20, Netatmo

FlorianZ

Hallo zusammen,

Erstmal vielen Dank an kingmathers für seine Arbeit an der App.
Die App läuft bei mir auf Win 10 Mobile auch stabil.
Meiner Einschätzung nach, ist dort aber noch sehr viel Entwicklungsarbeit nötig.
Ein Vorschlag meinerseits wäre, eine native Windows 10 Universal App gemischt mit WebView (SmartVISU).
Die Vorteile:
- Sehr universell
- weniger Entwicklungsarbeit
- Handling wie Native App
- Unterstützung für Cortana
- Möglichkeit für Pushnachrichten
- usw......

Anbei ein paar Screenshots meines Testlaufs.
-Ist eine Windows 10 Universal App.
- Hamburger Menu mit Raumauswahl
- Rest Webview Smartvisu


Was meint Ihr?

Gruß Florian