[vz-users] S0 Wasseruhr ohne Umweg über die Datenbank

Frank Richter frank.richter83 at gmail.com
Sun Jul 22 23:45:41 CEST 2018


Ohne Push wird dein Frontend nur in Intervallen aktualisiert (abhängig vom
Zoom, siehe unter Optionen, automatisch aktualisieren). Mit Push gibt es
sofortige Updates, wenn Daten ankommen, auch wenn du den Haken dort
rausnimmst.

Grüße
Frank

Christian Wulff <christianwulff at gmx.de> schrieb am So., 22. Juli 2018,
23:10:

> Tja, da bin ich mir noch nicht so ganz sicher…
>
> Die Wasseruhr läuft über S0 mit einer Auflösung von 0,5 Litern. Dreh ich
> da das Wasser auf, tut sich was im Frontend. Aber ich denke das war vorher
> auch schon so. Da sehe ich im Frontend keinen Unterschied zu vorher (hab
> mal eben reingezoomt auf heute Morgen beim Duschen. Da kommt auch alle paar
> Sekunden ein neuer Wert.) Das ist ja auch klar, denn die S0 Impulse werden
> ja immer gespeichert, egal wann sie ankommen. Die config davon sieht so
> aus: aggmode ist aus.
>
>   "meters": [
>
>     {
>
>       "enabled": true,
>
>       "allowskip": false,
>
>       "interval": -1,
>
>       "aggtime": -1,
>
>       "aggfixedinterval": false,
>
>       "channels": [
>
>         {
>
>           "uuid": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
>
>           "identifier": "Impulse",
>
>           "api": "volkszaehler",
>
>           "middleware": "http://127.0.0.1/middleware.php",
>
>           "aggmode": "none",
>
>           "duplicates": 0
>
>         }
>
>       ],
>
> Meine beiden Itron ACE3000 Type 260 (Hausstrom und Wärmepumpe
> Haupttarif/Nebentarif) haben ja nur eine Auflösung von 0,1 kWh (wenn ich
> das richtig verstehe). Da kann also auch nur in 0,1 kWh Stufen was kommen.
>
> Oder kann man bei dem Zähler irgendwie die Auflösung erhöhen?
>
>
>
> Lieben Gruß,
>
> Chris
>
>
>
> *Von:* Frank Richter [mailto:frank.richter83 at gmail.com]
> *Gesendet:* Sonntag, 22. Juli 2018 22:51
> *An:* volkszaehler.org - users
> *Betreff:* Re: [vz-users] S0 Wasseruhr ohne Umweg über die Datenbank
>
>
>
> Ja, dein Push-Server läuft und vzlogger.conf ist auch okay. Bekommst du
> Push-Werte im Frontend? Bei D0 oder SML müsstest du nun ca. alle 2s neue
> Werte erhalten.
>
>
>
> Grüße
>
> Frank
>
>
>
> Christian Wulff <christianwulff at gmx.de> schrieb am So., 22. Juli 2018,
> 22:46:
>
> Achso, hatte ich vergessen zu schreiben. Die vzlogger.conf sieht so aus:
>
> {
>
>   "retry": 0,
>
>   "daemon": true,
>
>   "verbosity": 0,
>
>   "log": "/tmp/vzlogger.log",
>
>   "local": {
>
>     "enabled": true,
>
>     "port": 8080,
>
>     "index": true,
>
>     "timeout": 30,
>
>     "buffer": 30
>
>   },
>
>   "push": [
>
>     {
>
>       "url": "http://127.0.0.1:5582"
>
>     }
>
>   ],
>
>   "meters": [
>
>     {
>
>       "enabled": true,
>
>       "allowskip": false,
>
>       "interval": -1,
>
>       "aggtime": -1,
>
> ………..und so weiter. Ich denke das passt, oder?
>
>
>
> Ich hab den Raspi gerade neu gestartet.
>
>
>
> systemctl status push-server bringt folgendes zum Vorschein:
>
> ● push-server.service - push-server
>
>    Loaded: loaded (/etc/systemd/system/push-server.service; enabled)
>
>    Active: active (running) since Sun 2018-07-22 22:37:34 CEST; 4min 13s
> ago
>
> Main PID: 712 (php)
>
>    CGroup: /system.slice/push-server.service
>
>            └─712 /usr/bin/php /var/www/
> volkszaehler.org/misc/tools/push-server.php
>
>
>
> Läuft der Push Server also doch?
>
> Dann müsste das soweit schon mal in Ordnung sein, richtig?
>
> Wenn ja -> erste Etappe geschafft J
>
>
>
> Lieben Gruß und lieben Dank,
>
> Chris
>
>
>
>
>
>
>
>
>
> *Von:* Frank Richter [mailto:frank.richter83 at gmail.com]
> *Gesendet:* Sonntag, 22. Juli 2018 22:26
> *An:* volkszaehler.org - users
> *Betreff:* Re: [vz-users] S0 Wasseruhr ohne Umweg über die Datenbank
>
>
>
> systemctl status push-server
>
>
>
> Und damit was ankommt, musst du auch vzlogger push beibringen.
>
>
>
> Grüße
>
> Frank
>
>
>
> Christian Wulff <christianwulff at gmx.de> schrieb am So., 22. Juli 2018,
> 22:23:
>
> Okay, das Problem mit dem Frontend konnte ich gerade selber beheben. Steht
> auch in der Doku, überliest sich aber leicht.
>
>
>
> In meiner /var/www/volkszaehler.org/htdocs/frontend/javascripts/options.js
> fehlt ein Komma.
>
> Das rote markierte hier:
>
> middleware: [
>
>                                {
>
>                                                title: 'Local (default)',
>
>                                                url: '../middleware.php'*,*
>
>                                                live: 8082
>
>
>
>
>
>
>
> Trotzdem glaube ich, das der Push Server noch nicht läuft.
>
> Wie kann ich das testen?
>
> “pstree” liefert:
>
> systemd─┬─agetty
>
>         ├─apache2───10*[apache2]
>
>         ├─avahi-daemon───avahi-daemon
>
>         ├─cron
>
>         ├─dbus-daemon
>
>         ├─dhcpcd
>
>         ├─exim4
>
>         ├─mysqld_safe───mysqld───24*[{mysqld}]
>
>         ├─ntpd
>
>         ├─php
>
>         ├─rsyslogd─┬─{in:imklog}
>
>         │          ├─{in:imuxsock}
>
>         │          └─{rs:main Q:Reg}
>
>         ├─sshd───sshd───sshd───bash───pstree
>
>         ├─systemd───(sd-pam)
>
>         ├─systemd-journal
>
>         ├─systemd-logind
>
>         ├─systemd-udevd
>
>         ├─thd
>
>         ├─vzlogger─┬─{libmicrohttpd}
>
>         │          └─30*[{vzlogger}]
>
>         └─wpa_supplicant
>
>
>
> Lieben Gruß,
>
> Chris
>
>
>
>
>
>
>
> *Von:* Christian Wulff [mailto:christianwulff at gmx.de]
> *Gesendet:* Sonntag, 22. Juli 2018 21:54
> *An:* 'volkszaehler.org - users'
> *Betreff:* Re: [vz-users] S0 Wasseruhr ohne Umweg über die Datenbank
>
>
>
> Hmm, ich habe da so meine Probleme mit der Aktivierung des Push Servers.
>
> Ich vermute das liegt an der etwas älteren Version meiner Installation vom
> ungefähr Oktober oder November 2016.
>
> Ich denke die Pfade sind inzwischen etwas anders.
>
> Ich habe das soweit ich konnte angepasst, komme nun aber nicht mehr weiter.
>
>
>
> In der /var/www/volkszaehler.org/etc/volkszaehler.conf.php habe ich:
>
> $config['push']['enabled'] = true;              // set to true to enable
> push updates
>
> $config['push']['server'] = 5582;               // vzlogger will push to
> this ports (binds on 0.0.0.0)
>
> $config['push']['broadcast'] = 8082;    // frontend will subscribe on this
> port (binds on 0.0.0.0)
>
>
>
> $config['push']['routes']['wamp'] = array('/', '/ws');          // routes
> for wamp access
>
> $config['push']['routes']['websocket'] = array();                       //
> routes for plain web sockets, try array('/socket')
>
>
>
>
>
>
>
> In meiner /etc/systemd/system/push-server.service steht:
>
> [Unit]
>
> Description=push-server
>
> After=syslog.target network.target
>
> Requires=
>
>
>
> [Service]
>
> ExecStart=/usr/bin/php /var/www/
> volkszaehler.org/misc/tools/push-server.php
>
> ExecReload=/bin/kill -HUP $MAINPID
>
> StandardOutput=null
>
> Restart=always
>
>
>
> [Install]
>
> WantedBy=multi-user.target
>
>
>
>
>
>
>
> Wenn ich den Push-Server an der Konsole starte:
>
> php /var/www/volkszaehler.org/misc/tools/push-server.php
>
>
>
> Kommt dies:
>
> Volkszaehler Push Server
>
> Listening for updates on 5582. Clients may connect at 8082.
>
> No routes configured for WebSocket protocol. Disabling websockets.
>
>
>
>
>
> Das Browser Frontend meldet jetzt:
>
>
>
> Die Eigenschaft "forEach" eines undefinierten oder Nullverweises kann
> nicht abgerufen werden.
>
>
>
> Wer weiss Rat?
>
>
>
> Lieben Gruß,
>
> Chris
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> *Von:* Frank Richter [mailto:frank.richter83 at gmail.com]
> *Gesendet:* Mittwoch, 18. Juli 2018 22:22
> *An:* volkszaehler.org - users
> *Betreff:* Re: [vz-users] S0 Wasseruhr ohne Umweg über die Datenbank
>
>
>
> Na also, von den ganzen ESP-Kanälen kriegt der Push-Server gar nix mit.
> Ich sehe da kein Performance-Problem.
>
>
>
> Gruß
>
> Frank
>
>
>
> Am 18.07.2018 9:47 nachm. schrieb "Christian Wulff" <christianwulff at gmx.de
> >:
>
> Moin,
>
>
>
> denn antworte ich mal so zusammengefasst auf beide Nachrichten:
>
>
>
> Das ganze läuft auf einem Raspberry Pi 3 mit der Erweiterung von Udo. Hier
> sind direkt angeschlossen 3x Stromzählerkanal über 2 USB IR-Leseköpfe, 1x
> Wasseruhr über S0 und 19 Stück DS18b20 über 1-Wire im Minutentakt.
>
> Zusätzlich kommen noch über den ersten ESP8266 mit ESPEasy 15 Kanäle
> DS18b20 Temperaturwerte im Minutentakt.
>
> Über einen zweiten selbst programmierten ESP8266 kommen im Minutentakt 3
> Drehzahlwerte.
>
> Über einen dritten selbst programmierten ESP8266 kommen 8x
> Luftfeuchtigkeit, 8x Luftdruck und 9x Temperatur = 25 Werte im Minutentakt.
>
> Uns dann habe ich noch 3 mobile DS18b20 über je einen ESP8266.
>
> Unterm Strich habe ich also nur einen S0 Zähler.
>
>
>
> Ich werde mich mal mit dem Push Server, node-RED und MQTT beschäftigen
> müssen wenn ich mal wieder Zeit dafür finde. Bis dahin kann ich mir das
> leider nur theoretisch durchdenken.
>
> Auf jeden Fall habt ihr mir schon mal die richtigen Tipps gegeben.
>
>
>
> Vielen Dank und lieben Gruß,
>
> Chris
>
>
>
> -------------------------------------------------------
>
>
>
>
>
>
>
> Hallo,
>
>
>
>
>
> am Dienstag, 17. Juli 2018 um 22:13 hat Frank Richter geschrieben:
>
> > wüsste nicht dass man das aufteilen kann.
>
>
>
> Grundsätzlich ist es möglich vzlogger doppelt laufen zu lassen.
>
> Das man dann zwei Konfigurationsdateien braucht ist wohl offensichtlich.
>
>
>
> Man muss dabei halt noch aufpassen das man nicht versucht das selbe Device
> zweimal anzusprechen, das geht mit Sicherheit schief.
>
> Das beträfe indem Fall also alle S0-Zähler die an diesem Rpi, an dieser
> Erweiterung hängen.
>
>
>
>
>
> mfg Daniel
>
>
>
>
>
> *Von:* Frank Richter [mailto:frank.richter83 at gmail.com]
> *Gesendet:* Dienstag, 17. Juli 2018 22:14
> *An:* volkszaehler.org - users
> *Betreff:* Re: [vz-users] S0 Wasseruhr ohne Umweg über die Datenbank
>
>
>
> Hi Christian,
>
>
>
> wüsste nicht dass man das aufteilen kann. Die Frage zielte eher darauf ab,
> dass du möglicherweise mehrere Pis hast oder Wireless-Sensoren auf
> ESP-Basis etc.
>
>
>
> Probier's doch einfach mal aus. Ich glaube eher nicht dass die Push-Werte
> ein Performance-Problem sind. Ein Großteil deiner Kanäle sind doch bestimmt
> Temperatursensoren, die eh nicht so häufig ausgelesen werden.
>
>
>
> Grüße
>
> Frank
>
>
>
> Christian Wulff <christianwulff at gmx.de> schrieb am Di., 17. Juli 2018,
> 21:32:
>
> Moin Frank,
>
>
>
> Ich denke die 69 Kanäle werden von einer vzlogger Instanz geloggt.
>
> Kann man das aufteilen?
>
> Dann würde ich nur die Wasseruhr (und vielleicht später nochmal 2-3
> weitere Kanäle) mit einer zweiten Instanz loggen. Und nur diese zweite
> Instanz durch den Push Server rausschicken.
>
> Wie macht man das genau?
>
>
>
> Lieben Gruß,
>
> Chris
>
>
>
> *Von:* Frank Richter [mailto:frank.richter83 at gmail.com]
> *Gesendet:* Montag, 16. Juli 2018 00:08
> *An:* volkszaehler.org - users
> *Betreff:* Re: [vz-users] S0 Wasseruhr ohne Umweg über die Datenbank
>
>
>
> Hi Christian,
>
>
>
> soweit korrekt verstanden.
>
>
>
> Der Push-Server verteilt die Daten, die bei ihm (vom vzlogger) angeliefert
> werden. Das ist nicht weiter konfigurierbar.
>
> Werden deine 69 Kanäle alle von einer vzlogger-Instanz geloggt? Wenn
> nicht, nur dort aktivieren wo es auch erforderlich ist.
>
> Bei Temperatursensoren kann man das Loginterval mit "interval" passend
> einstellen, dann entsteht keine nennenswerte Last durch die paar
> Push-Datensätze.
>
>
>
> Grüße
>
> Frank
>
>
>
> Christian Wulff <christianwulff at gmx.de> schrieb am So., 15. Juli 2018,
> 23:12:
>
> Moin Frank,
>
>
>
> nun hatte ich endlich mal Zeit mir das ganze anzuschauen.
>
> Ich versuche das mal zu verstehen und denke mal laut:
>
>
>
> Der PushServer ist ein Dienst, den man auf dem Raspi3 aktivieren kann.
>
> Der sendet dann alle Daten raus, in dem Moment wie sie ankommen, ohne
> diese vorher zu aggregieren. Dadurch erhält man eine höhere Auflösung und
> immer dann sofort die Daten, wenn die entstehen.
>
> Soweit, so gut.
>
> Beeinflusst das in irgendeiner Art die Speicherung der Daten in die
> Datenbank? Ich vermute nein.
>
> Die Daten die im Frontend dargestellt werden, sind die Daten aus der
> Datenbank.
>
> Und zur Laufzeit des Frontends werden dann die Daten vom Pushserver,
> anstatt aus der Daten aus der Datenbank angezeigt.
>
> Ich denke bis dahin habe ich das verstanden.
>
> Was ich jetzt nicht so gut finde, ist, dass alle Kanäle vom Push Server
> gesendet werden. Das sind bei mir immerhin schon 69 Kanäle, die noch locker
> auf gut 100 anwachsen können.
>
> Gibt es da keine Möglichkeit den PushServer auf einige wenige Kanäle
> einzuschränken? (Im ersten Ansatz reicht mir ein Kanal, später vielleicht
> noch 2-3 weitere, aber niemals alle ~100 Kanäle).
>
> Meine Idee dabei ist einfach nicht alles unnötig zu belasten.
>
>
>
> Node Red würde auch auf dem Raspi3 laufen, richtig?
>
> Node Red verwandelt die Push Server Daten dann in ein MQTT Protokoll.
>
>
>
> Und mit meinem ESP8266 kann ich dann mit der PubSubClient Library dieses
> MQTT Protokoll lesen?
>
>
>
> Lieben Gruß,
>
> Chris
>
>
>
>
>
>
>
>
>
> *Von:* Frank Richter [mailto:frank.richter83 at gmail.com]
> *Gesendet:* Sonntag, 8. Juli 2018 15:57
> *An:* volkszaehler.org - users
> *Betreff:* Re: [vz-users] S0 Wasseruhr ohne Umweg über die Datenbank
>
>
>
> Hi Christian,
>
>
>
> schau dir im Wiki die Seiten zum Push-Server und Node-Red an, damit kann
> man das basteln. Der Push-Server konvertiert die eingehenden Impulse zu
> Leistung (hier: Durchfluss) und kann sie per Websockets an Node-Red
> weiterleiten. Von dort zum ESP bietet sich MQTT an, dafür brauchst du den
> PubSubClient.
>
>
>
> Grüße
>
> Frank
>
>
>
> Christian Wulff <christianwulff at gmx.de> schrieb am So., 8. Juli 2018,
> 13:44:
>
> Moin,
>
>
>
> ich würde gerne den aktuellen Wasserverbrauch auf einem Display ausgeben,
> und zwar ohne Umweg über die Datenbank.
>
> Ohne Umweg über die Datenbank deswegen, weil ich die Datenbank einfach
> nicht unnötig belasten möchte.
>
>
>
> Hier kommen die Daten her:
>
> Ich habe also eine S0 Wasseruhr und die ist über Udos Raspi Erweiterung an
> einem Raspi3 angeschlossen.
>
>
>
> Hier will ich die Daten anzeigen:
>
> Als Anzeige habe ich einen ESP8266 und ein Display.
>
> Der ESP8266 holt sich momentan die Werte über WLAN aus der Datenbank.
>
> Auf diesem Display zeige ich momentan die Uhrzeit mit Sekunden an, diese
> kommt von einem NTP Server.
>
> Außerdem werden einige Zimmertemperaturen angezeigt. Diese werden im
> Minutentakt aus der Datenbank per JSON abgefragt.
>
> Das gleiche funktioniert auch mit der Wasseruhr, allerdings ist dies im
> Minutentakt wenig sinnvoll.
>
> Meine Wasseruhr gibt pro 0,5L einen Impuls aus.
>
> Die Anzeige auf dem Display soll also so schnell aktualisiert werden, dass
> man dort jeden 0,5L Impuls sofort sieht, egal wie viele Wasserhähne im
> ganzen Haus aufgerissen sind.
>
> Ich möchte dort z.B. ablesen können: 27 L/min und auch 86 L in der letzten
> Stunde.
>
> Das krieg ich alles hin.
>
> Das Problem an der Stelle ist aber, dass ich dafür die Datenbank im besten
> Falle mehrere Male pro Sekunde abfragen muss, damit ich eine schöne Anzeige
> bekomme.
>
>
>
> Nun die Frage:
>
> Ich kenne leider nicht gut genug die Struktur des Volkszählers.
>
> Wo und wie werden die Impulse von der Wasseruhr bis in die Datenbank
> verarbeitet und weitergeleitet?
>
> Und wo und wie kann ich diese anzapfen ohne die Datenbank usw. stärker zu
> belasten?
>
>
>
> Ich hoffe das ich ausreichend rüberbringen konnte was ich möchte.
>
> Und ich hoffe noch mehr, dass mir jemand weiterhelfen kann?!
>
>
>
> Liebe Grüße und einen schönen Sonntag,
>
> Chris
>
>
>
>
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://demo.volkszaehler.org/pipermail/volkszaehler-users/attachments/20180722/68e13639/attachment-0001.html>


More information about the volkszaehler-users mailing list