Alternative Methode zum Auslesen von Zählern (Wasseruhr, Gaszähler etc)

Begonnen von eki, 02 November 2020, 17:25:39

Vorheriges Thema - Nächstes Thema

sprudelverduenner

#300
Dank für den Hinweis auf die neueste Version... werde ich heute Abend testen!

Mal sehen ob das 3. Problem dann auch gelöst ist.
Ich habe heute morgen und jetzt auch schon wieder festgestellt dass nach ein paar Stunden Laufzeit die Kalibrierung nicht mehr stimmt. Das Foto rutscht immer höher zum Rand - die Rois bleiben an alter Stelle...
FHEM @ RaspberryPi 3, HMLAN, HMUART + HMRS485, Homematic, ESPEasy @ Sonoff / Shelly / ESP8266, ZigBee @ CC2531
Echo Dot, Dreambox, Yamaha MusicCast, Logitech Hub, LW-12, LD382
FRITZ!Box 7590 AX, Mesh @ FRITZ!Repeater 2400, FRITZ!Fon, iPhone 13, iPad Air 5, AppleWatch 8

andy19850

Die Felder für die Alignment Marks sind wesentlich größer als bei mir. Ich bin bei einem relativ kleinen Ausschnitt gelandet.
Hatte dass Problem auch - ich denke mit den Werten musst du etwas experimentieren.

Seit meiner letzten Meldung läuft das Teil fehlerfrei. Wichtig ist noch, dass man durch gezieltes drehen und ausrichten (wegen der Reflexion der Scheibe und dem relativ hellen Licht) NNN-Werte so gut es geht ausschließt

csi

Hallo zusammen,

hier auch mal meine Erfahrungen... und auch eine Frage ;-)

Bisher konnte ich über ein Reed Kontakt den Gaszähler über eine Raspbery auf dem auch FHEM lief, auslesen. Nach einem Zählertausch ging das nicht mehr. Aus Zufall auf den esp32, das "AI-on-the-edge-device" gestossen. Aktuell provisorisch mit einem Pappgestell vor den Zähler gebastelt und läauft problemlos seit 4 Tagen. Die Werte laufen per MQTT in FHEM ein.
Setup des AI-on-the-edge-device lief recht einfach...die Linse konnte ich recht leicht mit zwei kleinen Zangen justieren und ein scharfes Bild erzeugen. Die Kamera ist nicht im 90 Gradwinkel zum Zähler montiert, das vermindert bei mir reflektionen der LED welche vorher die Erkennung unmöglich gemacht haben.

Num meine Frage: Das GasCalculator Modul hat bei mir vorher Impulse verarbeitet... und bekommt nun das "value". Bei mir z.B. 373.48
GasCalculator hat dann im Reading als gas_value_meter 3.735
Kann GasCalculator mit values statt Impulsen umgehen?

sprudelverduenner

#303
Heureka,

gestern Nachmittag hat MQTT das Device in FHEM angelegt.
Ich habe aber nichts gemacht seit vorgestern Abend. Gestern Morgen war es noch nicht da.
Und jetzt sehe ich gerade dass es auf einmal da ist.


Allerdings hat diese Nacht auch schon wieder die letzte Übertragung statt gefunden - seitdem keine neuen Werte.

Was ich im LOG der Firmware sehen kann: genau zum Zeitpunkt der letzten MQTT Übertragung gab es einen Neustart - seitdem wieder keine Daten...

2022-01-15T04:03:10: task_autodoFlow - next round - Round #1
2022-01-15T04:03:10: FlowControll.doFlow - ClassFlowMakeImage
2022-01-15T04:03:16: Image with size 0 loaded --> reboot to be done! Check that your camera module is working and connected properly.
2022-01-15T04:03:16: Reboot in 5sec


Diese Reboots aufgrund der Size 0 sehe ich immer wieder im LOG.

Hier mal der Auszug aus dem LOG kurz bevor dann auf einmal die MQTT Übertragung begonnen hat:
2022-01-14T15:39:30: CPU Temperature: 53.3
2022-01-14T15:43:43: task_autodoFlow - next round - Round #2
2022-01-14T15:43:43: FlowControll.doFlow - ClassFlowMakeImage
2022-01-14T15:43:51: FlowControll.doFlow - ClassFlowAlignment
2022-01-14T15:44:15: FlowControll.doFlow - ClassFlowCNNGeneral
2022-01-14T15:44:23: FlowControll.doFlow - ClassFlowCNNGeneral
2022-01-14T15:44:31: FlowControll.doFlow - ClassFlowPostProcessing
2022-01-14T15:44:31: PostProcessing - Raw: 00278.0798 Value:  Error: Neg. Rate - Read: 278.0798 - Raw: 00278.0798 - Pre: 278.1577
2022-01-14T15:44:31: FlowControll.doFlow - ClassFlowMQTT
2022-01-14T15:44:31: task_autodoFlow - round done
2022-01-14T15:44:31: CPU Temperature: 53.3
2022-01-14T15:48:43: task_autodoFlow - next round - Round #3
2022-01-14T15:48:43: FlowControll.doFlow - ClassFlowMakeImage
2022-01-14T15:48:48: Image with size 0 loaded --> reboot to be done! Check that your camera module is working and connected properly.
2022-01-14T15:48:48: Reboot in 5sec
2022-01-14T15:54:15: Time zone set to CET-1CEST,M3.5.0,M10.5.0/3
2022-01-14T15:54:15: =============================================================================================
2022-01-14T15:54:15: =================================== Main Started ============================================
2022-01-14T15:54:15: =============================================================================================
2022-01-14T15:54:22: Time zone set to CET-1CEST,M3.5.0,M10.5.0/3
2022-01-14T15:54:22: task_autodoFlow - next round - Round #1
2022-01-14T15:54:22: FlowControll.doFlow - ClassFlowMakeImage
2022-01-14T15:54:30: FlowControll.doFlow - ClassFlowAlignment
2022-01-14T15:54:54: FlowControll.doFlow - ClassFlowCNNGeneral
2022-01-14T15:55:01: FlowControll.doFlow - ClassFlowCNNGeneral
2022-01-14T15:55:10: FlowControll.doFlow - ClassFlowPostProcessing
2022-01-14T15:55:10: PostProcessing - Raw: 00278.0841 Value:  Error: Neg. Rate - Read: 278.0841 - Raw: 00278.0841 - Pre: 278.1577
2022-01-14T15:55:10: FlowControll.doFlow - ClassFlowMQTT
2022-01-14T15:55:10: sent publish successful in MQTTPublish, msg_id=460, wasserzaehler/connection, connected
2022-01-14T15:55:10: sent publish successful in MQTTPublish, msg_id=52618, wasserzaehler/uptime, 55
2022-01-14T15:55:10: sent publish successful in MQTTPublish, msg_id=50151, wasserzaehler/freeMem, 2988923
2022-01-14T15:55:10: sent publish successful in MQTTPublish, msg_id=18969, wasserzaehler/main/error, Neg. Rate - Read: 278.0841 - Raw: 00278.0841 - Pre: 278.1577
2022-01-14T15:55:10: sent publish successful in MQTTPublish, msg_id=29975, wasserzaehler/main/raw, 00278.0841
2022-01-14T15:55:10: sent publish successful in MQTTPublish, msg_id=9068, wasserzaehler/main/json, {"value":"","raw":"00278.0841","error":"Neg. Rate - Read: 278.0841 - Raw: 00278.0841 - Pre: 278.1577 ","rate":"","timestamp":""}
2022-01-14T15:55:10: task_autodoFlow - round done
2022-01-14T15:55:10: CPU Temperature: 43.9
FHEM @ RaspberryPi 3, HMLAN, HMUART + HMRS485, Homematic, ESPEasy @ Sonoff / Shelly / ESP8266, ZigBee @ CC2531
Echo Dot, Dreambox, Yamaha MusicCast, Logitech Hub, LW-12, LD382
FRITZ!Box 7590 AX, Mesh @ FRITZ!Repeater 2400, FRITZ!Fon, iPhone 13, iPad Air 5, AppleWatch 8

sprudelverduenner

@jomjol

Ich habe gerade die 10.2.0 geflasht. Vorher den ESP gelöscht und auch die SD Karte noch einmal neu beschrieben.
Ich habe also eine komplette Neukonfiguration angefangen.

Was mir aufgefallen ist:
- Die Internetzeit wird nicht gesetzt.
- Es wird nicht in die LOG Datei geschrieben.

Nach einem Neustart hat alles mal funktioniert. Nach einem erneuten Neustart geht wieder gar nichts - ohne etwas geändert zu haben.
So sieht mein LOG seit der 10.2.0 aus:

1970-01-01T01:00:21: Time zone set to CET-1CEST,M3.5.0,M10.5.0/3
1970-01-01T01:00:21: =============================================================================================
1970-01-01T01:00:21: =================================== Main Started ============================================
1970-01-01T01:00:21: =============================================================================================
1970-01-01T01:09:41: Time zone set to CET-1CEST,M3.5.0,M10.5.0/3
1970-01-01T01:09:42: =============================================================================================
1970-01-01T01:09:42: =================================== Main Started ============================================
1970-01-01T01:09:42: =============================================================================================
1970-01-01T01:13:17: Time zone set to CET-1CEST,M3.5.0,M10.5.0/3
1970-01-01T01:13:17: =============================================================================================
1970-01-01T01:13:17: =================================== Main Started ============================================
1970-01-01T01:13:17: =============================================================================================
1970-01-01T01:15:28: Time zone set to CET-1CEST,M3.5.0,M10.5.0/3
1970-01-01T01:15:28: =============================================================================================
1970-01-01T01:15:28: =================================== Main Started ============================================
1970-01-01T01:15:28: =============================================================================================
1970-01-01T01:15:34: Time zone set to CET-1CEST,M3.5.0,M10.5.0/3
1970-01-01T01:15:35: task_autodoFlow - next round - Round #1
1970-01-01T01:15:35: FlowControll.doFlow - ClassFlowMakeImage
1970-01-01T01:15:43: FlowControll.doFlow - ClassFlowAlignment
1970-01-01T01:15:53: info_get_handler
1970-01-01T01:16:01: info_get_handler
1970-01-01T01:16:01: info_get_handler
1970-01-01T01:16:01: info_get_handler
1970-01-01T01:16:01: info_get_handler
1970-01-01T01:16:01: info_get_handler
1970-01-01T01:16:01: info_get_handler
1970-01-01T01:16:02: info_get_handler
1970-01-01T01:16:02: info_get_handler
1970-01-01T01:16:04: FlowControll.doFlow - ClassFlowCNNGeneral
1970-01-01T01:16:12: FlowControll.doFlow - ClassFlowCNNGeneral
1970-01-01T01:16:20: download_get_handler
1970-01-01T01:16:21: FlowControll.doFlow - ClassFlowPostProcessing
1970-01-01T01:16:21: PostProcessing - Raw: 00278.4130 Value: 278.4130 Error:
1970-01-01T01:16:21: FlowControll.doFlow - ClassFlowMQTT
1970-01-01T01:16:21: sent publish successful in MQTTPublish, msg_id=51235, wasserzaehler/connection, connected
1970-01-01T01:16:21: sent publish successful in MQTTPublish, msg_id=24631, wasserzaehler/uptime, 53
1970-01-01T01:16:21: sent publish successful in MQTTPublish, msg_id=57204, wasserzaehler/freeMem, 3080203
1970-01-01T01:16:21: sent publish successful in MQTTPublish, msg_id=62793, wasserzaehler/main/value, 278.4130
1970-01-01T01:16:21: sent publish successful in MQTTPublish, msg_id=42335, wasserzaehler/main/raw, 00278.4130
1970-01-01T01:16:21: sent publish successful in MQTTPublish, msg_id=60342, wasserzaehler/main/timestamp, 1970-01-01T01:15:43
1970-01-01T01:16:21: sent publish successful in MQTTPublish, msg_id=8800, wasserzaehler/main/json, {"value":278.4130,"raw":"00278.4130","error":"","rate":"","timestamp":"1970-01-01T01:15:43"}
1970-01-01T01:16:21: task_autodoFlow - round done
1970-01-01T01:16:21: CPU Temperature: 46.1
1970-01-01T01:16:22: download_get_handler
1970-01-01T01:24:26: download_get_handler
1970-01-01T01:24:26: download_get_handler
1970-01-01T01:25:02: delete_post_handler
1970-01-01T01:25:02: download_get_handler
1970-01-01T01:25:03: upload_post_handler
1970-01-01T01:25:03: download_get_handler
1970-01-01T01:25:11: info_get_handler
1970-01-01T01:25:35: task_autodoFlow - next round - Round #2
1970-01-01T01:25:35: FlowControll.doFlow - ClassFlowMakeImage
1970-01-01T01:25:43: FlowControll.doFlow - ClassFlowAlignment
1970-01-01T01:26:03: FlowControll.doFlow - ClassFlowCNNGeneral
1970-01-01T01:26:11: FlowControll.doFlow - ClassFlowCNNGeneral
1970-01-01T01:26:20: FlowControll.doFlow - ClassFlowPostProcessing
1970-01-01T01:26:20: PostProcessing - Raw: 00278.4130 Value: 278.4130 Error: no error
1970-01-01T01:26:20: FlowControll.doFlow - ClassFlowMQTT
1970-01-01T01:26:20: sent publish successful in MQTTPublish, msg_id=36305, wasserzaehler/connection, connected
1970-01-01T01:26:20: sent publish successful in MQTTPublish, msg_id=27675, wasserzaehler/uptime, 652
1970-01-01T01:26:20: sent publish successful in MQTTPublish, msg_id=5386, wasserzaehler/freeMem, 3080111
1970-01-01T01:26:20: sent publish successful in MQTTPublish, msg_id=48005, wasserzaehler/main/value, 278.4130
1970-01-01T01:26:20: sent publish successful in MQTTPublish, msg_id=31042, wasserzaehler/main/error, no error
1970-01-01T01:26:20: sent publish successful in MQTTPublish, msg_id=38264, wasserzaehler/main/rate, 0.000000
1970-01-01T01:26:20: sent publish successful in MQTTPublish, msg_id=18640, wasserzaehler/main/raw, 00278.4130
1970-01-01T01:26:20: sent publish successful in MQTTPublish, msg_id=26444, wasserzaehler/main/timestamp, 1970-01-01T01:25:43
1970-01-01T01:26:20: sent publish successful in MQTTPublish, msg_id=6599, wasserzaehler/main/json, {"value":278.4130,"raw":"00278.4130","error":"no error","rate":0.000000,"timestamp":"1970-01-01T01:25:43"}
1970-01-01T01:26:20: task_autodoFlow - round done
1970-01-01T01:26:20: CPU Temperature: 53.3
1970-01-01T01:29:09: handler_reboot
1970-01-01T01:29:09: Reboot in 5sec
1970-01-01T01:29:34: Time zone set to CET-1CEST,M3.5.0,M10.5.0/3
1970-01-01T01:29:34: =============================================================================================
1970-01-01T01:29:34: =================================== Main Started ============================================
1970-01-01T01:29:34: =============================================================================================
1970-01-01T01:47:47: Time zone set to CET-1CEST,M3.5.0,M10.5.0/3
1970-01-01T01:47:47: =============================================================================================
1970-01-01T01:47:47: =================================== Main Started ============================================
1970-01-01T01:47:47: =============================================================================================


Beste Grüße, Sprudelverduenner
FHEM @ RaspberryPi 3, HMLAN, HMUART + HMRS485, Homematic, ESPEasy @ Sonoff / Shelly / ESP8266, ZigBee @ CC2531
Echo Dot, Dreambox, Yamaha MusicCast, Logitech Hub, LW-12, LD382
FRITZ!Box 7590 AX, Mesh @ FRITZ!Repeater 2400, FRITZ!Fon, iPhone 13, iPad Air 5, AppleWatch 8

cs-online

Hallo zusammen,

sorry, wenn ich nun mal die Frage stelle ohne alle über 20 Seiten gelesen zu haben und auch den MQTT-Basiskurs nicht absolviert habe, weil ich mit MQTT wirklich absolut gar nichts anfangen kann und es auch nicht vorhabe, das zu ändern: Kann bitte mal jemand seine Defs für die entsprechenden Devices anhängen um das in FHEM ans Laufen zu bekommen ? Ich habe einen Mosquitto-Server laufen und im Log vom Wasserzähler steht auch, dass das publishen wohl funktioniert hat, dank absoluter Unwissenheit betreffend MQTT bekomm ich das nicht hin...

Grüße

Christian
FHEM auf RPI 4 4GB, HM-WLAN-Gateway, einige HM-Aktoren,2x EBUSD an Heizung+Solar, ESP8266/32 am Strom-,Gas-,Wasserzähler, in WLAN-Steckdosen und Relaisleisten, Sonoff S20+S26,Shelly1/2/2.5, Lacrosse-Gateway und Sensoren,Sduino,Alexa-Fhem,Huawei PV+Speicher, alles auf einem RPI und da geht noch mehr

plin

Die übersichtlichere Fassung ohne mosquitto (siehe auch https://wiki.fhem.de/wiki/MQTT):

define MQTTBroker MQTT2_SERVER 1883 global
attr MQTTBroker autocreate simple

define MQTT2_wasser MQTT2_DEVICE wasser
attr MQTT2_wasser IODev MQTTBroker
attr MQTT2_wasser alias Wasseruhr
attr MQTT2_wasser icon wasserzaehler_icon
attr MQTT2_wasser readingList wasser:wasserzaehler/zaehlerstand:.* zaehlerstand\
wasser:wasserzaehler/error:.* error
attr MQTT2_wasser room Hausanschlussraum
attr MQTT2_wasser stateFormat [$name:zaehlerstand]

In der Config des ESP32CAM AI on the edge steht dann unter MQTT
Uri            mqtt://192.168.xxx.xx:1883      (die Adresse Deines FHEM)
Topic        wasserzaehler/zaehlerstand
TopicError    wasserzaehler/error
ClientID        wasser
FHEM1 (Main) Raspi4 mit CUL, Homematic, SDUINO 433/OOK, zentrale Steuerung
FHEM2 (Keller) x86 mit CUL/hmland, IP-basierte Module
FHEM3 (Erdgeschoss) Raspi2 mit SDUINO 868/GFSK
FHEM4 (Hausanschlussraum), USV und OBIS-Modul
FHEM5 (Docker) mit FHEM2FHEM, InfluxDB

cs-online

 :) :D ;D Daaaaanke, damit hat es auf Anhieb geklappt !!

Grüße

Christian
FHEM auf RPI 4 4GB, HM-WLAN-Gateway, einige HM-Aktoren,2x EBUSD an Heizung+Solar, ESP8266/32 am Strom-,Gas-,Wasserzähler, in WLAN-Steckdosen und Relaisleisten, Sonoff S20+S26,Shelly1/2/2.5, Lacrosse-Gateway und Sensoren,Sduino,Alexa-Fhem,Huawei PV+Speicher, alles auf einem RPI und da geht noch mehr

Beta-User

Zitat von: plin am 16 Januar 2022, 16:04:10
Die übersichtlichere Fassung ohne mosquitto (siehe auch https://wiki.fhem.de/wiki/MQTT):
- ...steht in dem Wiki was von attr autocreate...? Braucht man nicht extra zu setzen, MQTT2_SERVER nutzt auch so per default "simple"...
- Das mit 1883 klappt nur, wenn der mosquitto nicht auf derselben Plattform läuft. Notfalls kann man aber auch einen anderen Port (z.B. 1884) nehmen.

Hier mal mein aktuelles RAW in dieser Sache:

define Wasserzaehler MQTT2_DEVICE wasser
attr Wasserzaehler icon measure_water_meter
attr Wasserzaehler jsonMap value:readout timestamp:0
attr Wasserzaehler readingList watermeter/connection:.* connection\
  watermeter/uptime:.* uptime\
  watermeter/freeMem:.* freeMem\
  watermeter/main/(error|rate|raw|timestamp|value):.* {}\
  watermeter/main/json:.* { my $rets = json2nameValue($EVENT,'',$JSONMAP);; my %cleaned = map { $_,$rets->{$_} } grep { $rets->{$_} ne '' } keys %{$rets};; return \%cleaned }
attr Wasserzaehler stateFormat readout m²

Erläuterungen:
- "readout" war der alte Topic, daher heißt das Zähler-Reading halt (per jsonMap) weiter so.
- alle "Klartext"-Topics, die auch im JSON enthalten sind, werden gar nicht erst ausgepackt => Events sparen...
- der JSON wird ausgepackt, da aber bei Fehlern "value" mit einem leeren Wert kommt, muss man das ausfiltern, daher der etwas komplexere Code. Da alle Readings aus einem solchen "JSON-Entpacker" per Bulk-update aktualisiert werden, spart diese Variante Event-Loops.

Der obige Code ohne die vorangestellten "water:"-CID-Einträge in der readingList käme übrigens auch mit MQTT2_CLIENT als Interface zum mosquitto klar.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

andy19850

Hat/Hatte auch schon jemand das Problem, dass eine (digitale) Zahl falsch gedeutet wird?
Aus einer 8 macht er mir plötzlich immer eine 9 ohne erkennbaren Grund.
Das Foto ist relativ frei von Reflexionen und die anderen Zahlen (auch analog) werden zuverlässig erkannt.

mkraus81

Hi,
ich finde das Ganze sehr interessant...
Heute habe ich meinen Stromzähler "smart" gemacht und Wasserzähler hätte natürlich auch was...
Da ich keinen 3D Drucker habe, wollte ich mal fragen ob jemand.
Das hier vielleicht als "Komplettset" verkauft.
Gruß
Marcel

Stromzähler


enno

oder "HT Muffenstopfen DN110" und "HT Rohre DN110 x 100 mm" aus dem Baumarkt...
Einfacher FHEM Anwender auf Intel®NUC mit Proxmox und Debian

mkraus81

DANKE, es kann manchmal so einfach sein :-)

Muss man das mit dem Focus verändern immer machen (also Siegellack lösen und drehen), oder kommt es auf dem Abstand zur Wasseruhr an?

Benni

Zitat von: mkraus81 am 30 Januar 2022, 10:05:47
DANKE, es kann manchmal so einfach sein :-)

Bei mir passen DN90 ziemlich genau drüber (der Klappdeckel der Uhr ist dann einfach mit im Rohr) https://forum.fhem.de/index.php/topic,115506.msg1194852.html#msg1194852

Zitat
Muss man das mit dem Focus verändern immer machen (also Siegellack lösen und drehen), oder kommt es auf dem Abstand zur Wasseruhr an?

Je näher du an die Uhr kommst, desto größer das Bild und desto besser das Ableseergebnis! Beim voreingestellten Focus ist der Abstand, nach meiner Erfahrung einfach zu groß um einigermaßen zuverlässige Ergebnisse zu bekommen. Bei mir hat die Kameralinse zur Uhr einen Abstand von ca. 10cm.

gb#