Skip to content

Issues reading the P1Packet() class #30

@sandnabba

Description

@sandnabba

Hello!

Next issue (after solving #29 ) is that the P1Packet class does not seem to work as expected.

Full output running the CLI:

emil@fasadmatarskapet:~/smeterd $ python3 -m smeterd read-meter --serial-baudrate 115200 --serial-bytesize 8 
DEBUG:smeterd.meter:Open serial connect to /dev/ttyUSB0 with: baudrate=115200, bytesize=8, parity=E, stopbits=1.0, xonxoff=False, timeout=10
INFO:smeterd.meter:New serial connection opened to /dev/ttyUSB0
INFO:smeterd.meter:Start reading lines
DEBUG:smeterd.meter:>> /AUX5U18SEH13F10029
DEBUG:smeterd.meter:>> 
DEBUG:smeterd.meter:>> 0-0:96.1.0(38303034363937333432383437313031303137333437)
DEBUG:smeterd.meter:>> 0-0:1.0.0(221104214240W)
DEBUG:smeterd.meter:>> 1-0:1.8.0(004715.829*kWh)
DEBUG:smeterd.meter:>> 1-0:2.8.0(000000.000*kWh)
DEBUG:smeterd.meter:>> 1-0:3.8.0(000000.024*kvarh)
DEBUG:smeterd.meter:>> 1-0:4.8.0(003708.969*kvarh)
DEBUG:smeterd.meter:>> 1-0:1.7.0(0000.742*kW)
DEBUG:smeterd.meter:>> 1-0:2.7.0(0000.000*kW)
DEBUG:smeterd.meter:>> 1-0:3.7.0(0000.000*kvar)
DEBUG:smeterd.meter:>> 1-0:4.7.0(0000.782*kvar)
DEBUG:smeterd.meter:>> 1-0:21.7.0(0000.156*kW)
DEBUG:smeterd.meter:>> 1-0:22.7.0(0000.000*kW)
DEBUG:smeterd.meter:>> 1-0:41.7.0(0000.440*kW)
DEBUG:smeterd.meter:>> 1-0:42.7.0(0000.000*kW)
DEBUG:smeterd.meter:>> 1-0:61.7.0(0000.144*kW)
DEBUG:smeterd.meter:>> 1-0:62.7.0(0000.000*kW)
DEBUG:smeterd.meter:>> 1-0:23.7.0(0000.000*kvar)
DEBUG:smeterd.meter:>> 1-0:24.7.0(0000.123*kvar)
DEBUG:smeterd.meter:>> 1-0:43.7.0(0000.000*kvar)
DEBUG:smeterd.meter:>> 1-0:44.7.0(0000.470*kvar)
DEBUG:smeterd.meter:>> 1-0:63.7.0(0000.000*kvar)
DEBUG:smeterd.meter:>> 1-0:64.7.0(0000.189*kvar)
DEBUG:smeterd.meter:>> 1-0:32.7.0(232.0*V)
DEBUG:smeterd.meter:>> 1-0:52.7.0(234.5*V)
DEBUG:smeterd.meter:>> 1-0:72.7.0(236.1*V)
DEBUG:smeterd.meter:>> 1-0:31.7.0(001.0*A)
DEBUG:smeterd.meter:>> 1-0:51.7.0(002.8*A)
DEBUG:smeterd.meter:>> 1-0:71.7.0(001.0*A)
DEBUG:smeterd.meter:>> !C956
INFO:smeterd.meter:Done reading one packet (containing 31 lines)
DEBUG:smeterd.meter:Total lines read from serial port: 31
DEBUG:smeterd.meter:Constructing P1Packet from raw data
INFO:smeterd.meter:Closing connection to `/dev/ttyUSB0`.
Traceback (most recent call last):
  File "/usr/lib/python3.9/runpy.py", line 197, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/usr/lib/python3.9/runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "/home/emil/smeterd/smeterd/__main__.py", line 3, in <module>
    cli()
  File "/home/emil/.local/lib/python3.9/site-packages/click/core.py", line 829, in __call__
    return self.main(*args, **kwargs)
  File "/home/emil/.local/lib/python3.9/site-packages/click/core.py", line 782, in main
    rv = self.invoke(ctx)
  File "/home/emil/.local/lib/python3.9/site-packages/click/core.py", line 1259, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/home/emil/.local/lib/python3.9/site-packages/click/core.py", line 1066, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/home/emil/.local/lib/python3.9/site-packages/click/core.py", line 610, in invoke
    return callback(*args, **kwargs)
  File "/home/emil/smeterd/smeterd/cli/read_meter.py", line 74, in read_meter
    ('Total electricity consumed (high, {})'.format(elec_unit), int(packet['kwh']['high']['consumed'] * elec_unit_factor[elec_unit])),
TypeError: unsupported operand type(s) for *: 'NoneType' and 'int'

If I'm using the --raw flag it just prints the packet and exits successfully.

I'm also trying to use the lib as a module, but I'm missing some examples of how to access the class variables.

The following works:

packet = meter.read_one_packet()

# Print L1 voltage:
print(packet.__getitem__('instantaneous')['l1']['volts']

But first using a function, then digging into a list feels a bit complicated. Is there a better way (using (vars() perhaps?), or is there any example somewhere?

Hope you can point me in the right direction, I'm not a Python expert. :)

Best regards

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions