Excel VBA greift auf Hutschienen Schalter HM-ES-PMSw1-DR zu

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

Moderator: Co-Administratoren

Antworten
kris64
Beiträge: 13
Registriert: 31.07.2017, 09:59
System: CCU und Access Point
Wohnort: Gerasdorf bei Wien
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Excel VBA greift auf Hutschienen Schalter HM-ES-PMSw1-DR zu

Beitrag von kris64 » 09.07.2023, 23:14

Vielleicht gibt es ja ein paar Excel Nutzer in den Homematic-Kreisen:
Ich erfasse täglich einige Eckdaten zur Energieverbrauchsermittlung des Hauses. Darunter fallen auch Stromverbräuche von Brunnen- und Schwimmbadpumpe. Bisher habe ich die Daten täglich aus der Weboberfläche abgelesen und händisch in Excel eingetragen....
Das tut man nicht! :lol:
Nun, Excel kann ja im Hintergrund fast jede Art von Verbindungen initiieren, natürlich auch HTTP. So weit ich mich da schon anderwertig schlau gemacht habe, gehts über die Microsoft MSXML2 Bibliothek recht einfach.
Den notwendigen URL bastle ich mir wie gewohnt mit dem Dummy-EXE und den Objektbezeichnern zusammen.
Ein Holperstein war noch im Hutschienen-Schalter der Unterschied zwischen "Energie-Zähler - Gerät" und "Energie-Zähler - Zentrale". Ersteres bekomme ich mit dem State() des in Klartext benannten Schalters, aber dieser Wert stellt sich nach Hardwarereset und/oder unerwartet zurück. Der "Energie-Zähler - Zentrale" kann über eine automatisch angelegte Systemvariable abgerufen werden.
Zum Glück gibts hier viewtopic.php?t=20945 ein kurzes Script, das die aktuellen Systemvariablen auflistet.

Code: Alles auswählen

Sub Brunnenpumpe()

    Dim URL As String
'    Dim HTMLDoc As New HTMLDocument
    Dim objHTTP As Object
    Dim xmlResults, xmlEntry, xmlChild  As Object
    Dim col, row As Integer

    ' Define the URL of the Homematic measurement data
    URL = "http://192.168.1.30:8181/x.exe?kWh=dom.GetObject(%22svEnergyCounter_23141_TEQ0001244:2%22).State()"

    ' Create an XMLHTTP object
    Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")

    ' Open the URL
    objHTTP.Open "GET", URL, False

    ' Send the request
    objHTTP.send

    ' Wait for the data to load
    Do While objHTTP.readyState <> 4
        DoEvents
    Loop
    Set xmlResults = objHTTP.responseXML
    Set xmlEntry = xmlResults.FirstChild
    For Each xmlEntry In xmlResults.ChildNodes
        For Each xmlChild In xmlEntry.ChildNodes
            If xmlChild.tagName = "kWh" Then 'kWh stammt aus dem Retourwert der obigen URL
                ActiveCell.Value = Val(xmlChild.Text) / 1000
            End If
        Next xmlChild
    Next xmlEntry
End Sub
Wenn man den Code aufruft, wird der "Energie-Zähler - Zentrale" in die aktuell ausgewählte Excel-Zelle eingetragen.
Der Code kann natürlich für andere Komponenten beliebig angepasst werden. Ich habe die URL im Firefox vorher ausprobiert und so das zu erwartende XML schon analysieren können.
Ich habe lang nach einer "Excel greift auf Homematic CCU ohne Umweg eines Webbrowsers" Lösung gesucht.
Wenns jemand brauchen kann....
schönen Sonntag noch
Kris

Antworten

Zurück zu „Softwareentwicklung von externen Applikationen“