Ausgabe Module
Http-Server mit REST-API
Templates
Der interne Webserver kann - sofern enabled - über die konfigurierte Adresse aufgerufen werden:
Per default ist das:
http://localhost:8080/
Der Inhalt dieser Seite kann den eigenen Bedürfnissen angepasst werden (template/index.html).
Folgende Tags werden durch aktuelle Daten ersetzt:
Tag | Beschreibung | Beispiel |
---|---|---|
{{pvdata.ActiveInvCnt}} | tbd. | |
{{pvdata.ActiveSensorCardCnt}} | tbd. | |
{{pvdata.DevTime}} | tbd. | |
{{pvdata.Error}} | tbd. | |
{{pvdata.LocalNetStatus}} | tbd. | |
{{pvdata.PDayTotal}} | tbd. | |
{{pvdata.PTotal}} | tbd. | |
{{pvdata.Time}} | Messzeit als Timestamp | 1578383866.0 |
{{pvdata.VersionIFC}} | tbd. | |
{{pvdata.wr0.DevType}} | tbd. | |
{{pvdata.wr0.FAC}} | tbd. | |
{{pvdata.wr0.IAC}} | tbd. | |
{{pvdata.wr0.IDC}} | tbd. | |
{{pvdata.wr0.OHDAY}} | tbd. | |
{{pvdata.wr0.OHTOT}} | tbd. | |
{{pvdata.wr0.OHYEAR}} | tbd. | |
{{pvdata.wr0.PDay}} | tbd. | |
{{pvdata.wr0.PNow}} | tbd. | |
{{pvdata.wr0.UAC}} | tbd. | |
{{pvdata.wr0.UDC}} | tbd. | |
{{pvdata.wr1.DevType}} | tbd. | |
{{pvdata.wr1.FAC}} | tbd. | |
{{pvdata.wr1.IAC}} | tbd. | |
{{pvdata.wr1.IDC}} | tbd. | |
{{pvdata.wr1.OHDAY}} | tbd. | |
{{pvdata.wr1.OHTOT}} | tbd. | |
{{pvdata.wr1.OHYEAR}} | tbd. | |
{{pvdata.wr1.PDay}} | tbd. | |
{{pvdata.wr1.PNow}} | tbd. | |
{{pvdata.wr1.UAC}} | tbd. | |
{{pvdata.wr1.UDC}} | tbd. | |
{{weatherdata.Error}} | tbd. | |
{{weatherdata.Hin}} | tbd. | |
{{weatherdata.Hout}} | tbd. | |
{{weatherdata.MeasureTime}} | tbd. | |
{{weatherdata.PressureAbs}} | tbd. | |
{{weatherdata.PressureRel}} | tbd. | |
{{weatherdata.Rain1h}} | tbd. | |
{{weatherdata.Rain24h}} | tbd. | |
{{weatherdata.RainTotal}} | tbd. | |
{{weatherdata.State}} | tbd. | |
{{weatherdata.Tin}} | tbd. | |
{{weatherdata.Tout}} | tbd. | |
{{weatherdata.Wind}} | tbd. | |
{{weatherdata.WindAvg}} | tbd. | |
{{weatherdata.WindDir}} | tbd. | |
{{weatherdata.WindGust}} | tbd. | |
{{pvdata.Time.text}} | pvdata.Time als Text | '2020-01-23 08:43:07' |
{{replacetags.version}} | Version der Tag Ersetzung | '1.0.0' |
Daten
Photovoltaik Anlage
Unter http://localhost:8080/pvdata.json
können die aktuellen Daten der Solaranlage abgefragt werden. Man erhält eine JSON-Datei mit dieser Struktur:
{
"ActiveInvCnt": 258,
"ActiveSensorCardCnt": 0,
"DevTime": "7.1.20T13:56:29",
"Error": "OK",
"LocalNetStatus": 1,
"PDayTotal": 2000,
"PTotal": 859,
"Time": 1578401760.712453,
"VersionIFC": [1, 1, 1, 0],
"wr": [{
"DevType": 250,
"EFF": 0.903,
"FAC": 50.0,
"IAC": 1.58,
"IDC": 1.52,
"OHDAY": 272,
"OHTOT": 272,
"OHYEAR": 2706,
"PDay": 1000,
"PNow": 367,
"UAC": 232,
"UDC": 267
}, {
"DevType": 250,
"EFF": 0.907,
"FAC": 50.0,
"IAC": 2.14,
"IDC": 2.18,
"OHDAY": 283,
"OHTOT": 283,
"OHYEAR": 2777,
"PDay": 1000,
"PNow": 492,
"UAC": 230,
"UDC": 249
}
]
}
Daten des Hostsystems
Unter http://localhost:8080/osdata.json
können die aktuellen Daten des Host Systems abgefragt werden. Man erhält eine JSON-Datei mit dieser Struktur:
{
"BootTime": 1578298334.0,
"Cpu": 17.6,
"CpuFreq": {
"current": 1596.0,
"min": 0.0,
"max": 1596.0
},
"Memory": {
"total": 1064689664,
"available": 286121984,
"percent": 73.1,
"used": 778567680,
"free": 286121984
},
"Network": {
"bytes_sent": 3558595771,
"bytes_recv": 958812200,
"packets_sent": 4336624,
"packets_recv": 4099384,
"errin": 0,
"errout": 0,
"dropin": 0,
"dropout": 0
},
"PsUtilVersion": [5, 6, 7],
"Temperatures": 0
}
Die Struktur kann unter Linux etwas anders aussehen
Wetterdaten
Unter http://localhost:8080/wsdata.json
können die aktuellen Daten der Wetterstation abgefragt werden. Man erhält eine JSON-Datei mit dieser Struktur:
{
"Error": "OK",
"Hin": 37.0,
"Hout": 94.0,
"MeasureTime": 1578402134.0,
"PressureAbs": 1033.3,
"PressureRel": 1033.3,
"Rain1h": 0.0,
"Rain24h": 0.0,
"RainTotal": 3.9,
"State": 0.0,
"Tin": 23.5,
"Tout": 5.5,
"Wind": 1.4,
"WindAvg": 0,
"WindDir": 180.0,
"WindGust": 2.0
}
Die Daten werde per Http von einem anderen System abgefragt.
Webcam
Sofern das Bild einer Webcam per URL abgefragt werden kann (z.B. http://www.example.com:80/img/ipcam.jpg) , ist es möglich in das Bild die Daten der PV-Anlage zu implementieren. Das modifizierte Webcam Bild kann dann über den integrierten Webserver abgefragt werden (url: http://localhost:8080/img/pvipcam.jpg)).
Wenn gewüscht kann in konfigurierbaren Intervallen ein Bild gespeichert werden. Aus dieser Bilderserie kann dann zb. mit ffmpeg ein Video generiert werden, was den Tagesverlauf der Beschattung auf den Solarpanelen zeigt.
InfluxDB
In konfigurierbaren Intervallen können die ermittelten Daten in einer Influx Datenbank gespeichert werden.
Allgemein
Starten der influxdb shell
influx
Authentifizieren und Datenbank selektieren
> auth
username: admin
password:
>
> show databases
name: databases
name
----
_internal
MeteringData
WeatherData
telegraf
iobroker
Energie
PVAnlage
pvtest
>
Datenbankstruktur
Für die PV-Anlage existieren 2 Datenbanken:
- MeteringData
- PVAnlage
In der Datenbank "MeteringData" werden die Echtzeitdaten gespeichert. Die Datenbank "PVAnlage" beinhaltet die Akkumulierten Werte
MeteringData
> use MeteringData
Using database MeteringData
>
> show measurements
name: measurements
name
----
PVAnlage
> show field keys
name: PVAnlage
fieldKey fieldType
-------- ---------
PDay float
PNow float
WR1ACANow float
WR1ACHzNow float
WR1ACVNow float
WR1DCANow float
WR1DCVNow float
WR1WDay float
WR1WNow float
WR2ACANow float
WR2ACHzNow float
WR2ACVNow float
WR2DCANow float
WR2DCVNow float
WR2WDay float
WR2WNow float
>
PVAnlage
> use PVAnlage
Using database PVAnlage
>
> show measurements
name: measurements
name
----
DayPower
>
> show field keys
name: DayPower
fieldKey fieldType
-------- ---------
max float
>
Kopieren der Tageshöhstwerte in andere Datenbank
> use MeteringData
Using database MeteringData
> select max(PDay) into PVAnlage.autogen.DayPower from PVAnlage group by time(1d)
name: result
time written
---- -------
0 4813
>
Als Continuous Querry:
use MeteringData
CREATE CONTINUOUS QUERY MaxPDay ON MeteringData BEGIN select max(PDay) into PVAnlage.autogen.DayPower from PVAnlage group by time(1d) END
Zusammenfassen der Tageswerte zu Monatswerten
> use PVAnlage
>select sum(max) into PVAnlage.autogen.MonthPower from DayPower group by time(30d)
name: result
time written
---- -------
0 163
>
Als Continuous Querry:
use PVAnlage
CREATE CONTINUOUS QUERY SumMonth ON PVAnlage BEGIN select sum(max) into PVAnlage.autogen.MonthPower from DayPower group by time(30d) END
Monatswerte zu Jahreswerten
>select sum(sum) into PVAnlage.autogen.YearPower from MonthPower group by time(52w)
name: result
time written
---- -------
0 15
>
Als Continuous Querry:
use PVAnlage
CREATE CONTINUOUS QUERY SumYear ON PVAnlage BEGIN select sum(sum) into PVAnlage.autogen.YearPower from MonthPower group by time(52w) END
MySQL
In konfigurierbaren Intervallen können die ermittelten Daten in einer MySQL / MariaDB Datenbank gespeichert werden.