XML-RPC Interface-Beschreibung

Nutzung von XML RPC, Remote Script, JSON RPC, XMLAPI

Moderator: Co-Administratoren

Benutzeravatar
kaju74
Beiträge: 2046
Registriert: 06.03.2007, 13:14
Danksagung erhalten: 9 Mal
Kontaktdaten:

Re: XML-RPC Interface-Beschreibung

Beitrag von kaju74 » 30.07.2010, 10:16

Hi.

Alternativ kann man auch die XML-API von dirch nutzen - die muss dann aber auf der CCU installiert sein. Dann
bekommt man auch die Namen der Räume und Gewerke (nutzte ich im HM touch - Configurator). Das Auslesen
über Rega-HSS habe ich auch noch nicht gemacht - muss ich auch mal gucken, wie das funzt...

Gruß,
kaju

ultrah
Beiträge: 368
Registriert: 08.03.2010, 13:38
Danksagung erhalten: 10 Mal

Re: XML-RPC Interface-Beschreibung

Beitrag von ultrah » 30.07.2010, 14:32

danke euch dreien, das hilft mir schonmal weiter :)

hab mir mal die doku zur HomeMatic Scriptsprache durchgelesen.
Zu einem einzelnen Device bekomme man damit relativ einfach Name und Raum, anders siehts mit Listen aus, da bin ich auf nichts gestoßen.

Was auch nicht dokumentiert ist, ist wie man von aussen die Verbindung herstellt, gibts da noch eine Authentifizierung ?

@kaju:

mit der xml-api meinst du sicher die, die du auf deiner seite zur verfügung stellst oder ? Das müsste ich ja dann nur in die DB parsen und die Devices dann einzeln aufdröseln.

Ist halt dann noch eine Schnittstelle mehr, über

@Daniel
Wie hast du das Problem denn gelöst ?


btw,

Möchte ja echt nicht das Forum schlechtmachen, mir wurde hier ja auch extrem viel geholfen, aber:
-Threads zum Scripting finde ich unter Tipps & Tricks, HomeMatic Zentrale(CCU), HomeMatic Allgemein usw...
-Die Scriptsprache heisst manchmal HMScript, dann HomeMatic-Script, dann wird von TCL Rega gesprochen, dann von Remote HomeMatic Script, usw

wenn man hier länger unterwegs ist das sicher alles logisch :)


geh jetz erstmal meine CCU abholen, ist heute angekommen :P
www.tinymatic.de (Ehemals HomeDroid)

Benutzeravatar
owagner
(verstorben)
Beiträge: 1193
Registriert: 13.05.2008, 19:49
Danksagung erhalten: 1 Mal

Re: XML-RPC Interface-Beschreibung

Beitrag von owagner » 30.07.2010, 15:10

HMScript kann man ausführen, indem man einen HTTP POST an die URL http://<homematic>:8181/tclrega.exe schickt, Inhalt ist das auszuführende Script. Als Antwort kommt sowohl die Standardausgabe des Scriptes als auch etwas XML mit den vom Script gesetzten Variablen. Authentifizierung findet nicht statt, es gibt die in den Systemeinstellungen konfigurierbaren Zugriffseinschränkungen auf IP-Adresssen-Ebene, die dann mittels iptables-Regeln realisiert werden.

HMC holt sich die Liste aller Channel auf der ReGa-Ebene mit folgendem Script:

Code: Alles auswählen

string id;
foreach(id, root.Channels().EnumUsedIDs())
{
 var ch=dom.GetObject(id);
 var i=dom.GetObject(ch.Interface());
 WriteLine(id+"\t"+ch.Address()+"\t"+i.Name()+"\t"+ch.Name());
}
Viele Grüße,
Olli

ultrah
Beiträge: 368
Registriert: 08.03.2010, 13:38
Danksagung erhalten: 10 Mal

Re: XML-RPC Interface-Beschreibung

Beitrag von ultrah » 02.08.2010, 19:07

danke für eure hilfe, hab mich jetzt im endeffekt erstmal für die xml-api entschieden.

auslesen klappt auch gut, bis runter zum zuordnen der datapoint-values zu den kanälen.

wo ich nicht dahintersteige ist warum das absenden nicht funktionieren will.

Ein Dimmer bei mir:

Code: Alles auswählen

<device name="Device_Dimmer" ise_id="1500" unreach="false" sticky_unreach="true" config_pending="false">
- <channel name="Device_Dimmer:0" ise_id="1501">
  <datapoint name="BidCos-RF.FEQ0081907:0.UNREACH" type="UNREACH" ise_id="1514" value="false" valuetype="2" timestamp="1268651199" /> 
  <datapoint name="BidCos-RF.FEQ0081907:0.STICKY_UNREACH" type="STICKY_UNREACH" ise_id="1510" value="true" valuetype="2" timestamp="1268650714" /> 
  <datapoint name="BidCos-RF.FEQ0081907:0.CONFIG_PENDING" type="CONFIG_PENDING" ise_id="1502" value="false" valuetype="2" timestamp="1268650713" /> 
  <datapoint name="BidCos-RF.FEQ0081907:0.DUTYCYCLE" type="DUTYCYCLE" ise_id="1506" value="false" valuetype="2" timestamp="1268650713" /> 
  </channel>
- <channel name="Kanal_Dimmer" ise_id="1518">
  <datapoint name="BidCos-RF.FEQ0081907:1.LEVEL" type="LEVEL" ise_id="1531" value="0.000000" valuetype="6" timestamp="1268845389" /> 
  <datapoint name="BidCos-RF.FEQ0081907:1.OLD_LEVEL" type="OLD_LEVEL" ise_id="1532" value="" valuetype="2" timestamp="0" /> 
  <datapoint name="BidCos-RF.FEQ0081907:1.RAMP_TIME" type="RAMP_TIME" ise_id="1534" value="" valuetype="4" timestamp="0" /> 
  <datapoint name="BidCos-RF.FEQ0081907:1.ERROR" type="ERROR" ise_id="1519" value="0" valuetype="16" timestamp="1268845389" /> 
  </channel>
  </device>
ich möchte jetzt den Kanal_Dimmer (1518) ansprechen ansprechen und den wert auf 20 % setzen, also

Code: Alles auswählen

http://<homematic-ip>/config/xmlapi/statechange.cgi?ise_id=1518&newvalue=0.20 
passiert aber nichts.

was mache ich falsch ?

Gruß Philipp
www.tinymatic.de (Ehemals HomeDroid)

Benutzeravatar
kaju74
Beiträge: 2046
Registriert: 06.03.2007, 13:14
Danksagung erhalten: 9 Mal
Kontaktdaten:

Re: XML-RPC Interface-Beschreibung

Beitrag von kaju74 » 02.08.2010, 21:50

Hi.

Mach mal zwischen newvalue ein unterstrich:

new_value

Gruß,
kaju

ultrah
Beiträge: 368
Registriert: 08.03.2010, 13:38
Danksagung erhalten: 10 Mal

Re: XML-RPC Interface-Beschreibung

Beitrag von ultrah » 02.08.2010, 22:07

danke kaju, funktioniert wunderbar !

auf http://www.homematic-inside.de/software ... mlapi.html stehts ohne "_" nur so als hinweis


wird morgen sofort implementiert :)
www.tinymatic.de (Ehemals HomeDroid)

Benutzeravatar
kaju74
Beiträge: 2046
Registriert: 06.03.2007, 13:14
Danksagung erhalten: 9 Mal
Kontaktdaten:

Re: XML-RPC Interface-Beschreibung

Beitrag von kaju74 » 02.08.2010, 22:13

Hi.

Ich weiß nicht, wie oft ich das schon geändert hatte, irgendwie zerschiest's beim Bearbeiten immer den Unterstrich - ist
aber wieder geändert 8-)

Gruß,
kaju

ultrah
Beiträge: 368
Registriert: 08.03.2010, 13:38
Danksagung erhalten: 10 Mal

Re: XML-RPC Interface-Beschreibung

Beitrag von ultrah » 06.08.2010, 16:19

hab mich mittlerweile auch mit der xml-rpc schnittstelle beschäftigt, vll stell ich da auch noch um :)

was mich aber zur zeit eher intressiert ist der init-befehl...

habe jetz einen eigenen xml-rpc server unter android laufen, bekomme auch calls rein und kann die einfachen kanns auch parsen. probleme hab ich noch mit den multicalls.
Welchen Typ hat denn der Parameter den ich da bekomme ? Bei ArrayList oder Vector bekomm ich eine ClassCastException.
Zuletzt geändert von ultrah am 06.08.2010, 17:03, insgesamt 2-mal geändert.
www.tinymatic.de (Ehemals HomeDroid)

ColdFireIce
Beiträge: 407
Registriert: 06.03.2009, 15:38
Wohnort: Karlsruhe
Danksagung erhalten: 1 Mal

Re: XML-RPC Interface-Beschreibung

Beitrag von ColdFireIce » 06.08.2010, 16:43

Hi.

Also, multicalls werde als Array verschickt. die wiederrum structs für jeden einzelnen call enthalten. Ein Beispiel sagt glaub mehr als viele Worte. Habe Kommentare eingefügt um den Überblick ein bisschen zu behalten:

Code: Alles auswählen

<?xml version="1.0"?>
<methodCall>
    <methodName>system.multicall</methodName>
    <params>
    	<!-- Hier beginnen die Parameter von system.multicall -->
        <param>
            <value>
            	<!-- Hier beginnt das Array mit den Calls -->
                <array>
                    <data>
                    	<!-- 1. Call -->
                        <value>
                            <struct>
                                <member>
                                    <name>methodName</name>
                                    <value><string>event</string></value>
                                </member>
                                <member>
                                    <name>params</name>
                                    <value>
                                        <array>
                                            <data>
                                                <value><string>1234567890</string></value>
                                                <value><string>GEQ0000123:1</string></value>
                                                <value><string>LEVEL</string></value>
                                                <value><double>0.005</double></value>
                                            </data>
                                        </array>
                                    </value>
                                </member>
                            </struct>
                        </value>
                		<!-- 2. Call -->
                        <value>
                            <struct>
                                <member>
                                    <name>methodName</name>
                                    <value><string>event</string></value>
                                </member>
                                <member>
                                    <name>params</name>
                                    <value>
                                        <array>
                                            <data>
                                                <value><string>1234567890</string></value>
                                                <value><string>GEQ0000123:1</string></value>
                                                <value><string>WORKING</string></value>
                                                <value><boolean>true</boolean></value>
                                            </data>
                                        </array>
                                    </value>
                                </member>
                            </struct>
                        </value>
                    </data>
                </array>
                <!-- Ende des Calls Array -->
            </value>
        </param>
        <!-- Ende des system.multicall Parameters -->
    </params>
</methodCall>
hier kommen 2 events rein für einen Dimmer. Einmal der Wert ("LEVEL") und noch ("WORKING"). Die Events sind aufgebaut wie oben beschrieben. Ich hoffe das hilft.

Btw. schau mal in deine PMs. du hast schon seid Ewigkeiten Post! ;)

ultrah
Beiträge: 368
Registriert: 08.03.2010, 13:38
Danksagung erhalten: 10 Mal

Re: XML-RPC Interface-Beschreibung

Beitrag von ultrah » 06.08.2010, 17:04

Habs jetzt, bei meinem server ist es ein objectarray der HashMaps enthält. in denen gibts dann jeweils logischerweise wieder methodname und parameter :)


@posteingang: Tut mir leid, total übersehen !
www.tinymatic.de (Ehemals HomeDroid)

Antworten

Zurück zu „Softwareentwicklung von externen Applikationen“