Solarlog Werte in Homematic Variable speichern

Allgemeines zur HomeMatic Haussteuerung

Moderator: Co-Administratoren

Hans Hannsen
Beiträge: 12
Registriert: 22.08.2021, 16:18
System: CCU
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Re: Solarlog Werte in Homematic Variable speichern

Beitrag von Hans Hannsen » 25.08.2021, 20:39

Dr.Bob hat geschrieben:
25.08.2021, 20:20
Hallo,

Solarlog 200 geht bei mir auszulesen
a) weil ältere Firmware drauf die ich extra seit 5J nicht aktualisiert habe damit JSON Ausgabe klappt

b) dann via NodeRed abrufen, ausparsen und in die Variablen setzen

Wenn etwas davon helfen sollte, kann ich die Details gerne posten.
Hallo, habe eine Solarlog 300 und würde gerne den momentanen Produktionswert und Verbrauchswert über CuxD auslesen und in 2 Variablen der Homematic schreiben.
Hast du dazu eine scriptlösung?
SG

Benutzeravatar
Dr.Bob
Beiträge: 461
Registriert: 12.05.2011, 10:55
Hat sich bedankt: 1 Mal
Danksagung erhalten: 3 Mal

Re: Solarlog Werte in Homematic Variable speichern

Beitrag von Dr.Bob » 26.08.2021, 11:32

Ich habe dieses Modell: Solar-Log 1200 METER
mit der guten alten Firmware: 3.1.2 Build 68 - 23.05.2014

Wie gesagt, die Werte lassen sich problemlos abrufen aber in meinem Falle via CCU3 Addon "Node-RED".
Wenn einer den Node-RED am Laufen hat, kann ich mein SolarLog Flow gerne exportieren und hier posten.
Dann müsstet ihr nur die IP von Eurem SolarLog Gerät im LAN anpassen (voraussichtlich Eure Firmware gibt die JSON Ausgabe).

Meine 4 HM-Variablen die mit den SolarLog Werten gefüttert werden seht ihr rechts im CloudMatic Screen.
Diese Variablen fangen bei mir mit "PV...." an.


!!! ALTERNATIV !!!

habe ich vor dem Node-RED Einsatz dieses sh Script am Laufen gehabt auf meiner Synology-NAS,
wo das sh Script als Synology-Task alle x Minuten gelaufen ist um die SolarLog Werte via wget zu holen:

Code: Alles auswählen

#!/bin/sh
#echo "start"

cd /volume1/work/datenlogging/pv/pv_script
wget -q --post-data='{"801":{"170":null}}' http://192.168.178.XXX/getjp \
  |sed -e 's/[{},]/\n/g' \
  |awk -F : '{if($1=="\"101\"") {print "PAC Leistung WR " ($2/1000) " kWh" }};
             {if($1=="\"102\"") {print "PAC Leistung aller WR " ($2/1000) " kWh" }};
             {if($1=="\"103\"") {print "Spannung U AC Wechselspannung " $2 " Volt" }};
             {if($1=="\"104\"") {print "Spannung U DC Gleichspannung " $2 " Volt" }};
             {if($1=="\"105\"") {print "Tages-Ertrag der WR " ($2/1000) " kWh" }};
             {if($1=="\"106\"") {print "Tages-Ertrag der WR von gestern " ($2/1000) " kWh" }};
             {if($1=="\"107\"") {print "Monats-Ertrag der WR " ($2/1000) " kWh" }};
             {if($1=="\"108\"") {print "Jahres-Ertrag der WR  " ($2/1000) " kWh" }};
             {if($1=="\"109\"") {print "Gesamtertrag aller WR " ($2/1000) " kWh" }};
             {if($1=="\"110\"") {print "momentaner Verbrauch " ($2/1000) " kWh" }};
             {if($1=="\"111\"") {print "Tages-Verbrauch " ($2/1000) " kWh" }};
             {if($1=="\"112\"") {print "Tages-Verbrauch von gestern " ($2/1000) " kWh" }};
             {if($1=="\"113\"") {print "Monats-Verbrauch " ($2/1000) " kWh" }};
             {if($1=="\"114\"") {print "Jahres-Verbrauch " ($2/1000) " kWh" }};
             {if($1=="\"115\"") {print "Summe aller Verbraucher " ($2/1000) " kWh" }};
             {if($1=="\"116\"") {print "Installierte Generatorleistung " ($2/1000) " kWp" }}'

file="/volume1/work/datenlogging/pv/pv_load/ausgabePV"
if [  -e $fn ]
then
  echo -e "OK:\t`date` \t Download of ausgabePV file succeeded.\r\n" >> /volume1/work/datenlogging/pv/pv_log/logfilePV.txt
  chmod -R 666 ./getjp
  #NEW_FILENAME=$(date -r getjp +"%Y-%m-%d_%H%M%S")
  NEW_FILENAME=$(date -r getjp +"%Y-%m-%d")
  mv getjp /volume1/work/datenlogging/pv/pv_load/"$NEW_FILENAME.csv"
  #mv getjp /volume1/work/datenlogging/pv/pv_load/ZIEL.csv
  sed -i -e 's/[{},]/\n/g' "/volume1/work/datenlogging/pv/pv_load/$NEW_FILENAME.csv"
  sed -i -e 's/\"100\"/00. PV Status vom Datum /g' "/volume1/work/datenlogging/pv/pv_load/$NEW_FILENAME.csv"   
  sed -i -e 's/\"101\"/01. PAC Leistung WR (Wh)/g' "/volume1/work/datenlogging/pv/pv_load/$NEW_FILENAME.csv"   
  sed -i -e 's/\"102\"/02. PAC Leistung aller WR (Wh)/g' "/volume1/work/datenlogging/pv/pv_load/$NEW_FILENAME.csv" 
  sed -i -e 's/\"103\"/03. Spannung U AC Wechselspannung (V)/g' "/volume1/work/datenlogging/pv/pv_load/$NEW_FILENAME.csv" 
  sed -i -e 's/\"104\"/04. Spannung U DC Gleichspannung (V)/g' "/volume1/work/datenlogging/pv/pv_load/$NEW_FILENAME.csv" 
  sed -i -e 's/\"105\"/05. Tages-Ertrag der WR (Wh)/g' "/volume1/work/datenlogging/pv/pv_load/$NEW_FILENAME.csv"
  sed -i -e 's/\"106\"/06. Tages-Ertrag der WR von gestern (Wh)/g' "/volume1/work/datenlogging/pv/pv_load/$NEW_FILENAME.csv"
  sed -i -e 's/\"107\"/07. Monats-Ertrag der WR (Wh)/g' "/volume1/work/datenlogging/pv/pv_load/$NEW_FILENAME.csv"
  sed -i -e 's/\"108\"/08. Jahres-Ertrag der WR (Wh)/g' "/volume1/work/datenlogging/pv/pv_load/$NEW_FILENAME.csv"
  sed -i -e 's/\"109\"/09. Gesamtertrag aller WR (Wh)/g' "/volume1/work/datenlogging/pv/pv_load/$NEW_FILENAME.csv"
  sed -i -e 's/\"110\"/10. Momentaner Verbrauch (Wh)/g' "/volume1/work/datenlogging/pv/pv_load/$NEW_FILENAME.csv"
  sed -i -e 's/\"111\"/11. Tages-Verbrauch (Wh)/g' "/volume1/work/datenlogging/pv/pv_load/$NEW_FILENAME.csv"
  sed -i -e 's/\"112\"/12. Tages-Verbrauch von gestern (Wh)/g' "/volume1/work/datenlogging/pv/pv_load/$NEW_FILENAME.csv"
  sed -i -e 's/\"113\"/13. Monats-Verbrauch (Wh)/g' "/volume1/work/datenlogging/pv/pv_load/$NEW_FILENAME.csv"
  sed -i -e 's/\"114\"/14. Jahres-Verbrauch (Wh)/g' "/volume1/work/datenlogging/pv/pv_load/$NEW_FILENAME.csv"
  sed -i -e 's/\"115\"/15. Summe aller Verbraucher (Wh)/g' "/volume1/work/datenlogging/pv/pv_load/$NEW_FILENAME.csv"
  sed -i -e 's/\"116\"/16. Installierte Generatorleistung (Wp)/g' "/volume1/work/datenlogging/pv/pv_load/$NEW_FILENAME.csv"
  
else
  echo -e "ERROR:\t `date` \t Download of ausgabePV file failed!\r\n" >> /volume1/work/datenlogging/pv/pv_log/logfilePV.txt
  exit 0
fi

  		  
#echo "ende"
Dateianhänge
111.png
Viele Grüße,
Dr.Bob

HM SmartHome im Neubau:
http://www.elv.de/Von-Anfang-an-%E2%80% ... tail_49648

HM SmartGarten mit GARDENA 24V Bewässerung:
http://www.elv.de/HomeMatic-bringt-Wass ... tail_51154
Video: https://www.youtube.com/watch?v=QUTTix0 ... e=youtu.be

HM Energieauswertung mit HomeMatic Strom, Wasser, Wärme, Photovoltaik:
https://www.homematic-inside.de/media/d ... auswertung

Homematic Usertreffen 2020 Newsletter, https://www.homematic-usertreffen.de/in ... seite.html

CCU3: 731 Kanäle in 131 Geräten (90% HM wired + 10% HM Funk)
Zusatz-Addons: CUxD + VPN cloudmatic + NodeRed + Amazon Alexa + XML-API
HW-Zubehör: IRTrans + IPswitch S0 + (Photovoltaik)
GUI: CloudMatic + iOS PocketControl

Hans Hannsen
Beiträge: 12
Registriert: 22.08.2021, 16:18
System: CCU
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Re: Solarlog Werte in Homematic Variable speichern

Beitrag von Hans Hannsen » 26.08.2021, 19:40

Hallo, habe jetzt folgenden Befehl gefunden:

curl -X POST -H "Content-Type: application/json" -d '{"801":{"170":null}}' 192.168.178.148/getjp

Habe diesen auf der CuxD Oberfläche laufen lassen und folgende Werte aus der Solarlog bekommen:

% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed

0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
100 224 0 204 100 20 3090 303 --:--:-- --:--:-- --:--:-- 3446
{"801":{"170":{"100":"25.08.21 20:00:30","101":0,"102":0,"103":227,"104":335,"105":34905,"106":26113,"107":775466,"108":3141393,"109":30855186,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":7040}}}

Aus der Rückgabe würde ich gerne die Werte die hinter der Rückgabe "101(=akt. Erzeugung)", also die 0 in eine Variable übergeben, als auch den Wert hinter "110" (=akt. Verbrauch), also die 0 sollen in eine andere Variable geschrieben werden.

Kannst du mir da weiterhelfen?

SG

MichaelN
Beiträge: 9562
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 696 Mal
Danksagung erhalten: 1608 Mal

Re: Solarlog Werte in Homematic Variable speichern

Beitrag von MichaelN » 28.08.2021, 13:17

So als kleiner Wink mit dem Zaunpfahl, falls Du noch keine Lösung hast:
MichaelN hat geschrieben:
23.08.2021, 08:48
Wenn es einen Aufruf per system-exec oder CUxD gibt, der JSON zurückliefert, dann sag mir Bescheid. Da kann ich helfen.
MichaelN hat geschrieben:
22.08.2021, 17:00
siehe JSON Skript in meiner Signatur. Das frisst "alles"

Code: Alles auswählen

------------------------------- Scriptausgabe -------------------------------
=== HTTP-Request OK === {"801":{"170":{"100":"21.09.14 16:32:15","101":257,"102":262,"103":0,"104":407,"105":19466,"106":30730,"107":822005,"108":12972119,"109":23174482,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":16800}}}
=== nach Replace === '"801":{"170":{"100":"21.09.14 16:32:15","101":257,"102":262,"103":0,"104":407,"105":19466,"106":30730,"107":822005,"108":12972119,"109":23174482,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":16800'
=== nach Aufbereitung === '801:{170:{100:21.09.14 16 32 15,101:257,102:262,103:0,104:407,105:19466,106:30730,107:822005,108:12972119,109:23174482,110:0,111:0,112:0,113:0,114:0,115:0,116:16800'
=== Output V1.8 ===
JSON_801_170_100 = '21.09.14 16 32 15'
JSON_801_170_101 = '257'
JSON_801_170_102 = '262'
JSON_801_170_103 = '0'
JSON_801_170_104 = '407'
JSON_801_170_105 = '19466'
JSON_801_170_106 = '30730'
JSON_801_170_107 = '822005'
JSON_801_170_108 = '12972119'
JSON_801_170_109 = '23174482'
JSON_801_170_110 = '0'
JSON_801_170_111 = '0'
JSON_801_170_112 = '0'
JSON_801_170_113 = '0'
JSON_801_170_114 = '0'
JSON_801_170_115 = '0'
JSON_801_170_116 = '16800'
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

Hans Hannsen
Beiträge: 12
Registriert: 22.08.2021, 16:18
System: CCU
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Re: Solarlog Werte in Homematic Variable speichern

Beitrag von Hans Hannsen » 12.09.2021, 12:09

Hallo, kannst du mir nochmal helfen das Script aufzubauen damit der Ausgabewert folgendes Befehls in die Variable "Solarlog_Erzeugung" geschrieben wird:

1. CUxD Befehl zum auslesen der Solarlog Werte: curl -X POST -H "Content-Type: application/json" -d '{"801":{"170":null}}' 192.168.178.148/getjp

2. Rückgabewert:
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed

0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
100 229 0 209 100 20 3603 344 --:--:-- --:--:-- --:--:-- 3948
{"801":{"170":{"100":"12.09.21 12:07:00","101":3676,"102":3783,"103":235,"104":326,"105":8525,"106":26039,"107":354646,"108":3645749,"109":31359542,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":7040}}}

3. Wert 3676 nach "101" in Variable schreiben

Danke

MichaelN
Beiträge: 9562
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 696 Mal
Danksagung erhalten: 1608 Mal

Re: Solarlog Werte in Homematic Variable speichern

Beitrag von MichaelN » 12.09.2021, 13:52

Welche Schritte hast Du bisher versucht? CuxD ist erfolgreich installiert?
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

MichaelN
Beiträge: 9562
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 696 Mal
Danksagung erhalten: 1608 Mal

Re: Solarlog Werte in Homematic Variable speichern

Beitrag von MichaelN » 13.09.2021, 12:44

Also Du musst da schon ein bisschen schneller und umfassender kommunizieren. Ich habe keine Lust mich alle paar Tage neu in dein Thema einzuarbeiten. Entweder bist Du zu einer effektiven Zusammenarbeit bereit, oder wir vergessen das.
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

Hans Hannsen
Beiträge: 12
Registriert: 22.08.2021, 16:18
System: CCU
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Re: Solarlog Werte in Homematic Variable speichern

Beitrag von Hans Hannsen » 13.09.2021, 20:16

Hallo, werde versuchen etwas öfter online zu sein: Bisher habe ich folgendes gemacht:
- 3 Variablen für die Anzeigewerte in Ccu3 angelegt
- Programm für Script angelegt
- CuxD ist installiert
- iP Solarlog ist 192.168.178.148
- jetzt fehlt mir nur noch das Script mit den Befehlen
Was für Infos benötigst du noch?

Habe leider dein JSON Script in deiner Signatur nicht gefunden

MichaelN
Beiträge: 9562
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 696 Mal
Danksagung erhalten: 1608 Mal

Re: Solarlog Werte in Homematic Variable speichern

Beitrag von MichaelN » 14.09.2021, 19:40

Hans Hannsen hat geschrieben:
13.09.2021, 20:16
Habe leider dein JSON Script in deiner Signatur nicht gefunden
Streng genommen stehen da auch nur Links. Den richtigen man an dem Schlagwort "JSON" erkennen.

Also, Du folgst diesem Link:
viewtopic.php?f=18&t=68762&p=672027#p672027

In dem Beitrag scrollst Du unterhalb von "Hier der Skript-Code:" bis "Code: Alles auswählen"
"Alles auswählen" anklicken, STRG-C
den Code aus der Zwischenablage in das Skript-Fenster der WebUI, Skript testen oder ein Windows-Editor-Fenster einfügen (STRG-V)
Nicht Word oder sowas nehmen, diese Programm verstehen sich als Künstler und ruinieren den Code.

Indem Editor deiner Wahl suchst Du diese Zeilen:

Code: Alles auswählen

string url = "http://IP/";
url = "wget --no-check-certificate --timeout=2 -O - '"#url#"'";
string prefix = "JSON_";
string CUXD_Device = ""; ! falls man CUxD  nutzt, Device eintragen z.B. "CUxD.CUX2801001:1"
und ersetzt die durch:

Code: Alles auswählen

string url = "curl -X POST -H  \"Content-Type: application/json\" -d '{\"801\":{\"170\":null}}' 192.168.178.148/getjp";
string prefix = "SOLAR_";
string CUXD_Device = "CUxD.CUX2801001:1";
Vorrausgesetzt dein CUxD Device heisst CUX2801001, wenn nicht: den Code entsprechend anpassen

Unter Skript testen könntest Du diesen angepassten Code nun einfügen und laufen lassen und müsstest eine Ausgabe bekommen, wo Du unter anderem
SOLAR_801_170_101 = 'xxx'
findest. Das bedeutet der Output wurde erfolgreich gelesen und würde in eine Variable mit dem Namen SOLAR_801_170_101 geschrieben, wenn sie denn existiert.
Da Du schon irgendwelche Systemvariablen angelegt hast, aber vermutlich keine mit diesem Namen, solltest Du das nun nachholen. Wenn Du das Skript dann ausführst, wird die SV SOLAR_801_170_101 den passenden Wert enthalten.
Wenn das erfolgreich läuft fügst Du das in dein WebUI-Programm ein und speicherst es ab.
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

Hans Hannsen
Beiträge: 12
Registriert: 22.08.2021, 16:18
System: CCU
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Re: Solarlog Werte in Homematic Variable speichern

Beitrag von Hans Hannsen » 14.09.2021, 21:24

Danke, hat sich erledigt

Antworten

Zurück zu „HomeMatic allgemein“