Uživatelské nástroje

Nástroje pro tento web


ruzne:rpi_zero_-_mereni_spotreby_z_elektromeru

RPi zero - měření spotřeby z elektroměru

Tato stránka je rozpracovaná, návod není kompletní.

Pro vyčítání impulzů z elektroměru a jeho výstupu S0 je možné využít Raspberry Zero. V mém příkladu je vstup zapojený na PIN 23.

Na TMEPu je potřeba mít založené čidlo typu Spotřeba a ve výchozí jednotce zvolit kWh.

read.py
#!/bin/python
 
# Testovano na Python 2.7 na RPi zero
 
# Vycitani impulzu z elektromeru pres rozhrani S0 do
# RPi zero a nasledne odeslani na TMEP.cz
#
# Vycitame hodnotu impulzy a delime poctem impulzu na kWh
# podle pouziteho elektromeru
#
# Pokud po vycteni impulzu uplynulo vice nez X minut od posledniho
# odeslani na server, tak posleme
 
# Nastaveni:
domena = str("spotreba.datlog.cz")
prepocetImpulzuNakWh = float(800)
pinNaRPI = int(23)
odeslatKazdychMinut = int(5)
 
import time
import RPi.GPIO as GPIO
import requests
 
GPIO.setmode(GPIO.BCM)
GPIO.setup(pinNaRPI, GPIO.IN, pull_up_down = GPIO.PUD_DOWN)
 
# INIT
citacImpulzu = int(0)
casOdeslani = time.time()
 
# Vycitaci smycka
while True:
    GPIO.wait_for_edge(pinNaRPI, GPIO.RISING)
    citacImpulzu += 1
    print citacImpulzu/prepocetImpulzuNakWh, "kWh"
    GPIO.wait_for_edge(pinNaRPI, GPIO.FALLING)
 
    dobaOdOdeslani = time.time() - casOdeslani
 
    # Ubehl cas, kdy chceme odesilat na server?
    if dobaOdOdeslani > (odeslatKazdychMinut * 60):
        r = requests.get("http://" + domena  + "/?kwh=" + str(citacImpulzu/prepocetImpulzuNakWh))
 
        if r.status_code == 200:
            citacImpulzu = 0
            casOdeslani = time.time()
            print("Uspesne odeslano na " + domena)
        else:
            # Nepovedlo se odeslat? Priste to zkusime nejdriv za minutu
            casOdeslani += 60
            print("Nepodarilo se odeslat na " + domena + ", zkusim to znovu za minutu, info:")
            print "Status: ", r.status_code
            print "Headers: ", r.headers
            print "Content: ", r.content
 
GPIO.cleanup()