
Prova anche utilizzando il parametro -j20
in questo modo imposti il timeout della comunicazione a 2s, invece di default è impostato a 0,2s
Probabilmente i tempi di risposta con socat e ser2net sono un po' più lunghi e si deve prolungare il tempo di timeout.
Nel comando di lettura specifica sempre tutti i parametri, alle volte il software fà un pò i capricci.
Prova con il seguente comando e vedi se la situazione migliora:
Codice: Seleziona tutto
sdm120c -a1 -b2400 -PN -z10 -j20 /home/pi/ttyS0
Prova anche a mettere a 9600 la velocità del contatore, non si sà mai che con una risposta più veloce le cose funzionino meglio.
Il comando di lettura in tal caso sarà ovviamente:
Codice: Seleziona tutto
sdm120c -a1 -b9600 -PN -z10 -j20 /home/pi/ttyS0
La soluzione che proponi sarebbe veramente ottima, se poi si utilizza un sonoff con espeasy che ha già l'alimentazione a 230V si semplifica anche il cablaggio

In alternativa ho trovato anche questo software
esp8266-ser2net
che dovrebbe fare la stessa cosa di espeasy per quanto riguarda ser2net, ma si carica sull'ESP direttamente con l'IDE di Arduino senza dover cambiare il firmware dell'ESP. Certo l'ESPeasy ha una bella e comoda interfaccia web ma magari questo essendo più "esile" funziona meglio.
PS: Per la porta virtuale mi sembrerebbe più corretto utilizzare /dev/ttyS0