Inhaltsverzeichnis
Frequently Asked Questions
Zähler
Wird mein Zähler denn schon unterstützt?
Am Besten wirfst Du einen Blick in die Kategorie Verbrauchsmessgeraete.
Meine Zählerausgabe weicht vom Beispiel im Wiki ab!
Energiezähler werden von den Herstellern auf Wunsch der Messstellenbetreiber kundenspezifisch konfiguriert, daher kann es zu unterschiedlichen Ausgaben kommen.
Sieh auch: https://wiki.volkszaehler.org/faq#mein_eh-zaehler_gibt_nur_volle_kwh_oder_keine_leistung_aus
Woher weiß ich, ob mein Zähler das Protokoll "sml" oder das Protokoll "d0" (oder DIN-EN 62056-21) spricht?
Das ist ganz einfach. Im Gegensatz zu sml ist d0 in ASCII codiert. Die Ausgabe sieht dann eben so, so oder so aus. sml hingegen ist binär codiert und sieht daher bei direkter Betrachtung auf der Console deutlich unübersichtlicher aus (wenn man's durch ein „hexdump -d“ laufen lässt, sieht's z. B. so aus). Kurzum: sobald in der Ausgabe sowas wie „1.8.1“ enthalten ist, spricht der Zähler „d0“ und nicht „sml“.
Mein eH-Zähler gibt nur volle kWh oder keine Leistung aus
Manche Netzbetreiber schränken die Funktion der IR-Schnittstelle an den eHZ ein. Für volle Funktionalität des Zählers ist es nötig eine PIN am „Lichttaster“ des Zählers einzugeben. Diese PIN muss beim Messstellenbetreiber (in der Regel der Netzbetreiber) angefordert werden.
Damit hat man zum Beispiel Zugriff auf den Tagesverbrauchszähler, die Leistungsanzeige oder auch mehr Daten über die IR-Schnittstelle. Konkret: Zählerstände mit Nachkommastellen und vielleicht auch zusätzliche OBIS-Codes. Teilweise muss auch ein Parameter der Art „Info“ oder „Inf“ aktiviert („on“) werden.
Mein eH-Zähler gibt keine Leistung aus
Selbe Ursache und mögliche Abhilfe wie bei „volle kWh“.
Zählertausch - und nun?
Wenn der Messstellenbetreiber die Zähler tauscht beginnt der Zählerstand üblicherweise wieder bei 0. Für Kanäle die keine Aktualwerte darstellen raten wir in dem Fall dazu für den neuen Zähler neue Kanäle im Frontend anzulegen. Möchte man eine durchgehende Auswertung bietet es sich an die neuen und alten Werte über einen virtuellen Kanal zusammen zu fassen.
Datenbank
Löschen eines Kanals schlug fehl
Eine Kanal wurde falsch oder zum Test angelegt und soll gelöscht werden. Es erscheint aber eine Fehlermeldung:
An exception occurred while executing 'DELETE FROM data WHERE channel_id = ?' with params [12]: SQLSTATE[42000]: Syntax error or access violation: 1142 DELETE command denied to user 'vz'@'localhost' for table 'data'
In Standardeinstellung hat der Standarduser keine Löschrechte. Die können aber nachträglich erteilt werden:
sudo mysql --user=root -praspberry mysql> grant select, update, insert, delete on volkszaehler.* to vz@localhost; mysql> flush privileges; mysql> exit
Wie kann man einen Spaltennamen ändern?
ALTER TABLE `properties` CHANGE `key` `pkey` VARCHAR( 255 ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL
Table 'volkszaehler.data' doesn't exist
Der Fehler tritt auf wenn man Datenbank und User manuell angelegt, aber vergessen hat die Tabellen anzulegen bevor man sie mit (Demo-) Daten füllt.
Zum Erstellen der Tabellen siehe: https://github.com/volkszaehler/volkszaehler.org/tree/master/misc/sql.
Fehlender TIMESTAMP / keine Daten in DB
falls beim Middleware Server unter Apache in der access_log die Einträge in der folgenden Art gelistet sind:
<IP> - - [<DATE>] "POST /middleware/index.php/data/<UUID>.json?ts=0000&value=1 HTTP/1.1" 400 232
fehlt der TIMESTAMP des controllers (ts=0000).
In diesem Fall kann man diesen testweise auch durch den Server erzeugen lassen, indem man ethersex (e6) ohne timestamp konfiguriert:
make menuconfig Applications: watchasync service: Include unix timestamp: ausschalten Summarize Events: ausschalten Path at the end: ".json"
Größe der Datenbank und access_log
Bei Einsatz meherer hoch auflösender Energiezähler mit S0-Schnittstelle (DIN 43864) und überdurchschnittlichem Energiefluss kann der Speicherbedarf rapide auf mehrere hunder MB ansteigen.
Da MySQL jede Änderung in einem Logfile mitschreibt (z.B. mysqld-bin.<nnnnnn>) kann der Speicherbedarf reduziert werden indem man die Maximalgröße des Logs reduziert und ältere automatisch löschen lässt. Beispiel: /etc/mysql/my.cnf
[mysqld] expire_log_days = 7 max_binlog_size = 10M
Dies erstellt eine neues Log alle 10MB und löscht sie wenn sie älter sind als 7 Tagen.
Weitere Reduktion kann bei den Apache Logs z.B. mittels logrotate erreicht werden.
Frontend- bzw. Middleware
Keine Kanäle auf anderem Browser/Endgerät
Das Abonnement der Kanäle wird lokal als Cookie gespeichert. Andere Geräte oder Browser können darauf nicht zugreifen und man muss die Kanäle für das andere End„gerät“ separat abonnieren. Das ist auch der Fall wenn man die Cookies gelöscht hat.
Sind die Kanäle in den Einstellungen als „öffentlich“ markiert werden diese in der Liste aufgeführt. Wenn nicht muss man für das neue Abonnement die UUID kennen und eingeben.
Alternativ besteht die Möglichkeit Kanäle (und Gruppen) über die UUID in der URL gezielt aufzurufen. https://demo.volkszaehler.org/?uuid=236d6850-1cd0-11e9-b76e-9f6531d1eb3a
Warum zeigt ein Kanal mit Zählerständen keine stetig aufsteigende Linie?
Bei Volkszähler ist die X-Achse stets die Zeit. Daraus folgt für eine mathematisch korrekte Darstellung der y-Achse das aus Zählerständen Leistung wird. Details dazu.
Warum wird bei mir kein Gesamtzählerstand in der Tabelle angezeigt?
Der Initialwert in den Kanaleigschaften muss eingetragen sein und die Daten müssen über einen Datumswechsel reichen. Frontend Darstellung
Wo kann ich Zählerstände zum Monats-/Jahreswechsel ablesen?
Falls in einem Kanal Zählerstände geloggt werden kann die Middleware diese aus der Datenbank hervorholen. Z.B. in der Art:
http://demo.volkszaehler.org/middleware.php/data/57acbef0-88a9-11e4-934f-6b0f9ecd95a8.txt?from=31-12-2020 23:59&options=raw
Bad Request 400: Property tokens does not exist
Nach Aktualisierung eures Volkszählers durch „git pull“ muss euer Webserver „etc/init.d/apache2 restart“ neu gestartet werden.
Bad Request 400: Could not find driver
Hier fehlt euch der PDO Datenbanktreiber. In der ./etc/config.yaml
habt ihr den verwendeten Treiber konfiguriert. Dazu müsst ihr ihn in der php.ini laden:
extension=pdo_mysql.so
Parse error: syntax error, unexpected T_STRING
Fehlermeldung: „Parse error: syntax error, unexpected T_STRING, expecting T_CONSTANT_ENCAPSED_STRING or '(' in <filename>.php on line <line_number>“
Ursache liegt in einer zu alten PHP-Version. Zu prüfen mit dem Befehlt php -v
.
Was ist git und wie geht man damit um?!?
Dazu haben wir ein git-HowTo.
Fehlermeldungen / Probleme bei TFTPD
Sollte im TFTPD32 kein Request für eine IP-Adresse ankommen, dann ggf. die Verkabelung vereinfachen um hier Fehlerquellen auszuschliessen. Der sicherste Fall sind feste IP-Adressen und ein Cross-Kabel mit nur 4Adern (10 MBit).
Controller Sourcecode
Wo ist denn der Volkszähler Code im Controller? Im Prinzip nirgends. Es wird je Impuls über den Dienst watchasync ein Aufruf an den eingestellten Server abgesetzt. Der Controller speichert selbst nichts - ggf. können Impulse zusammengefasst werden (was zu einem Auflösungsverlust führt – dafür den Traffic und die SQL Einträge reduziert).
Distribution
Gentoo Linux
Ein paar Hinweise zu Gentoo
- Profile: hardened/linux/x86 - make.conf: USE="logrotate unicode userlocales -X -tcpd" - package.use: "dev-lang/php apache2 gd mysql pdo" - "emerge git jpgraph mysql pecl-apc phpmyadmin"
Diverse
Ganz andere Hardware
Wenn man mit einem Arduino-Board Daten eines eHZ auslesen und dazu die SoftwareSerial-Bibliothek verwendet, muss man unbedingt auf mySerial.overflow() prüfen. Sonst kann es passieren, dass unerkannt Bytes „verschluckt“ werden. Die Bibliothek hat nur 64 Byte Puffer, das ist nicht viel - und wenn man die Daten nicht schnell genug abnimmt, sind sie weg.
Helfen?
Wie kann ich das Projekt unterstützen?
Einfach in den Mailinglisten oder bei github melden. Fertigen Code am besten direkt als Pullrequest oder Wikiseite einreichen. Beiträge in Liste und Forum sind für Hilfesuchende aber auch ein Ansatzpunkt.
Ich würde gerne am Wiki mithelfen, habe aber die Berechtigung nicht!
Neue User müssen manuell freigeschalten werden, bitte mit Username oder Emailadresse an einen der Admins wenden. Du kannst gerne auch über Mailingliste oder Forum anfragen.