個人的な闇の事件簿

ロシアの文豪ドストエフスキーの罪と罰。殺人を犯す主人公は自らを正当化する為こう考えた。選ばれた非凡人は、新しい社会の成長のためなら、社会道徳を踏み外す権利を持つ

pymodbus + PEACEFAIR PZEM-017 サンプル

 外部シャント無しのPEACEFAIR PZEM-013も基本は(たぶん)同じ。

 RS485はUSBドングル。

 

#! /usr/bin/python3

import pymodbus
import datetime

from pymodbus.client.sync import ModbusSerialClient as ModbusClient

client = ModbusClient(method='rtu', port='/dev/ttyUSB0',
                      baudrate=9600, parity='N', stopbits=2, bytesize=8, timeout=1)

 

connection = client.connect()

while True:
    time.sleep(1)
    param = client.read_input_registers(0, 8, unit=0x01).registers
    vv = param[0]/100
    cv = param[1]/100
    pv = (param[2]+param[3]*0x10000)/10
    ev = param[4]+param[5]*0x10000
    hvas = param[6]
    lvas = param[7]
    print(datetime.datetime.now(), end='')
    print(" {:6.2f}V {:6.2f}A {:6.2f}W {:5d}Wh VAS H{:1} L{:1}".format(
        vv, cv, pv, ev, hvas, lvas))

出力例:

2023-02-13 12:15:48.552119  18.75V   0.83A  15.50W   236Wh VAS H0 L0

.

.

.

 シャント設定をしていないとあるがとりあえずなんで。

 time.sleep(1)を取ると9回/s前後で取得できる。

 ModbusClient→Connect→がわりと時間がかかる。

 Voltage/Current/Power Valueは読み出した時にしか参照できないが、Energy Valueは本体に給電されている限りは自立して積算される。電源が切れてもResetしない限りは保持されるっぽい

 

 実験ではソーラーパネルとチャージコントローラーの間につけて見てるので、夜に停電すると参照できなくなるのが難。USBのテストポートがあるが、接続すると値が変わってしまう事があって今のところ謎。