Update wbt het gebruik van de
Home Wizard Energy API naar een
idee van Stingray.nl om de output van de P1 energymeter in een webbrowser op willekeurig apparaat naar keuze zichtbaar te krijgen.
Handig als je niet alleen van de app op je smart device afhankelijk wilt zijn.
Het voordeel is verder dat je echt kan zien wat je
gedurende de dag verbruikt, omdat je per tijdstip de kWh stand kan zien. Helaas ontbreekt dit in de standaard HWE app: je zit daar bij de daggrafiek naar Watts te staren, plus het totale aantal kWh dat er tot dat moment verbruikt is. Dat ziet er leuk uit natuurlijk, maar je wilt uiteindelijk meestal toch het verbruik in kWh zien ipv allemaal scherpe Watt piekjes. Watts zijn leuk om te monitoren of je stoppen er bijna uitvliegen of een snelle indruk te krijgen van wat een bepaald apparaat op dat moment trekt, maar verder niet.
Wil je weten wat een wasdroogbeurt nu eigenlijk verbruikt dan kan je dat dus helaas niet zien in de HWE app die zich wat kWh betreft beperkt tot 1 waarde over een hele dag. Met een kWh grafiek
gedurende dag kan je dat wel zien, je neemt je begin en eindwaarde, trekt je baseline kWh verbruik er vanaf en je hebt een goed beeld wat die wasdroogbeurt verbruikt.
Goed, de techniek. Hiervoor maak ik gebruik van de gratis service op de
PVOutput website waar je je energieverbruik en opwekking van zonnepaneelsystemen kan monitoren in mooie grafieken en data overzichten.
Hieronder een voorbeeldje van de live daggrafiek met het wattage en verbruik, dus zonder zonnepanelen. Uiteraard kan je ook vorige dagen of langere periodes bekijken, en je kan de output van je zonnepanelen toevoegen, daar is de PVoutput site immers voor.
Ik heb een Linux shellscript gemaakt dat ik draai op een Asus RT-AC86U router (Merlin firmware). Het script draait elke 5 minuten (de maximale verversingsfrequentie die de PVoutput site ondertsteunt) via een cron job op de router. In de nieuwe versie van het script geef ik behalve het actuele wattage (Power) ook de meterstanden door, zodat ook de Energy Consumption 100% accuraat wordt weergegeven.
Verder schrijft het script de output elke 5 minuten weg naar een logfile op een aangesloten USB drive.
Dit script is natuurlijk gemakkelijk werkend te krijgen op andere Linux based devices met wat kleine aanpassingen in de paden. Zoek je eigen Linux device dat altijd aan staat.
Verder moet je natuurlijk je eigen gegevens toevoegen aan het script: je IP-adres/poortnr, je PVOutput systeem ID, en daar te genereren API key.
Heb je geen behoefte aan logging dan kan je de delen die de output naar een directoy / bestand verzorgen natuurlijk weglaten, dan houd je een kort script over.
Bash:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
| #!/bin/sh
# name: pvoutput-upload
# description: upload HomeWizard Wi-Fi P1 meter energy data to PVOutput.org website
# location: /jffs/scripts
youripaddress="YOUR_IPADRESS"
yourportnr="YOUR_PORTNR"
yoursid="YOUR_PVOUTPUT_SID_NR"
yourapikey="YOUR_PVOUTPUT_APIKEY"
logfile="pvoutput.log"
# place logfile output in the pvoutput directory of the first USB drive partition
# if no USB drive output goes to /tmp
usbdrive=$(grep "/dev/sda1" /proc/mounts | cut -d ' ' -f 2)
if [ "$usbdrive" ]; then
test -d $usbdrive/pvoutput || mkdir $usbdrive/pvoutput #create directory if not present
cd $usbdrive/pvoutput
else
cd /tmp
fi
# get current energy data from P1 Meter, convert kWh meter data to Wh (remove decimal point)
energydata=$(wget http://"$youripaddress:$yourportnr"/api/v1/data -qO-)
currentpower=$(echo "$energydata" | sed 's/,/\n/g' | grep "active_power_w"| cut -d: -f2)
meter1=$(echo "$energydata" | sed 's/,/\n/g' | grep "total_power_import_t1_kwh" | cut -d: -f2 | tr -d '.')
meter2=$(echo "$energydata" | sed 's/,/\n/g' | grep "total_power_import_t2_kwh" | cut -d: -f2 | tr -d '.')
# P1 Meter drops trailing decimal zero's, so add them back and after cut excess zero's if preset (cut to 7 digits)
meter1="$meter1"000
meter1="${meter1:0:7}"
meter2="$meter2"000
meter2="${meter2:0:7}"
# calculate total energy consumed
let metertotal=$meter1+$meter2
# set date and time variables
datestamp=`date '+%Y%m%d'`
timestamp=`date '+%H:%M'`
# save output to logfile
echo date: $datestamp, time: $timestamp, meter1: $meter1, meter2: $meter2, metertotal: $metertotal, power: $currentpower >> $logfile 2>&1
# post energy and power value to PVOutput site, save response to logfile and add linefeed
# the c1=1 flag sets energy as lifetime value, consumption and generation energy is reset to 0 at the start of the day
postdatastring="sid=$yoursid&key=$yourapikey&d=$datestamp&t=$timestamp&v3=$metertotal&v4=$currentpower&c1=1"
wget https://pvoutput.org/service/r2/addstatus.jsp?$postdatastring --no-hsts -qO- >> $logfile 2>&1
echo >> $logfile 2>&1 |
Toevoegen aan cron voor het eens per 5 min draaien gebeurt dmv toevoegen van iets als onderstaande (pad aanpassen) aan bijv Linux startscripts init-start of services-start:
Bash:
1
| cru a pvoutput-upload "*/5 * * * * /PADNAARJOUWSCRIPT/pvoutput-upload" #per 5-minute pvoutput-upload cron job |
Het script is voor een 1-fase aansluiting maar kan natuurlijk gemakkelijk worden omgebouwd naar 3-fase, kwestie van de 2 extra velden uitvragen voor active power.
[
Voor 19% gewijzigd door
Cap op 09-02-2021 10:35
]