Pagina 1 di 1

SDM120C, MeterN e saturazione Syslog

Inviato: 29/12/2019, 11:25
da vashkenazy
Ciao a tutti, dopo anni di utilizzo di un sdm120c con metern per il monitoraggio dei consumi dell'impianto elettrico monofase domestico, su raspberry pi3, sono passato ad una VM linux Debian 10 su vmware 6.7.
Ora, il sistema funziona, ma noto che vengono registrati ogni secondo molteplici righe di log nei file /var/log/syslog, /var/log/user.log, e /var/log/syslog, identiche, riempiendo in breve tempo la partizione che ospita /var.
Vorrei eliminare questo fenomeno, che peraltro sul raspberry non si verificava (usavo la iso con stretch).

Alcuni spunti:
- Se fermo il servizio rsyslog di debian, non vengono più loggati eventi in nessuno dei tre file indicati, e metern continua a funzionare regolarmente.
- ho provato a modificare il file /var/www/comapps/pooler485.sh, inserendo l'opzione -d 0 alla chiamata sdm120c, ma non sembra dare nessun effetto.

Di seguito un estratto dei log con gli eventi generati: questo pattern viene ripetuto uguale ogni secondo, in pratica ad ogni esecuzione del comando sdm120c.

Dec 29 11:07:20 metern sdm120c[746]: parent: /bin/bash(542)
Dec 29 11:07:20 metern sdm120c[746]: sdm120c -a 1 -b 9600 -z 10 -i -p -v -c -f -g -P N -w 10 -j 10 -q /dev/ttyUSB0
Dec 29 11:07:20 metern sdm120c[746]: optind = 3, argc = 21, c = a, optarg = 1
Dec 29 11:07:20 metern sdm120c[746]: device_address = 1
Dec 29 11:07:20 metern sdm120c[746]: optind = 5, argc = 21, c = b, optarg = 9600
Dec 29 11:07:20 metern sdm120c[746]: speed = 9600, count_param = 0
Dec 29 11:07:20 metern sdm120c[746]: optind = 7, argc = 21, c = z, optarg = 10
Dec 29 11:07:20 metern sdm120c[746]: num_retries = 10, count_param = 0
Dec 29 11:07:20 metern sdm120c[746]: optind = 8, argc = 21, c = i, optarg = (null)
Dec 29 11:07:20 metern sdm120c[746]: import_flag = 1, count_param = 0
Dec 29 11:07:20 metern sdm120c[746]: optind = 9, argc = 21, c = p, optarg = (null)
Dec 29 11:07:20 metern sdm120c[746]: power_flag = 1, count_param = 2
Dec 29 11:07:20 metern sdm120c[746]: optind = 10, argc = 21, c = v, optarg = (null)
Dec 29 11:07:20 metern sdm120c[746]: volt_flag = 1, count_param = 3
Dec 29 11:07:20 metern sdm120c[746]: optind = 11, argc = 21, c = c, optarg = (null)
Dec 29 11:07:20 metern sdm120c[746]: current_flag = 1, count_param = 4
Dec 29 11:07:20 metern sdm120c[746]: optind = 12, argc = 21, c = f, optarg = (null)
Dec 29 11:07:20 metern sdm120c[746]: freq_flag = 1, count_param = 5
Dec 29 11:07:20 metern sdm120c[746]: optind = 13, argc = 21, c = g, optarg = (null)
Dec 29 11:07:20 metern sdm120c[746]: sdm120c -a 1 -b 9600 -z 10 -i -p -v -c -f -g -P N -w 10 -j 10 -q /dev/ttyUSB0
Dec 29 11:07:20 metern sdm120c[746]: optind = 3, argc = 21, c = a, optarg = 1
Dec 29 11:07:20 metern sdm120c[746]: device_address = 1
Dec 29 11:07:20 metern sdm120c[746]: optind = 5, argc = 21, c = b, optarg = 9600
Dec 29 11:07:20 metern sdm120c[746]: speed = 9600, count_param = 0
Dec 29 11:07:20 metern sdm120c[746]: optind = 7, argc = 21, c = z, optarg = 10
Dec 29 11:07:20 metern sdm120c[746]: num_retries = 10, count_param = 0
Dec 29 11:07:20 metern sdm120c[746]: optind = 8, argc = 21, c = i, optarg = (null)
Dec 29 11:07:20 metern sdm120c[746]: import_flag = 1, count_param = 0
Dec 29 11:07:20 metern sdm120c[746]: optind = 9, argc = 21, c = p, optarg = (null)
Dec 29 11:07:20 metern sdm120c[746]: power_flag = 1, count_param = 2
Dec 29 11:07:20 metern sdm120c[746]: optind = 10, argc = 21, c = v, optarg = (null)
Dec 29 11:07:20 metern sdm120c[746]: volt_flag = 1, count_param = 3
Dec 29 11:07:20 metern sdm120c[746]: optind = 11, argc = 21, c = c, optarg = (null)
Dec 29 11:07:20 metern sdm120c[746]: current_flag = 1, count_param = 4
Dec 29 11:07:20 metern sdm120c[746]: optind = 12, argc = 21, c = f, optarg = (null)
Dec 29 11:07:20 metern sdm120c[746]: freq_flag = 1, count_param = 5
Dec 29 11:07:20 metern sdm120c[746]: optind = 13, argc = 21, c = g, optarg = (null)
Dec 29 11:07:20 metern sdm120c[746]: pf_flag = 1, count_param = 6
Dec 29 11:07:20 metern sdm120c[746]: optind = 15, argc = 21, c = P, optarg = N
Dec 29 11:07:20 metern sdm120c[746]: c_parity = N, count_param = 6
Dec 29 11:07:20 metern sdm120c[746]: optind = 17, argc = 21, c = w, optarg = 10
Dec 29 11:07:20 metern sdm120c[746]: yLockWait = 10, count_param = 6
Dec 29 11:07:20 metern sdm120c[746]: optind = 19, argc = 21, c = j, optarg = 10
Dec 29 11:07:20 metern sdm120c[746]: resp_timeout = 10, count_param = 6
Dec 29 11:07:20 metern sdm120c[746]: optind = 20, argc = 21, c = q, optarg = (null)
Dec 29 11:07:20 metern sdm120c[746]: compact_flag = 1, count_param = 6

Grazie,

Andrea

Re: SDM120C, MeterN e saturazione Syslog

Inviato: 30/12/2019, 11:41
da Flane
E' un problema di impostazioni del log della tua VM, perchè sul Raspberry non lo fà.

Cerca di filtrare il log piuttosto che disabilitarlo

Re: SDM120C, MeterN e saturazione Syslog

Inviato: 03/01/2020, 11:28
da vashkenazy
Ciao, al momento ho filtrato tutti gli eventi provenienti dall'sdm120c, ma è una soluzione tampone per evitare di intasare i log. In questo modo però non posso abilitare il normale log del modulo. Ad ogni modo, ho inserito le linee di seguito prima delle varie direttive auth,authpriv. [...] in /etc/rsyslog.conf

if $programname == 'sdm120c' then ~
& stop

Nel raspberry il file citato non aveva però alcun filtro del genere e funzionava tutto. Segnalo che si tratta di messaggi informativi del codice, direi la lettura dei registri, e soprattutto attivando le opzioni di logging proprie dell'sdm120c con l'opzione "-d", le righe di debug che appaiono sono differenti.
Un'altra opzione potrebbe essere il commendo di questi echo direttamente nei sorgenti del codice dell'sdm120c (nel file sdm120c.c c'è la riga 1089 con la chiamata alla funzione log_message che fa quello) , dal momento che su una VM devo comunque ri-compilarlo, si potrebbe fare anche così... forse nelle distro per Raspberry sono stati tolti proprio così?

Se avete altre soluzioni attendo fiducioso :)

Andrea

Re: SDM120C, MeterN e saturazione Syslog

Inviato: 26/02/2020, 2:28
da megamarco83
vashkenazy ha scritto:Ciao a tutti, dopo anni di utilizzo di un sdm120c con metern per il monitoraggio dei consumi dell'impianto elettrico monofase domestico, su raspberry pi3, sono passato ad una VM linux Debian 10 su vmware 6.7.
Ora, il sistema funziona, ma noto che vengono registrati ogni secondo molteplici righe di log nei file /var/log/syslog, /var/log/user.log, e /var/log/syslog, identiche, riempiendo in breve tempo la partizione che ospita /var.
Vorrei eliminare questo fenomeno, che peraltro sul raspberry non si verificava (usavo la iso con stretch)


Ciao Andrea, ti confermo che non è un problema solo di virtual machine, poichè io avevo stretch da anni e non me lo ha mai fatto, ora sono da poco passato a buster, e quindi fatto tutto da zero, e ricompilato il sorgente di sdm120c ed anche io mi trovo continue scritte dei file:
/var/log/syslog
/var/log/user.log
/var/log/messages


.
vashkenazy ha scritto:Alcuni spunti:
- Se fermo il servizio rsyslog di debian, non vengono più loggati eventi in nessuno dei tre file indicati, e metern continua a funzionare regolarmente.
- ho provato a modificare il file /var/www/comapps/pooler485.sh, inserendo l'opzione -d 0 alla chiamata sdm120c, ma non sembra dare nessun effetto.


come hai fatto a fermare rsyslog?

io avevo già il file /var/www/comapps/pooler485.sh con l'opzione -d0 ma non cambia assolutamente nulla, i log li scrive ugualmente.

questi sono gli estratti dei miei log:

/var/log/messages

Codice: Seleziona tutto

Feb 26 01:42:19 raspberrypi sdm120c[3091]: sdm120c v1.3.5.4
Feb 26 01:42:19 raspberrypi sdm120c[3091]: parent: /bin/bash(1915)
Feb 26 01:42:19 raspberrypi sdm120c[3091]: sdm120c -a 1 -b 9600 -z 10 -i -p -v -c -f -g -P N -w 10 -j 10 -d 0 -q /dev/ttyUSB1
Feb 26 01:42:19 raspberrypi sdm120c[3091]: optind = 3, argc = 23, c = a, optarg = 1
Feb 26 01:42:19 raspberrypi sdm120c[3091]: device_address = 1
Feb 26 01:42:19 raspberrypi sdm120c[3091]: optind = 5, argc = 23, c = b, optarg = 9600
Feb 26 01:42:19 raspberrypi sdm120c[3091]: speed = 9600, count_param = 0
Feb 26 01:42:19 raspberrypi sdm120c[3091]: optind = 7, argc = 23, c = z, optarg = 10
Feb 26 01:42:19 raspberrypi sdm120c[3091]: num_retries = 10, count_param = 0
Feb 26 01:42:19 raspberrypi sdm120c[3091]: optind = 8, argc = 23, c = i, optarg = (null)
Feb 26 01:42:19 raspberrypi sdm120c[3091]: import_flag = 1, count_param = 0
Feb 26 01:42:19 raspberrypi sdm120c[3091]: optind = 9, argc = 23, c = p, optarg = (null)
Feb 26 01:42:19 raspberrypi sdm120c[3091]: power_flag = 1, count_param = 2
Feb 26 01:42:19 raspberrypi sdm120c[3091]: optind = 10, argc = 23, c = v, optarg = (null)
Feb 26 01:42:19 raspberrypi sdm120c[3091]: volt_flag = 1, count_param = 3
Feb 26 01:42:19 raspberrypi sdm120c[3091]: optind = 11, argc = 23, c = c, optarg = (null)
Feb 26 01:42:19 raspberrypi sdm120c[3091]: current_flag = 1, count_param = 4
Feb 26 01:42:19 raspberrypi sdm120c[3091]: optind = 12, argc = 23, c = f, optarg = (null)
Feb 26 01:42:19 raspberrypi sdm120c[3091]: freq_flag = 1, count_param = 5
Feb 26 01:42:19 raspberrypi sdm120c[3091]: optind = 13, argc = 23, c = g, optarg = (null)
Feb 26 01:42:19 raspberrypi sdm120c[3091]: pf_flag = 1, count_param = 6
Feb 26 01:42:19 raspberrypi sdm120c[3091]: optind = 15, argc = 23, c = P, optarg = N
Feb 26 01:42:19 raspberrypi sdm120c[3091]: c_parity = N, count_param = 6
Feb 26 01:42:19 raspberrypi sdm120c[3091]: optind = 17, argc = 23, c = w, optarg = 10
Feb 26 01:42:19 raspberrypi sdm120c[3091]: yLockWait = 10, count_param = 6
Feb 26 01:42:19 raspberrypi sdm120c[3091]: optind = 19, argc = 23, c = j, optarg = 10
Feb 26 01:42:19 raspberrypi sdm120c[3091]: resp_timeout = 10, count_param = 6
Feb 26 01:42:19 raspberrypi sdm120c[3091]: optind = 21, argc = 23, c = d, optarg = 0
Feb 26 01:42:20 raspberrypi sdm120c[3129]: sdm120c v1.3.5.4
Feb 26 01:42:20 raspberrypi sdm120c[3129]: parent: /bin/bash(1915)
Feb 26 01:42:20 raspberrypi sdm120c[3129]: sdm120c -a 1 -b 9600 -z 10 -i -p -v -c -f -g -P N -w 10 -j 10 -d 0 -q /dev/ttyUSB1



/var/log/user.log

Codice: Seleziona tutto

Feb 26 01:41:39 raspberrypi sdm120c[1276]: sdm120c v1.3.5.4
Feb 26 01:41:39 raspberrypi sdm120c[1276]: parent: /bin/bash(1915)
Feb 26 01:41:39 raspberrypi sdm120c[1276]: sdm120c -a 1 -b 9600 -z 10 -i -p -v -c -f -g -P N -w 10 -j 10 -d 0 -q /dev/ttyUSB1
Feb 26 01:41:39 raspberrypi sdm120c[1276]: optind = 3, argc = 23, c = a, optarg = 1
Feb 26 01:41:39 raspberrypi sdm120c[1276]: device_address = 1
Feb 26 01:41:39 raspberrypi sdm120c[1276]: optind = 5, argc = 23, c = b, optarg = 9600
Feb 26 01:41:39 raspberrypi sdm120c[1276]: speed = 9600, count_param = 0
Feb 26 01:41:39 raspberrypi sdm120c[1276]: optind = 7, argc = 23, c = z, optarg = 10
Feb 26 01:41:39 raspberrypi sdm120c[1276]: num_retries = 10, count_param = 0
Feb 26 01:41:39 raspberrypi sdm120c[1276]: optind = 8, argc = 23, c = i, optarg = (null)
Feb 26 01:41:39 raspberrypi sdm120c[1276]: import_flag = 1, count_param = 0
Feb 26 01:41:39 raspberrypi sdm120c[1276]: optind = 9, argc = 23, c = p, optarg = (null)
Feb 26 01:41:39 raspberrypi sdm120c[1276]: power_flag = 1, count_param = 2
Feb 26 01:41:39 raspberrypi sdm120c[1276]: optind = 10, argc = 23, c = v, optarg = (null)
Feb 26 01:41:39 raspberrypi sdm120c[1276]: volt_flag = 1, count_param = 3
Feb 26 01:41:39 raspberrypi sdm120c[1276]: optind = 11, argc = 23, c = c, optarg = (null)
Feb 26 01:41:39 raspberrypi sdm120c[1276]: current_flag = 1, count_param = 4
Feb 26 01:41:39 raspberrypi sdm120c[1276]: optind = 12, argc = 23, c = f, optarg = (null)
Feb 26 01:41:39 raspberrypi sdm120c[1276]: freq_flag = 1, count_param = 5
Feb 26 01:41:39 raspberrypi sdm120c[1276]: optind = 13, argc = 23, c = g, optarg = (null)
Feb 26 01:41:39 raspberrypi sdm120c[1276]: pf_flag = 1, count_param = 6
Feb 26 01:41:39 raspberrypi sdm120c[1276]: optind = 15, argc = 23, c = P, optarg = N
Feb 26 01:41:39 raspberrypi sdm120c[1276]: c_parity = N, count_param = 6
Feb 26 01:41:39 raspberrypi sdm120c[1276]: optind = 17, argc = 23, c = w, optarg = 10
Feb 26 01:41:39 raspberrypi sdm120c[1276]: yLockWait = 10, count_param = 6
Feb 26 01:41:39 raspberrypi sdm120c[1276]: optind = 19, argc = 23, c = j, optarg = 10
Feb 26 01:41:39 raspberrypi sdm120c[1276]: resp_timeout = 10, count_param = 6
Feb 26 01:41:39 raspberrypi sdm120c[1276]: optind = 21, argc = 23, c = d, optarg = 0
Feb 26 01:41:40 raspberrypi sdm120c[1308]: sdm120c v1.3.5.4
Feb 26 01:41:40 raspberrypi sdm120c[1308]: parent: /bin/bash(1915)
Feb 26 01:41:40 raspberrypi sdm120c[1308]: sdm120c -a 1 -b 9600 -z 10 -i -p -v -c -f -g -P N -w 10 -j 10 -d 0 -q /dev/ttyUSB1
Feb 26 01:41:40 raspberrypi sdm120c[1308]: optind = 3, argc = 23, c = a, optarg = 1
Feb 26 01:41:40 raspberrypi sdm120c[1308]: device_address = 1
Feb 26 01:41:40 raspberrypi sdm120c[1308]: optind = 5, argc = 23, c = b, optarg = 9600
Feb 26 01:41:40 raspberrypi sdm120c[1308]: speed = 9600, count_param = 0
Feb 26 01:41:40 raspberrypi sdm120c[1308]: optind = 7, argc = 23, c = z, optarg = 10
Feb 26 01:41:40 raspberrypi sdm120c[1308]: num_retries = 10, count_param = 0
Feb 26 01:41:40 raspberrypi sdm120c[1308]: optind = 8, argc = 23, c = i, optarg = (null)
Feb 26 01:41:40 raspberrypi sdm120c[1308]: import_flag = 1, count_param = 0
Feb 26 01:41:40 raspberrypi sdm120c[1308]: optind = 9, argc = 23, c = p, optarg = (null)
Feb 26 01:41:40 raspberrypi sdm120c[1308]: power_flag = 1, count_param = 2
Feb 26 01:41:40 raspberrypi sdm120c[1308]: optind = 10, argc = 23, c = v, optarg = (null)
Feb 26 01:41:40 raspberrypi sdm120c[1308]: volt_flag = 1, count_param = 3



/var/log/syslog

Codice: Seleziona tutto

Feb 26 01:41:39 raspberrypi sdm120c[1276]: sdm120c v1.3.5.4
Feb 26 01:41:39 raspberrypi sdm120c[1276]: parent: /bin/bash(1915)
Feb 26 01:41:39 raspberrypi sdm120c[1276]: sdm120c -a 1 -b 9600 -z 10 -i -p -v -c -f -g -P N -w 10 -j 10 -d 0 -q /dev/ttyUSB1
Feb 26 01:41:39 raspberrypi sdm120c[1276]: optind = 3, argc = 23, c = a, optarg = 1
Feb 26 01:41:39 raspberrypi sdm120c[1276]: device_address = 1
Feb 26 01:41:39 raspberrypi sdm120c[1276]: optind = 5, argc = 23, c = b, optarg = 9600
Feb 26 01:41:39 raspberrypi sdm120c[1276]: speed = 9600, count_param = 0
Feb 26 01:41:39 raspberrypi sdm120c[1276]: optind = 7, argc = 23, c = z, optarg = 10
Feb 26 01:41:39 raspberrypi sdm120c[1276]: num_retries = 10, count_param = 0
Feb 26 01:41:39 raspberrypi sdm120c[1276]: optind = 8, argc = 23, c = i, optarg = (null)
Feb 26 01:41:39 raspberrypi sdm120c[1276]: import_flag = 1, count_param = 0
Feb 26 01:41:39 raspberrypi sdm120c[1276]: optind = 9, argc = 23, c = p, optarg = (null)
Feb 26 01:41:39 raspberrypi sdm120c[1276]: power_flag = 1, count_param = 2
Feb 26 01:41:39 raspberrypi sdm120c[1276]: optind = 10, argc = 23, c = v, optarg = (null)
Feb 26 01:41:39 raspberrypi sdm120c[1276]: volt_flag = 1, count_param = 3
Feb 26 01:41:39 raspberrypi sdm120c[1276]: optind = 11, argc = 23, c = c, optarg = (null)
Feb 26 01:41:39 raspberrypi sdm120c[1276]: current_flag = 1, count_param = 4
Feb 26 01:41:39 raspberrypi sdm120c[1276]: optind = 12, argc = 23, c = f, optarg = (null)
Feb 26 01:41:39 raspberrypi sdm120c[1276]: freq_flag = 1, count_param = 5
Feb 26 01:41:39 raspberrypi sdm120c[1276]: optind = 13, argc = 23, c = g, optarg = (null)
Feb 26 01:41:39 raspberrypi sdm120c[1276]: pf_flag = 1, count_param = 6
Feb 26 01:41:39 raspberrypi sdm120c[1276]: optind = 15, argc = 23, c = P, optarg = N
Feb 26 01:41:39 raspberrypi sdm120c[1276]: c_parity = N, count_param = 6
Feb 26 01:41:39 raspberrypi sdm120c[1276]: optind = 17, argc = 23, c = w, optarg = 10
Feb 26 01:41:39 raspberrypi sdm120c[1276]: yLockWait = 10, count_param = 6
Feb 26 01:41:39 raspberrypi sdm120c[1276]: optind = 19, argc = 23, c = j, optarg = 10
Feb 26 01:41:39 raspberrypi sdm120c[1276]: resp_timeout = 10, count_param = 6
Feb 26 01:41:39 raspberrypi sdm120c[1276]: optind = 21, argc = 23, c = d, optarg = 0
Feb 26 01:41:40 raspberrypi sdm120c[1308]: sdm120c v1.3.5.4
Feb 26 01:41:40 raspberrypi sdm120c[1308]: parent: /bin/bash(1915)
Feb 26 01:41:40 raspberrypi sdm120c[1308]: sdm120c -a 1 -b 9600 -z 10 -i -p -v -c -f -g -P N -w 10 -j 10 -d 0 -q /dev/ttyUSB1
Feb 26 01:41:40 raspberrypi sdm120c[1308]: optind = 3, argc = 23, c = a, optarg = 1
Feb 26 01:41:40 raspberrypi sdm120c[1308]: device_address = 1
Feb 26 01:41:40 raspberrypi sdm120c[1308]: optind = 5, argc = 23, c = b, optarg = 9600
Feb 26 01:41:40 raspberrypi sdm120c[1308]: speed = 9600, count_param = 0
Feb 26 01:41:40 raspberrypi sdm120c[1308]: optind = 7, argc = 23, c = z, optarg = 10
Feb 26 01:41:40 raspberrypi sdm120c[1308]: num_retries = 10, count_param = 0
Feb 26 01:41:40 raspberrypi sdm120c[1308]: optind = 8, argc = 23, c = i, optarg = (null)
Feb 26 01:41:40 raspberrypi sdm120c[1308]: import_flag = 1, count_param = 0



praticamente identici ai tuoi credo....

a me diventavano davvero grandi come dimensioni, crescevano di 1mb al minuto se non di più!!!


per ora ho editato anche io /etc/rsyslog.conf
aggiungendo prima delle direttive auth

Codice: Seleziona tutto

if $programname == 'sdm120c' then ~
& stop


e sembra funzionare

vashkenazy ha scritto:Un'altra opzione potrebbe essere il commendo di questi echo direttamente nei sorgenti del codice dell'sdm120c (nel file sdm120c.c c'è la riga 1089 con la chiamata alla funzione log_message che fa quello) , dal momento che su una VM devo comunque ri-compilarlo, si potrebbe fare anche così... forse nelle distro per Raspberry sono stati tolti proprio così?

bha non credo che le distro per raspberry siano fatte così, io sto usando raspberry pi2 con buster e mi da esattamente lo stesso problema....

ho notato poi una cosa che con stretch non mi faceva:

se da shell do il comando per ttyUSB0 (che per me è l'sdm di produzione):

Codice: Seleziona tutto

pi@raspberrypi:~ $ sdm120c -a 1 -b 9600 -z 10 -i -p -v -c -f -g -P N -w 10 -j 10 -d 0  /dev/ttyUSB0
Voltage: 234.50 V
Current: 0.40 A
Power: 0.00 W
Power Factor: -0.03
Frequency: 50.04 Hz
Import Active Energy: 32946704 Wh
OK


se invece lo do per ttyUSB1 che per me è l'sdm120 su cui monitoro i consumi:
pi@raspberrypi:~ $ sdm120c -a 1 -b 9600 -z 10 -i -p -v -c -f -g -P N -w 10 -j 10 -d 0 /dev/ttyUSB1
pi@raspberrypi:~ $
praticamente non mi da il risultato....ma metern funziona e mi mostra i valori dei consumi senza problemi.
.....lo fa anche a te?
qualcuno ha recentemente compilato i sorgenti di sdm120c?

grazie a tutti.


ps. io ho fatto così:

sudo –s
cd /..
apt-get update
apt-get upgrade
apt-get install libmodbus-dev
cd /home/pi
git clone https://github.com/gianfrdp/SDM120C
cd SDM120C/
make clean && make
sudo cp sdm120c /usr/local/bin/
sudo adduser www-data dialout

questo è il mio pooler485.sh con permessi 755 e proprietario www-data

Codice: Seleziona tutto

#!/bin/bash

ADDRESSES="$1"
BAUD_RATE="$2"
DEVICE="$3"

ADDR_ARR=$(echo $ADDRESSES | tr "," "\n")

while [ true ]; do

    ID=0
    POWER=""
    ENERGY=""
   CHECK=""

    for ADDRESS in $ADDR_ARR
    do
    #((ID++))
    ID=$ADDRESS
   CMD="sdm120c -a ${ADDRESS} -b ${BAUD_RATE} -z 10 -p -i -v -c -f -g -P N -w 10 -j 10 -d 0 -q ${DEVICE}"

    #echo $CMD
   
    VALUE=`$CMD`
    VOLTAGE=$(echo ${VALUE}   | awk '{print $1}')
   CURRENT=$(echo ${VALUE}   | awk '{print $2}')
   POWER=$(echo ${VALUE}     | awk '{print $3}')
   FACTOR=$(echo ${VALUE}    | awk '{print $4}')
   FREQUENCY=$(echo ${VALUE} | awk '{print $5}')
   ENERGY=$(echo ${VALUE}    | awk '{print $6}')
   CHECK=$(echo ${VALUE}      | awk '{print $7}')
   
   if [ "$CHECK" = "OK" ]; then
      echo -e "$ID($POWER*W)\n$ID($ENERGY*Wh)\n${ID}_1($VOLTAGE*V)\n${ID}_2($CURRENT*A)\n${ID}_3($FREQUENCY*Hz)\n${ID}_4($FACTOR*F)" > /dev/shm/metern${ADDRESS}.txt
    else
        if [ -f /dev/shm/metern${ADDRESS}.txt ]; then
            POWER="0.00"
            ENERGY=`sed -n '2p' /dev/shm/metern${ADDRESS}.txt`
         VOLTAGE="0.00"
         CURRENT="0.00"
         FREQUENCY="0.00"
         FACTOR="0.00"
            echo -e "$ID($POWER*W)\n$ENERGY\n${ID}_1($VOLTAGE*V)\n${ID}_2($CURRENT*A)\n${ID}_3($FREQUENCY*Hz)\n${ID}_4($FACTOR*F)" > /dev/shm/metern${ADDRESS}.txt
        fi
    fi
    sleep 0.2

    done

done 

Re: SDM120C, MeterN e saturazione Syslog

Inviato: 21/06/2020, 11:07
da fuzero
In effetti inserire -d 0 non funziona.
Se sdm120c funziona e non volete saturare lo spazio nei log come è successo a me potete modificare sdm120c.c alla riga 99 mettendo
#define DEBUG_SYSLOG 0
ricompilare sdm120c e ricopiarlo in comapps verificando owner e group che siano a www-data.
Ora nel mio syslog non scrive più.
Questa soluzione secondo me è meglio della modifica di rsyslog.conf che potrebbe essere sovrascritto nel caso di qualche aggiornamento.