Lettura S0 - script python

Discussioni relative all'uso di contatori ad impulsi S0
Avatar utente
Flane
Messaggi: 2460
Iscritto il: 16/01/2016, 15:02

Re: Lettura S0 - script python

Messaggioda Flane » 02/10/2018, 0:16

Grazie per la dettagliata guida fuzero, ma con Raspbian Stretch e l'introduzione di systemd non si deve usare rc.local ma si deve creare un servizio per l'avvio al boot degli script.

Ed inoltre è meglio cambiare i riferimenti a /run/shm in /dev/shm.
Come ho già detto /run/shm è un link. Anche se è comunque presente di sistema è meglio usare il collegamento diretto /dev/shm


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

Re: Lettura S0 - script python

Messaggioda fuzero » 02/10/2018, 19:09

Grazie flane per i suggerimenti, dato che sono nato e continuo con distro senza systemd (e ti assicuro che funzionano senza problemi) tendo a non usarlo ma appena ho un attimo vedo di implementarlo visto che debian lo usa.
In merito ai riferimenti ci sono pareri contarstanti e credo che /run/shm sia più compatibile tar varie distro, inoltre io lascio /dev da gestire a udev !
Ma tutto si può adattare. :lol: :lol: :lol:

Avatar utente
maxsemp
Messaggi: 85
Iscritto il: 13/04/2018, 11:44

Re: Lettura S0 - script python

Messaggioda maxsemp » 05/10/2018, 17:54

Ciao fuzero.
Non vorrei sembrarti un rompiscatole, ma ti chiedo, cortesemente, quando pensi di pubblicare una guida per il tuo sistema? Come avrai facilmente intuito io purtroppo non sono un programmatore e di certe cose non ne capisco assolutamente nulla. In ogni caso sono disponibile a farti da beta-tester se lo riterrai opportuno.
Grazie e a presto. :lol:

Avatar utente
maxsemp
Messaggi: 85
Iscritto il: 13/04/2018, 11:44

Re: Lettura S0 - script python

Messaggioda maxsemp » 27/11/2019, 14:52

Salve a tutti.
Dopo vari tentativi fatti negli ultimi giorni, ho risolto il problema scrivendo un servizio che mi permetta di avviare il file python di fuzero al reboot del raspi, in questo modo:

Codice: Seleziona tutto

[Unit]
Description=Active Energy Counter
After=metern.service
[Service]
Type=oneshot
User=pi
WorkingDirectory=/home/pi
ExecStart=/bin/sleep 200
ExecStart=/usr/bin/python /home/pi/pulsera.py
[Install]
WantedBy=multi-user.target


Il file service si chiama pulsera.service ed è collocato nella cartella /etc/systemd/system ed il file python si chiama pulsera.py ed è collocato nella cartella /home/pi. Sembra funzioni egregiamente. Spero di essere utile a chi, come me, utilizza questo file py (grazie a fuzero) e che, magari, non ha famigliarità con queste cose. Essendo totalmente inesperto ho naturalmente scopiazzato qua e la dal web, ma, a quanto pare, sembra che l'abbia fatto bene :lol: :lol: :lol: .
Saluti e buon sole a tutti.

calida
Messaggi: 6
Iscritto il: 27/06/2019, 12:22

Re: Lettura S0 - script python

Messaggioda calida » 21/02/2020, 7:26

salve a tutti,
mi aggiungo a questa discussione anche se un po vecchia, perche vorrei poter un attimo capire come vengono passati i dati a metern se volessi utilizzare script differenti da quelli gia presenti in stock.
Da quanto mi pare di aver capito fino ad ora in questo post è necessario creare un file meternX,txt nella cartella /run/shm/
MI pare di aver capito che i file csv nella cartella data vengono creati automaticamente da metern in base ai dati letti nel file meternX.txt
ho capito male fino ad ora?
Se voglio impostare un nuovo metro, devo prima crearlo dalla configurazione web e poi in base al numero che gli viene assegnato da li si da il nome al file meternX.txt giusto?
nella configurazione web alla voce command cosa bisogna inserire se si usa uno script custom tipo quello proposto da fuzero? (potrei anche lasciarlo vuoto giusto? tanto il file .txt verrebbe creato dallo scripts phyton che gira come demone all' avvio esatto?)

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

Re: Lettura S0 - script python

Messaggioda fuzero » 23/02/2020, 10:54

Ciao Calida,
ti confermo che la creazione dei meternX.txt vengono fatti dallo script python, i cvs sono gestiti da metern e sono la memorizzazione dello storico dei dati.
Si, crea prima il nuovo meter così sai esattamente il valore X che gli assegna.
Lo script sta in esecuzione e mette i dati nel txt, nella configurazione web devi inserire il comando che te lo legge per poter avere il dato sulla tua dashboard, così puoi visualizzare il dato ed eventualmente salvare i dati nello storico.

Spero di averti chiarito.

calida
Messaggi: 6
Iscritto il: 27/06/2019, 12:22

Re: Lettura S0 - script python

Messaggioda calida » 23/02/2020, 20:36

Ciao fuzero
grazie per la risposta, credevo che il tread fosse abbandonato visto che l'ultimo post era piu di un anno fa.
Nel frattempo avevo trovato la soluzione, ho usato il tuo script e in live command ho usato come detto da te nei primi post poolerconsumi x power
e poolerconsumi x energy.
approfitto della tua risposta per farti alcune domande.
sto provando a collegare un contatore a impulsi, il modello è eastron sdm120A (non modbus).
questo è il link della scheda tecnica
https://checkwatt.se/pdf/Eastron%20SDM120D.pdf

ho collegato il pin gpio 5V del raspberry al pin S0+ del contatore e il pin S0- del contatore al pin gpio 4 con una resistenza in serie da 200ohm, il cavo è lungo una decina di metri(troppi forse)
ho provato il tuo script, gira ma mi da misure sballatissime. come potenza istantanea mi da valori intorni a 180000 e i watt/h salgono velocissimi gia dopo pochi secondi.
all'inizio non avevo provato a mettere una resistenza fisica di pulldown tra gpio4 e massa, poi ho provato anche con quello ma niente, stesso problema. se scollego i cavi non vi è lettura di impulsi quindi non credo che i pin gpio del raspberry si siano guastati. per il pull down ho provato sia con 10k che con 100k senza alcun risultato positivo...
puoi darmi qualche consiglio?

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

Re: Lettura S0 - script python

Messaggioda fuzero » 23/02/2020, 21:44

Se guardi il mio post precedente c'è la foto del mio collegamento, i valori di resistenze non li ricordo ma dalla foto li puoi vedere e come ho fatto il collegamento.
Il mio contatore da un impulso ogni 1 wh, verifica che il tuo non sia programmato diversamente.
Potresti verificare se arriva un impulso ogni volta che ti lampeggia il led sul contatore se ne ha uno.


Inviato dal mio SM-G930F utilizzando Tapatalk

calida
Messaggi: 6
Iscritto il: 27/06/2019, 12:22

Re: Lettura S0 - script python

Messaggioda calida » 23/02/2020, 22:12

Il mio è 1000imp/kwh quindi 1 impulso = 1wh.
ho visto la foto ma non riesco a capire bene i collegamenti. quanto è lungo il tuo cavo tra raspberry e contatore?

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

Lettura S0 - script python

Messaggioda rinoronie » 28/04/2020, 11:35

Ho modificato lo script per usare il PIN 10

Codice: Seleziona tutto

#!/usr/bin/python

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

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)
#GPIO.setup(pin_gpio, GPIO.IN, pull_up_down = GPIO.PUD_UP)

counter = 0
print 'avvio script s0'
while True:
    GPIO.wait_for_edge(pin_gpio, GPIO.RISING)
    counter += 1
    print str(metern_id) + '(' + str(counter*conv) + '*mc)'
    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()

Tramite gpio readall vedo che lo stato del pin 10 cambia correttamente (vedi due immagini)
Immagine
ma lo script non restituisce nulla (non vedo il print)
Immagine
Avete qualche suggerimento?


Torna a “Contatori ad impulsi”

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti