Am Besten wirfst Du einen Blick in die Kategorie Verbrauchsmessgeraete.
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
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“.
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.
Selbe Ursache und mögliche Abhilfe wie bei „volle kWh“.
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.
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
ALTER TABLE `properties` CHANGE `key` `pkey` VARCHAR( 255 ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL
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.
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"
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.
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
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.
Der Initialwert in den Kanaleigschaften muss eingetragen sein und die Daten müssen über einen Datumswechsel reichen. Frontend Darstellung
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
Nach Aktualisierung eures Volkszählers durch „git pull“ muss euer Webserver „etc/init.d/apache2 restart“ neu gestartet werden.
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
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
.
Dazu haben wir ein git-HowTo.
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).
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).
- 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"
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.
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.
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.