Python は初めてで、Raspberry Pi と Python を使用してスマート メーターの P1 ポートを読み取りたいと考えています。問題: 入力が一部のコンポーネントが酔っているように見えます。修正するのはかなり簡単だと思いますが、数時間検索して試した後、助けを求めなければなりませんでした.
P1ポートをCUなどで読み込めば問題ないのでハードウェアなどはOKです。dx.com のシリアルから USB へのコンバーターの使用 ( this one )
コマンドと出力 (の一部): cu -l /dev/ttyUSB0 -s 9600 --parity=none
0-0:96.1.1(205A414246303031363631323463949271)
1-0:1.8.1(03118.000*kWh)
ただし、Python から読み込もうとすると、入力が意味不明になります (ただし、少なくとも一貫性があります)。
0-0:96.±.±(²05A´±´²´630303±39363±3²3´639·3±3²©
±-0:±.¸.±(03±±¸.000ªë×è©
これを修正する方法は?私が使用しているコードは次のとおりです。
import serial
ser = serial.Serial()
ser.baudrate = 9600
ser.bytesize=serial.SEVENBITS
ser.parity=serial.PARITY_EVEN
ser.stopbits=serial.STOPBITS_ONE
ser.xonxoff=0
ser.rtscts=0
ser.timeout=20
ser.port="/dev/ttyUSB0"
ser.close()
ser.open()
print ("Waiting for P1 output on " + ser.portstr)
counter=0
#read 20 lines
while counter < 20:
print ser.readline()
counter=counter+1
try:
ser.close()
print ("Closed serial port.")
except:
sys.exit ("Couldn't close serial port.")
すでにボーレートなどをいじってみましたが、違いはありません。