Daten vom Solar-Log per JSON auslesen

Homematic-, TCL- und Shell-Script, Toolchain, C, etc.

Moderator: Co-Administratoren

Antworten
Micky79
Beiträge: 38
Registriert: 05.02.2015, 10:26

Daten vom Solar-Log per JSON auslesen

Beitrag von Micky79 » 07.02.2015, 21:08

Hallo an Alle,

ich betreibe eine PV-Anlage und habe als Datenlogger einen SolarLog 300. Diesen kann man per JSON auslesen.
Ich habe auch eine Dokumentation über die JSON Schnittstelle des Loggers, aber leider bekomme ich es nicht hin, per HM Script den JSON Post abzusetzen.
Wenn ich auf meinem Mac im Terminal folgendes eingeben, werden die benötigten Daten einwandfrei zurückgegeben:

Code: Alles auswählen

curl -X POST -H "Content-Type: application/json" -d '{"801":{"170":null}}' IP_AdrvomSL/getjp
Ich habe nun folgendes versucht:

Code: Alles auswählen

var JSONObj = "\"Content-Type: application/json\" -d '{\"801\":{\"170\":null}}' IP_AdrvomSL/getjp";

dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("LD_LIBRARY_PATH=/usr/local/addons/cuxd /usr/local/addons/cuxd/curl -X POST -H +#JSONObj#");
dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
string response = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
Leider ohne Erfolg. Ich glaube es liegt irgendwie an den " Zeichen, die aber leider ja benötigt werden.

Hat da jemand eine Idee? Ich kenne mich mit JSON gar nicht aus und meine Kenntnisse in HM Script sind auch nur sehr begrenzt. Ich habe mir vieles "ergoogelt".
Ich habe auch schon überlegt, dem curl Befehl anstelle der Parameter eine Datei zu übergeben, die dann die nötigen Daten enthält. Aber wie muss die Datei dann aufgebaut sein? Wie gesagt, keinen Schimmer von JSON und wie das funktioniert.

Micky

Benutzeravatar
anli
Beiträge: 4326
Registriert: 10.06.2009, 14:01
Wohnort: 20 Min. nördlich von Hannover und bei Bremen
Hat sich bedankt: 1 Mal
Danksagung erhalten: 23 Mal
Kontaktdaten:

Re: Daten vom Solar-Log per JSON auslesen

Beitrag von anli » 07.02.2015, 23:38

Der Teil +#JSONObj#") ist nicht richtig - das muss außerhalb der Anführungszeichen liegen: " # JSONObj)
Herzliche Grüße, anli

Alle Angaben ohne Gewähr und Haftung meinerseits. Verwendung der von mir zur Verfügung gestellten Downloads auf eigene Gefahr. Ich bitte um Verständnis, dass ich aus zeitlichen Gründen keine unaufgeforderte Hilfestellung per PN/Mail geben kann. Bitte allgemeine Fragen ins Forum stellen, hier können viele fähige User viel schneller helfen.

Homematic-Manager v2: einfaches Tool zum Erstellen von Direktverknüpfungen und Bearbeiten von Gerätenamen, -parametern etc. für Homematic und HomematicIP (Alternative diesbzgl. zur WebUI)

Einsteiger-Hilfeerweiterter Skript-Parser

Micky79
Beiträge: 38
Registriert: 05.02.2015, 10:26

Re: Daten vom Solar-Log per JSON auslesen

Beitrag von Micky79 » 07.02.2015, 23:47

Danke für die schnelle Antwort. Habe es geändert. Aber leider funktioniert es immer noch nicht. Bekomme als Antwort einfach einen leer String.

Benutzeravatar
anli
Beiträge: 4326
Registriert: 10.06.2009, 14:01
Wohnort: 20 Min. nördlich von Hannover und bei Bremen
Hat sich bedankt: 1 Mal
Danksagung erhalten: 23 Mal
Kontaktdaten:

Re: Daten vom Solar-Log per JSON auslesen

Beitrag von anli » 08.02.2015, 13:54

Ich habe es jetzt mal anders gemacht:

per ssh an der ccu2 angemeldet, dann in das Verzeichnis /usr/local/addons gewechselt. Dort eine solarlog.sh angelegt mit Inhalt:

Code: Alles auswählen

#!/bin/sh
LD_LIBRARY_PATH=/usr/local/addons/cuxd /usr/local/addons/cuxd/curl -X POST -H 'Content-Type: application/json' -d '{"801":{"170":null}}' http://192.168.100.210/getjp
Die dann ausführbar gemacht (chmod 700 solarlog.sh).
Die lässt sich dann wunderbar aufrufen:

Code: Alles auswählen

dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("/usr/local/addons/solarlog.sh");
dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
string response = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
WriteLine(response);
Herzliche Grüße, anli

Alle Angaben ohne Gewähr und Haftung meinerseits. Verwendung der von mir zur Verfügung gestellten Downloads auf eigene Gefahr. Ich bitte um Verständnis, dass ich aus zeitlichen Gründen keine unaufgeforderte Hilfestellung per PN/Mail geben kann. Bitte allgemeine Fragen ins Forum stellen, hier können viele fähige User viel schneller helfen.

Homematic-Manager v2: einfaches Tool zum Erstellen von Direktverknüpfungen und Bearbeiten von Gerätenamen, -parametern etc. für Homematic und HomematicIP (Alternative diesbzgl. zur WebUI)

Einsteiger-Hilfeerweiterter Skript-Parser

Micky79
Beiträge: 38
Registriert: 05.02.2015, 10:26

Re: Daten vom Solar-Log per JSON auslesen

Beitrag von Micky79 » 08.02.2015, 13:59

Hallo.
Ich habs auch gerade hinbekommen.

Code: Alles auswählen

var JSONObj = "\"Content-Type: application/json\" -d '{\"801\":{\"170\":null}}' IP_AdrvomSL/getjp";

dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("LD_LIBRARY_PATH=/usr/local/addons/cuxd /usr/local/addons/cuxd/curl -X POST -H +#JSONObj#");
CMD_SETS anstelle CMD_EXEC funktioniert.
Dann brauch man auch nicht den Umweg über die Datei gehen.

Trotzdem vielen Dank.

Little_tiger
Beiträge: 131
Registriert: 22.01.2013, 21:00

Re: Daten vom Solar-Log per JSON auslesen

Beitrag von Little_tiger » 08.02.2015, 14:33

Hallo!
Ich lese grade ganz interessiert mit, da ich auch gern die Daten des Solarlog 300 nutzen würde.
Für mich sind die meisten Angaben oben aber leider völlig unverständlich.
So wie ich das verstehe sind die Ansätze von Anli und Micky unterschiedlich?
Ich würde gern den aktuellen Verbrauch und den aktuell erzeugten Strom in eine Variable zum Weiterverarbeiten schreiben.
Welchen Ansatz muss ich dafür verfolgen?
Hoffe, einer von euch beiden hat Zeit und Lust, mir aufs Pferd zu helfen...

Gruß
Patrick


Gesendet von iPhone mit Tapatalk

Kstone
Beiträge: 3
Registriert: 13.02.2014, 21:10

Re: Daten vom Solar-Log per JSON auslesen

Beitrag von Kstone » 18.04.2016, 16:46

Ich möchte gerne diesen Beitrag nach oben schieben und die Frage von "Little Tiger" wiederholen!

Ich habe über Script die verschiedenen Vorschläge getestet, allerdings fehlt mir hier der Durchblick, wie ich meine aktuellen Leistungsdaten aus dem Solarlog in eine Variable bekomme, damit ich einen 3 phasigen Heizstab über eine Relaissteuerung zu- und abschalten kann. Ich habe diese Relaisschaltung bereits über Programme gesteuert und nutze die Werte der Temperaturdifferenz, die leider etwas träge reagieren.
Meine Wunschvorstellung ist, die aktuellen Leistungsdaten aus dem Solarlog zu nutzen, um kurze Schaltzeiten zur ermöglichen. Die Temperaturdifferenz braucht schon 2 bis 4 Minuten, um eine Veränderung auszulösen und hierbei verbrauche ich zugekauften Strom.
Ich würde mich freuen, wenn jemand dieses Verfahren einmal in kleinen Schritten erklären könnte, damit ich dies verstehen und umsetzen kann.

Danke und Gruß

Kstone

--Geri--
Beiträge: 1
Registriert: 03.05.2017, 13:44

Re: Daten vom Solar-Log per JSON auslesen

Beitrag von --Geri-- » 03.05.2017, 13:59

Hallo zusammen :D
ich möchte per VB6-Code die aktuellen Verbrauchswerte meiner Solar-Log 300 auslesen um diese weiter zu verarbeiten.
Hab schon einiges im Internet drüber gelesen, bin aber noch nicht bei einer funktionierenden Lösung. :cry:
Vielleicht kann mir ja einer der Profis hier weiterhelfen....? :idea:

Habe folgenden VB-Code getestet, läuft aber noch nicht richtig.
Bekomme immer die Fehlermeldung {{"QUERY IMPOSSIBLE 000"}} zurück.

Vielleicht kann mir jemand einen Tipp geben oder hat sogar noch VB6 und eine Solar-Log zum Testen.

Danke schon mal im Voraus!

Code: Alles auswählen

Private Sub CB_SolarLog_Click()
' Code für Webservice-Aufrufe über POST
    
    Dim XMLHttp As Object
    Dim strURL As String, strMethod As String, strUser As String
    Dim strPassword As String
    Dim bolAsync As Boolean
    Dim varMessage
 
    ' Microsoft XML HTTP Objekt erzeugen
    Set XMLHttp = CreateObject("MSXML2.XMLHTTP")
 
    ' -------------- POST-Request, der xml liefert -------------
 
    ' Parameter für einen simplen POST-Request ohne Authentifizierung füllen
    strMethod = "POST"
    strURL = "http://solar-log-3289/getjp"
    
    bolAsync = False
    strUser = ""
    strPassword = ""
    varMessage = "{„801“:{„170“:null}}"
 
    MsgBox "POST-Request, der XML liefert"
 
    ' Request absetzen
    Call XMLHttp.Open(strMethod, strURL, bolAsync, strUser, strPassword)
    Call XMLHttp.setRequestHeader("Content-Type", "application/json")
    Call XMLHttp.send(varMessage)
 
    ' Rückgabewerte ausgeben
    MsgBox "Status: " & XMLHttp.Status
    MsgBox "responseText: " & XMLHttp.responseText
    MsgBox "reponseXML: " & XMLHttp.responseXML.Text
 
End Sub

surfer01
Beiträge: 8
Registriert: 26.04.2020, 07:27

Re: Daten vom Solar-Log per JSON auslesen

Beitrag von surfer01 » 26.04.2020, 08:21

@Micky79
Hallo,
ich habe ebenfalls einen Solar-Log 500 und möchte eine Variable anlegen, um z.B. Geräte zu aktivieren, ab einem bestimmten erzeugten Strom.
Hab schon viel hier gelesen, aber bin halt ehr der Anwender, als der Programmierer.
Gibt es hier vielleicht eine Anleitung, die die einzelnen Schritte beschreibt, um eine funktionierende Variable dafür zu erzeugen und dem Programmteil, der diese einbindet?
Danke im vorraus!

Antworten

Zurück zu „Softwareentwicklung für die HomeMatic CCU“