[vz-users] Sensor für Gaszähler verliert Pulse
Tilman Glötzner
tilman_1 at gloetzner.net
Sa Okt 8 14:17:40 CEST 2022
Hallo Ruppert
On 08.10.22 13:42, Rupert Schöttler wrote:
>
>
> - Wenn ich das Pythonscript richtig verstehe, produziert es je Aufruf
> (alle 60 sec aus vzlogger heraus) 2 Zeilen, weil 2x "print".
> Möglicherweise verwirrt das vzlogger.
Das dachte ich auch schon. Deswegen habe ich das zweite print
auskommentiert. Ändert aber nichts.
>
> - Aggmode und duplicates macht in diesem Setting m.E. keinen Sinn. Und
> sind es nicht genau die sich wiederholenden 2 und 3 Impulse je Minute,
> die verloren gehen??
Ich habe die Eintröge aus dem syslog den Einträgen in der Datenbank
gegenübergestellt. Du hast recht.
//var/log/syslog (Python-Skipt)
/
mysql
Timestam Syslog Timestamp Counter (Ticks) Timestamp Counter (Date)
Delta Count Total Count
Timestamp (Date) Timestamp (Ticks) Count
Oct 8 12:19:22 1665224362 08.10.2022 10:19:22 2 207
2022-10-08 12:19:22.0000 1665224362000 2
Oct 8 12:20:23 1665224423 08.10.2022 10:20:23 2 209
Oct 8 12:21:25 1665224485 08.10.2022 10:21:25 3 212
2022-10-08 12:21:25.0000 1665224485000 3
Oct 8 12:22:27 1665224547 08.10.2022 10:22:27 3 215
Oct 8 12:23:32 1665224612 08.10.2022 10:23:32 3 218
Oct 8 12:24:33 1665224673 08.10.2022 10:24:33 3 221
Oct 8 12:25:35 1665224735 08.10.2022 10:25:35 3 224
Oct 8 12:26:36 1665224796 08.10.2022 10:26:36 2 226
2022-10-08 12:26:36.0000 1665224796000 2
Oct 8 12:27:37 1665224857 08.10.2022 10:27:37 3 229
2022-10-08 12:27:37.0000 1665224857000 3
Oct 8 12:28:39 1665224919 08.10.2022 10:28:39 2 231
2022-10-08 12:28:39.0000 1665224919000 2
Oct 8 12:29:40 1665224980 08.10.2022 10:29:40 2 233
Oct 8 12:30:42 1665225042 08.10.2022 10:30:42 2 235
Oct 8 12:31:43 1665225103 08.10.2022 10:31:43 2 237
Oct 8 12:32:44 1665225164 08.10.2022 10:32:44 2 239
Oct 8 12:33:45 1665225225 08.10.2022 10:33:45 1 240
2022-10-08 12:33:45.0000 1665225225000 1
Oct 8 12:34:47 1665225287 08.10.2022 10:34:47 2 242
2022-10-08 12:34:47.0000 1665225287000 2
Oct 8 12:35:48 1665225348 08.10.2022 10:35:48 3 245
2022-10-08 12:35:48.0000 1665225348000 3
Oct 8 12:36:51 1665225411 08.10.2022 10:36:51 2 247
2022-10-08 12:36:51.0000 1665225411000 2
Oct 8 12:37:53 1665225473 08.10.2022 10:37:53 1 248
2022-10-08 12:37:53.0000 1665225473000 1
Oct 8 12:38:54 1665225534 08.10.2022 10:38:54 2 250
2022-10-08 12:38:54.0000 1665225534000 2
Oct 8 12:39:55 1665225595 08.10.2022 10:39:55 2 252
>
> - Du kannst, ggf. auch einfach zusätzlich (eine weitere UUID
> einrichten), die Impulse von Python direkt in die Datenbank schreiben.
> So mache ich das gerne: Ohne den vzlogger, einfach per cron irgendein
> Script regelmäßig laufen lassen und den Eintrag per HTTP-Aufruf (wget
> o.ä.) in die Middleware pushen. Der "Umweg" über vzlogger hat natürlich
> den Vorteil der Pufferung, sollte die Middleware mal nicht laufen.
Ich habe "duplicates" gelöscht und aggmode auf "none" gesetzt.
Mal schauen, ob es jetzt funktioniert.
>
> Grüße von Lech und Wertach
>
> Rupert
Vielen Dank vom Fernsehturm am Nekar nach Augsburg
Tilman
>
>
> Am 05.10.22 um 21:23 schrieb Tilman Glötzner:
>> Hallo
>>
>> wie bereits vor kurzen geschrieben, verwende ich einen Kompaßsensor
>> zum Detektieren des Magnetes im Gaszähler. Das Zählen der Impulse
>> übernimmt ein C-Programm, das die gezählten Impulse über einen Socket
>> zur Verfügung stellt. Das unten gezeigte Python-Script holt die
>> gezählten Impulse ab und übergibt sie an den Volkszähler, der sie in
>> die Datenbank schreibt. Dabei gehen Impulse verloren.
>>
>> Ich habe nun festgestellt, dass das Pythonscript regelmäßig läuft
>> (siehe log in /var/log/syslog). Die Zählerstände landen aber nicht
>> alle in der Datenbank.
>>
>> Woran kann das liegen bzw. wie kann ich das Debuggen?
>>
>>
>> Danke und Gruß
>>
>> Tilman
>>
>>
>> ================database ==============
>>
>> MariaDB [volkszaehler]> select FROM_UNIXTIME(timestamp/1000),timestamp
>> as UNIX,value from data where channel_id = 22 AND
>> FROM_UNIXTIME(timestamp/1000) > '2022-10-05 19:45:00';
>> +-------------------------------+---------------+-------+
>> | FROM_UNIXTIME(timestamp/1000) | UNIX | value |
>> +-------------------------------+---------------+-------+
>> | 2022-10-05 19:49:40.0000 | 1664992180000 | 0 |
>> | 2022-10-05 19:50:41.0000 | 1664992241000 | 2 |
>> | 2022-10-05 19:52:48.0000 | 1664992368000 | 3 |
>> | 2022-10-05 19:57:54.0000 | 1664992674000 | 2 |
>> | 2022-10-05 19:58:55.0000 | 1664992735000 | 1 |
>> | 2022-10-05 20:00:58.0000 | 1664992858000 | 2 |
>> | 2022-10-05 20:04:02.0000 | 1664993042000 | 1 |
>> | 2022-10-05 20:05:03.0000 | 1664993103000 | 2 |
>> | 2022-10-05 20:06:04.0000 | 1664993164000 | 1 |
>> | 2022-10-05 20:07:05.0000 | 1664993225000 | 0 |
>> | 2022-10-05 20:19:21.0000 | 1664993961000 | 0 |
>> | 2022-10-05 20:31:45.0000 | 1664994705000 | 0 |
>> | 2022-10-05 20:44:01.0000 | 1664995441000 | 0 |
>> | 2022-10-05 20:56:15.0000 | 1664996175000 | 0 |
>> +-------------------------------+---------------+-------+
>>
>> ================/var/log/syslog ==============
>>
>> ct 5 19:50:41 logger /countingmeter.py: 1664992241: Counter = 2;
>> TotalCounter = 69
>> Oct 5 19:51:43 logger /countingmeter.py: 1664992303: Counter = 2;
>> TotalCounter = 71
>> Oct 5 19:52:48 logger /countingmeter.py: 1664992368: Counter = 3;
>> TotalCounter = 74
>> Oct 5 19:53:49 logger /countingmeter.py: 1664992429: Counter = 3;
>> TotalCounter = 77
>> Oct 5 19:54:51 logger /countingmeter.py: 1664992491: Counter = 3;
>> TotalCounter = 80
>> Oct 5 19:55:52 logger /countingmeter.py: 1664992552: Counter = 3;
>> TotalCounter = 83
>> Oct 5 19:56:53 logger /countingmeter.py: 1664992613: Counter = 3;
>> TotalCounter = 86
>> Oct 5 19:57:54 logger /countingmeter.py: 1664992674: Counter = 2;
>> TotalCounter = 88
>> Oct 5 19:58:55 logger /countingmeter.py: 1664992735: Counter = 1;
>> TotalCounter = 89
>> Oct 5 19:59:57 logger /countingmeter.py: 1664992797: Counter = 1;
>> TotalCounter = 90
>> Oct 5 20:00:01 logger CRON[30553]: (root) CMD (flock -n
>> /tmp/flock-vz_aggregate.lock php
>> /var/www/volkszaehler.org/bin/aggregate run
>> -m delta -l minute >/dev/null)
>> Oct 5 20:00:58 logger /countingmeter.py: 1664992858: Counter = 2;
>> TotalCounter = 92
>> Oct 5 20:01:01 logger CRON[30939]: (root) CMD (php
>> /var/www/volkszaehler.org/bin/aggregate run -m delta -l hour >/dev/null)
>> Oct 5 20:01:59 logger /countingmeter.py: 1664992919: Counter = 2;
>> TotalCounter = 94
>> Oct 5 20:03:01 logger /countingmeter.py: 1664992981: Counter = 2;
>> TotalCounter = 96
>> Oct 5 20:04:02 logger /countingmeter.py: 1664993042: Counter = 1;
>> TotalCounter = 97
>> Oct 5 20:05:03 logger /countingmeter.py: 1664993103: Counter = 2;
>> TotalCounter = 99
>> Oct 5 20:06:04 logger /countingmeter.py: 1664993164: Counter = 1;
>> TotalCounter = 100
>>
>> ============= /etc/vzlogger.conf ===========
>>
>> .....
>>
>> {
>> // gas counter via i2c daemon and python script
>> "enabled": true,
>> "allowskip": true,
>> "protocol": "exec",
>> "command": "countingmeter.py",
>> "format": "$t: $i = $v",
>> "interval": 60,
>> "channels": [{
>> "uuid": "3e66af30-3efc-11ed-9625-9f6024cb27ed",
>> "identifier": "Counter",
>> "api": "volkszaehler",
>> "middleware": "http://localhost/middleware.php",
>> "aggmode": "sum",
>> "duplicates": 720
>> }]
>> }
>>
>> ============= python script ===========
>>
>> #!/usr/bin/python3
>> import datetime
>> import socket
>> import json
>> import syslog
>>
>> HOST = "127.0.0.1" # The server's hostname or IP address
>> PORT = 8888 # The port used by the server
>>
>> s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
>>
>> s.connect(("127.0.0.1", 8888))
>> string = (s.recv(1024).decode('utf-8'))
>> #print (string)
>>
>> data = json.loads(string)
>> now = str(int( datetime.datetime.now().timestamp() ))
>>
>> print(now + ': Counter = ' + str(data["counter"]))
>> print(now + ': TotalCounter = ' + str(data["total"]))
>> if data["counter"] != 0:
>> message = now + ': Counter = ' + str(data["counter"]) + ';
>> TotalCounter = ' + str(data["total"])
>> syslog.syslog(syslog.LOG_DEBUG, message)
>>
-------------- nächster Teil --------------
Ein Dateianhang mit HTML-Daten wurde abgetrennt...
URL: <http://demo.volkszaehler.org/pipermail/volkszaehler-users/attachments/20221008/06817ea6/attachment-0001.html>
Mehr Informationen über die Mailingliste volkszaehler-users