Open Source Smart Meter with focus on privacy - you remain the master of your data.

Overview

volkszaehler.org

Build

volkszaehler.org is a free smart meter implementation with focus on data privacy.

Demo

demo.volkszaehler.org

Screenshot

Quickstart

The easiest way to try out volkszaehler is using Docker:

docker-compose up -d

which will create a database, initialize it and start volkszaehler at port 8080.

Installation

For local installation, run the install script from the shell:

wget https://raw.github.com/volkszaehler/volkszaehler.org/master/bin/install.sh
bash install.sh

Or follow the detailed installation instructions at http://wiki.volkszaehler.org/software/middleware/installation

Documentation

Support

Repository structure

volkszaehler.org/
 |_ etc/                    configuration files
 |_ bin/                    scripts for imports, installation etc.
 |_ htdocs/                 web UI
 |   \_ middleware.php      middleware
 |
 |_ lib/                    middleware libraries
 |_ test/                   unit tests
 \_ misc/
     |_ docs/               documentation
     |_ graphics/           graphics for docs, etc.
     \_ sql/                database schema dumps
         \_ demo/           demo data

Copyright

Copyright © 2011-2020 volkszaehler.org Licensed under the GNU General Public License Version 3 (https://opensource.org/licenses/GPL-3.0).

Comments
  • [live updates] Werte verschwinden aus dem Frontend

    [live updates] Werte verschwinden aus dem Frontend

    Ich habe das Update mit gut pull gemacht. Die Werte erscheinen alle wie gewohnt. Wenn der erste live-Update erfolgt, verschwinden die Werte Zeile für Zeile und kommen auch nicht mehr wieder.

    Bug 
    opened by BerndGewehr 53
  • PHP 7.4 ist auf der Serverseite und da tauchen erneut irreführende Fehlermeldungen auf:

    PHP 7.4 ist auf der Serverseite und da tauchen erneut irreführende Fehlermeldungen auf:

    PHP 7.4 ist auf der Serverseite und da tauchen erneut irreführende Fehlermeldungen auf: grafik für die Software aus 2018 die bisher lief und konfiguriert ist. und grafik für die Software mit aktuellem Stand, die nicht konfiguriert ist. Mein Problem ist nun wie ich von diesen beiden Meldungen aus zu einem funktionierenden System komme.

    Originally posted by @WolfgangFahl in https://github.com/volkszaehler/volkszaehler.org/issues/607#issuecomment-703222327

    Question 
    opened by WolfgangFahl 40
  • abonnierte öffentliche Kanäle sind inaktiv

    abonnierte öffentliche Kanäle sind inaktiv

    seit #560 sind Kanäle, die über Kanal hinzufügen > Öffentliche Kanäle abonniert werden, zunächst nicht aktiv. Ein Reload des Frontends behebt das. Hinzufügen via Private Kanäle mittels UUID abonniert den gleichen Kanal direkt aktiv.

    Bug 
    opened by frankrichter 38
  • Just running push-server and middleware but the total values of the meters are not in sync with last vzlogger push

    Just running push-server and middleware but the total values of the meters are not in sync with last vzlogger push

    Observered after two days. I have beside others three channels for Bezug, Einspeisung, and Erzeugung and are all three electric meters and with correct initial values and scale factor 1000 set for the electric power here. The first two channels are done with sml and the third with exec protocol.

    Comparing the vzlogger log file with the last entries shows that the Gesamt/total consumptions are not in sync with those shown by the middleware server. Currently shown for Bezug/chn0 is 427 kWh, but actual value is 432769.20 W, for Einspeisung/chn1 it is 61.0 kWh, but value is 61140.30 W (that is beside the missing rounding for initial value OK ... not enough sun for Einspeisung only for Eigenverbrauch), and then for Erzeugung/chn4 it is 458 kWh, but actual value is 460057.00 W

    The resulting curves seems to be correct and are perfect reflected by e.g. current Wirkleistung of both electric smartmeter and inverted rectifier

    opened by bitstreamout 33
  • Misc Apache configuration

    Misc Apache configuration

    I have updated my Volkszähler installation following the instructions at:

    http://wiki.volkszaehler.org/howto/git

    The first issue I encountered was a http 500 and an entry in the apache 2 error log:

    Mon Apr 17 07:58:05.353126 2017] [core:alert] [pid 13522] [client 2.0.0.102:56945] /var/www/volkszaehler.org.2017/.htaccess: Require not allowed here

    to fix this I had to add Authconfig to the AllowOverride options in the vz configuration of apache:

    Alias /vz2017/  "/var/www/volkszaehler.org.2017/htdocs/"
    <Directory /var/www/volkszaehler.org.2017>
      Options Indexes FollowSymLinks MultiViews
      AllowOverride FileInfo Limit Options Indexes Authconfig
      Require all granted
    </Directory>
    

    you might want to add this info to the documentation.

    The next issue is a display of "Network Error" - Internal Server Error dialog. If I ignore this I get Javascript Runtime Error "TypeError: vz.capabilities.definitions.entities is undefined"

    I have cleared the vz_ cookie and the cache to no avail.

    Please advise

    Help Wanted 
    opened by WolfgangFahl 28
  • Responsive ui

    Responsive ui

    Fix https://github.com/volkszaehler/volkszaehler.org/issues/495 and add some responsive UI elements for smaller screen sizes.

    To hide UI elements add their CSS selectors:

    ?hide=#footer,#header,#accordion
    

    To get rid of the options section only:

    ?hide=h3:not(:first-of-type)
    

    To add UUIDS:

    &uuid[]=abc&uuid[]=def
    
    Enhancement 
    opened by andig 27
  • Vzpushserver startet nicht

    Vzpushserver startet nicht

    Fehlermeldung: pi@volkszaehler:~ $ sudo /usr/bin/php /var/www/volkszaehler.org/misc/tools/push-server.php Volkszaehler Push Server Listening for updates on 5582. Clients may connect at 8082. PHP Fatal error: Call to undefined function GuzzleHttp\Psr7\parse_request() in /var/www/volkszaehler.org/vendor/react/http/src/RequestParser.php on line 98

    Information needed 
    opened by BerndGewehr 24
  • Frontend: h2#title and cursor should honor xaxis.timezone

    Frontend: h2#title and cursor should honor xaxis.timezone

    After I had successfully set up the frontend on my intranet server (using my Raspberry Pi to POST meter reading to it), I noticed that the frontend was using local times -- while my server runs on UTC.

    I found a config item $config['timezone'] in volkszaehler.conf.php which I changed to $config['timezone'] = 'UTC'; but still the frontend continues to use local time.

    This applies to the frontend code which I downloaded today from GitHub (can't easily find the build?!).

    Enhancement 
    opened by ralfbergs 24
  • Copyright and license

    Copyright and license

    In general this project claims copyright. Good.

    As far as i know one should add a time frame for the copyright notice indicating a range between first and last code change. For this project: 2011 to 2017.

    This should be use on user interface (frontend footer), documentation (readme) and source code incl. unit tests. All these elements of a project should have a notice that each element (file) is part of the project incl. a project-level (global) copyright range. Do not put other copyright ranges at individual file-level.

    This PR adds missing copyright notices to some files and normalizes copyright ranges (years) to a global project-level standard (developer-facing and user-facing). Applying this PR now makes sence even when 2018 is just a view days away (update to 2018 is a simple string operation after applying this PR)

    opened by christian-weiss 23
  • Implement Symfony HTTPKernelInterface

    Implement Symfony HTTPKernelInterface

    This PR is a major rewrite of the basis Volkszaehler middleware request/response infrastructure.

    Instead of using PHP global request variables and outputting results directly to the browser, all input/output is channeled through the defacto-standard Symfony HTTPFoundation Request and Response components (http://symfony.com/doc/current/components/http_foundation/introduction.html).

    To structure this process, input/output follows the design paradigm of Symfony HTTPKernel (http://symfony.com/doc/current/components/http_kernel/introduction.html).

    The main benefit of this rewrite is the greatly improved testability of middleware functionality (plus additional tests implemented). Future uses may include stackability of Volkszaehler middleware in other applications (https://igor.io/2013/02/02/http-kernel-middlewares.html).

    To keep the overhead and especially implementation complexity and learning curve of the additional libraries used low, this require does NOT use a microframework. However, porting Volkszaehler to e.g. Silex can now be done with minor additional changes.

    NOTE Though these changes have undergone testing they cannot be considered production quality yet.

    Does fix https://github.com/volkszaehler/volkszaehler.org/issues/199

    opened by andig 22
  • Allow zooming to period start/end

    Allow zooming to period start/end

    New behaviour: when on right boundary, zooming to hour/day/week etc will adjust left boundary to start of period. I zooming immediately again to same period, left boundary is adjusted so chart shows timestamp of period and is no longer fixed to period start.

    Enhancement 
    opened by andig 20
  • Anzeige gelöschter Datensätze ?!

    Anzeige gelöschter Datensätze ?!

    Datensätze die ich in der Datenbank gelöscht habe werden im frontend noch angezeigt. Es muss irgendwo noch eine Art Cache geben. Kann man den löschen ?

    opened by dl6dbh 1
  • Emptying input in virtual sensor keeps it in web frontend

    Emptying input in virtual sensor keeps it in web frontend

    When creating a virtual sensor channel with 2 inputs, and then emptying the second input value, the value is still visible in the web frontend - until the frontend is reloaded.

    Steps to reproduce:

    1. Create new channel of type "Verbrauchssensor (virt.)"
    2. Fill values for "Eingang 1" and "Eingang 2" and save
    3. Edit the channel and remove the value for "Eingang 2" and save
    4. A PATCH request is sent, removing the value. The object data returned by the server do not contain "in2" anymore.
    5. The edit window closes automatically
    6. Click the channel's info button. "Eingang 2" is still shown and still has the value that was just deleted. <-- this is a bug
    7. Click the edit button and remove the value again in the "Eingang 2" field. Save.
    8. The PATCH request fails with status code 400: Object { message: "Entity has no property: 'in2'", type: "Exception", code: 0, … } <-- this is a bug
    9. Reload the tab in the browser
    10. Open the channel's info popup: The "Eingang 2" value is gone.

    Somehow the web interface keeps the in2 field internally.

    opened by cweiske 0
  • vzcompress uses unknown id field for data table

    vzcompress uses unknown id field for data table

    I started with a clean install of volkszaehler earlier this year and migrated the data from my old server using dbcopy.

    Since then I did not get the vzcompress2 script to work. Here is the output

    12/02/2021 04:51:45 PM - SQL:SELECT entities.*, properties.value AS name FROM entities INNER JOIN properties ON properties.entity_id = entities.id WHERE properties.pkey = ? AND class = ?
    12/02/2021 04:51:45 PM - Processing channel 13df0000-097b-11eb-a092-174646e1882d (Bathroom)...
    12/02/2021 04:51:45 PM - SQL:SELECT MIN(timestamp) AS min, MAX(timestamp) AS max FROM data WHERE channel_id = ? AND timestamp <= ? AND timestamp > ?
    12/02/2021 04:51:45 PM - Skipping compression pass for data points between 11/02/2021 04:51:45 PM and 11/25/2021 04:51:45 PM using a 60 seconds window: No data points found
    12/02/2021 04:51:45 PM - SQL:SELECT MIN(timestamp) AS min, MAX(timestamp) AS max FROM data WHERE channel_id = ? AND timestamp <= ? AND timestamp > ?
    12/02/2021 04:51:45 PM - Processing: 06/05/2021 05:56:28 PM - 06/05/2021 06:01:28 PM (0%)... 08:46:07 PM using a 300 seconds window
    12/02/2021 04:51:45 PM - SQL:SELECT AVG(value) AS newval, COUNT(value) AS datapoints, MAX(id) AS updateid FROM data WHERE channel_id = ? AND timestamp > ? AND timestamp <= ?PHP Fatal error: Uncaught PDOException: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'id' in 'field list' in /home/scripts/volkszaehler.org/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOStatement.php:112
    

    I have added an additional debug output to see the actual SQL. And that leaves me puzzled: data table does not have an id field. The structure is

    channel_id PrimaryIndex int(11) No None
    timestamp Primary bigint(20) No None
    value double No None
    

    Which seems to be the intended structure. When executing

    bin/doctrine orm:schema-tool:create --dump-sql > database.sql This is the create for data:

    CREATE TABLE data (timestamp BIGINT NOT NULL, channel_id INT NOT NULL, value DOUBLE PRECISION NOT NULL, INDEX IDX_ADF3F36372F5A1AA (channel_id), PRIMARY KEY(channel_id, timestamp)) DEFAULT CHARACTER SET utf8 COLLATEutf8_unicode_ciENGINE = InnoDB;

    Looking at an sql dump of my previous server it did seem to have an id field before.

    Am I missing something? Was the table structure changed but vzcompress was not updated?

    Bug 
    opened by finnjet 6
  • Optional deactivate uuid from url

    Optional deactivate uuid from url

    By default a uuid added by url is activated. When the uuid is a group this might me unwanted. The parameter active defines if the uuid is active or not. The default value is not changed. Deactivated when set active to FALSE, F, NO, or 0 (case insensitive) Example: https://demo.volkszaehler.org/?uuid=6836dd20-00d5-11e0-bab1-856ed5f959ae&active=0

    opened by Feilner 0
Releases(1.0)
  • 1.0(Mar 11, 2019)

  • 0.7(Dec 29, 2017)

    First version of volkszaehler with exclusive support for PHP ^7.0. Notable changes:

    • upgraded dependencies for php-pm and reactphp libraries
    • updated license description
    • various fixes and enhancements
    Source code(tar.gz)
    Source code(zip)
  • 0.6(Sep 15, 2017)

    This is the last version of volkszaehler that will support PHP 5.6. It provides numerous bug fixes and enhancements, most notably:

    • improved frontend user interface
    • realtime frontend updates with push server
    • high performance persistent middleware for high throughput scenarios
    • the middleware API has remained largely unchanged (see https://wiki.volkszaehler.org/development/api/reference)
    Source code(tar.gz)
    Source code(zip)
  • 0.5(Sep 3, 2016)

  • 0.4-final(Sep 8, 2015)

  • 0.3-final(Jun 23, 2015)

Owner
volkszaehler.org project
Open Source Smart Metering platform
volkszaehler.org project
A privacy respecting free as in freedom meta search engine for Google and popular torrent sites

A privacy respecting free as in freedom meta search engine for Google and popular torrent sites

null 329 Dec 27, 2022
A htaccess boilerplate for all Magento Community installations. Features focus on speed, SEO and security.

magento-htaccess A htaccess boilerplate for all Magento Community installations. Features focus on speed, SEO and security. The file should be placed

Creare 114 Sep 18, 2022
A simple PHP package for sending messages to Slack, with a focus on ease of use and elegant syntax.

Slack for PHP A simple PHP package for sending messages to Slack with incoming webhooks, focussed on ease-of-use and elegant syntax. Note: this packag

Regan McEntyre 1.2k Oct 29, 2022
Medical Master or "Medic-M" was built to reduce the hassle of buying medicine, provide medicine to the sick in a short time. It is an HTML, CSS, JAVASCRIPT and PHP based system.

Medical Master (Medic-M) | WELCOME TO Medic-M(MEDICAL MASTER) | | Introduction | Medical Master or "Medic-M" was built to reduce the hassle of buying

NILOY KANTI PAUL 5 Oct 8, 2022
Re-skinning BotCloaker enables you to add a SMART button at the end of all posts on your blog.

Re-skinning BotCloaker Wordpress Plugin Re-skinning BotCloaker enables you to add a SMART button at the end of all posts on your blog. Re-skinning Bot

Mohammed cha 120 Nov 11, 2022
Smart File System - Use SmartFileInfo with useful methods that you need everyday

Smart File System - Use SmartFileInfo with useful methods that you need everyday

null 78 Dec 22, 2022
Track your farming and pool performance on the Binance Smart Chain

farm.army - Frontend Track your farming and pool performance on the Binance Smart Chain. Tech Stack PHP 8 + Symfony node.js + npm (Webpack, Symfony en

farm.army 28 Sep 3, 2022
Iran decoration platform is an open source Php web application where you can find your job as a freelancer working in people home in decoration positions and others.

Iran-Decoration Platform Iran decoration platform is an open source Php web application where you can find your job as a freelancer working in people

AmirHossein Mohammadi 8 Dec 14, 2022
Open Source Data & Experience Management Platform (PIM, MDM, CDP, DAM, DXP/CMS & Digital Commerce)

Pimcore - Open Source Data & Experience Management Platform: PIM, MDM, CDP, DAM, DXP/CMS & Digital Commerce

Pimcore 2.7k Jan 4, 2023
Melek Berita Backend is a service for crawling data from various websites and processing the data to be used for news data needs.

About Laravel Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experie

Chacha Nurholis 2 Oct 9, 2022
A proof-of-concept parser for the SMART Health Cards format.

SMART Health Cards parser A proof-of-concept parser for the SMART Health Cards format. This is not intended for production use. I just hacked this tog

Mikkel Paulson 55 Jul 31, 2022
A smart way of seeding tables in Laravel

SmartSeeder for Laravel For Laravel 5, please use the 5.0 branch! For Laravel 4, please use the 4.2 branch! Seeding as it is currently done in Laravel

Jordan Lapp 190 Oct 6, 2022
This packages enables the ability to serve file streams in a smart way

A blade component for easy image manipulation Want to serve private hosted images without the need to code your own logic ? Want to resize your images

Dieter Coopman 205 Dec 19, 2022
Starless Sky is a network protocol for secure identities, providing the use of assymetric identities, public information, end-to-end messaging and smart contracts

Descentralized network protocol providing smart identity over an secure layer. What is the Starless Sky Protocol? Starless Sky is a network protocol f

Starless Sky Protocol 3 Jun 19, 2022
This project is based on the problem statement provided by the Minstry of HRD (India) for Smart India Hackathon '17.

This project is based on the problem statement provided by the Minstry of HRD (India) for Smart India Hackathon '17. As per the given problem statement, we need to solve the problem of bunching of marks at certain level, and problem of high scorers being at disadvantageous position due to lower competitive percentile.

Saransh Dave 4 Oct 13, 2022
An open source tool that lets you create a SaaS website from docker images in 10 minutes.

简体中文 Screenshots for members ( who subscribe the plan ) for admin ⚠️ This document was translated into English by deepl and can be improved by PR An o

Easy 669 Jan 5, 2023
Nuber is an open source container management platform it provides a front end to manage your own cloud infrastructure, using Linux Containers virtualization technology

Nuber is an open source container management platform it provides a front end to manage your own cloud infrastructure, using Linux Containers virtualization technology

null 33 Dec 14, 2022