Tasmota (op Sonoff POW R2) rechtstreeks laten uploaden naar PVOutput
Aan de 3 panelen op m'n schuur hangt een SONOFF POW R2 met Tasmota firmware erop. Deze las ik uit met Node-RED om de gegevens naar PVOutput te kunnen uploaden. Ik zag dat Tasmota met de scripting functionaliteit ook zelf een 'WebSend' mogelijkheid heeft, waardoor het device de gegevens zelf zou kunnen uploaden. Dat heeft mijn voorkeur, dan werkt het ook als m'n server kuren zou hebben.Even aan het knutselen geweest, gelukkig was er al iemand die een begin had gemaakt met een uploadscript voor de PVOutput API.
Ik heb het script nog iets uitgebreid, hij stuurt ook de totale meterstand en de netspanning mee i.p.v. alleen de 'Power' (Watt).
code:
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
| >D 42
;long string required for key
y=0
m=0
d=0
key="Your-API-key"
id="Your-System-ID"
ws="WebSend [pvoutput.org]"
et=0
p=0
vlt=0
;This script is used to let a power measurement device (Sonoff POW R2) that is flashed with Tasmota firmware, upload directly by itself to PVOutput. I use this to monitor my solar panels.
>T
et=((ENERGY#Total)*1000)
p=ENERGY#Power
vlt=ENERGY#Voltage
>S
;every 5 minutes
if upsecs%300==0 {
print Time is %time% Sunrise is at %sunrise%, sunset is at %sunset%.
if (time>sunrise and time<sunset) {
print Now uploading data to PVOutput...
y=sb(tstamp 0 4)
m=sb(tstamp 5 2)
d=sb(tstamp 8 2)
=>%ws%/service/r2/addstatus.jsp?key=%key%&sid=%id%&d=%1.0(y)%%2.0(m)%%2.0(d)%&t=%1(sb(tstamp 11 5))%&v1=%s(2.0et)%&v2=%s(2.0p)%&v6=%s(2.0vlt)%&c1=2
} else {
print Skipping upload since it is evening/night.
}
} |
Resultaat in de console:
11:17:09.193 Script: performs "WebSend [pvoutput.org]/service/r2/addstatus.jsp?key=XXXXXX&sid=XXXXXXXX&d=20230316&t=11:17&v1=37630&v2=118&v6=231&c1=2"
Was wel ff klooien, want er is geen standaard Tasmota firmware die zowel ondersteuning heeft voor scripting én energy measurement. Heb zelf een binary gecompiled met TasmoCompiler. Hier heb ik gekozen voor 'web interface', 'energy sensors', 'scripting' en ook 'timers' (deze is nodig om de variabelen sunrise / sunset te kunnen gebruiken). Compileren duurde zo'n 3 minuten.
De SONOFF POW R2 eerst geflashed met tasmota-minimal.bin.gz. Daarna de .bin.gz (niet de .bin, die is te groot) die door TasmoCompiler is gemaakt geflashed.
Ditzelfde idee zou ook moeten werken voor bijv. een Shelly module/plug, of een andere ESP-gebaseerde smartplug met verbruiksmeting waar Tasmota op kan draaien.
Vergeet niet om in je firewall toe te laten dat je device naar internet mag. Ook moet hij goede tijd + tijdzone hebben. Daar kun je deze site voor gebruiken, die genereert dan een commando zoals:
Backlog Latitude CHANGEME; Longitude CHANGEME; TimeDST 0,0,3,1,1,120; TimeSTD 0,0,10,1,1,60; TimeZone 99
ntpserver1 192.168.6.1; ntpserver2 0; ntpserver3 0; restart 1
[ Voor 35% gewijzigd door ThinkPad op 04-04-2023 08:44 ]
/f/image/ZQaPtefZLfY9SQy9n2YIndh1.png?f=fotoalbum_large)
/f/image/sXA6a1gzGWCEs9KIQhaXZh26.png?f=fotoalbum_large)
/f/image/HZwlvVakidCzoUcLbwrtDnLh.png?f=fotoalbum_large)
/f/image/88muYXyWc4VDnNA7ix1wLLj4.png?f=fotoalbum_large)
:strip_exif()/f/image/WkgUsjhVsLDtjqil2yAze8nF.jpg?f=fotoalbum_large)
:strip_exif()/f/image/7TmjoSoKvuHMmRENX8RvXoct.jpg?f=fotoalbum_tile)
:strip_exif()/f/image/XNzr95KqOTlgnrFDs2KNcqQ1.jpg?f=fotoalbum_tile)
:strip_exif()/f/image/cp4BNy3zp13HZ1oevVNlIlLb.jpg?f=fotoalbum_tile)
:strip_exif()/f/image/w9FuSDRisVxCvmKTkvRZ2AR9.jpg?f=fotoalbum_large)
/f/image/3tYS8cRbufM1oto1QhgdEY1y.png?f=fotoalbum_large)