Lettura S0 - script python

Discussioni relative all'uso di contatori ad impulsi S0
Avatar utente
fuzero
Messaggi: 39
Iscritto il: 27/04/2017, 22:00

Lettura S0 - script python

Messaggioda fuzero » 27/04/2017, 22:38

Ciao Flane,
devo complimentarmi con te per l'ottimo lavoro che hai fatto con guide semplici e chiare che mi hanno fatto installare tutto con facilità.
Avendo a disposizione un contatore Lovato con uscita S0 lo ho installato e connesso con soddisfazione.
Ho apprezzato il software in java per il recupero dei dati ma non mi ha pienamente soddisfatto per cui ho cercato una soluzione alternativa.
Prendendo spunto dal pooler485 ho creato un piccolo script per leggere gli impulsi e scrivere in output dati in formato compatibile.
Lo allego per chi, come me cerca una soluzione alternativa e ti chiedo consigli su possibili miglioramenti.

Grazie e buon lavoro.

Note per l'installazione :
copiare il file countS0.py nella cartella comapps
rendere eseguibile il file

Codice: Seleziona tutto

chmod a+x countS0.py

creare il link simbolico

Codice: Seleziona tutto

ln -s /<percorso di comapps>/countS0.py /usr/bin/countS0.py


inserire in /etc/rc.local la seguente riga:

Codice: Seleziona tutto

/usr/bin/countS0.py &
Allegati
countS0.zip
(508 Byte) Scaricato 331 volte


Avatar utente
Flane
Messaggi: 2460
Iscritto il: 16/01/2016, 15:02

Re: Lettura S0

Messaggioda Flane » 28/04/2017, 19:09

Scusa ma il tuo script ti restituisce sia il valore in live che main?

Tanto per completezza di info, che comandi usi nella configurazione del meter in meter?

Comunque ormai non usa più nessuno il sistema ad impulsi, in quanto con i contatori modbus della serie SDM della EASTRON si monitorano tutti i parametri energetici della rete elettrica (e non solo W e Wh) e non si sovraccarica il raspi di lavoro come faceva lo script in java.

Avatar utente
fuzero
Messaggi: 39
Iscritto il: 27/04/2017, 22:00

Re: Lettura S0

Messaggioda fuzero » 29/04/2017, 19:09

Il mio script va a creare il file metern2.txt (sarebbe il sostituto di pooler485 per quelli ad impuso)
metern poi li legge con il poolerconsumi 2 energy e power (ho usato il poolerconsumi della ver.3,2)

In effetti hai ragione ma io quello l'avevo già in casa ed ho voluto testarlo.
Lo scopo era proprio di eliminare il pesante java

Avatar utente
Flane
Messaggi: 2460
Iscritto il: 16/01/2016, 15:02

Re: Lettura S0

Messaggioda Flane » 02/05/2017, 9:40

Se non erro, perche non conosco molto python, tu ad ogni impulso vai a scrivere potenza ed energia nel file txt.

Ma credo sia più corretto leggere l'energia solo ogni 5 minuti come prevede metern, in quanto contando gli impulsi emessi in 5 min si commettono meno errori che contando il tempo trascorso tra due singoli impulsi.

Avatar utente
fuzero
Messaggi: 39
Iscritto il: 27/04/2017, 22:00

Re: Lettura S0 - script python

Messaggioda fuzero » 02/05/2017, 20:05

Io conto il tempo tra due impulsi per avere la potenza istantanea che vedo nel dashboard live
per il 5min pooling è meterN che calcola la differenza tra il contatore in quel momento ed il dato del csv di 5 minuti prima,
per me la precisione è la stessa.
Confermami se pooler485 è sempre in esecuzione , io lo penso sennò non avresti il dato live.

rinoronie
Messaggi: 184
Iscritto il: 08/03/2018, 0:27

Re: Lettura S0 - script python

Messaggioda rinoronie » 26/04/2018, 20:01

posso utilizzare per un contalitri? chiude l'impulso ogni litro di acqua...
nel tuo script, ogni impulso a quanto corrisponde?
serve configurare il gpio come ingresso?
serve creare precedentemente il file /dev/shm/meternX.txt
grazie

Avatar utente
Flane
Messaggi: 2460
Iscritto il: 16/01/2016, 15:02

Re: Lettura S0 - script python

Messaggioda Flane » 27/04/2018, 8:44

E' possibile utilizzare questo script anche per un contalitri dell'acqua, ma deve essere opportunamente modificato in quanto è predisposto per il calcolo dell'energia con valore istantaneo della potenza e dell'energia sui 5 min.

Per l'acqua si calcola il solo consumo in litri (o meglio in mc) sui 5 min. Quindi si contano solo gli impulsi trascorsi ogni 5 min e si restituisce il corrispondente valore in volume in funzione del fattore di conversione del contatore. Quindi in questo caso ci sarà solo il valore main e non il live.


Non conosco python e non sono un programmatore, ma un possibile script potrebbe essere:

Codice: Seleziona tutto

#!/usr/bin/python

# pin gpio utilizzato per leggere gli impulsi
pin_gpio = 4
# n. di meter utilizzato in MeterN
metern_id = 8
# fattore di conversione del contatore (unita di misura mc)
conv = 1

file = '/dev/shm/metern'+str(metern_id)+'.txt'
import time
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(pin_gpio, GPIO.IN, pull_up_down = GPIO.PUD_DOWN)

counter = 0
while True:
    GPIO.wait_for_edge(pin_gpio, GPIO.RISING)
    counter += 1
    volume = str(metern_id) + '(' + str(counter*conv) + '*mc)\n'
    fp = open(file,'w')
    fp.write(volume)
    fp.close()
    GPIO.wait_for_edge(pin_gpio, GPIO.FALLING)

GPIO.cleanup()


Personalmente non l'ho testato e non ne garantisco il funzionamento. Attenzione che con python l'indentatura è importante.

rinoronie
Messaggi: 184
Iscritto il: 08/03/2018, 0:27

Re: Lettura S0 - script python

Messaggioda rinoronie » 27/04/2018, 9:37

Provo e vi faccio sapere
Grazie

rinoronie
Messaggi: 184
Iscritto il: 08/03/2018, 0:27

Re: Lettura S0 - script python

Messaggioda rinoronie » 27/04/2018, 9:50

Ma devo comunque dichiarare il mio pio 26 come ingresso?
#echo "26" > /sys/class/gpio/export
#echo "in" > /sys/class/gpio/gpio26/direction

rinoronie
Messaggi: 184
Iscritto il: 08/03/2018, 0:27

Re: Lettura S0 - script python

Messaggioda rinoronie » 27/04/2018, 10:02

la à accentata non va bene, ho dovuto sostituirla con la a semplice
# fattore di conversione del contatore (unità di misura mc)


Torna a “Contatori ad impulsi”

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti