Vi invito a leggere la prima discussione a questo link: http://www.flanesi.it/forum/viewtopic.php?f=4&t=383#p2055 per capire di cosa si tratta e se risulta essere il vostro problema.
RIASSUMENDO
In alcuni casi la lettura tramite pooler485 non è precisa specie per il valore della corrente riportato. Durante il ciclo di lettura che avviene ogni 5 sec per default il risultato dei dati torna sballato 8 volte su 10. es:
2(566.90*W)
2(102801*Wh)
2_1(231.00*V)
2_2(231.00*A)
2_3(50.00*Hz)
2_4(0.99*F)
Come potete vedere tale valore sballato è il valore della Tensione (2_1) spalmato sulla variabile Corrente successiva (2_2) a volte anche sulla (2_3).
La maggior parte delle installazioni statisticamente non accusano questo problema ma sappiate che può succedere.
In attesa di individuare e risolvere per tutti il problema potete modificare il pooler485 come da codice sotto riportato:
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=""
for ADDRESS in $ADDR_ARR
do
#((ID++))
ID=$ADDRESS
#CMD="sdm120c -a ${ADDRESS} -b ${BAUD_RATE} -z 10 -i -p -v -c -f -g -P N -q ${DEVICE}"
CMD="sdm120c -a ${ADDRESS} -P N -b ${BAUD_RATE} -q ${DEVICE}"
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 $6}')
FREQUENCY=$(echo ${VALUE} | awk '{print $8}')
ENERGY=$(echo ${VALUE} | awk '{print $9}')
if [ "$ENERGY" != "0" -a x"$ENERGY" != x -a "$POWER" != "0" -a x"$POWER" != x ]; 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)" > /run/shm/metern${ADDRESS}.txt
fi
sleep 8s
done
done
Con questa versione di pooler l'interrogazione del contatore modus richiede la lista intera dei valori e il risultato risulta corretto:
Codice: Seleziona tutto
sudo -u www-data sdm120c -a 2 -P N -b 9600 -q /dev/ttyUSB1
241.05 2.04 434.34 492.45 -232.07 0.88 -28.12 50.01 206644 66223 272867 8383 61677 70060 OK
Vi consiglio di impostare lo Sleep a 8 secondi per ridurre quasi a zero gli errori di lettura.
A questo punto x chi accusa il problema, lo invito ad effettuare un po' di DEBUG come già lo sto facendo io magari insieme troviamo il motivo del fastidioso problema: interfaccia usb? Bug di sdm120c?, bug del protocollo modus? bug di alcuni modelli di contatori SDM?
Buon Lavoro!