stromzaehler
This commit is contained in:
parent
bb862ed6ec
commit
43cf6cabea
4 changed files with 109 additions and 0 deletions
37
bundles/stromzaehler/files/stromzaehler
Normal file
37
bundles/stromzaehler/files/stromzaehler
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
#set -x
|
||||||
|
|
||||||
|
gpio=$(expr 458 + 3)
|
||||||
|
|
||||||
|
# prepare
|
||||||
|
if ! [[ -e "/sys/class/gpio/gpio$gpio" ]]; then
|
||||||
|
echo $gpio > "/sys/class/gpio/export"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo in > "/sys/class/gpio/gpio$gpio/direction"
|
||||||
|
|
||||||
|
# loop
|
||||||
|
previous_state=false
|
||||||
|
while sleep 0.001; do
|
||||||
|
state=$(cat "/sys/class/gpio/gpio$gpio/value")
|
||||||
|
if ! [[ "$state" = "$previous_state" ]] && [[ "$state" = 0 ]]
|
||||||
|
then
|
||||||
|
if ! [ -z $previous_impulse ] # skip first iteration
|
||||||
|
then
|
||||||
|
delay=$(expr $(date --utc +%s%N) - $previous_impulse)
|
||||||
|
impulse_per_hour=$(expr 3600000000000 / $delay)
|
||||||
|
watt=$(expr $impulse_per_hour / $(expr 2000 / 1000))
|
||||||
|
echo $watt > /tmp/watt
|
||||||
|
echo $delay $impulse_per_hour $watt
|
||||||
|
# curl "https://${influxdb_domain}/ping" ${'\\'}
|
||||||
|
# -X POST ${'\\'}
|
||||||
|
# -H "Authentication: Token ${influxdb_token}" ${'\\'}
|
||||||
|
# -d "bucket=${influxdb_bucket}" ${'\\'}
|
||||||
|
# -d "ord=${influxdb_org}" ${'\\'}
|
||||||
|
# -d "data=powermeter,host=${node_name} watts=$watt"
|
||||||
|
fi
|
||||||
|
previous_impulse=$(date --utc +%s%N)
|
||||||
|
fi
|
||||||
|
previous_state=$state
|
||||||
|
done
|
25
bundles/stromzaehler/items.py
Normal file
25
bundles/stromzaehler/items.py
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
influxdb_metadata = repo.get_node(node.metadata.get('stromzaehler/influxdb_node')).metadata.get('influxdb')
|
||||||
|
|
||||||
|
files = {
|
||||||
|
'/opt/stromzaehler': {
|
||||||
|
'content_type': 'mako',
|
||||||
|
'mode': '550',
|
||||||
|
'context': {
|
||||||
|
'node_name': node.name,
|
||||||
|
'influxdb_domain': influxdb_metadata['hostname'],
|
||||||
|
'influxdb_bucket': influxdb_metadata['bucket'],
|
||||||
|
'influxdb_org': influxdb_metadata['org'],
|
||||||
|
'influxdb_token': influxdb_metadata['admin_token'],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
svc_systemd = {
|
||||||
|
'stromzaehler': {
|
||||||
|
'enabled': False,
|
||||||
|
'running': False,
|
||||||
|
'needs': [
|
||||||
|
'file:/opt/stromzaehler',
|
||||||
|
],
|
||||||
|
}
|
||||||
|
}
|
23
bundles/stromzaehler/metadata.py
Normal file
23
bundles/stromzaehler/metadata.py
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
defaults = {
|
||||||
|
'apt': {
|
||||||
|
'packages': {
|
||||||
|
'gpiod': {},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'systemd': {
|
||||||
|
'units': {
|
||||||
|
'stromzaehler.service': {
|
||||||
|
'Unit': {
|
||||||
|
'Description': 'stromzaehler',
|
||||||
|
'After': 'network.target',
|
||||||
|
},
|
||||||
|
'Service': {
|
||||||
|
'ExecStart': '/opt/stromzaehler',
|
||||||
|
},
|
||||||
|
'Install': {
|
||||||
|
'WantedBy': {'multi-user.target'},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
24
nodes/home.stromzaehler.py
Normal file
24
nodes/home.stromzaehler.py
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
{
|
||||||
|
'hostname': '10.0.0.15',
|
||||||
|
'groups': [
|
||||||
|
'debian-11',
|
||||||
|
'raspberry-pi',
|
||||||
|
'monitored',
|
||||||
|
],
|
||||||
|
'bundles': [
|
||||||
|
'stromzaehler',
|
||||||
|
],
|
||||||
|
'metadata': {
|
||||||
|
'id': 'dd521b8a-dc03-43f5-b29f-068f948ba3b8',
|
||||||
|
'network': {
|
||||||
|
'internal': {
|
||||||
|
'interface': 'eth0',
|
||||||
|
'ipv4': '10.0.0.15/24',
|
||||||
|
'gateway4': '10.0.0.1',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'stromzaehler': {
|
||||||
|
'influxdb_node': 'home.server',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
Loading…
Reference in a new issue