Batteriespeicher in CCU.IO einbinden

WebUIs (DashUI, yahui, ...), Adapter (Hue, IRTrans, Sonos, ...), Logging, Scripting

Moderator: Co-Administratoren

Antworten
michael112
Beiträge: 2
Registriert: 05.05.2014, 08:51

Batteriespeicher in CCU.IO einbinden

Beitrag von michael112 » 05.05.2014, 12:51

Hallo zusammen,

zurzeit frage ich unseren Batteriespeicher über ein Shell-Script ab, das über die crontab jede Minute ausgeführt wird.
Es werden dort die Daten nach Graphite übergeben.

Code: Alles auswählen

#!/bin/bash 
cd /home/user/SENEC/SENEC_Graphite/ 
wget -q "http://192.168.18.34/cgi-bin/ILRReadValues.exe" -O export.xml --post-file="input.xml" --header="Content-Type:text/xml"

time=$(date +%s)

# Netzspannung
echo "SENEC.PowerMeter.Grid.Voltage.U1N $(cat export.xml | grep GV.GuiData.PowerMeter.Grid.Voltage.U1N | sed -e 's/.*<v>\(.*\)<\/v>.*/\1/') $time" | nc -w 1 127.0.0.1 2003
echo "SENEC.PowerMeter.Grid.Voltage.U2N $(cat export.xml | grep GV.GuiData.PowerMeter.Grid.Voltage.U2N | sed -e 's/.*<v>\(.*\)<\/v>.*/\1/') $time" | nc -w 1 127.0.0.1 2003
echo "SENEC.PowerMeter.Grid.Voltage.U3N $(cat export.xml | grep GV.GuiData.PowerMeter.Grid.Voltage.U3N | sed -e 's/.*<v>\(.*\)<\/v>.*/\1/') $time" | nc -w 1 127.0.0.1 2003

# usw.....
Nun möchte ich aber die Werte in Yahui und Dashui anzeigen lassen und auch diese Variablen in Programmen verwenden können
(z.B. wenn über 5 Min im Duchschnitt 1000 W Leistungsüberschuss ist, steuere die Poolpumpe an).
Es sind ca. 20 Variablen die jede Minute abgefragt werden.

Wie bekomme ich die Variablen aber nach CCU.IO?
Muss ich auf der CCU die Variablen erstellen und dann über socket.io mit setState die Variablen übermitteln?
Oder gibt es da einen eleganteren weg?
(System: Ubuntu SRV 14.04 mit CCU.IO, Yahui, Dashui und Graphite)

matze-pe
Beiträge: 726
Registriert: 11.02.2013, 08:38

Re: Batteriespeicher in CCU.IO einbinden

Beitrag von matze-pe » 05.05.2014, 13:16

Hi,
ich kenne jetzt nicht den Inhalt deiner XML Datei, aber wenn du die Datei auf der Homematic laufen lässt, kannst du zumindest die Werte in die Systemvariabel einlesen.

Einfach per sftp auf der Homematic z.B. den Ordner "strom" unter /usr/local/addons/strom/ anlegen.

Hier erstellst du z.B. die Datei strom-auslesen.tcl (Inhalt siehe unten), die Datei gibst du die Dateiberechtigung 755. Den Inhalt mit den zusuchenden Werte noch anpassen.


Dann ein Programm als Skript erstellen (CuxD Taster einrichten, falls noch nicht vorhanden (System:28 - Excec - Fernbedienung 12 tasten)):


Skript im Homematic Programm:

Code: Alles auswählen

dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("cd /usr/local/addons/strom/strom-auslesen.tcl");

strom-auslesen.tcl

Code: Alles auswählen

load tclrega.so


# Daten holen
# ============

set url "http://192.168.18.34/cgi-bin/ILRReadValues.exe"
exec /usr/bin/wget -q -O /usr/local/addons/strom/export.xml $url

set f [open "/usr/local/addons/strom/export.xml"]
set input [read $f]
close $f


# Werte aus XML Datei auslesen
# =============================

regexp "<v1>(.*?)</v1>" $input dummy currentv1  ;                     
regexp "<v1>(.*?)</v2>" $input dummy currentv2  ;         
regexp "<v1>(.*?)</v3>" $input dummy currentv3  ;         



# Werte in Variabel schreiben
# =============================

set rega_cmd ""
append rega_cmd "var w0 = dom.GetObject('homematic-v1');"
append rega_cmd "w0.State('$currentv1');"

append rega_cmd "var w1 = dom.GetObject('homematic-v2');"
append rega_cmd "w1.State('$currentv2');"

append rega_cmd "var w2 = dom.GetObject('homematic-v3');"
append rega_cmd "w2.State('$currentv3');"

rega_script $rega_cmd
Die Variabeln "homematic-v1..." demensprechend an deinen anpassen.


Mit diesem Skript ^^ lese ich bei mir viele Sachen ein (Wetter über wunderground, USV Zustand, Heizölbestand ... )


Wenn die Systemvariabeln in der Homematic vorhanden sind, werden sie dann auch zur ccu.io übertragen ;)


Viele Grüße
Matze
CCU3 (80 Geräte, 105 Variablen, 50 Programme) * CCU.IO + DashUI + Apple HomeKit (Homebridge) auf Raspi2

michael112
Beiträge: 2
Registriert: 05.05.2014, 08:51

Re: Batteriespeicher in CCU.IO einbinden

Beitrag von michael112 » 05.05.2014, 13:37

Hi,
den gedanken das über die CCU selber einzulesen hatte ich verworfen, da hier im Forum viel geschrieben wird, dass die CCU unstabil mit häufigen Abfragen ist. Und jede Minute 20 Variablen ändern finde ich schon viel ;)

Hier nochmal Auszüge aus der input.xml und export.xml

input.xml:

Code: Alles auswählen

<body>
<version>1.0</version>
<client>IMasterPhoenix5_14_05</client>
<client_ver>5.14.0501</client_ver>
<item_list_size></item_list_size>
<item_list>
<i>
<n>@GV.GuiData.OverView.Energy.HouseConsumption</n>
</i>
<i>
<n>@GV.GuiData.OverView.Power.HouseConsumption</n>
</i>
<i>
<n>@GV.GuiData.OverView.Energy.BatteryCharge</n>
</i>
<i>
<n>@GV.GuiData.OverView.Power.BatteryCharge</n>
</i>
usw.....
</item_list>
</body>
Die Antwort export.xml:

Code: Alles auswählen

<body>
<version>1.0</version>
<client>IMasterPhoenix5_14_05</client>
<client_ver>5.14.0501</client_ver>
<item_list_size></item_list_size>
<item_list>
<i>
<n>@GV.GuiData.OverView.Energy.HouseConsumption</n><v>8.78874</v>
</i>
<i>
<n>@GV.GuiData.OverView.Power.HouseConsumption</n><v>0.634972</v>
</i>
<i>
<n>@GV.GuiData.OverView.Energy.BatteryCharge</n><v>6.31827</v>
</i>
<i>
<n>@GV.GuiData.OverView.Power.BatteryCharge</n><v>0.168328</v>
</i>
usw.....
</item_list>
</body>
Ich werde dann mal erstmal CuxD installieren, und mir einen SSH Zugriff zu CCU anlegen.

Gruß

Michael

hobbyquaker
Beiträge: 2873
Registriert: 12.07.2009, 20:01
Kontaktdaten:

Re: Batteriespeicher in CCU.IO einbinden

Beitrag von hobbyquaker » 06.05.2014, 21:26

der aus meiner Sicht sinnvollste Weg wäre ein CCU.IO-Script:
Abholen der Daten mittels request() Methode, einbinden eines XML-Parser Moduls in der global.js und dann ein kleines Script dass die relevanten Daten mit setState() in irgendwelche Datenpunkte schreibt.

Noch besser wäre es natürlich ein Adapter dafür zu bauen, aber da komme ich frühestens nächste Woche dazu.

Maddin75
Beiträge: 9
Registriert: 16.06.2016, 15:39

Re: Batteriespeicher in CCU.IO einbinden

Beitrag von Maddin75 » 22.09.2018, 07:16

Hallo, ich habe einen Senec LI mit 7,5 und würde gern den Füllstand auslesen, entweder direkt aus dem Akku im Heimnetzwerk oder die Daten Online bei Senec holen.
Mit dem FU von Kostal klappt das schon wunderbar, habt Ihr die Lösung hier weiter verfolgt?

Antworten

Zurück zu „CCU.IO“