Vaihdettiin kierros Sähkömittarin pulssien lukeminen - Pena Palsta
Etusivu
Tietoa Penasta
PenaPedia
Pena Palsta
Kuvakalleria
Savukehinnasto
Linkkejä
Materiaalia

Ajoneuvotietokanta (BETA)
Osoitetietokanta (BETA)

Yritystietokanta (BETA)

Vanhat uutiset

Kappale Kauneinta Suomea
Metsäkaatopaikkoja
--> Adolf <--
LOTTO-numerot

PenaNetworksin museo
PenaNetworksin kirjasto

Suosittelemme Ääliömäiset sivustot

Sako -vai UMPIkaivoliete ? ;)

Umpikaivolietteen soppa :P
Sakokaivolietteen soossi :P:P

Aiemmat kyselyt

Pulautteet

<Putin > Sijoitamme iskander ohjuksia Venäjän länsirajalle vastauksena NATOn itälaajentumiselle. Suomelle tulee seuraamaan vakavia sotilaspoliittisia seurauksia. Saatamme kokeilla yhtä iskander ohjusta Helsinkiin, sitten kysymme, perutteko NATO hakemuksen vai laitetaanko toinen perään?
<Kiveshienpoistaja> Tupruttelut tupruteltu! Suomi Natoon!
<Ruskea Eminenssi> Kun Sale tupruttelee Erdoganin ja Putinin kanssa sikarit, niin sitten Suomi saa liittyä Natoon. Näin on kirjoitettu.
<Klaus Rampakäsi> Rabottia tai rebortaashia Ukrainan tilanteesta?
<Rehtori Keijo > Elekee kertoko kellekkään mutta mä poltan norttia ja vedän näppiin minihame päällä, enkä ole saanut pillua 50 vuoteen.

Nimesi:

Lausahdus:

64 käyttäjää paikalla

Muista katsoa myös paikallaolijat!

Pena Palsta

Etusivu | Haku | Käyttäjälista | Rekisteröidy | Ohjeet

Käyttäjätunnus: Salasana:

Sähkömittarin pulssien lukeminen

Etusivu -> Yleinen keskustelu -> Sähkömittarin pulssien lukeminen

PenaItse
Liittynyt:
11.5.2012 18:55
Sähkömittarin pulssien lukeminen
Lähetetty: 19.4.2022 20:41 Muokattu viimeeksi: 30.4.2022 07:01
Olen innostunut jo pitkään aiheesta lukea suoraan sähkömittarin vilkkuvasta LEDistä reaaliaikainen energian kulutus. Nyt viimein olen saannut jotain konkreettista aikaan.
Sähkömittarin lediin on teipattu ldr vastus, joka katkoo transistoria josta menee 30 metrin verkkokaapeli autotalliin RasperryPIn GPIO sisääntuloon.
Täällä mittauskeskus on kaukana talosta, tontin reunalla tien vieressä.

Ensimmäinen kötöstys mittasi 2 pulssin välistä aikaa ja laski siitä reaaliaikaisen kulutuksen, joka siis päivittyi aina seuraavalla pulssilla. Siitä laskettiin tehonkulutus.
Aloin vain pohtimaan, kun sitä arvoa mm. päivitetään keskusmuistilla sijaitsevaan fileeseen jotta miten paljon koneen hidastelut vaikuttavat lopulta siihen tulokseen. Tein myös erikseen säikeen, jossa perustin palvelimen kuuntelemaan ja kun clientti yhdistää, lähetetään kuuntelijalle dataa kahden pulssin välinen aika.

Myöhemmin lähestyin asiaa toisesta suunnasta ja päätinkin lukea X pulssia ja laskea niihin yhteensä kulutetun ajan, jonka jatkojalostan rinnakkaisessa säikeessä. Ainakin teoriassa ehkä parempi ratkaisu.

En oikein tykkää tuosta pyythonista tai ainakin tuntuu hankalalta päästä siihen kunnolla sisään.
Alla koodi, joka laskee 10 sekunnin pulssien ajan ja rinnakkainen säie jatkojalostaa sen komentoriville. Mikähän oisi järkevin vaihtoehto striimata sitä lähiverkkoon?


import RPi.GPIO as GPIO
import time, sys
import http.server
import socketserver
import _thread
import threading
import socket

lock = threading.Lock()

GPIO.setmode(GPIO.BCM)
GPIO.setup(17, GPIO.IN, pull_up_down=GPIO.PUD_UP)



def laskuri():
print("Syncing threads 10 sec ...";)
global pulssien_otanta
pulssien_maara = pulssien_otanta
kumulatiivinen_kulutus = 0
time.sleep(10)
aloitus_aika = time.time()
global aika

while True:
lock.acquire()

teho = (((1000/(pulssia_per_kwh/pulssien_otanta))*3600)/aika)/1000
hinta = teho*0.13
kumulatiivinen_kulutus = pulssien_maara * 0.0001
kumulatiivinen_hinta = kumulatiivinen_kulutus * 0.13
kello = "{:.3f}".format(time.time() - aloitus_aika)

print("TEHO: ", "{:.2f}".format(teho), "kWh", "{:.2f}".format(hinta), "euroa tunnissa", "Kumulatiivinen: kulutus:", "{:.3f}".format(kumulatiivinen_kulutus), "hinta: " "{:.3f}".format(kumulatiivinen_hinta), " Pulsseja: ", pulssien_maara, "aika (S):", kello, end="\r", flush=True)
pulssien_maara += pulssien_otanta
time.sleep(1/1000)

_thread.start_new_thread(laskuri, tuple())

pulssia_per_kwh = 10000
pulssien_otanta = 10
try:
while True:
i = 0
lock.acquire(blocking=False)
start = time.time()
while i < pulssien_otanta:
GPIO.wait_for_edge(17, GPIO.FALLING)
time.sleep(1/1000000)
i += 1
aika = time.time() - start
lock.release()
time.sleep(1/1000000)
except KeyboardInterrupt:
print("\nTidying up";)


Mikähän oli kooditagit tänne ...

----------------------------------------
olen pena ja lisäksi vitun homo seniili mulkkuperse joka tuunaa 106 vetoakselia perslävellään soinia soimaten pusikon piinaavassa uutteruudessaan

PenaItse
Liittynyt:
11.5.2012 18:55
Vs: Sähkömittarin pulssien lukeminen
Lähetetty: 19.4.2022 20:50 Muokattu viimeeksi: 30.4.2022 07:01
Tuossa ensimmäinen versio kokonaisuudessaan kaikkine sotkuineen:


import RPi.GPIO as GPIO
import time, sys
import http.server
import socketserver
import _thread
import threading
import socket


def create_server():
port = 8000
handler = http.server.SimpleHTTPRequestHandler
httpd = socketserver.TCPServer(("", port), handler)
print("serving at port:" + str(port))
httpd.serve_forever()

def palvelija(c):
global aika
global lock
print("palvelija";)
i = 0
while True:
lock.acquire()
lahetys = str(aika)+" pulsseja: "+str(i)+"\r\n"
c.send(lahetys.encode())
i += 1



def laske_pulsseja():
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print ("Socket successfully created";)
port = 121
s.bind(('', port))
print ("socket binded to %s" %(port))
s.listen(5)
print ("socket is listening";)
while True:
c, addr = s.accept()
print ('Got connection from', addr )
_thread.start_new_thread(palvelija, (c,))

lock = threading.Lock()
#_thread.start_new_thread(create_server, tuple())
_thread.start_new_thread(laske_pulsseja, tuple())


print("Server has started. Continuing..";)


print("Hello, World!";)
GPIO.setmode(GPIO.BCM)
GPIO.setup(17, GPIO.IN, pull_up_down=GPIO.PUD_UP)



aloitus_aika = time.time()
pulssien_maara = 1
kumulatiivinen_kulutus = 0
f = open("/run/lukemat", "w";)

try:
while True:

start = time.time()
lock.acquire(blocking=False)
GPIO.wait_for_edge(17, GPIO.FALLING)
lock.release()
#time.sleep(0.01)
aika = time.time() - start
time.sleep(1/1000000)
teho = (((1000/10000)*3600)/aika)/1000
hinta = teho*0.13

kumulatiivinen_kulutus = pulssien_maara * 0.0001
kumulatiivinen_hinta = kumulatiivinen_kulutus * 0.13
kello = "{:.2f}".format(time.time() - aloitus_aika)
print("TEHO: ", "{:.2f}".format(teho), "kWh", "{:.2f}".format(hinta), "euroa tunnissa", "Kumulatiivinen: kulutus:", "{:.3f}".format(kumulatiivinen_kulutus), "hinta: " "{:.3f}".format(kumulatiivinen_hinta), " Pulsseja: ", pulssien_maara, "aika (S):", kello, end="\r", flush=True)

pulssien_maara += 1

# print("TEHO: ", round((3600 / aika), 1), "kWh", sep=' ', end='', flush=True)
# print(" Silmukka pyorahti ", i)
# print(aika)
f.seek(0)
f.truncate()
print(aika, file=f)
f.flush()


except KeyboardInterrupt:
print("\nTidying up";)
f.close()




----------------------------------------
olen pena ja lisäksi vitun homo seniili mulkkuperse joka tuunaa 106 vetoakselia perslävellään soinia soimaten pusikon piinaavassa uutteruudessaan

PenaItse
Liittynyt:
11.5.2012 18:55
Vs: Sähkömittarin pulssien lukeminen
Lähetetty: 19.4.2022 20:52
Huomatkaa, kun tarjoillaan rivin lopetusmerkiksi alkuun kelaus: end="\r" niin ainakin PuTTyn kautta komentorivi päivittää vain yhtä riviä tekstiä, ei siis ulosteta jatkuvasti lisää ja lisää rivejä.

----------------------------------------
olen pena ja lisäksi vitun homo seniili mulkkuperse joka tuunaa 106 vetoakselia perslävellään soinia soimaten pusikon piinaavassa uutteruudessaan

PenaItse
Liittynyt:
11.5.2012 18:55
Vs: Sähkömittarin pulssien lukeminen
Lähetetty: 30.4.2022 07:00
http://pena.dy.fi/jako/palvelija.py

Nyt saa livekuvaa kulutuksesta suoraan selaimeen. Mutta tuo vitun pythoni ei tunnu menevän millään kaaliin ei sitten MILLÄÄN! Vaikka tuo on ehkä hieman monimutkahko systeemi, en silti jotenkaan kieleen päässy sisälle. No ne vitun oliot tietenkin :@

Tilasin myös muutaman pulssittavan vesimittarin. Tuohon voisi tehdä ehkä ascii tai png graafia hieman historiasta, ja kun vesi saadaan mukaan, saa oikein mukavan kotinäytön seinälle.

----------------------------------------
olen pena ja lisäksi vitun homo seniili mulkkuperse joka tuunaa 106 vetoakselia perslävellään soinia soimaten pusikon piinaavassa uutteruudessaan

PenaItse
Liittynyt:
11.5.2012 18:55
Vs: Sähkömittarin pulssien lukeminen
Lähetetty: 30.4.2022 07:04
*** POISTIN AIEMMISTA KOODEISTA PRETAGIT, KOSKA SIVU MENI IHAN VITUIKSI ***

Tuossa myös, en tiedä voisiko ajatella sen olevan tuhlausta käynnistää jokaista GET-pyyntöä varten oma säie? :O Asianhan voi hoitaa toisellakin tavalla, selektiivisesti jossa pyynnöt ovat kaikki yhdessä säikeessä jonossa. Toki hieman haastavempi se on tehdä, muistan kun pikkupoikana(tai nuorempana) leikin C n sockettien kanssa eikä IKINÄ mennyt kaaliin sen selectin käyttö kunnolla! :$
Oiskohan nyt vanhempana viisaampi ...

----------------------------------------
olen pena ja lisäksi vitun homo seniili mulkkuperse joka tuunaa 106 vetoakselia perslävellään soinia soimaten pusikon piinaavassa uutteruudessaan

PenaItse
Liittynyt:
11.5.2012 18:55
Vs: Sähkömittarin pulssien lukeminen
Lähetetty: 30.4.2022 07:11
Myös semmoinen on toki mahdollista avata jokaista asiakasta varten oma säie, joka pysyy olemassa niin kauan, kuin asiakkaalla on sivu auki. Se voisi ehkä olla hyvä kultainen keskitie noiden kahden väliltä.
Varmasti vie resursseja enemmän nyt perustaa aina uusi ... Kotinäytöllä tietysti olisi vain 1 clientti paikalla aina, eihän multithreadingia tarvisi edes tuossa, kun riittäisi yhden asiakkaan palveleminen. Mutta sitten ajatuksena sellainen rajoitus herättää inhoa :$

----------------------------------------
olen pena ja lisäksi vitun homo seniili mulkkuperse joka tuunaa 106 vetoakselia perslävellään soinia soimaten pusikon piinaavassa uutteruudessaan

PenaItse
Liittynyt:
11.5.2012 18:55
Vs: Sähkömittarin pulssien lukeminen
Lähetetty: 30.4.2022 22:42
http://pena.dy.fi/jako/elspot.py

Siinä on suht nopeasti vääntämäni skripti noutamaan seuraavan päivän sähkön tuntihinnat. Nyt kun tätä näpyttelyintoa on viime aikoina ollut, voisin ehkä taas herätellä ajatuksen ohjata vesivaraajaa noiden tuntien mukaisesti. Nyt on tosin todella edullinen, toistaiseksi voimassa oleva kiinteähintainen, niin akuuttia tarvetta ei ole.
Mutta mielenkiintoinen lisähän se olisi kotinäytössä rullaavat tunnit kalliit punaisella ja halvat vihreällä.
Automaattista lämpötilan laskua ei näin pienessä mökissä tarvitse edes miettiä. Lisäksi tilasin ilmalämpöpumpun joka odottaa asennustaan, onneksi tilasin sen jo talvella, nyt sotien aikaan ei enään saa tai jos saa niin paljon kalliimmalla. Tilasin myös tyhjiöpumpun ja huoltomittarisarjan. Satasen taisi olla Vevorilla.

Pumppukauppiaalle heitin päästäni jonkun asentajan nimen tukesin rekisteristä, he eivät saa myydä niitä pumppuja ellei ole "vakuutta että sen asentaa kylmäluvat omaava henkilö". No tommosille direktiiveille haistatan tottakia pitkät paskakasa
Ja lisäksi vielä! Se on R32 kone! EIhän se ole enään F-kaasua ??? :O

Oikeastihan kyllä me kaikki tiedämme tässä koitetaan vain suojella erästä ammattikuntaa ja nostaa jalustalle jumalasta seuraavaan kahden viikon nuokkumiskoulutuksella.

Myönnän kyllä että minua hieman kuumottaa niiden kartioliittimien kiristys, mitään aiempaa tuntumaa ei ole ja sen on onnistuttava käytännössä kerrasta. Toki sitä kylmäainetta saa tilattua ulkomailta jos jääkin krooninen pieni vuoto, mutta tuskimpa kuitenkaan.

Niin vituttaa nuo PK yrittäjät ja muut hiihtäjät joiden palveluksia joskus tarvitisi niin se on yrittäjä joka asiakkaansa valitsee. Ja kuten porakaivossa, niin pumpussakin kun en konetta tahtonut kylmäluvat omaavalta kaupparatsulta ostaa niin en ole kovin kiinnostava asiakas jos pyytäisin vain pelkkää pumpun asennusta itse hankkimalleni koneelle.
Kauna pienyrittäjiä kohtaan alkoi jo vuonna 2017 kun nuohoojaa mökille hankkiessani sanoi melkein suoraan ettei sitä kiinnosta nuo paskahommat, kun on ilmastointihommiakin tehtävänä. Tuli selväksi ja tilasin savenmaalta puolen kiven rassin ja pallon ja sille tielle olen jäännyt.
Sama pätee myös sähkötöihin! Se porukka joka amiksesta valmistui samaan aikaan kanssani, ei saisi antaa edes paristoa vaihdettavaksi!!

----------------------------------------
olen pena ja lisäksi vitun homo seniili mulkkuperse joka tuunaa 106 vetoakselia perslävellään soinia soimaten pusikon piinaavassa uutteruudessaan

PenaItse
Liittynyt:
11.5.2012 18:55
Vs: Sähkömittarin pulssien lukeminen
Lähetetty: 15.5.2022 03:16
Vittu että suututti alkuun tommoset:
output += tee_canvas([float(i) for i in hinta_tanaan[0:24]])
ei niinkun mitään järkeä tuntunu olevan, vähän kuin voi vain hutaisten huitaista siivoten sairaalan pihaa,
MUTTA nyt kun olen tätä ruutua tuijottanut melkein 2 vuorokautta, alkaa tuo jo käydä järkeen - tarkemmin ajateltuna tuohan onkin kaikessa yksinkertaisuudessaan aika helvetin näppärä ja kätevästi toimiva systeemi! :O Tossa pärjää, jos pelaa sen säännöillä sit kunnolla :D
Tai sitten ei :$

----------------------------------------
olen pena ja lisäksi vitun homo seniili mulkkuperse joka tuunaa 106 vetoakselia perslävellään soinia soimaten pusikon piinaavassa uutteruudessaan

Vastaa aiheeseen

Sinun pitää kirjautua sisään tai rekisteröityä osallistuaksesi keskusteluun!

Copyright © PenaNetworks säätiöt 2006 - 2022