XML API
Moderator: Co-Administratoren
XML API
Hallo zusammen,
Ich habe aktuell eine RWE SmartHome Zentrale und dazu ein paar Aktoren. Jetzt spiele ich jedoch mit dem Gedanken, auf HomeMatic zu wechseln, da die API-Schnittstelle der RWE einfach grottenschlecht ist und zudem gar nicht öffentlich freigegeben.
Bevor ich dies jedoch mache, habe ich 3-4 Fragen.
1.) Bietet die HomeMatic eine komplette API, über die ich Aktoren Schalten kann (Unterputzschalter ABC an/aus, Heizkörperthermostat A 20°C)
2.) Gibt es Notifications? Also kann ich jede Änderung auffangen und verabeiten? Jemand schaltet in der Küche das Licht ein, dann brauche ich über die API dazu eine Information. Bei RWE SmartHome war dies "subscribe" bei Notifications
3.) Wenn ich über die API gerne das Licht in der Küche einschalten möchte, dauert dies auch so lange wie bei der Smarthome (~3 Sekunden) ?
Dann noch was zur Bestellung.
http://www.amazon.de/dp/B00BZ6XLJ0/ref= ... =Homematic
Ist dies die Aktuellste Version?
http://www.amazon.de/gp/product/B00GHDN ... ge_o00_s00
Reicht es, wenn ich diesen Zwischenstecker dazu kaufe, um die API zu testen und mir das gesammte System mal anzusehen?
Habe ich damit alles was ich für den Start benötige? Die Station kann ich an Ethernet anschließen, wenn ich das richtig gesehen habe?
Also ich verbinde Den Stecker mit der HomeMatic und könnte dann diesen Ansteuern auch über die API?
Vielen Dank schonmal und entschuldigt die Vielen Fragen. Es ist "anfangs" schwer durchzublicken.
Es gibt doch sehr vieles und auch sehr viel Spezielles, gerade bei der HomeMatic.
Danke schön
Ich habe aktuell eine RWE SmartHome Zentrale und dazu ein paar Aktoren. Jetzt spiele ich jedoch mit dem Gedanken, auf HomeMatic zu wechseln, da die API-Schnittstelle der RWE einfach grottenschlecht ist und zudem gar nicht öffentlich freigegeben.
Bevor ich dies jedoch mache, habe ich 3-4 Fragen.
1.) Bietet die HomeMatic eine komplette API, über die ich Aktoren Schalten kann (Unterputzschalter ABC an/aus, Heizkörperthermostat A 20°C)
2.) Gibt es Notifications? Also kann ich jede Änderung auffangen und verabeiten? Jemand schaltet in der Küche das Licht ein, dann brauche ich über die API dazu eine Information. Bei RWE SmartHome war dies "subscribe" bei Notifications
3.) Wenn ich über die API gerne das Licht in der Küche einschalten möchte, dauert dies auch so lange wie bei der Smarthome (~3 Sekunden) ?
Dann noch was zur Bestellung.
http://www.amazon.de/dp/B00BZ6XLJ0/ref= ... =Homematic
Ist dies die Aktuellste Version?
http://www.amazon.de/gp/product/B00GHDN ... ge_o00_s00
Reicht es, wenn ich diesen Zwischenstecker dazu kaufe, um die API zu testen und mir das gesammte System mal anzusehen?
Habe ich damit alles was ich für den Start benötige? Die Station kann ich an Ethernet anschließen, wenn ich das richtig gesehen habe?
Also ich verbinde Den Stecker mit der HomeMatic und könnte dann diesen Ansteuern auch über die API?
Vielen Dank schonmal und entschuldigt die Vielen Fragen. Es ist "anfangs" schwer durchzublicken.
Es gibt doch sehr vieles und auch sehr viel Spezielles, gerade bei der HomeMatic.
Danke schön
-
- Beiträge: 630
- Registriert: 11.12.2012, 14:24
- Hat sich bedankt: 3 Mal
- Danksagung erhalten: 4 Mal
Re: XML API
Hallo
zu 1) Homematic lässt sich mit der xml api vollständig steuern und abfragen dazu muss aber das xml addon installiert werden.
2) Ja Notificationen lassen sich z.b. per Email etc. scripten, etwas fertiges hat die ccu nicht.
3) Ich kenne RWE Smarthome nicht, wenn ich bei mir das Licht schalte geht dieses unmittelbar an. 3 Sekunden musste ich noch nie warten.
Zur Bestellung: Ja es ist die aktuelle CCU2, ich würde dir aber lxccu nahelegen. Einfach mal im Forum suchen.
Zum Zwischenstecker, ja jeder Aktor lässt sich über die API steuern.
zu 1) Homematic lässt sich mit der xml api vollständig steuern und abfragen dazu muss aber das xml addon installiert werden.
2) Ja Notificationen lassen sich z.b. per Email etc. scripten, etwas fertiges hat die ccu nicht.
3) Ich kenne RWE Smarthome nicht, wenn ich bei mir das Licht schalte geht dieses unmittelbar an. 3 Sekunden musste ich noch nie warten.
Zur Bestellung: Ja es ist die aktuelle CCU2, ich würde dir aber lxccu nahelegen. Einfach mal im Forum suchen.
Zum Zwischenstecker, ja jeder Aktor lässt sich über die API steuern.
Re: XML API
Hallo,
Erstmal danke für deine Antwort, das hört sich ja schon vielversprechend an.
Mit Notifications meinte ich jedoch nicht E-Mail / SMS Benachrichtigung sondern eine Nachricht über die XML API oder per Push.
Wenn z.b. Licht eingeschaltet wird, müsste mein Server (debian 7 auf raspberry) an diese Information gelangen.
Ob dies per push gemacht wird (HomeMatic ruft eine von mir angegebene URL auf: http://mein_server/push.php?type=switched&id=1&state=true)
oder aber ich bekomme diesen Zustand in der XML angezeigt.
Danke!
Erstmal danke für deine Antwort, das hört sich ja schon vielversprechend an.
Mit Notifications meinte ich jedoch nicht E-Mail / SMS Benachrichtigung sondern eine Nachricht über die XML API oder per Push.
Wenn z.b. Licht eingeschaltet wird, müsste mein Server (debian 7 auf raspberry) an diese Information gelangen.
Ob dies per push gemacht wird (HomeMatic ruft eine von mir angegebene URL auf: http://mein_server/push.php?type=switched&id=1&state=true)
oder aber ich bekomme diesen Zustand in der XML angezeigt.
Danke!
-
- Beiträge: 630
- Registriert: 11.12.2012, 14:24
- Hat sich bedankt: 3 Mal
- Danksagung erhalten: 4 Mal
Re: XML API
Dann müsste dein Debianserver regelmäßig die ccu abfragen.
Ein Push aus der CCU gibt es meines Wissens nicht.
Das merke ich auch bei der Homematic app die ich nutze. Wenn etwas geschaltet wird, aktualisiert sich der Status in der App erst wenn ich selbst auf Reload drücke oder die voreingestellte Zeit vorüber ist und ein Reload gemacht wird.
Wenn solche Zustände gepusht würden wäre es ein Riesen Vorteil. Leider wurde das bisher nicht umgesetzt und steht soweit ich weiß auch nicht auf der Agenda.
Ein Push aus der CCU gibt es meines Wissens nicht.
Das merke ich auch bei der Homematic app die ich nutze. Wenn etwas geschaltet wird, aktualisiert sich der Status in der App erst wenn ich selbst auf Reload drücke oder die voreingestellte Zeit vorüber ist und ein Reload gemacht wird.
Wenn solche Zustände gepusht würden wäre es ein Riesen Vorteil. Leider wurde das bisher nicht umgesetzt und steht soweit ich weiß auch nicht auf der Agenda.
-
- Beiträge: 180
- Registriert: 15.09.2014, 22:25
Re: XML API
DU kannst Dich an an die Homematic an die Werte hängen, aber bevor Du das genau so nachbaust, solltest Du Dir mal CCU.IO oder das Nachfolgeprojekt Io.Broker ansehen. Diese können die Veränderungen von Haus aus auslesen und dann Skripte ausführen, die auch z.B. ein GET auf eine beliebige Adresse machen könnten.
Re: XML API
Hallo,
Danke für eure zahlreichen Antworten! Hat mir bis hier sehr weiter geholfen
Die Zentrale ist mittlerweile aufgebaut und nach anfänglichen Problemen in Betrieb.
Dazu ist der Zwischenstecker platziert und registriert.
Jetzt habe ich noch speziellere Fragen dazu. Habe sehr viel gegoogelt, aber keine wirkliche Antwort erhalten.
Ich möchte gerne alle Devices und Variabeln auslesen. Dazu habe ich dann rausgefunden, dass sich Variabeln nicht über die "normale" API (xmlrpc / Port 2001) auslesen lassen, sondern ich dies über den Port 8181 machen müsste. Dort erhalte ich dann aber immer nur eine Variabel (keine Liste).
Habe mir dann also die XMLAPI installiert und lese die Variabeln dort über sysvarlist.cgi aus.
Das klappt soweit auch!
Anschließend habe ich mir ein Node.js Script gebaut, welches jede Sekunde diese Variabeln ausließt (sofern das vorherige auslesen bereits beendet ist, ansonsten erst "später") und vergleiche dies dann mit den Aktuellen Werten in meinem System. Gibt es dort Unterschiede, verarbeite ich dies.
Das ist natürlich für die Zentrale aufwendig, aber ein richtigen Push gibt es anscheinend nicht ?
Über die XMLRPC API kann man nach dem "init" bei der HomeMatic sich ja Zustandsänderungen "pushen" lassen, dies gibt es aber nicht für Variabeln oder doch?
Scripte wie CCU.IO und iobroker habe ich auch getestet, sind aber viel zu aufwendig für mein Vorhaben.
Das war es eigentlich auch erstmal. Viel Text, damit man auch weiß was ich vorhabe
Danke !'
Danke für eure zahlreichen Antworten! Hat mir bis hier sehr weiter geholfen
Die Zentrale ist mittlerweile aufgebaut und nach anfänglichen Problemen in Betrieb.
Dazu ist der Zwischenstecker platziert und registriert.
Jetzt habe ich noch speziellere Fragen dazu. Habe sehr viel gegoogelt, aber keine wirkliche Antwort erhalten.
Ich möchte gerne alle Devices und Variabeln auslesen. Dazu habe ich dann rausgefunden, dass sich Variabeln nicht über die "normale" API (xmlrpc / Port 2001) auslesen lassen, sondern ich dies über den Port 8181 machen müsste. Dort erhalte ich dann aber immer nur eine Variabel (keine Liste).
Habe mir dann also die XMLAPI installiert und lese die Variabeln dort über sysvarlist.cgi aus.
Das klappt soweit auch!
Anschließend habe ich mir ein Node.js Script gebaut, welches jede Sekunde diese Variabeln ausließt (sofern das vorherige auslesen bereits beendet ist, ansonsten erst "später") und vergleiche dies dann mit den Aktuellen Werten in meinem System. Gibt es dort Unterschiede, verarbeite ich dies.
Das ist natürlich für die Zentrale aufwendig, aber ein richtigen Push gibt es anscheinend nicht ?
Über die XMLRPC API kann man nach dem "init" bei der HomeMatic sich ja Zustandsänderungen "pushen" lassen, dies gibt es aber nicht für Variabeln oder doch?
Scripte wie CCU.IO und iobroker habe ich auch getestet, sind aber viel zu aufwendig für mein Vorhaben.
Das war es eigentlich auch erstmal. Viel Text, damit man auch weiß was ich vorhabe
Danke !'
Re: XML API
Wenn Du eh schon mit Nodejs Unterwegs bist gibt es glaube ich beim Hobbyquaker passende Module für Dich:
https://github.com/hobbyquaker/binrpc und https://github.com/hobbyquaker/homematic-xmlrpc
Ein einfaches Beispiel wie man diese Module anwenden kann (inklusive "init" um Events gepushed zu kriegen) findest Du z.B. hier: https://github.com/hobbyquaker/homemati ... r/index.js
PS.: vom sekündlichen Pollen der Rega würde ich dringend abraten. Die Rega ist recht empfindlich und einen "echten" Push-Mechanismus bietet sie leider nicht. Übrigens findest Du hier eine Menge Rega-Scripte um alles mögliche aus der Rega auszulesen: https://github.com/hobbyquaker/ccu.io/t ... egascripts
und noch was: Die XML-API ist imho vollkommen überflüssig - alles was mit XML-API geht geht auch ohne XML-API
https://github.com/hobbyquaker/binrpc und https://github.com/hobbyquaker/homematic-xmlrpc
Ein einfaches Beispiel wie man diese Module anwenden kann (inklusive "init" um Events gepushed zu kriegen) findest Du z.B. hier: https://github.com/hobbyquaker/homemati ... r/index.js
PS.: vom sekündlichen Pollen der Rega würde ich dringend abraten. Die Rega ist recht empfindlich und einen "echten" Push-Mechanismus bietet sie leider nicht. Übrigens findest Du hier eine Menge Rega-Scripte um alles mögliche aus der Rega auszulesen: https://github.com/hobbyquaker/ccu.io/t ... egascripts
und noch was: Die XML-API ist imho vollkommen überflüssig - alles was mit XML-API geht geht auch ohne XML-API
-
- Beiträge: 630
- Registriert: 11.12.2012, 14:24
- Hat sich bedankt: 3 Mal
- Danksagung erhalten: 4 Mal
Re: XML API
Es wird immer gesagt das die ccu kein push hat. Warum werden dann Änderungen in der ccu auf der Webseite immer sofort dargestellt?
Denn ich habe ein Arduino Board mit ein paar Sensoren. Wenn sich die Messwerte der Sensoren ändern schickt das Board die Änderungen sofort an die ccu.
Ich habe heute folgendes beobachtet. Webseite von ccu geöffnet und auf die Variablen Seite gewechselt.
Sobald sich der Wert einer Variablen ändert wird es praktisch unmittelbar auf der Seite dargestellt.
Ich gehe doch mal davon aus das die ccu Seite nicht ständig ein Reload macht um immer die aktuellen Werte darzustellen?
Denn ich habe ein Arduino Board mit ein paar Sensoren. Wenn sich die Messwerte der Sensoren ändern schickt das Board die Änderungen sofort an die ccu.
Ich habe heute folgendes beobachtet. Webseite von ccu geöffnet und auf die Variablen Seite gewechselt.
Sobald sich der Wert einer Variablen ändert wird es praktisch unmittelbar auf der Seite dargestellt.
Ich gehe doch mal davon aus das die ccu Seite nicht ständig ein Reload macht um immer die aktuellen Werte darzustellen?
Re: XML API
Die Logikschicht "ReGa" (dort sind Variablen, Programme und Scripte "beheimatet") kann keinen "Push". Die Schnittstellenprozesse "rfd" und "hs485d" die die Funk und Wired Geräte anbinden haben einen Push-Mechansimus ("rpc init").
Das ist kein Push. Das WebUI pollt TCL CGI-Scripte und die rufen die Rega auf und führen dort wiederum Rega-Scripte aus. Das Polling wird sogar visualisiert, da erscheint so ein kleiner roter Punkt links oben am Homematic-Logo. Mit einer der Gründe warum es nicht zuträglich für die Rega-Stabilität ist ständig das WebUI offen zu haben oder noch schlimmer mehrere Instanzen des WebUI auf einmal zu öffnen.svenp hat geschrieben:Sobald sich der Wert einer Variablen ändert wird es praktisch unmittelbar auf der Seite dargestellt.
Re: XML API
Hallo,
Okay dann weiß ich bescheid. Dann lese ich die Variabeln regelmäßig aus und vergleiche diese mit meinen Zuständen. Dass passt schon.
Jetzt ein Problem, wo ich absolut keine Lösung finde.
Ich habe diesen Quellcode:
Node startet damit einwandfrei. Es wird nach kurzer Zeit die Bestätigung für init ausgegeben.
Zu meinen 2 Problemen:
1.) Wenn ich jetzt z.b. einen Zwischenstecker einschalte, erhalte ich jedoch 2x einen push. In beiden steht EXAKT die gleiche Nachricht. 2 Objekte mit STATE = true / Working = false
2.) Die Zentrale produziert bei jedem Push einen Fehler:
Die Zentrale meint "es hätte nicht geklappt" und pusht nochmal. Aber reine spekulation.
Kann mir eventuell jemand erklären, was zu tun ist, um den Fehler abzustellen?
Danke!!
Okay dann weiß ich bescheid. Dann lese ich die Variabeln regelmäßig aus und vergleiche diese mit meinen Zuständen. Dass passt schon.
Jetzt ein Problem, wo ich absolut keine Lösung finde.
Ich habe diesen Quellcode:
Code: Alles auswählen
var rpcClient = rpc.createClient({
host: "192.168.178.30",
port: "2001",
path: '/'
});
rpcClient.methodCall('init', ["htp://192.168.178.76:8085", "homeserver"], function (err, data) {
console.log("Register for notifications done!");
});
var rpcServer = rpc.createServer({
host: "192.168.178.76",
port: "8085"
});
rpcServer.on('NotFound', function (method, params) {
console.log("Notfound: " + method + " und " + params);
callback(null, null);
});
rpcServer.on('system.multicall', function (method, params, callback) {
callback(null, null);
});
rpcServer.on('system.listMethods', function (err, params, callback) {
callback(null, ['event', 'deleteDevices', 'listDevices', 'newDevices', 'system.listMethods', 'system.multicall']);
});
rpcServer.on('event', function (err, params, callback) {
console.log("Event");
callback(null, null);
});
rpcServer.on('newDevices', function (err, params, callback) {
console.log("newDevices");
callback(null, null);
});
rpcServer.on('deleteDevices', function (err, params, callback) {
console.log("deleteDevices");
callback(null, null);
});
rpcServer.on('listDevices', function (err, params, callback) {
callback(null, null);
});
Zu meinen 2 Problemen:
1.) Wenn ich jetzt z.b. einen Zwischenstecker einschalte, erhalte ich jedoch 2x einen push. In beiden steht EXAKT die gleiche Nachricht. 2 Objekte mit STATE = true / Working = false
2.) Die Zentrale produziert bei jedem Push einen Fehler:
Ich könnte mir vorstellen, dass der Fehler 1.) durch den Fehler 2.) hervorgerufen wird.homematic-ccu2 user.err rfd: XmlRpcClient error calling event({[methodName:"event",params:{"homeserver","LEQ0183125:1","STATE",true}],[methodName:"event",params:{"homeserver","LEQ0183125:1","WORKING",false}]}) on http://192.168.178.76:8085/RPC2:
homematic-ccu2 user.err rfd: XmlRpc transport error
Die Zentrale meint "es hätte nicht geklappt" und pusht nochmal. Aber reine spekulation.
Kann mir eventuell jemand erklären, was zu tun ist, um den Fehler abzustellen?
Danke!!