Vorweg ein Dankeschön an Sascha und an Paresy , dessen JSON-RPC Schnittstelle und deren Erweiterung als Basis für mein Projekt dient. (http://www.ip-symcon.de/forum/f13/ip...tstelle-10537/) . Ich stelle hier nun mein Projekt Mobileclient auf Basis von Html5 (jquerymobile,Javascript und CSS3) vor. Ich weise darauf hin, dass sich das Projekt noch im Alphastadium befindet.
Was kann das Projekt?
Es kann aus einem vorhanden Generator euren Ips-Baum rekursiv auslesen und anhand der gewonnenen Informationen einen intelligenten Client generieren. Dieser Client basiert auf Html5 und Javascript in Verbindung mit der JSON-RPC Schnittstelle. Der Vorteil des Clients liegt darin, dass man ihn in jedem Html5 fähigen Browser laufen lassen kann. (Safari,Chrome,Firefox,ect.).
Das heißt man kann den Client auf jedes Endgerät benutzen, das Html5 im Browser unterstützt.
In diesem Stadium des Projekts gibt es nur den Aufruf per Browser (Apps für Android und IOS folgen später).
Was unterstützt der Client?
- Er zeigt alle Variablen (Boolean,Integer,Float und String) zur Anzeige von z.B. Temperaturen an. Dies geschieht per Polling oder per Refreshbutton
[ul]
[li]Schalter werden als Slider dargestellt
[/li][/ul]
[ul]
[li]Temperaturauswahlen werden als Schiebeslider dargestellt
[/li][/ul]
[ul]
[li]Scripte können gestartet werden
[/li][/ul]
[ul]
[li]Graphen werden angezeigt(zur Zeit nur für die stündliche Anzeige)
[/li][/ul]
[ul]
[li]Zur Zeit werden Homematic und FS20 Instanzen unterstützt
[/li][li]
[/li][/ul]
Was soll die Zukunft noch bringen?
[ul]
[li]Apps für Android und vielleicht für IOS (wg. 99 Dollar Gebühr)
[/li][/ul]
[ul]
[li]Graphen erweitern auf täglich,monatlich und jährlich
[/li][/ul]
[ul]
[li]Design per Auswahlliste ändern
[/li][/ul]
[ul]
[li]weitere Instanzen hinzufügen
[/li][/ul]
[ul]
[li]Timeranzeige für Scripte (z.B. Wecker)
[/li][/ul]
Kurzanleitung:
Die angehängte Zip-Datei im Hauptverzeichnis von IP-Symcon entpacken. Es werden 2 Ordner angelegt.
[ul]
[li]generator (Beinhaltet alle Klassen zur Generierung)
[/li][li]rpc ( Beinhaltet alle Dateien zum Client)
[/li][/ul]
[ul]
[li]neuen Script im Baum erstellen und den hier aufgeführten PHPScript kopieren
[/li][li]Wichtig!! Euren Server und $Quelle im Script anpassen z.B. http://192.168.0.45 oder https://localhost
[/li][li]dann diesen Script ausführen, wenn alles klappt sollte Fertig erscheinen und die Dateien sind im Verzeichnis rpc angelegt
[/li][li]Neuen WebServer erstellen (Instanz erstellen -> Haken bei „Alle Module zeigen“ -> (Kern) -> WebServer)
[/li][li]Dem WebServer einen Port vergeben und dessen Root auf rpc setzen.
[/li][li]Sobald der Server aktiv ist, per WebBrowser auf http://EurenServer:port/ gehen und schon sollte der Client laufen.
[/li][/ul]
<?
$pfad = IPS_GetKernelDir()."generator";
set_include_path($pfad);
include'Page.php';
$Quelle = ; // Object-Id für den Start im Baum angeben z.B.10987
htmlSeiteBauen();
function htmlSeiteBauen(){
global $Quelle;
$Server ="''";// Hier bitte den Server mit Port eintragen z.B. http://192.168.0.8:85 oder z.B https://server.ath.cx:85
$Html = "";
$Ips = "";
$Page = new Page();
$Page->setQuelle($Quelle);
$ObjektListe=$Page->baumAuslesen();
$Start = $ObjektListe->get($Quelle);
$Startname=$Start->getName().$Start->getId();
$Html.=$Page->toHeadHtml($Server);
$Html.=$Page->toHauptmenueHtml($Start);
$Html.=$Page->toKategorieHtml($Start);
$Html.=$Page->toEinstellungsseite();
$Html.=$Page->toHeadJavaScript();
$Html.=$Page->toHauptmenueJavaScriptVar($Start);
$Html.=$Page->toJavaScriptVar($Start);
$Html.=$Page->tolocalStorage();
$Html.=$Page->toHauptmenueJavaScriptRefresh($Start);
$Html.=$Page->toJavaScriptRefresh($Start,$Startname);
$Html.=$Page->toIpsSwitchAufruf($Start);
$Html.=$Page->toSwitchBooleanFunktion($Start);
$Html.=$Page->toGraphAufruf($Start);
$Html.=$Page->toHtmlScriptStarten($Start);
$Html.=$Page->toSliderAufruf($Start);
$Html.=$Page->toGraphScriptAufruf();
$Html.=$Page->toFoodJavaScript();
$Html.=$Page->toFoodHtml();
utf8_encode($Html);
$myFile = IPS_GetKernelDir()."rpc\index.html";
$fh = fopen($myFile, 'w')or die("can't open file");
fwrite($fh, $Html);
fclose($fh);
$Ips.=$Page->toIpsStart();
$Ips.=$Page->toHauptmenueIpsGetFunktion($Start);
$Ips.=$Page->toHauptmenueIpsSetFunktion($Start);
$Ips.=$Page->toIpsGetFunktion($Start);
$Ips.=$Page->toIpsSetFunktion($Start);
$Ips.=$Page->toIpsSwitchFunktion($Start);
$Ips.=$Page->toIpsSwitchBoolean($Start);
$Ips.=$Page->toIpsScriptStarten($Start);
utf8_encode($Ips);
$myFile = IPS_GetKernelDir()."rpc\jquery-mobile\ips.js";
$fh = fopen($myFile, 'w')or die("can't open file");
fwrite($fh, $Ips);
fclose($fh);
echo "Fertig";
}
?>
Viel Spaß und Rückmeldungen sind erwünscht.
PS: Wer Lust hat kann auch an diesem Projekt mitarbeiten
RPCMobile.zip (387 KB)