
Jednostavno rešenje za praćenje potrošnje preko LED impulsne diode na samom strujomeru.
Fotoćelija prati impulse i pomoću skripte generiše stanje.
file: electric.py
#!/usr/bin/python
import RPi.GPIO as GPIO
import time
import subprocess
import smbus
bus = smbus.SMBus(0)
from datetime import timedelta
meterIps = [12]
def _setup():
GPIO.setmode(GPIO.BOARD)
for meterIp in meterIps:
GPIO.setup(meterIp, GPIO.IN, GPIO.PUD_UP)
def _storeUpCountDelta():
with open('/proc/uptime', 'r') as f:
up = float(f.readline().split()[0])
with open('/home/pi/inetpub/upCountDelta.txt', 'a+') as f:
f.seek(0)
arrLine1 = f.readline().split()
if len(arrLine1) > 1:
delta = up - float(arrLine1[0])
count = 1 + int(arrLine1[1])
f.seek(0)
f.truncate()
f.write ('{} {} {:.2f} //up count interval'.format(up, count, delta))
if __name__ == "__main__":
_setup()
while 1:
val = GPIO.input(meterIps[0])
if val:
state = 1
else:
if state == 1:
_storeUpCountDelta()
state = 0
time.sleep(0.001)
file: meter.php
<?php
$ip = file_get_contents('_ip.txt');
$file = file_get_contents('http://' . $ip . '/upCountDelta.txt');
$fileArr = explode("\n", $file);
$lineArr = preg_split('/\s+/', $fileArr[0]);
$counter = 0;
$counter = $lineArr[1];
$counter = $counter / 1000;
$meter = 0;
$meterFile = "meter.txt";
if (file_exists($meterFile) && is_readable($meterFile)) {
$fh = fopen($meterFile, "r");
while (!feof($fh)) {
$meterArray = split("\|", trim(fgets($fh)));
if (count($meterArray) == 3) {
$meter = intval($meterArray[2]);
$meterCount = intval($meterArray[1])/1000;
}
}
fclose($fh);
}
$meterReading = number_format($meter + $counter - $meterCount, 3, '.', '');
$pPerKW = 0.14931;
$secsPerWatt = floatval($lineArr[2]);
if ($secsPerWatt > 0) {
$kWh = round(60 * 60 * 0.001 / $secsPerWatt, 3);
$cost = round($kWh * $pPerKW, 3);
echo "$meterReading $cost $kWh $pPerKW //reading £/h kWh tariff";
} else {
echo $file;
}
?>

