Skip to content

Commit

Permalink
replaced pregard with consume and surplus with supply
Browse files Browse the repository at this point in the history
  • Loading branch information
datenschuft committed Apr 2, 2019
1 parent 86a3c1d commit e3d49b0
Show file tree
Hide file tree
Showing 12 changed files with 123 additions and 123 deletions.
4 changes: 2 additions & 2 deletions README.md
Expand Up @@ -3,7 +3,7 @@
## SMA Energymeter measurement
sma-em-measurement.py: Python3 loop display SMA Energymeter measurement values

sma-daemon.py: Python3 daemon writing regard and surplus values to /run/shm/em-[serial]-[value]
sma-daemon.py: Python3 daemon writing consume and supply values to /run/shm/em-[serial]-[value]

## Requirements
python3
Expand Down Expand Up @@ -44,7 +44,7 @@ mcastport=9522
# list serials simplefswriter notice
serials=1900204522
# measurement vars simplefswriter should write to filesystem (only from smas with serial in serials)
values=pregard psurplus qsurplus ssurplus
values=pconsume psupply qsupply ssupply
[FEATURE-sample]
nothing=here
Expand Down
4 changes: 4 additions & 0 deletions changelog
@@ -1,5 +1,9 @@
SMA-EM-Daemon changelog-File

20190402001
Cosmetics / variables naming #14
replaced pregard with consume and surplus with supply

20180223001
Merge branch 'Tommi2Day-master' https://github.com/datenschuft/SMA-EM/pull/13
thanks to Tommi2Day
Expand Down
8 changes: 4 additions & 4 deletions config.sample
Expand Up @@ -27,7 +27,7 @@ statusdir=
# list serials simplefswriter notice
serials=30028xxxxx
# measurement vars simplefswriter should write to filesystem (only from smas with serial in serials)
values=pregard psurplus qsurplus ssurplus
values=pconsume psupply qsupply ssupply
statusdir=

[FEATURE-sample]
Expand All @@ -39,7 +39,7 @@ mqtthost=mqtt
mqttport=1883
#mqttuser=
#mqttpass=
mqttfields=pregard,psurplus,p1regard,p2regard,p3regard,p1surplus,p2surplus,p3surplus
mqttfields=pconsume,psupply,p1consume,p2consume,p3consume,p1supply,p2supply,p3supply
#topic will be exted3ed with serial
mqtttopic=SMA-EM/status
# publish all values as single topics (0 or 1)
Expand All @@ -63,7 +63,7 @@ timeout=5
user=Symcon
password=SMA-EMdata

fields=pregard,psurplus,p1regard,p2regard,p3regard,p1surplus,p2surplus,p3surplus,psurpluscounter,pregardcounter
fields=pconsume,psupply,p1consume,p2consume,p3consume,p1supply,p2supply,p3supply,psupplycounter,pconsumecounter
emhook=/hook/smaem
pvfields=AC Power,grid frequency,DC input voltage,daily yield,total yield,Power L1,Power L2,Power L3,Status
pvhook=/hook/smawr
Expand All @@ -88,7 +88,7 @@ min_update=30
debug=0
#emdata
measurement=SMAEM
fields=pregard,psurplus,p1regard,p2regard,p3regard,p1surplus,p2surplus,p3surplus
fields=pconsume,psupply,p1consume,p2consume,p3consume,p1supply,p2supply,p3supply

#pvdata
pvmeasurement=SMAWR
Expand Down
4 changes: 2 additions & 2 deletions features/domoticz.py
Expand Up @@ -9,7 +9,7 @@
min_update=30
# List of items to send over. Each item should contain a string like <SMA serial>:<domoticz ID>,<SMA serial 2>:<domoticz ID 2>, ...
pregard=1234567869:73
pconsume=1234567869:73
v1=1234567869:72
"""

Expand Down Expand Up @@ -40,7 +40,7 @@ def run(emparts,config):
continue

url = "%s?type=command&param=udevice&idx=%s&nvalue=0&svalue=" % (config['api'], dom_ids[serial])
if key in ['pregard', 'p1regard', 'p2regard', 'p3regard']:
if key in ['pconsume', 'p1consume', 'p2consume', 'p3consume']:
url += "%0.2f;%0.2f" % (emparts[key], emparts[key + "counter"] * 1000)
else:
url += "%0.2f" % emparts[key]
Expand Down
11 changes: 5 additions & 6 deletions features/influxdb.py
Expand Up @@ -23,7 +23,7 @@
timeout=5
user=
password=
fields=pregard,psurplus,p1regard,p2regard,p3regard,p1surplus,p2surplus,p3surplus
fields=pconsume,psupply,p1consume,p2consume,p3consume,p1supply,p2supply,p3supply
# How frequently to send updates over (defaults to 20 sec)
min_update=30
Expand Down Expand Up @@ -65,7 +65,7 @@ def run(emparts,config):
user = config.get('user', None)
password = config.get('password',None )
mesurement= config.get('measurement','SMAEM' )
fields = config.get('fields', 'pregard,psurplus')
fields = config.get('fields', 'pconsume,psupply')
pvfields=config.get('pvfields')
influx=None
#connect to db, create one if needed
Expand Down Expand Up @@ -121,9 +121,9 @@ def run(emparts,config):
from features.pvdata import pv_data
pvpower = pv_data.get("AC Power")
if pvpower is None: pvpower=0
pregard = emparts.get('pregard', 0)
psurplus = emparts.get('psurplus', 0)
pusage = pvpower + pregard - psurplus
pconsume = emparts.get('pconsume', 0)
psupply = emparts.get('psupply', 0)
pusage = pvpower + pconsume - psupply
data['pvpower'] = pvpower
data['pusage'] = pusage
except:
Expand Down Expand Up @@ -187,4 +187,3 @@ def config(config):
global influx_debug
influx_debug=int(config.get('debug', 0))
print('influxdb: feature enabled')

10 changes: 5 additions & 5 deletions features/mqtt.py
Expand Up @@ -15,7 +15,7 @@
#mqttpass=
#mqttf topic and provided data ields
mqttfields=pregard,psurplus,p1regard,p2regard,p3regard,p1surplus,p2surplus,p3surplus
mqttfields=pconsume,psupply,p1consume,p2consume,p3consume,p1supply,p2supply,p3supply
#topic will be exted3ed with serial
mqtttopic=SMA-EM/status
Expand Down Expand Up @@ -56,7 +56,7 @@ def run(emparts,config):
mqttuser = config.get('mqttuser', None)
mqttpass = config.get('mqttpass', None)
mqtttopic = config.get('mqtttopic',"SMA-EM/status")
mqttfields = config.get('mqttfields', 'pregard,psurplus')
mqttfields = config.get('mqttfields', 'pconsume,psupply')
publish_single = int(config.get('publish_single',0))

# mqtt client settings
Expand All @@ -81,9 +81,9 @@ def run(emparts,config):
from features.pvdata import pv_data
pvpower=pv_data.get("AC Power",0)
if pvpower is None: pvpower = 0
pregard=emparts.get('pregard',0)
psurplus=emparts.get('psurplus',0)
pusage=pvpower+pregard-psurplus
pconsume=emparts.get('pconsume',0)
psupply=emparts.get('psupply',0)
pusage=pvpower+pconsume-psupply
data['pvsum']=pvpower
data['pusage']=pusage
except:
Expand Down
10 changes: 5 additions & 5 deletions features/sma_grafana.json
Expand Up @@ -110,7 +110,7 @@
[
{
"params": [
"pregard"
"pconsume"
],
"type": "field"
},
Expand All @@ -120,15 +120,15 @@
},
{
"params": [
"regard"
"consume"
],
"type": "alias"
}
],
[
{
"params": [
"psurplus"
"psupply"
],
"type": "field"
},
Expand All @@ -138,7 +138,7 @@
},
{
"params": [
"surplus"
"supply"
],
"type": "alias"
}
Expand Down Expand Up @@ -269,4 +269,4 @@
"title": "SMA EM/HM",
"uid": "L1e-KEymz",
"version": 3
}
}
5 changes: 2 additions & 3 deletions features/symcon.py
Expand Up @@ -14,7 +14,7 @@
timeout=5
user=
password=
fields=pregard,psurplus,p1regard,p2regard,p3regard,p1surplus,p2surplus,p3surplus
fields=pconsume,psupply,p1consume,p2consume,p3consume,p1supply,p2supply,p3supply
pvfields=AC Power,AC Voltage,grid frequency,DC Power,DC input voltage,daily yield,total yield,Power L1,Power L2,Power L3
# How frequently to send updates over (defaults to 20 sec)
Expand Down Expand Up @@ -48,7 +48,7 @@ def run(emparts,config):
emhook = config.get('emhook','/hook/smaem')
user = config.get('user', None)
password = config.get('password', None)
fields = config.get('fields', 'pregard,psurplus')
fields = config.get('fields', 'pconsume,psupply')

# mqtt client settings
myhostname = platform.node()
Expand Down Expand Up @@ -181,4 +181,3 @@ def config(config):
global symcon_debug
symcon_debug=int(config.get('debug', 0))
print('symcon: feature enabled')

37 changes: 18 additions & 19 deletions features/symcon_smaem_webhook.php
Expand Up @@ -10,9 +10,9 @@
/*
[SMA-EM]
# serials of sma-ems the daemon should take notice
# seperated by space
# seperated by space
# MUST SET EXACT
serials=30028xxxx
serials=30028xxxx
# features could filter serials to, but wouldn't see serials if these serials was not defines in SMA-EM serials
# list of features to load/run
features=symcon
Expand All @@ -36,12 +36,12 @@
pvhook=/hook/smawr
timeout=5
#authorisation must match $hook_user and $hook_password
#authorisation must match $hook_user and $hook_password
user=Symcon
password=SMA-EMdata
#fields should match $vartypes config
fields=pregard,psurplus,p1regard,p2regard,p3regard,p1surplus,p2surplus,p3surplus,psurpluscounter,pregardcounter
fields=pconsume,psupply,p1consume,p2consume,p3consume,p1supply,p2supply,p3supply,psupplycounter,pconsumecounter
pvfields=AC Power,grid frequency,DC input voltage,daily yield,total yield,Power L1,Power L2,Power L3,Status
# How frequently to send update in sec (defaults to 20 sec)
Expand All @@ -65,19 +65,19 @@
$cat='SMA';
$prefix='SMA-EM';
$autocreate=true;
$test='{"p3surplus": 0.0, "p2regard": 139.9, "p1surplus": 0.0, "serial": "300284xxx", "sender": "raspberry", "p3regard": 629.9, "pregard": 854.0, "timestamp": 1545600356.2988641, "pregardcounter": 1748.434, "p2surplus": 0.0, "p1regard": 84.2, "psurpluscounter": 573.3576, "psurplus": 0.0}';
$test='{"p3supply": 0.0, "p2consume": 139.9, "p1supply": 0.0, "serial": "300284xxx", "sender": "raspberry", "p3consume": 629.9, "pconsume": 854.0, "timestamp": 1545600356.2988641, "pconsumecounter": 1748.434, "p2supply": 0.0, "p1consume": 84.2, "psupplycounter": 573.3576, "psupply": 0.0}';
$vartypes=array( 'serial'=>array('type'=>3,'profile'=>''),
'pregard'=>array('type'=>2,'profile'=>'~Watt.14490'),
'p1regard'=>array('type'=>2,'profile'=>'~Watt.14490'),
'p2regard'=>array('type'=>2,'profile'=>'~Watt.14490'),
'p3regard'=>array('type'=>2,'profile'=>'~Watt.14490'),
'psurplus'=>array('type'=>2,'profile'=>'~Watt.14490'),
'psurplus'=>array('type'=>2,'profile'=>'~Watt.14490'),
'p1surplus'=>array('type'=>2,'profile'=>'~Watt.14490'),
'p2surplus'=>array('type'=>2,'profile'=>'~Watt.14490'),
'p3surplus'=>array('type'=>2,'profile'=>'~Watt.14490'),
'pregardcounter'=>array('type'=>2,'profile'=>'~Electricity'),
'psurpluscounter'=>array('type'=>2,'profile'=>'~Electricity'),
'pconsume'=>array('type'=>2,'profile'=>'~Watt.14490'),
'p1consume'=>array('type'=>2,'profile'=>'~Watt.14490'),
'p2consume'=>array('type'=>2,'profile'=>'~Watt.14490'),
'p3consume'=>array('type'=>2,'profile'=>'~Watt.14490'),
'psupply'=>array('type'=>2,'profile'=>'~Watt.14490'),
'psupply'=>array('type'=>2,'profile'=>'~Watt.14490'),
'p1supply'=>array('type'=>2,'profile'=>'~Watt.14490'),
'p2supply'=>array('type'=>2,'profile'=>'~Watt.14490'),
'p3supply'=>array('type'=>2,'profile'=>'~Watt.14490'),
'pconsumecounter'=>array('type'=>2,'profile'=>'~Electricity'),
'psupplycounter'=>array('type'=>2,'profile'=>'~Electricity'),
'timestamp'=>array('type'=>1,'profile'=>'~UnixTimestamp')
);
//auth only if called by webhook
Expand Down Expand Up @@ -125,15 +125,15 @@
$ident=fix_ident($f);
SetValue($varids["$ident"]['id'],$data->{"$f"});
}

}
return;

//----- end main ---------------------------------------

/**
* function fix_ident
* remove unwanted chars from name for ips_setIdent
* remove unwanted chars from name for ips_setIdent
* @param string $name
* @returns string
*/
Expand Down Expand Up @@ -267,4 +267,3 @@ function list_cats($catname) {
}
return $ret;
}

3 changes: 1 addition & 2 deletions features/symcon_smawr_webhook.php
Expand Up @@ -41,7 +41,7 @@
password=SMA-EMdata
#fields should match $vartypes config
fields=pregard,psurplus,p1regard,p2regard,p3regard,p1surplus,p2surplus,p3surplus,psurpluscounter,pregardcounter
fields=pconsume,psupply,p1consume,p2consume,p3consume,p1supply,p2supply,p3supply,psupplycounter,pconsumecounter
pvfields=AC Power,grid frequency,DC input voltage,daily yield,total yield,Power L1,Power L2,Power L3,Status
# How frequently to send update in sec (defaults to 20 sec)
Expand Down Expand Up @@ -266,4 +266,3 @@ function list_cats($catname) {
}
return $ret;
}

24 changes: 12 additions & 12 deletions sma-em-measurement.py
Expand Up @@ -87,22 +87,22 @@ def abortprogram(signal,frame):
print ('\n')
print ('SMA-EM Serial:{}'.format(emparts['serial']))
print ('----sum----')
print ('P: regard:{}W {}kWh surplus:{}W {}kWh'.format(emparts['pregard'],emparts['pregardcounter'],emparts['psurplus'],emparts['psurpluscounter']))
print ('S: regard:{}VA {}kVAh surplus:{}VA {}VAh'.format(emparts['sregard'],emparts['sregardcounter'],emparts['ssurplus'],emparts['ssurpluscounter']))
print ('Q: cap {}var {}kvarh ind {}var {}kvarh'.format(emparts['qregard'],emparts['qregardcounter'],emparts['qsurplus'],emparts['qsurpluscounter']))
print ('P: consume:{}W {}kWh supply:{}W {}kWh'.format(emparts['pconsume'],emparts['pconsumecounter'],emparts['psupply'],emparts['psupplycounter']))
print ('S: consume:{}VA {}kVAh supply:{}VA {}VAh'.format(emparts['sconsume'],emparts['sconsumecounter'],emparts['ssupply'],emparts['ssupplycounter']))
print ('Q: cap {}var {}kvarh ind {}var {}kvarh'.format(emparts['qconsume'],emparts['qconsumecounter'],emparts['qsupply'],emparts['qsupplycounter']))
print ('cos phi:{}°'.format(emparts['cosphi']))
print ('----L1----')
print ('P: regard:{}W {}kWh surplus:{}W {}kWh'.format(emparts['p1regard'],emparts['p1regardcounter'],emparts['p1surplus'],emparts['p1surpluscounter']))
print ('S: regard:{}VA {}kVAh surplus:{}VA {}kVAh'.format(emparts['s1regard'],emparts['s1regardcounter'],emparts['s1surplus'],emparts['s1surpluscounter']))
print ('Q: cap {}var {}kvarh ind {}var {}kvarh'.format(emparts['q1regard'],emparts['q1regardcounter'],emparts['q1surplus'],emparts['q1surpluscounter']))
print ('P: consume:{}W {}kWh supply:{}W {}kWh'.format(emparts['p1consume'],emparts['p1consumecounter'],emparts['p1supply'],emparts['p1supplycounter']))
print ('S: consume:{}VA {}kVAh supply:{}VA {}kVAh'.format(emparts['s1consume'],emparts['s1consumecounter'],emparts['s1supply'],emparts['s1supplycounter']))
print ('Q: cap {}var {}kvarh ind {}var {}kvarh'.format(emparts['q1consume'],emparts['q1consumecounter'],emparts['q1supply'],emparts['q1supplycounter']))
print ('U: {}V thd:{}% cos phi:{}°'.format(emparts['v1'],emparts['thd1'],emparts['cosphi1']))
print ('----L2----')
print ('P: regard:{}W {}kWh surplus:{}W {}kWh'.format(emparts['p2regard'],emparts['p2regardcounter'],emparts['p2surplus'],emparts['p2surpluscounter']))
print ('S: regard:{}VA {}kVAh surplus:{}VA {}kVAh'.format(emparts['s2regard'],emparts['s2regardcounter'],emparts['s2surplus'],emparts['s2surpluscounter']))
print ('Q: cap {}var {}kvarh ind {}var {}kvarh'.format(emparts['q2regard'],emparts['q2regardcounter'],emparts['q2surplus'],emparts['q2surpluscounter']))
print ('P: consume:{}W {}kWh supply:{}W {}kWh'.format(emparts['p2consume'],emparts['p2consumecounter'],emparts['p2supply'],emparts['p2supplycounter']))
print ('S: consume:{}VA {}kVAh supply:{}VA {}kVAh'.format(emparts['s2consume'],emparts['s2consumecounter'],emparts['s2supply'],emparts['s2supplycounter']))
print ('Q: cap {}var {}kvarh ind {}var {}kvarh'.format(emparts['q2consume'],emparts['q2consumecounter'],emparts['q2supply'],emparts['q2supplycounter']))
print ('U: {}V thd:{}% cos phi:{}°'.format(emparts['v2'],emparts['thd2'],emparts['cosphi2']))
print ('----L3----')
print ('P: regard:{}W {}kWh surplus:{}W {}kWh'.format(emparts['p3regard'],emparts['p3regardcounter'],emparts['p3surplus'],emparts['p3surpluscounter']))
print ('S: regard:{}VA {}kVAh surplus:{}VA {}kVAh'.format(emparts['s3regard'],emparts['s3regardcounter'],emparts['s3surplus'],emparts['s3surpluscounter']))
print ('Q: cap {}var {}kvarh ind {}var {}kvarh'.format(emparts['q3regard'],emparts['q3regardcounter'],emparts['q3surplus'],emparts['q3surpluscounter']))
print ('P: consume:{}W {}kWh supply:{}W {}kWh'.format(emparts['p3consume'],emparts['p3consumecounter'],emparts['p3supply'],emparts['p3supplycounter']))
print ('S: consume:{}VA {}kVAh supply:{}VA {}kVAh'.format(emparts['s3consume'],emparts['s3consumecounter'],emparts['s3supply'],emparts['s3supplycounter']))
print ('Q: cap {}var {}kvarh ind {}var {}kvarh'.format(emparts['q3consume'],emparts['q3consumecounter'],emparts['q3supply'],emparts['q3supplycounter']))
print ('U: {}V thd:{}% cos phi:{}°'.format(emparts['v3'],emparts['thd3'],emparts['cosphi3']))

0 comments on commit e3d49b0

Please sign in to comment.