Code Monkey home page Code Monkey logo

pymeterreader's People

Contributors

schwaneberg avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

pymeterreader's Issues

thanks!

Just wanted to leave a word of appreciation! You project significantly simplifies the setup to monitor the house holds power consumption. SML parsing of our Holley DTZ541-ZEBA works out of the box. The integrated metrics endpoint allows prometheus to directly scrape the data. I really appreciate that I don't have to install and setup the volkszaehler stack.

Thanks!

Error while starting pymeterreader-wizard

Hello,

getting this error while starting the wizard.

$ sudo pymeterreader-wizard
Detecting meters...
ERROR:pymeterreader.device_lib.serial_reader:Uncaught Exception while tyring to detect SML Meter! Please report this to the developers.
Traceback (most recent call last):
  File "/usr/local/bin/pymeterreader-wizard", line 10, in <module>
    sys.exit(Wizard())
  File "/usr/local/lib/python3.7/dist-packages/pymeterreader/wizard/ncui.py", line 32, in __init__
    self.meters = detect()
  File "/usr/local/lib/python3.7/dist-packages/pymeterreader/wizard/detector.py", line 14, in detect
    devices.extend(SmlReader.detect())
  File "/usr/local/lib/python3.7/dist-packages/pymeterreader/device_lib/meter_sml.py", line 82, in detect
    return SmlReader("loop://")._detect_serial_devices(**kwargs)
  File "/usr/local/lib/python3.7/dist-packages/pymeterreader/device_lib/serial_reader.py", line 90, in _detect_serial_devices
    device = serial_reader_implementation._discover()
  File "/usr/local/lib/python3.7/dist-packages/pymeterreader/device_lib/meter_sml.py", line 88, in _discover
    sample = self.fetch()
  File "/usr/local/lib/python3.7/dist-packages/pymeterreader/device_lib/base.py", line 83, in fetch
    sample = self._fetch_untracked()
  File "/usr/local/lib/python3.7/dist-packages/pymeterreader/device_lib/meter_sml.py", line 50, in _fetch_untracked
    serial_port.read_until(expected=self.__START_SEQ)
TypeError: read_until() got an unexpected keyword argument 'expected'

Raspberry Pi 3 Model B Rev 1.2
Raspbian GNU/Linux 10 (buster)
Linux vzlogger 4.19.97-v7+ #1294 SMP Thu Jan 30 13:15:58 GMT 2020 armv7l GNU/Linux

vzlogger mini webserver

vzlogger has a "mini webserver" which outputs the basic data as JSON. See documentation:
https://wiki.volkszaehler.org/software/controller/vzlogger/vzlogger_conf_parameter#local

The config in /etc/vzlogger.json looks like this:

    // Build-in HTTP server
    "local": {
        "enabled": true,   // enable local HTTPd for serving live readings
        "port": 8088,       // TCP port for local HTTPd
        "index": true,      // provide index listing of available channels if no UUID was requested
        "timeout": 0,      // timeout for long polling comet requests in seconds (0 disables comet)
        "buffer": 0        // HTTPd buffer configuration for serving readings, default -1
                            //   >0: number of seconds of readings to serve
                            //   <0: number of tuples to server per channel (e.g. -3 will serve 3 tuples)
    },

The output looks like this:

image

{ "version": "0.8.0", "generator": "vzlogger", "data": [ { "uuid": "6836dd20-00d5-11e0-bab1-856ed5f959ae", "last": 1674163666444, "interval": -1, "protocol": "sml", "tuples": [ [ 1674163654443, 14219936.660600001 ] ] }, { "uuid": "6836dd20-00d5-11e0-bab1-856ed5f959af", "last": 1674163666444, "interval": -1, "protocol": "sml", "tuples": [ [ 1674163654443, 15875850.842700001 ] ] }, { "uuid": "6836dd20-00d5-11e0-bab1-856ed5f959ad", "last": 1674163666444, "interval": -1, "protocol": "sml", "tuples": [ [ 1674163654443, 474.74000000000001 ] ] }, { "uuid": "6836dd20-00d5-11e0-bab1-856ed5f959be", "last": 1674163666271, "interval": -1, "protocol": "sml", "tuples": [ [ 1674163654270, 22365376.540800001 ] ] }, { "uuid": "6836dd20-00d5-11e0-bab1-856ed5f959bf", "last": 0, "interval": -1, "protocol": "sml" }, { "uuid": "6836dd20-00d5-11e0-bab1-856ed5f959bd", "last": 1674163666271, "interval": -1, "protocol": "sml", "tuples": [ [ 1674163654270, 2.2250738585072014e-308 ] ] } ] }

In this case I have 6 UUIDs with values. Values starting with 1674 are unix timestamps in milliseconds.

It would be awesome to also have this JSON output in pymeterreader, then I could replace the existing vzlogger, and additionally have data for Prometheus/Grafana (which I currently don't have, because vzlogger does not output data in OpenMetrics format ๐Ÿ˜„).

For vzlogger integration in EVCC it would be nice if the JSON is outputted when calling the URL "/", and the OpenMetrics data should be outputted when calling "/metrics", which is the de-facto standard for OpenMetrics, see:
https://github.com/OpenObservability/OpenMetrics/blob/main/specification/OpenMetrics.md

This endpoint SHOULD be called "/metrics"

It would be really great to see the JSON output, then it's a true replacement for vzlogger! ๐Ÿ‘

Erorr while starting pymeterreader-wizard

Traceback (most recent call last):
  File "/usr/local/bin/pymeterreader-wizard", line 5, in <module>
    from pymeterreader.wizard.ncui import Wizard
  File "/usr/local/lib/python3.9/dist-packages/pymeterreader/wizard/ncui.py", line 12, in <module>
    from cursesmenu import CursesMenu
  File "/usr/local/lib/python3.9/dist-packages/cursesmenu/__init__.py", line 1, in <module>
    from . import items
  File "/usr/local/lib/python3.9/dist-packages/cursesmenu/items/__init__.py", line 2, in <module>
    from .exit_item import ExitItem
  File "/usr/local/lib/python3.9/dist-packages/cursesmenu/items/exit_item.py", line 5, in <module>
    from cursesmenu.curses_menu import CursesMenu
  File "/usr/local/lib/python3.9/dist-packages/cursesmenu/curses_menu.py", line 12, in <module>
    from deprecated import deprecated
ModuleNotFoundError: No module named 'deprecated'

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.