Personal tools

Difference between revisions of "SMA Webbox script"

From PhotoVoltaic Logger new generation

Jump to: navigation, search
m (Cron)
m
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
{{TOCright}}[[Category:Scripts]]
+
[[Category:Scripts]]
With this script you can acquire data from your [[SMA Webbox]] and store them in PVLng.
+
{{PVLngScript
 +
| description=With this script you can acquire data from your [[SMA Webbox]] and store them in PVLng.
  
 
This script can run via cron around the clock, the Webbox will be queried only during daylight times ±60 minutes.
 
This script can run via cron around the clock, the Webbox will be queried only during daylight times ±60 minutes.
  
== Location ==
+
| script=SMA/webbox.sh
 +
| config_dist=SMA/webbox.conf.dist
  
SMA/webbox.sh
+
| global_1=Webbox IP[:Port]
== Configuration example ==
+
| global_1_desc=default "192.168.0.168:80"
SMA/webbox.conf.dist
+
| global_1_var=WEBBOX        "192.168.0.168:80"
Copy this file and edit for your needs.
 
  
== Global settings ==
+
| global_2=Installer password
 +
| global_2_desc=The plain Webbox "installer" account password. If not set, the "user" account will be used for Webbox access, with less information.
 +
| global_2_required=x
 +
| global_2_var=PASSWORD      ""
  
=== Webbox IP[:Port] ===
+
| sections=Inverters / Sensorboxes
  
''optional'', default "192.168.0.168:80"
+
| section_1=Inverter/Sensorbox GUID
WEBBOX         "192.168.0.168:80"
+
| section_1_desc=An '''empty''' GUID skips section
 +
| section_1_required=x
 +
| section_1_var=GUID_1         ""
  
=== Installer password ===
+
| section_2=Inverter/sensor box serial
 
+
| section_2_desc=The inverter/sensor box serial is requested by default via API. If you run the scripts on remote equipment, you should define them also here, so when the connection to your PVLng server fails, the data will be collected correctly.
The plain Webbox "installer" account password. If not set, the "user" account will be used for Webbox access, with less information.
+
| section_2_var=SERIAL_1      ""
 
+
''optional''
+
| testoutput=[10:06:45.04] --- your_config.conf ---
PASSWORD      ""
 
 
 
=== Count of inverters / Sensorboxes ===
 
 
 
Count of following sections.
 
 
 
''required''
 
GUID_N        0
 
 
 
== Section to repeat ==
 
 
 
Copy the following settings as much as you need. Name the parameters for each section with the same _<#>
 
 
 
=== Inverter/Sensorbox GUID ===
 
 
 
''required'', but an empty GUID skips section
 
GUID_1        ""
 
 
 
=== Inverter/sensor box serial ===
 
 
 
The inverter/sensor box serial is requested by default via API. If you run the scripts on remote equipment, you should define them also here, so when the connection to your PVLng server fails, the data will be collected correctly.
 
 
 
''optional''
 
SERIAL_1      ""
 
 
 
== Test ==
 
 
 
Run the script with your config in test & debug mode (-tv)
 
$ ./Webbox.sh -tv your_config.conf
 
[10:06:45.04] --- your_config.conf ---
 
 
  [10:06:45.05] WEBBOX              = 192.168.0.168:80
 
  [10:06:45.05] WEBBOX              = 192.168.0.168:80
  [10:06:45.06] PASSWORD            = ***********
+
  [10:06:45.06] PASSWORD            = your_password_here
 
  [10:06:45.07] GUID_N              = 2
 
  [10:06:45.07] GUID_N              = 2
 
  [10:06:45.08] GUID_1              = 28b9-3791-b390-e697-06e0-8116-26c7-b9fc
 
  [10:06:45.08] GUID_1              = 28b9-3791-b390-e697-06e0-8116-26c7-b9fc
Line 60: Line 36:
 
  [10:06:45.09] GUID_2              = aed0-2d4f0-63ea-170-ecfd-be49-e58b-314a
 
  [10:06:45.09] GUID_2              = aed0-2d4f0-63ea-170-ecfd-be49-e58b-314a
 
  [10:06:45.10] SERIAL_2            = WRTP2889:2110264761
 
  [10:06:45.10] SERIAL_2            = WRTP2889:2110264761
  [10:06:45.12] Fetch  : <nowiki>http://........../api/latest/daylight/60.txt</nowiki>
+
  [10:06:45.12] Fetch  : <nowiki>http://your.host.here/api/latest/daylight/60.txt</nowiki>
 
  [10:06:45.18] Fetch  : done
 
  [10:06:45.18] Fetch  : done
 
  [10:06:45.19] Daylight: 1
 
  [10:06:45.19] Daylight: 1
Line 82: Line 58:
 
  [10:06:47.57] <<< /tmp/pvlng.kUqu2E
 
  [10:06:47.57] <<< /tmp/pvlng.kUqu2E
  
If you get no error messages here, run live in verbose mode (-v). The output should look like this with HTTP code 201 meaning data added.
+
| liveoutput=[10:22:28.10] --- 1 ---
 
 
$ ./Webbox.sh -v your_config.conf
 
[10:22:28.10] --- 1 ---
 
 
  [10:22:30.00] HTTP code : 201
 
  [10:22:30.00] HTTP code : 201
 
  [10:22:30.00] --- 2 ---
 
  [10:22:30.00] --- 2 ---
 
  [10:22:32.17] HTTP code : 201
 
  [10:22:32.17] HTTP code : 201
 
+
}}
== Cron ==
 
You can run the script around the clock with a cron tab entry like this:
 
* * * * * /path/to/PVLng-scripts/SMA/Webbox.sh your_config.conf
 

Latest revision as of 12:35, 9 September 2014

With this script you can acquire data from your SMA Webbox and store them in PVLng.

This script can run via cron around the clock, the Webbox will be queried only during daylight times ±60 minutes.

Location

SMA/webbox.sh

Configuration example

SMA/webbox.conf.dist

Copy this file and edit for your needs.

Global settings

Webbox IP[:Port]

default "192.168.0.168:80"
optional

WEBBOX         "192.168.0.168:80"

Installer password

The plain Webbox "installer" account password. If not set, the "user" account will be used for Webbox access, with less information.
required

PASSWORD       ""

Count of Inverters / Sensorboxes

Count of following sections.
required

GUID_N         0

Section to repeat

Copy the following settings as much as you need. Name the parameters for each section with the same _<#>

Inverter/Sensorbox GUID

An empty GUID skips section
required

GUID_1         ""

Inverter/sensor box serial

The inverter/sensor box serial is requested by default via API. If you run the scripts on remote equipment, you should define them also here, so when the connection to your PVLng server fails, the data will be collected correctly.
optional

SERIAL_1       ""

Test

Run the script with your config in test & debug mode (-tv)

$ ./SMA/webbox.sh -tv your_config.conf
[10:06:45.04] --- your_config.conf ---
[10:06:45.05] WEBBOX               = 192.168.0.168:80
[10:06:45.06] PASSWORD             = your_password_here
[10:06:45.07] GUID_N               = 2
[10:06:45.08] GUID_1               = 28b9-3791-b390-e697-06e0-8116-26c7-b9fc
[10:06:45.08] SERIAL_1             = WRTP2S89:2110279112
[10:06:45.09] GUID_2               = aed0-2d4f0-63ea-170-ecfd-be49-e58b-314a
[10:06:45.10] SERIAL_2             = WRTP2889:2110264761
[10:06:45.12] Fetch   : http://your.host.here/api/latest/daylight/60.txt
[10:06:45.18] Fetch   : done
[10:06:45.19] Daylight: 1
[10:06:45.20] --- 1 ---
[10:06:45.21] Webbox request:
[10:06:45.21] /tmp/pvlng.hR9d6h >>>
[10:06:45.21] {"version":"1.0","proc":"GetProcessData","id":"1410250005","format":"JSON","params":{"devices": [{"key":"WRTP2S89:2110211279"}]},"passwd":"2f39eb0bae1604f9be0b14df8f2d0a52"}
[10:06:45.21] <<< /tmp/pvlng.hR9d6h
[10:06:46.70] Webbox response:
[10:06:46.71] /tmp/pvlng.kUqu2E >>>
[10:06:46.71] {"format":"JSON","result":{"devices":[{"key":"WRTP2S89:2110211279","channels":[{"unit":"A","meta":"A.Ms.Amp","name":"A.Ms.Amp","value":"9.430"},{"unit":"V","meta":"A.Ms.Vol","name":"A.Ms.Vol","value":"360.920"},{"unit":"W","meta":"A.Ms.Watt","name":"A.Ms.Watt","value":"3403"},{"unit":"A","meta":"A1.Ms.Amp","name":"A1.Ms.Amp","value":"4.685"},{"unit":"A","meta":"A2.Ms.Amp","name":"A2.Ms.Amp","value":"4.685"},{"unit":"A","meta":"A3.Ms.Amp","name":"A3.Ms.Amp","value":"0.034"},{"unit":"A","meta":"A4.Ms.Amp","name":"A4.Ms.Amp","value":"0.019"},{"unit":"A","meta":"A5.Ms.Amp","name":"A5.Ms.Amp","value":"0.050"},{"unit":"A","meta":"B.Ms.Amp","name":"B.Ms.Amp","value":"4.859"},{"unit":"V","meta":"B.Ms.Vol","name":"B.Ms.Vol","value":"616.200"},{"unit":"W","meta":"B.Ms.Watt","name":"B.Ms.Watt","value":"2994"},{"unit":"A","meta":"B1.Ms.Amp","name":"B1.Ms.Amp","value":"4.859"},{"unit":"","meta":"Error","name":"Error","value":"-------"},{"unit":"kWh","meta":"E-Total","name":"E-Total","value":"31485.424"},{"unit":"","meta":"GM.TotS0Out","name":"GM.TotS0Out","value":"0"},{"unit":"Wh","meta":"GM.TotWhOut","name":"GM.TotWhOut","value":"0"},{"unit":"A","meta":"GridMs.A.phsA","name":"GridMs.A.phsA","value":"8.772"},{"unit":"A","meta":"GridMs.A.phsB","name":"GridMs.A.phsB","value":"8.726"},{"unit":"A","meta":"GridMs.A.phsC","name":"GridMs.A.phsC","value":"8.724"},{"unit":"Hz","meta":"GridMs.Hz","name":"GridMs.Hz","value":"49.980"},{"unit":"V","meta":"GridMs.PhV.phsA","name":"GridMs.PhV.phsA","value":"234.910"},{"unit":"V","meta":"GridMs.PhV.phsB","name":"GridMs.PhV.phsB","value":"236.760"},{"unit":"V","meta":"GridMs.PhV.phsC","name":"GridMs.PhV.phsC","value":"236.960"},{"unit":"","meta":"GridMs.TotPF","name":"GridMs.TotPF","value":"0.999"},{"unit":"VA","meta":"GridMs.TotVA","name":"GridMs.TotVA","value":"6194"},{"unit":"VAr","meta":"GridMs.TotVAr","name":"GridMs.TotVAr","value":"0"},{"unit":"VA","meta":"GridMs.VA.phsA","name":"GridMs.VA.phsA","value":"2061"},{"unit":"VA","meta":"GridMs.VA.phsB","name":"GridMs.VA.phsB","value":"2066"},{"unit":"VA","meta":"GridMs.VA.phsC","name":"GridMs.VA.phsC","value":"2067"},{"unit":"VAr","meta":"GridMs.VAr.phsA","name":"GridMs.VAr.phsA","value":"0"},{"unit":"VAr","meta":"GridMs.VAr.phsB","name":"GridMs.VAr.phsB","value":"0"},{"unit":"VAr","meta":"GridMs.VAr.phsC","name":"GridMs.VAr.phsC","value":"0"},{"unit":"W","meta":"GridMs.W.phsA","name":"GridMs.W.phsA","value":"2061"},{"unit":"W","meta":"GridMs.W.phsB","name":"GridMs.W.phsB","value":"2066"},{"unit":"W","meta":"GridMs.W.phsC","name":"GridMs.W.phsC","value":"2067"},{"unit":"","meta":"Inv.TmpLimStt","name":"Inv.TmpLimStt","value":"NoneDrt"},{"unit":"","meta":"InvCtl.Stt","name":"InvCtl.Stt","value":"On"},{"unit":"A","meta":"Iso.FltA","name":"Iso.FltA","value":"0.010"},{"unit":"","meta":"Mode","name":"Mode","value":"Mpp"},{"unit":"h","meta":"Mt.TotOpTmh","name":"Mt.TotOpTmh","value":"11665.041226682"},{"unit":"h","meta":"Mt.TotTmh","name":"Mt.TotTmh","value":"12018.480792604"},{"unit":"","meta":"Op.EvtCntIstl","name":"Op.EvtCntIstl","value":"69"},{"unit":"","meta":"Op.EvtCntUsr","name":"Op.EvtCntUsr","value":"399"},{"unit":"","meta":"Op.EvtNo","name":"Op.EvtNo","value":"0"},{"unit":"","meta":"Op.EvtNoDvlp","name":"Op.EvtNoDvlp","value":"0"},{"unit":"","meta":"Op.GriSwCnt","name":"Op.GriSwCnt","value":"1052"},{"unit":"","meta":"Op.GriSwStt","name":"Op.GriSwStt","value":"Cls"},{"unit":"","meta":"Op.Health","name":"Op.Health","value":"Ok"},{"unit":"","meta":"Op.Prio","name":"Op.Prio","value":"NonePrio"},{"unit":"s","meta":"Op.TmsRmg","name":"Op.TmsRmg","value":"0"},{"unit":"W","meta":"Pac","name":"Pac","value":"6194"},{"unit":"","meta":"PCM-DigInStt","name":"PCM-DigInStt","value":"D0"},{"unit":"","meta":"PlntCtl.Stt","name":"PlntCtl.Stt","value":"On"},{"unit":"kOhm","meta":"Riso","name":"Riso","value":"1909.539"},{"unit":"","meta":"Serial Number","name":"Serial Number","value":"2110211279"}]}]},"proc":"GetProcessData","version":"1.0","id":"1410250005"}
[10:06:46.71] <<< /tmp/pvlng.kUqu2E
[10:06:46.75] --- 2 ---
[10:06:46.77] Webbox request:
[10:06:46.78] /tmp/pvlng.hR9d6h >>>
[10:06:46.78] {"version":"1.0","proc":"GetProcessData","id":"1410250006","format":"JSON","params":{"devices":[{"key":"WRTP2889:2110276164"}]},"passwd":"2ebaea0b109eb16044df3f2d0f9bf852"}
[10:06:46.78] <<< /tmp/pvlng.hR9d6h
[10:06:47.56] Webbox response:
[10:06:47.57] /tmp/pvlng.kUqu2E >>>
[10:06:47.57] {"format":"JSON","result":{"devices":[{"key":"WRTP2889:2110276164","channels":[{"unit":"A","meta":"A.Ms.Amp","name":"A.Ms.Amp","value":"4.874"},{"unit":"V","meta":"A.Ms.Vol","name":"A.Ms.Vol","value":"517.520"},{"unit":"W","meta":"A.Ms.Watt","name":"A.Ms.Watt","value":"2522"},{"unit":"A","meta":"A1.Ms.Amp","name":"A1.Ms.Amp","value":"4.795"},{"unit":"A","meta":"A2.Ms.Amp","name":"A2.Ms.Amp","value":"0.014"},{"unit":"A","meta":"A3.Ms.Amp","name":"A3.Ms.Amp","value":"0.013"},{"unit":"A","meta":"A4.Ms.Amp","name":"A4.Ms.Amp","value":"0.013"},{"unit":"A","meta":"A5.Ms.Amp","name":"A5.Ms.Amp","value":"0.013"},{"unit":"A","meta":"B.Ms.Amp","name":"B.Ms.Amp","value":"2.052"},{"unit":"V","meta":"B.Ms.Vol","name":"B.Ms.Vol","value":"553.430"},{"unit":"W","meta":"B.Ms.Watt","name":"B.Ms.Watt","value":"1135"},{"unit":"A","meta":"B1.Ms.Amp","name":"B1.Ms.Amp","value":"2.052"},{"unit":"","meta":"Error","name":"Error","value":"-------"},{"unit":"kWh","meta":"E-Total","name":"E-Total","value":"20180.680"},{"unit":"","meta":"GM.TotS0Out","name":"GM.TotS0Out","value":"0"},{"unit":"Wh","meta":"GM.TotWhOut","name":"GM.TotWhOut","value":"0"},{"unit":"A","meta":"GridMs.A.phsA","name":"GridMs.A.phsA","value":"5.064"},{"unit":"A","meta":"GridMs.A.phsB","name":"GridMs.A.phsB","value":"5.037"},{"unit":"A","meta":"GridMs.A.phsC","name":"GridMs.A.phsC","value":"5.031"},{"unit":"Hz","meta":"GridMs.Hz","name":"GridMs.Hz","value":"49.980"},{"unit":"V","meta":"GridMs.PhV.phsA","name":"GridMs.PhV.phsA","value":"233.150"},{"unit":"V","meta":"GridMs.PhV.phsB","name":"GridMs.PhV.phsB","value":"232.230"},{"unit":"V","meta":"GridMs.PhV.phsC","name":"GridMs.PhV.phsC","value":"232.910"},{"unit":"","meta":"GridMs.TotPF","name":"GridMs.TotPF","value":"0.999"},{"unit":"VA","meta":"GridMs.TotVA","name":"GridMs.TotVA","value":"3522"},{"unit":"VAr","meta":"GridMs.TotVAr","name":"GridMs.TotVAr","value":"-1"},{"unit":"VA","meta":"GridMs.VA.phsA","name":"GridMs.VA.phsA","value":"1181"},{"unit":"VA","meta":"GridMs.VA.phsB","name":"GridMs.VA.phsB","value":"1170"},{"unit":"VA","meta":"GridMs.VA.phsC","name":"GridMs.VA.phsC","value":"1171"},{"unit":"VAr","meta":"GridMs.VAr.phsA","name":"GridMs.VAr.phsA","value":"-1"},{"unit":"VAr","meta":"GridMs.VAr.phsB","name":"GridMs.VAr.phsB","value":"0"},{"unit":"VAr","meta":"GridMs.VAr.phsC","name":"GridMs.VAr.phsC","value":"0"},{"unit":"W","meta":"GridMs.W.phsA","name":"GridMs.W.phsA","value":"1181"},{"unit":"W","meta":"GridMs.W.phsB","name":"GridMs.W.phsB","value":"1170"},{"unit":"W","meta":"GridMs.W.phsC","name":"GridMs.W.phsC","value":"1171"},{"unit":"","meta":"Inv.TmpLimStt","name":"Inv.TmpLimStt","value":"NoneDrt"},{"unit":"","meta":"InvCtl.Stt","name":"InvCtl.Stt","value":"On"},{"unit":"A","meta":"Iso.FltA","name":"Iso.FltA","value":"0.015"},{"unit":"","meta":"Mode","name":"Mode","value":"Mpp"},{"unit":"h","meta":"Mt.TotOpTmh","name":"Mt.TotOpTmh","value":"10405.611141985"},{"unit":"h","meta":"Mt.TotTmh","name":"Mt.TotTmh","value":"10800.526147331"},{"unit":"","meta":"Op.EvtCntIstl","name":"Op.EvtCntIstl","value":"134"},{"unit":"","meta":"Op.EvtCntUsr","name":"Op.EvtCntUsr","value":"8712"},{"unit":"","meta":"Op.EvtNo","name":"Op.EvtNo","value":"0"},{"unit":"","meta":"Op.EvtNoDvlp","name":"Op.EvtNoDvlp","value":"0"},{"unit":"","meta":"Op.GriSwCnt","name":"Op.GriSwCnt","value":"947"},{"unit":"","meta":"Op.GriSwStt","name":"Op.GriSwStt","value":"Cls"},{"unit":"","meta":"Op.Health","name":"Op.Health","value":"Ok"},{"unit":"","meta":"Op.Prio","name":"Op.Prio","value":"NonePrio"},{"unit":"s","meta":"Op.TmsRmg","name":"Op.TmsRmg","value":"0"},{"unit":"W","meta":"Pac","name":"Pac","value":"3522"},{"unit":"","meta":"PCM-DigInStt","name":"PCM-DigInStt","value":"D0"},{"unit":"","meta":"PlntCtl.Stt","name":"PlntCtl.Stt","value":"On"},{"unit":"kOhm","meta":"Riso","name":"Riso","value":"1289.707"},{"unit":"","meta":"Serial Number","name":"Serial Number","value":"2110276164"}]}]},"proc":"GetProcessData","version":"1.0","id":"1410250006"}
[10:06:47.57] <<< /tmp/pvlng.kUqu2E

If you get no error messages here, run live in verbose mode (-v). The output should look like this with HTTP code 201 meaning data added.

$ ./SMA/webbox.sh -v your_config.conf
[10:22:28.10] --- 1 ---
[10:22:30.00] HTTP code : 201
[10:22:30.00] --- 2 ---
[10:22:32.17] HTTP code : 201

Cron

You can run the script around the clock with a cron tab entry like this:

* * * * * /path/to/PVLng-scripts/SMA/webbox.sh your_config.conf