[vz-users] Sensor für Gaszähler verliert Pulse

Tilman Glötzner tilman_1 at gloetzner.net
So Okt 9 00:02:55 CEST 2022


Hallo Ruppert,

mit den von Dir vorgeschlagenen Änderungen in der Config scheint es zu 
funktionieren...

Danke und Gruß

Tilman

On 08.10.22 14:17, Tilman Glötzner wrote:
>
> 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/20221009/80810d07/attachment-0001.html>


Mehr Informationen über die Mailingliste volkszaehler-users