tristar-mppt-60-pod-openwrt
Ukládání a vizualizace dat z regulátoru Morningstar Tristar MPPT 60 pod OpenWRT
Požadavky na hardware
Instalace a konfigurace ukládání dat
-
zprovozníme na routeru síť a to jak přístup na internet tak v lokální síti (tj. přístup na Morningstar Tristar MPPT 60)
-
nainstalujeme collectd démona společně s modulem pro modbus a ukládání do CSV (samozřejmě můžeme nainstalovat jakýkoliv jiný backend např. collectd-mod-mysql):
opkg update
opkg install collectd collectd-mod-modbus collectd-mod-csv
upravíme konfigurační soubor /etc/collectd.conf
BaseDir "/var/lib/collectd"
PIDFile "/var/run/collectd.pid"
# data ukládat každých 120 sekund, není-li specifikováno jinak
Interval 120
ReadThreads 2
# nahrajeme používáné moduly
LoadPlugin modbus
LoadPlugin csv
# kam ukládat data, v tomto případě do /tmp/csv
<Plugin "csv">
DataDir "/tmp/csv"
StoreRates true
</Plugin>
# definice vyčítání dat z regulátoru, adresy dle dokumentace na stránkách výrobce
<Plugin modbus>
<Data "voltage-input-1">
RegisterBase 0x018
RegisterType Uint16
Type voltage
Instance "voltage-battery"
</Data>
<Data "voltage-input-2">
RegisterBase 0x01b
RegisterType Uint16
Type voltage
Instance "voltage-array"
</Data>
<Data "current-input-1">
RegisterBase 0x01c
RegisterType Uint16
Type voltage
Instance "current-battery"
</Data>
<Data "kwh-input-1">
RegisterBase 0x039
RegisterType Uint16
Type voltage
Instance "kwh-total"
</Data>
<Data "temp-input-1">
RegisterBase 0x023
RegisterType Uint16
Type voltage
Instance "temp-chladic"
</Data>
<Data "temp-input-2">
RegisterBase 0x025
RegisterType Uint16
Type voltage
Instance "temp-battery"
</Data>
<Data "wh-input-1">
RegisterBase 0x044
RegisterType Uint16
Type voltage
Instance "wh-daily"
</Data>
<Data "wh-input-2">
RegisterBase 0x03A
RegisterType Uint16
Type voltage
Instance "power-output"
</Data>
<Data "charge-input-1">
RegisterBase 0x032
RegisterType Uint16
Type voltage
Instance "charging-state"
</Data>
<Data "charge-input-2">
RegisterBase 0x033
RegisterType Uint16
Type voltage
Instance "target-voltage"
</Data>
<Host "modbus">
# IP adresa regulátoru
Address 192.168.1.100
# interval ukládání
Interval 60
<Slave 0x01>
Collect "voltage-input-1"
Collect "voltage-input-2"
Collect "current-input-1"
Collect "kwh-input-1"
Collect "temp-input-1"
Collect "temp-input-2"
Collect "wh-input-1"
Collect "wh-input-2"
Collect "charge-input-1"
Collect "charge-input-2"
Instance "tsmppt"
</Slave>
</Host>
</Plugin>
nakonec restartujeme collectd démona a podíváme se, zda se data ukládají tam kam mají
jakmile máme data, je třeba z nich vytvořit grafy např. pomocí gnuplotu
nainstalujeme gnuplot
opkg install
gnuplot
vytvoříme gnuplot skript a uložíme jej jako /root/grafy.gpt (jedná se o grafy pro 24V systém)
TZ=7200
set terminal png size 700, 450
set style fill solid 1.0 noborder
set style function filledcurves y1=0
set clip two
set key top left Left reverse
set output '/tmp/www/fv-napeti-proud.png'
set xdata time
set xlabel " "
set ylabel "Napeti [V]"
set y2label "Proud [A]"
unset grid
set grid
set datafile separator ","
set ytics nomirror
set y2tics
set timefmt "%s"
set yrange [0:45]
set y2range [0:45]
plot "modbus/modbus-tsmppt/voltage-voltage-array-".DATUM using ($1+TZ):($2/182.04) with lines title "Napeti panelu" axis x1y1, "modbus/modbus-tsmppt/voltage-voltage-battery-".DATUM using ($1+TZ):($2/182.04) with lines title "Napeti baterie" axis x1y1, "modbus/modbus-tsmppt/voltage-current-battery-".DATUM using ($1+TZ):($2 < 50000 ? $2/409.6 : 1/0 ) with lines title "Proud do baterie" axis x1y2
set output '/tmp/www/baterie-napeti-kapacita.png'
unset y2tics
unset y2range
set y2range [23.8:29.7]
set yrange [23.8:29.7]
set y2label "Kapacita baterie"
set y2tics ("100%%" 25.4, "90%%" 25.16, "80%%" 24.9, "70%%" 24.72 , "60%%" 24.56, "50%%" 24.4, "25%%" 24.0)
set grid y2tics
plot "modbus/modbus-tsmppt/voltage-voltage-battery-".DATUM using ($1+TZ):($2/182.04) with lines title "Napeti baterie" axis x1y1, "modbus/modbus-tsmppt/voltage-target-voltage-".DATUM using ($1+TZ):($2 > 20 ? ($2/182.04)+0.015 : 1/0) with lines title "Cilove napeti baterie"
set output '/tmp/www/fv-energie.png'
unset y2tics
unset yrange
unset grid
set grid
set y2label "Vykon [W]"
set y2tics
set ylabel "Energie [Wh]"
set yrange [*: *]
set y2range [*: *]
plot "modbus/modbus-tsmppt/voltage-power-output-".DATUM using ($1+TZ):($2/9.1007) with lines title "Vykon dodavany z FV" axis x1y2, "modbus/modbus-tsmppt/voltage-wh-daily-".DATUM using ($1+TZ):2 with lines title "Energie dodana z FV za den" axis x1y1
grafy se vytvoří v /tmp/www (viz definice výše) zavoláním ze skriptu
#!/bin/sh
cd /tmp/csv/
DATE=$(date "+%s")
if [ $DATE -lt 1300860001 ]; then
exit;
fi
gnuplot -e "DATUM=\"$DATUM\"" /root/grafy.gpt 2>/dev/null
výše uvedený skript můžeme rozšířit o generování jednoduché
HTML stránky (opět příklad pro 24V systém)
WWW=/tmp/www/index.html
CAS=$(date +%H.%M)
DATUM=$(date "+%Y-%m-%d")
WH_DAILY=$(tail -1 /tmp/csv/modbus/modbus-tsmppt/voltage-wh-daily-$DATUM | sed 's/.*,\(.*\)\.0000.*/\1/g')
KWH_TOTAL=$(tail -1 /tmp/csv/modbus/modbus-tsmppt/voltage-kwh-total-$DATUM | sed 's/.*,\(.*\)\.0000.*/\1/g')
CHRG_STATE=$(tail -1 /tmp/csv/modbus/modbus-tsmppt/voltage-charging-state-$DATUM | sed 's/.*,//g')
CHRG_STATE=$(tail -1 /tmp/csv/modbus/modbus-tsmppt/voltage-charging-state-$DATUM | sed 's/.*,\(.*\)\.0000.*/\1/g')
U_BAT=$(tail -1 /tmp/csv/modbus/modbus-tsmppt/voltage-voltage-battery-$DATUM | sed 's/.*,//g')
I_BAT=$(tail -1 /tmp/csv/modbus/modbus-tsmppt/voltage-current-battery-$DATUM | sed 's/.*,//g')
U_TAR=$(tail -1 /tmp/csv/modbus/modbus-tsmppt/voltage-target-voltage-$DATUM | sed 's/.*,//g')
P_OUT=$(tail -1 /tmp/csv/modbus/modbus-tsmppt/voltage-power-output-$DATUM | sed 's/.*,//g')
U_ARR=$(tail -1 /tmp/csv/modbus/modbus-tsmppt/voltage-voltage-array-$DATUM | sed 's/.*,//g')
U_ARRAY=$(echo "scale=2; $U_ARR / 182.04" | bc | sed 's/^\./0./g')
U_TARGET=$(echo "scale=2; $U_TAR / 182.04" | bc)
U_BATTERY=$(echo "scale=2; $U_BAT / 182.04" | bc)
I_BATTERY=$(echo "scale=2; $I_BAT / 409.6" | bc)
P_OUTPUT=$(echo "scale=2; $P_OUT / 9.10" | bc)
echo '<html lang="cs" xml:lang="cs" xmlns="http://www.w3.org/1999/xhtml">' > $WWW
echo '<meta http-equiv="refresh" content="300;url=index.html">' >> $WWW
echo '<head profile="http://gmpg.org/xfn/11">' >> $WWW
echo '<title>Měření</title>' >> $WWW
echo '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />' >> $WWW
echo "Napětí baterie: <b>$U_BATTERY V</b><br />" >> $WWW
echo "Cílové napětí baterie: <b>$U_TARGET V</b><br />" >> $WWW
echo "Nabíjecí proud baterie: <b>$I_BATTERY A</b><br />" >> $WWW
echo "Napětí panelů: <b>$U_ARRAY V</b><br />" >> $WWW
echo "Výkon aktuálně dodávaný z panelů: <b>$P_OUTPUT W</b><br />" >> $WWW
echo "Dnes vyrobeno energie: <b>$WH_DAILY Wh</b><br />" >> $WWW
echo "Celkově vyrobeno energie: <b>$KWH_TOTAL kWh</b><br /><small>Měřeno v $CAS</small>" >> $WWW
echo '<p><img src="fv-napeti-proud.png"></p>' >> $WWW
echo '<p><img src="teplota.png"></p>' >> $WWW
echo '<p><img src="baterie-napeti-kapacita.png"></p>' >> $WWW
echo '<p><img src="fv-energie.png"></p>' >> $WWW
echo '</body></html>' >> $WWW
-
-
tristar-mppt-60-pod-openwrt.txt · Poslední úprava: 2012/04/18 03:15 (upraveno mimo DokuWiki)