Einfache eigene Seiten mit JSON-RPC/Dojo/Javascript ab IP-Symcon 2.6

Vorweg ein Dankeschön an Sascha, dessen JSON-RPC Schnittstelle ich als Basis nutzen darf. Ich habe die vorhandene Schnittstelle (http://www.ip-symcon.de/forum/f13/ip-symcon-json-rpc-schnittstelle-10537/) also ein wenig aufgebohrt, damit
a) alle IP-Symcon Befehle aufgerufen werden können,
b) Fehler vom IP-Symcon Befehlen an den User zurückgemeldet werden,
c) eine SMD Datei erstellt wird, die z.B. Dojo super simpel konsumieren kann.

Innerhalb von Javascript fühlt sich jetzt jeder Befehl fast so an, als würdet ihr PHP schreiben :slight_smile:

Kleines Beispiel um die Objektliste zu laden und die Anzahl der Objekte in ein Feld zu schreiben.


ips.IPS_GetObjectList().then(
	function(data){
		dom.byId("data").innerHTML = "Anzahl der Objekte: " + data.length;
	},
	function(err){
		alert(err);
	}
);

In der Demo ist noch drin wie man Variablen lesen und schreiben kann, Instanzen schalten und die SMD Datei neu generieren kann, sofern eigene Module verwendet werden. (Noch nicht so nützlich da kein SDK)

Im Prinzip sollte es aufbauend auf dieser Demo recht einfach eine Grafik als Hintergrund mit Labels und Button zu belegen, die dann wie im Dashboard funktionieren.

Wie nutzt man das Ganze?
-Datei herunterladen
-neuen Ordner im IP-Symcon Ordner erstellen (z.B. rpc)
-Datei im neuen Ordner entpacken
-Neuen WebServer erstellen (Instanz erstellen -> Haken bei „Alle Module zeigen“ -> (Kern) -> WebServer)
-Dem WebServer einen Port vergeben und dessen Root auf z.B. rpc setzen.
-Sobald der Server aktiv ist, per WebBrowser auf http://localhost:port/ gehen und schon sollte die Demo laufen.

-> Schaut auch den Quellcode an, damit ihr den Befehl/ID für das Schalten der Instanzen verändert. Das ist fast schon wie malen nach Zahlen :smiley: :loveips:

paresy

PS: Einen super einfach zu bedienenden Rückkanal für Änderungen gibt es leider noch nicht. Ihr müsst also zur Zeit für Änderungen alle paar Sekunden pollen.

PPS: Diese Schnittstelle liefert alles. All eure Daten. Wenn euer WebFront von extern erreichbar ist, nutzt bitte nicht die Abkürzung über den webfront/user Order. Die Demo geht dort natürlich auch. Aber ihr habt dann eine eklatante Sicherheitslücke.

PPPS: Schönes Wochenende mit dem neuen Spielzeug :loveips:

rpc-demo.rar (132 KB)

Ich hab oben die zweite Version hochgeladen, über die jetzt auch ziemlich einfach ein Floorplan belegt werden kann.

Unterstützt werden zur Zeit Labels und Buttons.

Labels


<div ips-variable-id="27953" ips-variable-label="Temperatur: " style="top: 40px; left: 400px;" class="variable">Temperatur: 00.00 °C</div>

Ein Label kann eingebaut werden, indem ihr diese Zeile mit eure HTML Datei einfügt und die Parameter anpasst. Das Label wird alle 10 Sekunden automatisch mit dem Wert von IP-Symcon aktualisiert. Das Prefix/Suffix ect. wird automatisch vom IP-Symcon Variablenprofil vorgegeben.

[ul]
[li]ips-variable-id: Die VariablenID von eurer Variable[/li][li]ips-variable-label: Ein zusätzlicher Text, der vor dem Variableninhalt kommt[/li][li]style: CSS-Parameter zur Positionierung.[/li][/ul]

Buttons


<button data-dojo-type="dijit.form.Button" style="top: 70px; left: 240px;" class="button">ON
	<script type="dojo/method" data-dojo-event="onClick" data-dojo-args="evt">
		ips.FS20_SwitchMode(51629, true);
	</script>		
</button>

Ein normaler Button wird genauso wie ein Label, einfach per Copy&Paste dieses Code-Blocks hinzugefügt. Über die Codezeile kann dann gezielt ein oder mehrere Befehle ausgeführt werden.

[ul]
[li]Der Text „ON“ kann beliebig verändert werden [/li][li]ips.*: ips. Prefix, gefolgt von dem ganz normalen PHP-Befehl[/li][li]style: CSS-Parameter zur Positionierung.[/li][/ul]

Bildschirmfoto 2012-06-17 um 12.54.15.png

Reserviert.