Homematic IP mit CCU2 und HMRemoting Library

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

Moderator: Co-Administratoren

Antworten
chrispi
Beiträge: 131
Registriert: 25.12.2007, 21:34

Homematic IP mit CCU2 und HMRemoting Library

Beitrag von chrispi » 25.06.2017, 10:28

Hallo zusammen,

ich mache momentan erste Experimente mit der Ansteuerung von Homematic IP per XMLRPC. Ich habe einen Temperatursensor und einen Steckdosen-Schaltaktor erfolgreich mit der CCU2 verbunden und kann diese über die Web-GUI steuern bzw. Messwerte sehen.

Beim Einsatz der HMRemoting Library (C#) über Port 2001 erhalte ich wie gewohnt Events über die BidCoS-Geräte. Wenn ich über Port 2010 verbinde, erhalte ich jedoch keine Events der HMIP-Geräte. Ich kann mit getValue Werte auslesen und auch mit setValue Werte verändern. Die Verbindung funktioniert also. Auch der Init-Befehl zur Registrierung des CallBack-Servers führt zu keinem Fehler.

Ich vermute, dass die Events von HMIP-Geräten anders zurückgeliefert werden und die HMRemoting Library damit Probleme hat. Ich habe hier einen Hinweis gefunden, dass Ereignisse anders gemeldet werden:

Wenn ein Homematic Aktor oder Sensor neue Events generiert, so werden diese vom RFD Client an den item Manager Server als XML-RPC Request gesendet. Dies erfolgt in der Regel als sog. system-multicall. Das bedeutet, Events kommen immer als eine Form von Gruppen-Event an auch wenn sich nur ein Element der Gruppe geändert hat. Beim BidCos RFD kann diese Gruppe aus Events verschiedener Geräte bestehen, die sich zufällig gleichzeitig geändert haben. Beim Homematic IP crRFD sind in den Gruppen meistens alle Datenpunkte eines Geräts, auch wenn sich nur ein Wert verändert hat. Man muss also im eigenen Server die multicalls genau durchgehen und auswerten.

Quelle: http://hundhome.de/home/homematicip

Kennt jemand das Problem und gibt es evtl. einen Fix?

Viele Grüße
Christoph

chrispi
Beiträge: 131
Registriert: 25.12.2007, 21:34

Re: Homematic IP mit CCU2 und HMRemoting Library

Beitrag von chrispi » 25.06.2017, 17:10

Ursache waren mehrere Fehler in der XMLPRC-Library und der HMLibrary in Verbindung mit multicall-Aufrufen des lokalen Servers zur Entgegennahme der Event. Nach der Behebung läuft es nun.

ChristianRiedl
Beiträge: 3
Registriert: 26.01.2014, 21:17

Re: Homematic IP mit CCU2 und HMRemoting Library

Beitrag von ChristianRiedl » 24.10.2017, 15:44

Hallo,

ich schlag mich auch mit dem gleichen Problem rum. Ich bin auch von HMRemoting ausgegangen, an dem hab ich aber schon einiges rumgeändert.

Mit der Homematic auf port 2001 läuft es seit Jahren problemlos. Homematic IP auf port 2010 hängt sich andauernd auf.

Vielleicht kann mir jemand einen Tip geben woran es liegt

fipsmatic
Beiträge: 12
Registriert: 09.02.2012, 19:16
Hat sich bedankt: 1 Mal

Re: Homematic IP mit CCU2 und HMRemoting Library

Beitrag von fipsmatic » 31.10.2017, 13:10

Hallo zusammen,

ich versuche auch über ein XMLRPC - PHP Script ein init auf Port 2010 hinzubekommen.
Aber leider ohne Erfolg.
chrispi hat geschrieben:Ursache waren mehrere Fehler in der XMLPRC-Library und der HMLibrary in Verbindung mit multicall-Aufrufen des lokalen Servers zur Entgegennahme der Event. Nach der Behebung läuft es nun.
Kannst du mal beschreiben was du bei dir geändert hast, damit du den CCU den init Befehl angenommen hat?

Der init Befehl auf Port 2001 läuft bei mir super.
Vielen Dank
Homematic-Zentrale / Synology / Sonos / Homeassistant / Philips Hue / Reolink / HomeKit
--------------------------------------------------
373 Kanäle in 48 Geräten:
1x HmIP-DRSI4, 1x HmIP-DRDI3, 2x HM-ES-TX-WM, 1x HM-LC-Sw2-FM, 1x HmIP-FSI16, 5x HmIP-SWDO-PL, 1x HmIP-DSD-PCB, 1x HMIP-PSM, 1x HM-Sen-RD-O, 3x HmIP-MOD-RC8, 1x HmIP-STHO, 1x HmIP-DRSI1, 1x HmIP-FCI1, 1x HmIP-MOD-OC8, 1x HmIP-PSM-2, 7x HmIP-eTRV-2 I9F, 1x HmIP-SWDM, 1x HmIP-RC8, 1x HmIP-FROLL, 2x HmIP-HEATING, 1x HmIP-PDT, 2x HMIP-eTRV, 1x HmIP-WRCR, 2x HmIP-WTH-2, 2x HM-LC-Sw1-Pl, 1x HM-LC-Sw1PBU-FM, 1x HM-PB-6-WM55, 1x RPI-RF-MOD, 1x HmIP-FCI6, 1x HmIP-RCV-50

z000ao8q
Beiträge: 122
Registriert: 02.12.2013, 17:26

Re: Homematic IP mit CCU2 und HMRemoting Library

Beitrag von z000ao8q » 30.12.2017, 22:32

Hallo,
hat sich hier schon was ergeben?
ich schaffe es nicht einen sauberen init über mein "altes" php-script, welches ich bis jetzt auf dem 2001 genutzt hab, hinzubekommen.
ich bekomme keine events geschickt

z000ao8q
Beiträge: 122
Registriert: 02.12.2013, 17:26

Re: Homematic IP mit CCU2 und HMRemoting Library

Beitrag von z000ao8q » 27.10.2018, 14:38

Hier die Lösung falls jemand das gleiche Problem hat:
die alte Library des 2001 funktioniert auch soweit. man muss nur darauf achten, dass man nach einem Init das listDevices mit einem leeren Array und nicht String bestätigt. ab dann fliegen die Events schon wieder...

Code: Alles auswählen

return new xmlrpcresp(new xmlrpcval("", "string"));
=>

Code: Alles auswählen

return new xmlrpcresp(new xmlrpcval(array(), "array"));

DiBi_83
Beiträge: 47
Registriert: 26.04.2011, 22:02

Re: Homematic IP mit CCU2 und HMRemoting Library

Beitrag von DiBi_83 » 09.02.2019, 10:47

Guten Morgen.

Bei mir dasselbe Problem. Port 2001 läuft auf meiner CCU2 auch bei mir seit Jahren ohne Probleme. Muss dazu jedoch gestehen, dass ich den vb.net-Code von einem User in einem Forum zur Verfügung gestellt bekommen habe und diesen nur für meine Bedürfnisse angepasst habe.
Nun habe ich ein Homematic-IP-Fensterkontakt gekauft und musste feststellen, dass mein vb.net-Tool die Events-Benachrichtigung vom neuen Fensterkontakt nicht empfängt. Auch den Zustand per "getValue" scheint nicht zu funktionieren.
Per nachfolgendem Code wird zwar der Init-Befehl erfolgreich über Port 2010 gesendet, jedoch wird anschliessend nichts empfangen:

Code: Alles auswählen

Public Sub connecting()
        Try
            Me.proxy = RpcProxyFactory.Create("http://" & ipCCU2 & ":2001")      'IP Adresse zur CCU2 inkl. Port
            Me.proxy.Init(Me.GetServiceUrl(), "id")

               If lbl_Connecting_CCU.Text = "Connecting Error CCU" Then
                lbl_Connecting_CCU.Text = ""
            End If

            lbl_Connecting_CCU.Text = "CCU erfolgreich verbunden"
        Catch ex As Exception
            lbl_Connecting_CCU.Text = "Connecting Error CCU"
        End Try


    End Sub
Ist es denn überhaupt möglich, beide System parallel per Event-Benachrichtigung zu betreiben?

Wo müsste die von User "z000ao8q" erwähnte Änderung betreffend Leerstring -> Leerarray müsste dies einfliessen?

Könnte dies unter diesem Script zu finden sein:

Code: Alles auswählen

namespace Tenma.HomeMatic.Remoting
{
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Xml;

    /// <summary>
    /// Antwort eines ausgeführten HomeMatic Scripts.
    /// </summary>
    internal class ScriptResponse : Dictionary<string, string>, IScriptResponse
    {
        /// <summary>
        /// ID der Standardausgabe.
        /// </summary>
        public const string StdoutId = "_STDOUT_";

        /// <summary>
        /// ID der kompletten Ausgabe des Scripts.
        /// </summary>
        public const string ResponseTextId = "_RESPONSE_TEXT_";

        /// <summary>
        /// Erstellt und initialisiert eine neue 
        /// Antwort.
        /// </summary>
        /// <param name="responseText">Text der Antwort</param>
        public ScriptResponse(string responseText)
            : base()
        {
            this[ScriptResponse.ResponseTextId] = responseText;

            int xmlIndex = responseText.IndexOf("<xml>");
            if (xmlIndex >= 0)
            {
                this[ScriptResponse.StdoutId] = responseText.Substring(0, xmlIndex);
                this.ParseVariables(responseText.Substring(xmlIndex));
            }
            else
            {
                this[ScriptResponse.StdoutId] = string.Empty;
            }
        }

        /// <summary>
        /// Liefert den kompletten Text der Antwort.
        /// </summary>
        public string ResponseText
        {
            get
            {
                return this[ScriptResponse.ResponseTextId];
            }
        }

        /// <summary>
        /// Liefert die Standardausgabe der Antwort.
        /// </summary>
        public string Stdout
        {
            get
            {
                return this[ScriptResponse.StdoutId];
            }
        }

        /// <summary>
        /// Parst die Variablen der Antwort.
        /// </summary>
        /// <param name="variables">XML-Teil der Antwort</param>
        private void ParseVariables(string variables)
        {
            try
            {
                XmlDocument doc = new XmlDocument();
                doc.LoadXml(variables);
                foreach (XmlNode node in doc.DocumentElement.ChildNodes)
                {
                    if (node.NodeType == XmlNodeType.Element)
                    {
                        this[node.Name] = node.InnerText;
                    }
                }
            }
            catch
            {
                // leer
            }
        }
    }
}
Müsste das "this[ScriptResponse.StdoutId] = string.Empty;" angepasst werden? Wenn ja, wie? Wird es Einfluss auf die bestehenden "alten" Geräte haben?

Danke für die Rückmeldung.

Benutzeravatar
Homematic-wusel
Beiträge: 209
Registriert: 26.10.2012, 21:21
Wohnort: Weil der Stadt (im Ländle)
Danksagung erhalten: 2 Mal

Re: Homematic IP mit CCU2 und HMRemoting Library

Beitrag von Homematic-wusel » 18.02.2020, 12:53

Hallo zusammen,

ich würde den alten Thread gerne noch einmal hochholen. Ich nutze nun inzwischen seit Jahren die XML-RPC Schnittstelle, um über (Windows) Tablets Homematic-Daten meiner CCU /Raspberrymatic anzuzeigen bzw. Aktoren damit zu steuern. Inwischen beginne ich, auch Homematic_IP Komponenten zu nutzen - und würde diese gern einbinden. Ich stoße mit der "alten HMRemoting Library" aber eben auf die bereits beschriebenen Probleme - und komme nicht weiter.

Kann hier jemand weiterhelfen ? Mir würde es sicher auch schon helfen, die C# Komponenetn in VB zu bekommen.
Falls @DiBi_83 noch mit liest - könntest Du mir den .NET Code zukommen lassen ? Das wäre super

DiBi_83
Beiträge: 47
Registriert: 26.04.2011, 22:02

Re: Homematic IP mit CCU2 und HMRemoting Library

Beitrag von DiBi_83 » 12.07.2020, 14:50

@Homematic-wusel

Leider war ich eine Zeit lang nicht mehr hier im Forum.

Bist du am .Net-Code noch interessiert oder konntest du dir in der Zwischenzeit anderweitig behelfen?
Habe gerade versucht, den Code auszuführen. Leider scheint es bereits an der Verbindung zu happern. Sofern du jedoch nach wie vor Interesse hast, werde ich versuchen die Sache nochmals zum Laufen zu bringen... :wink:
Die Original-Daten, die vor einigen Jahren zur Verfügung gestellt bekommen habe, scheint wohl den Weg zum "Papierkorb" gefunden zu haben. :roll:

DiBi_83
Beiträge: 47
Registriert: 26.04.2011, 22:02

Re: Homematic IP mit CCU2 und HMRemoting Library

Beitrag von DiBi_83 » 08.12.2020, 14:27

Hallo...

Gerne würde ich das Problem nochmals vorbringen, um mit eurer Hilfe eine Lösung zu finden. Bei jedem neuen Projekt stört es mich wieder aufs Neue, dass ich es nicht schaffe, Events von Homematic UND Homematic IP-Geräte zu erhalten. Die Projekte sind so einfach nicht komplett.

Ich habe nun auch den Link gefunden, wo ich zu Beginn meiner HM-Zeit die Library für VB.net gefunden habe:
https://sourceforge.net/projects/hmremoting/files/

Die Frage bleibt nach wie vor, wo genau die weiter oben von "z000ao8q" beschriebene Änderung einfliessen muss. Wer kann weiterhelfen?

Vielen Dank.
Dateianhänge
hmremoting_0.9.2.zip
(317.67 KiB) 86-mal heruntergeladen

Antworten

Zurück zu „Softwareentwicklung von externen Applikationen“