Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Letzte digitale Ziffer springt zu weit trotz korrekt erkannter Zahlen #590

Closed
Cumulus7 opened this issue Jan 21, 2022 · 19 comments
Closed

Comments

@Cumulus7
Copy link

Hi,

mein letzter issue ist leider doch nicht gelöst - da ich ihn nicht erneut öffnen kann, mache ich einen neuen auf... evtl. verschieben?
alter issue:

Ja - sollte helfen. Ist genau dafür gedacht, aber nur im Zusammenspiel mit analogen Zeigern.
Originally posted by @jomjol in #584 (comment)

Mein Zähler sprang heute Nacht von
697.1667
direkt auf
698.0761

Richtig gewesen wäre
697.0761

Man sieht dies wunderbar im Log - eigentlich wurden die Werte WIEDER gut erkannt, es erfolgte jedoch ein Sprung von 1 m³.
Könnte dies mit dem "Fehler" der Erkennung der ersten analogen Nachkommastelle zusammenhängen?
Die erste Nachkommastelle wurde gestern Abend immer als ,1 erkannt obwohl sie eigentlich ,0 war.
Und zum Zeitpunkt, als dann endlich die richtige Nachkommastelle erkannt wurde (,0) ist der Sprung erfolgt.

LOG vom Zeitpunkt des Sprunges:
Zuerst wird noch ein error erkannt - weiter unten dann der Wert übernommen.

2022-01-21T00:07:16: FlowControll.doFlow - ClassFlowMakeImage
2022-01-21T00:07:24: FlowControll.doFlow - ClassFlowAlignment
2022-01-21T00:07:44: FlowControll.doFlow - ClassFlowCNNGeneral
2022-01-21T00:07:51: FlowControll.doFlow - ClassFlowCNNGeneral
2022-01-21T00:08:00: FlowControll.doFlow - ClassFlowPostProcessing
> 2022-01-21T00:08:00: PostProcessing - Raw: 00697.1667 Value: 697.1667 Error: no error
edit: dieser Wert war immer falsch - richtig laut Zeigerstellungen wäre 697.06xxx gewesen
2022-01-21T00:08:01: FlowControll.doFlow - ClassFlowMQTT
2022-01-21T00:08:01: sent publish successful in MQTTPublish, msg_id=1239, wasserzaehler/connection, connected
2022-01-21T00:08:01: sent publish successful in MQTTPublish, msg_id=37639, wasserzaehler/uptime, 926
2022-01-21T00:08:01: sent publish successful in MQTTPublish, msg_id=21361, wasserzaehler/freeMem, 3032839
> 2022-01-21T00:08:01: sent publish successful in MQTTPublish, msg_id=11377, wasserzaehler/main/value, 697.1667
2022-01-21T00:08:01: sent publish successful in MQTTPublish, msg_id=51599, wasserzaehler/main/error, no error
2022-01-21T00:08:01: sent publish successful in MQTTPublish, msg_id=7442, wasserzaehler/main/rate, 0.000365
2022-01-21T00:08:01: sent publish successful in MQTTPublish, msg_id=36578, wasserzaehler/main/raw, 00697.1667
2022-01-21T00:08:02: sent publish successful in MQTTPublish, msg_id=18172, wasserzaehler/main/timestamp, 2022-01-21T00:07:24
2022-01-21T00:08:02: sent publish successful in MQTTPublish, msg_id=34910, wasserzaehler/main/json, {"value":697.1667,"raw":"00697.1667","error":"no error","rate":0.000365,"timestamp":"2022-01-21T00:07:24"}
2022-01-21T00:08:02: task_autodoFlow - round done
2022-01-21T00:08:02: CPU Temperature: 58.9
2022-01-21T00:12:07: task_autodoFlow - next round - Round #5
2022-01-21T00:12:07: FlowControll.doFlow - ClassFlowMakeImage
2022-01-21T00:12:15: FlowControll.doFlow - ClassFlowAlignment
2022-01-21T00:12:35: FlowControll.doFlow - ClassFlowCNNGeneral
2022-01-21T00:12:42: FlowControll.doFlow - ClassFlowCNNGeneral
2022-01-21T00:12:54: FlowControll.doFlow - ClassFlowPostProcessing
> 2022-01-21T00:12:54: PostProcessing - Raw: 00697.0761 Value: Error: Rate too high - Read: 698.0761 - Pre: 697.1667
2022-01-21T00:12:54: FlowControll.doFlow - ClassFlowMQTT
2022-01-21T00:12:54: sent publish successful in MQTTPublish, msg_id=23939, wasserzaehler/connection, connected
2022-01-21T00:12:54: sent publish successful in MQTTPublish, msg_id=45506, wasserzaehler/uptime, 1219
2022-01-21T00:12:54: sent publish successful in MQTTPublish, msg_id=47688, wasserzaehler/freeMem, 3030947
2022-01-21T00:12:54: sent publish successful in MQTTPublish, msg_id=266, wasserzaehler/main/error, Rate too high - Read: 698.0761 - Pre: 697.1667
2022-01-21T00:12:54: sent publish successful in MQTTPublish, msg_id=63720, wasserzaehler/main/raw, 00697.0761
2022-01-21T00:12:54: sent publish successful in MQTTPublish, msg_id=25068, wasserzaehler/main/json, {"value":"","raw":"00697.0761","error":"Rate too high - Read: 698.0761 - Pre: 697.1667","rate":"","timestamp":""}
2022-01-21T00:12:55: task_autodoFlow - round done
2022-01-21T00:12:55: CPU Temperature: 59.4
2022-01-21T00:16:58: task_autodoFlow - next round - Round #6
2022-01-21T00:16:58: FlowControll.doFlow - ClassFlowMakeImage
2022-01-21T00:17:06: FlowControll.doFlow - ClassFlowAlignment
2022-01-21T00:17:26: FlowControll.doFlow - ClassFlowCNNGeneral
2022-01-21T00:17:34: FlowControll.doFlow - ClassFlowCNNGeneral
2022-01-21T00:17:43: FlowControll.doFlow - ClassFlowPostProcessing
2022-01-21T00:17:43: PostProcessing - Raw: 00697.0761 Value: Error: Rate too high - Read: 698.0761 - Pre: 697.1667
2022-01-21T00:17:43: FlowControll.doFlow - ClassFlowMQTT
2022-01-21T00:17:43: sent publish successful in MQTTPublish, msg_id=7805, wasserzaehler/connection, connected
2022-01-21T00:17:43: sent publish successful in MQTTPublish, msg_id=7356, wasserzaehler/uptime, 1508
2022-01-21T00:17:43: sent publish successful in MQTTPublish, msg_id=59436, wasserzaehler/freeMem, 3032815
2022-01-21T00:17:43: sent publish successful in MQTTPublish, msg_id=4205, wasserzaehler/main/error, Rate too high - Read: 698.0761 - Pre: 697.1667
2022-01-21T00:17:44: sent publish successful in MQTTPublish, msg_id=19640, wasserzaehler/main/raw, 00697.0761
2022-01-21T00:17:44: sent publish successful in MQTTPublish, msg_id=56763, wasserzaehler/main/json, {"value":"","raw":"00697.0761","error":"Rate too high - Read: 698.0761 - Pre: 697.1667","rate":"","timestamp":""}
2022-01-21T00:17:44: task_autodoFlow - round done
2022-01-21T00:17:44: CPU Temperature: 58.9
2022-01-21T00:21:49: task_autodoFlow - next round - Round #7
2022-01-21T00:21:49: FlowControll.doFlow - ClassFlowMakeImage
2022-01-21T00:21:57: FlowControll.doFlow - ClassFlowAlignment
2022-01-21T00:22:17: FlowControll.doFlow - ClassFlowCNNGeneral
2022-01-21T00:22:25: FlowControll.doFlow - ClassFlowCNNGeneral
2022-01-21T00:22:34: FlowControll.doFlow - ClassFlowPostProcessing
2022-01-21T00:22:34: PostProcessing - Raw: 00697.0761 Value: Error: Rate too high - Read: 698.0761 - Pre: 697.1667
2022-01-21T00:22:34: FlowControll.doFlow - ClassFlowMQTT
2022-01-21T00:22:34: sent publish successful in MQTTPublish, msg_id=38301, wasserzaehler/connection, connected
2022-01-21T00:22:34: sent publish successful in MQTTPublish, msg_id=56222, wasserzaehler/uptime, 1799
2022-01-21T00:22:34: sent publish successful in MQTTPublish, msg_id=56435, wasserzaehler/freeMem, 3032807
2022-01-21T00:22:34: sent publish successful in MQTTPublish, msg_id=37479, wasserzaehler/main/error, Rate too high - Read: 698.0761 - Pre: 697.1667
2022-01-21T00:22:34: sent publish successful in MQTTPublish, msg_id=6824, wasserzaehler/main/raw, 00697.0761
2022-01-21T00:22:34: sent publish successful in MQTTPublish, msg_id=51771, wasserzaehler/main/json, {"value":"","raw":"00697.0761","error":"Rate too high - Read: 698.0761 - Pre: 697.1667","rate":"","timestamp":""}
2022-01-21T00:22:35: task_autodoFlow - round done
2022-01-21T00:22:35: CPU Temperature: 58.9
2022-01-21T00:26:40: task_autodoFlow - next round - Round #8
2022-01-21T00:26:40: FlowControll.doFlow - ClassFlowMakeImage
2022-01-21T00:26:49: FlowControll.doFlow - ClassFlowAlignment
2022-01-21T00:27:09: FlowControll.doFlow - ClassFlowCNNGeneral
2022-01-21T00:27:16: FlowControll.doFlow - ClassFlowCNNGeneral
2022-01-21T00:27:25: FlowControll.doFlow - ClassFlowPostProcessing
> 2022-01-21T00:27:25: PostProcessing - Raw: 00697.0761 Value: 698.0761 Error: no error
2022-01-21T00:27:25: FlowControll.doFlow - ClassFlowMQTT
2022-01-21T00:27:26: sent publish successful in MQTTPublish, msg_id=7671, wasserzaehler/connection, connected
2022-01-21T00:27:26: sent publish successful in MQTTPublish, msg_id=34958, wasserzaehler/uptime, 2091
2022-01-21T00:27:26: sent publish successful in MQTTPublish, msg_id=18815, wasserzaehler/freeMem, 3031167
> 2022-01-21T00:27:26: sent publish successful in MQTTPublish, msg_id=32017, wasserzaehler/main/value, 698.0761
2022-01-21T00:27:26: sent publish successful in MQTTPublish, msg_id=40444, wasserzaehler/main/error, no error
2022-01-21T00:27:26: sent publish successful in MQTTPublish, msg_id=64693, wasserzaehler/main/rate, 0.046878
> 2022-01-21T00:27:26: sent publish successful in MQTTPublish, msg_id=20537, wasserzaehler/main/raw, 00697.0761
2022-01-21T00:27:26: sent publish successful in MQTTPublish, msg_id=41377, wasserzaehler/main/timestamp, 2022-01-21T00:26:48
2022-01-21T00:27:26: sent publish successful in MQTTPublish, msg_id=47253, wasserzaehler/main/json, {"value":698.0761,"raw":"00697.0761","error":"no error","rate":0.046878,"timestamp":"2022-01-21T00:26:48"}

aktuelle Config:
image

Sagt mir bitte ob ich hier noch weiter Daten liefern kann. Bin gerne bereit hier weiter aktiv dran mitzuarbeiten.

Jetzt, nach einem manuellen Reset der Pre-Value ist die Erkennung perfekt..... Aber das hilft ja nicht, wenn die m³ bei jedem vollen Kubikmeter immer einen zusäztlichen Sprung machen Schulterzuck
image

Gruß
Markus

PS: sagt bitte Bescheid, falls ich nerve :)

@Cumulus7
Copy link
Author

Nachtrag:
der Zählerstand ist schon wieder um einen Kubikmeter nach oben gesprungen.

Letzter Stand war ja die korrekte Erkennung im vorherigen post oben, jetzt steht er wieder bei 698,11xx m³.

Auffällig hier, das wieder die erste Nachkommastelle um 0,1 zu niedrig erkannt wird, und dies nun den Sprung um einen Kubikmeter nach oben bewirkt.

Zunächst 697,2008 m³
Jetzt Raw: 00697.1146
Resultat 698,1146

image

LOG:

2022-01-21T08:00:45: task_autodoFlow - round done
2022-01-21T08:00:45: CPU Temperature: 53.3
2022-01-21T08:04:50: task_autodoFlow - next round - Round #17
2022-01-21T08:04:50: FlowControll.doFlow - ClassFlowMakeImage
2022-01-21T08:04:58: FlowControll.doFlow - ClassFlowAlignment
2022-01-21T08:05:18: FlowControll.doFlow - ClassFlowCNNGeneral
2022-01-21T08:05:26: FlowControll.doFlow - ClassFlowCNNGeneral
2022-01-21T08:05:35: FlowControll.doFlow - ClassFlowPostProcessing
> 2022-01-21T08:05:35: PostProcessing - Raw: 00697.2008 Value: 697.2008 Error: no error
2022-01-21T08:05:35: FlowControll.doFlow - ClassFlowMQTT
2022-01-21T08:05:35: sent publish successful in MQTTPublish, msg_id=57589, wasserzaehler/connection, connected
2022-01-21T08:05:35: sent publish successful in MQTTPublish, msg_id=44861, wasserzaehler/uptime, 4709
2022-01-21T08:05:36: sent publish successful in MQTTPublish, msg_id=65243, wasserzaehler/freeMem, 3033047
2022-01-21T08:05:36: sent publish successful in MQTTPublish, msg_id=2224, wasserzaehler/main/value, 697.2008
2022-01-21T08:05:36: sent publish successful in MQTTPublish, msg_id=36999, wasserzaehler/main/error, no error
2022-01-21T08:05:36: sent publish successful in MQTTPublish, msg_id=14730, wasserzaehler/main/rate, 0.003851
2022-01-21T08:05:36: sent publish successful in MQTTPublish, msg_id=29365, wasserzaehler/main/raw, 00697.2008
2022-01-21T08:05:36: sent publish successful in MQTTPublish, msg_id=61296, wasserzaehler/main/timestamp, 2022-01-21T08:04:58
2022-01-21T08:05:36: sent publish successful in MQTTPublish, msg_id=44000, wasserzaehler/main/json, {"value":697.2008,"raw":"00697.2008","error":"no error","rate":0.003851,"timestamp":"2022-01-21T08:04:58"}
2022-01-21T08:05:36: task_autodoFlow - round done
2022-01-21T08:05:36: CPU Temperature: 58.3
2022-01-21T08:09:41: task_autodoFlow - next round - Round #18
2022-01-21T08:09:41: FlowControll.doFlow - ClassFlowMakeImage
2022-01-21T08:09:49: FlowControll.doFlow - ClassFlowAlignment
2022-01-21T08:10:09: FlowControll.doFlow - ClassFlowCNNGeneral
2022-01-21T08:10:17: FlowControll.doFlow - ClassFlowCNNGeneral
2022-01-21T08:10:26: FlowControll.doFlow - ClassFlowPostProcessing
> 2022-01-21T08:10:26: PostProcessing - Raw: 00697.1133 Value: Error: Rate too high - Read: 698.1133 - Pre: 697.2008
2022-01-21T08:10:26: FlowControll.doFlow - ClassFlowMQTT
2022-01-21T08:10:26: sent publish successful in MQTTPublish, msg_id=27232, wasserzaehler/connection, connected
2022-01-21T08:10:26: sent publish successful in MQTTPublish, msg_id=63382, wasserzaehler/uptime, 5000
2022-01-21T08:10:26: sent publish successful in MQTTPublish, msg_id=51189, wasserzaehler/freeMem, 3032907
2022-01-21T08:10:26: sent publish successful in MQTTPublish, msg_id=35757, wasserzaehler/main/error, Rate too high - Read: 698.1133 - Pre: 697.2008
2022-01-21T08:10:26: sent publish successful in MQTTPublish, msg_id=19183, wasserzaehler/main/raw, 00697.1133
2022-01-21T08:10:27: sent publish successful in MQTTPublish, msg_id=40399, wasserzaehler/main/json, {"value":"","raw":"00697.1133","error":"Rate too high - Read: 698.1133 - Pre: 697.2008","rate":"","timestamp":""}
2022-01-21T08:10:27: task_autodoFlow - round done
2022-01-21T08:10:27: CPU Temperature: 53.3
2022-01-21T08:14:32: task_autodoFlow - next round - Round #19
2022-01-21T08:14:32: FlowControll.doFlow - ClassFlowMakeImage
2022-01-21T08:14:40: FlowControll.doFlow - ClassFlowAlignment
2022-01-21T08:15:00: FlowControll.doFlow - ClassFlowCNNGeneral
2022-01-21T08:15:08: FlowControll.doFlow - ClassFlowCNNGeneral
2022-01-21T08:15:17: FlowControll.doFlow - ClassFlowPostProcessing
2022-01-21T08:15:17: PostProcessing - Raw: 00697.1146 Value: Error: Rate too high - Read: 698.1146 - Pre: 697.2008
2022-01-21T08:15:17: FlowControll.doFlow - ClassFlowMQTT
2022-01-21T08:15:17: sent publish successful in MQTTPublish, msg_id=30747, wasserzaehler/connection, connected
2022-01-21T08:15:17: sent publish successful in MQTTPublish, msg_id=18980, wasserzaehler/uptime, 5291
2022-01-21T08:15:17: sent publish successful in MQTTPublish, msg_id=1843, wasserzaehler/freeMem, 3033307
2022-01-21T08:15:17: sent publish successful in MQTTPublish, msg_id=16012, wasserzaehler/main/error, Rate too high - Read: 698.1146 - Pre: 697.2008
2022-01-21T08:15:18: sent publish successful in MQTTPublish, msg_id=6620, wasserzaehler/main/raw, 00697.1146
2022-01-21T08:15:18: sent publish successful in MQTTPublish, msg_id=43174, wasserzaehler/main/json, {"value":"","raw":"00697.1146","error":"Rate too high - Read: 698.1146 - Pre: 697.2008","rate":"","timestamp":""}
2022-01-21T08:15:18: task_autodoFlow - round done
2022-01-21T08:15:18: CPU Temperature: 53.3
2022-01-21T08:19:23: task_autodoFlow - next round - Round #20
2022-01-21T08:19:23: FlowControll.doFlow - ClassFlowMakeImage
2022-01-21T08:19:32: FlowControll.doFlow - ClassFlowAlignment
2022-01-21T08:19:51: FlowControll.doFlow - ClassFlowCNNGeneral
2022-01-21T08:19:59: FlowControll.doFlow - ClassFlowCNNGeneral
2022-01-21T08:20:08: FlowControll.doFlow - ClassFlowPostProcessing
2022-01-21T08:20:08: PostProcessing - Raw: 00697.1146 Value: Error: Rate too high - Read: 698.1146 - Pre: 697.2008
2022-01-21T08:20:08: FlowControll.doFlow - ClassFlowMQTT
2022-01-21T08:20:08: sent publish successful in MQTTPublish, msg_id=46191, wasserzaehler/connection, connected
2022-01-21T08:20:08: sent publish successful in MQTTPublish, msg_id=42907, wasserzaehler/uptime, 5582
2022-01-21T08:20:08: sent publish successful in MQTTPublish, msg_id=41541, wasserzaehler/freeMem, 3032923
2022-01-21T08:20:08: sent publish successful in MQTTPublish, msg_id=4271, wasserzaehler/main/error, Rate too high - Read: 698.1146 - Pre: 697.2008
2022-01-21T08:20:08: sent publish successful in MQTTPublish, msg_id=29081, wasserzaehler/main/raw, 00697.1146
2022-01-21T08:20:09: sent publish successful in MQTTPublish, msg_id=27067, wasserzaehler/main/json, {"value":"","raw":"00697.1146","error":"Rate too high - Read: 698.1146 - Pre: 697.2008","rate":"","timestamp":""}
2022-01-21T08:20:09: task_autodoFlow - round done
2022-01-21T08:20:09: CPU Temperature: 53.3
2022-01-21T08:24:14: task_autodoFlow - next round - Round #21
2022-01-21T08:24:14: FlowControll.doFlow - ClassFlowMakeImage
2022-01-21T08:24:23: FlowControll.doFlow - ClassFlowAlignment
2022-01-21T08:24:43: FlowControll.doFlow - ClassFlowCNNGeneral
2022-01-21T08:24:50: FlowControll.doFlow - ClassFlowCNNGeneral
2022-01-21T08:24:59: FlowControll.doFlow - ClassFlowPostProcessing
> 2022-01-21T08:24:59: PostProcessing - Raw: 00697.1146 Value: 698.1146 Error: no error
2022-01-21T08:24:59: FlowControll.doFlow - ClassFlowMQTT
2022-01-21T08:25:00: sent publish successful in MQTTPublish, msg_id=47023, wasserzaehler/connection, connected
2022-01-21T08:25:00: sent publish successful in MQTTPublish, msg_id=15920, wasserzaehler/uptime, 5874
2022-01-21T08:25:00: sent publish successful in MQTTPublish, msg_id=11020, wasserzaehler/freeMem, 3032911
2022-01-21T08:25:00: sent publish successful in MQTTPublish, msg_id=48051, wasserzaehler/main/value, 698.1146
2022-01-21T08:25:00: sent publish successful in MQTTPublish, msg_id=5462, wasserzaehler/main/error, no error
2022-01-21T08:25:00: sent publish successful in MQTTPublish, msg_id=20158, wasserzaehler/main/rate, 0.047064
2022-01-21T08:25:00: sent publish successful in MQTTPublish, msg_id=61526, wasserzaehler/main/raw, 00697.1146
2022-01-21T08:25:00: sent publish successful in MQTTPublish, msg_id=24163, wasserzaehler/main/timestamp, 2022-01-21T08:24:23
2022-01-21T08:25:00: sent publish successful in MQTTPublish, msg_id=48574, wasserzaehler/main/json, {"value":698.1146,"raw":"00697.1146","error":"no error","rate":0.047064,"timestamp":"2022-01-21T08:24:23"}
2022-01-21T08:25:00: task_autodoFlow - round done

@Cumulus7
Copy link
Author

Noch ein Nachtrag:
Firmware und HTML sind auf master - v10.2.0 - 2022-01-14

@jomjol
Copy link
Owner

jomjol commented Jan 21, 2022

Danke für die Details und sorry, dass du den vorherigen Issue nicht öffnen kannst. Ich denke, da kommen zwei Sachen zusammen:

  1. bei der ersten Nachkommastelle wird manchmal eine 1.x statt einer 0.x erkannt. das hat folgendes Effekt:
    letzter Wert: 697.1667
    neuer Raw-Wert: 697.0761 --> der Algo denk, dass ein Nulldurchgang stattgefunden hat und erhöht daher die 697 auf 698.
    Zunächst wird das verworfen, da die Rate zu hoch ist. Nach aber ca. 20 Minuten ist eine Veränderung von 1m² (0,05 *20) zulässig und der falsche Sprung wird aktzeptiert.
    Da habe ich jetzt leider keine gute Lösung. Denn eigentlich hilft nur eine Verbesserung der Erkennung und da schein mit alles richtig eingestellt.

@Kalli01
Copy link

Kalli01 commented Jan 22, 2022

Danke für die Info. Das ist vermutlich auch bei mir der Grund gewesen.
Beitrag im iobroker Forum

Bei mir funktioniert die Erkennen mit der Version master - v10.1.0 - 2022-01-09 und den beiden Dateien dig-s2-q-20220104.tflite und ana-s3-q-20220105.tflite jetzt so gut, dass der Wert nicht mehr springt.

@Cumulus7 du könntest vielleicht verschiedene tflite Dateien über den File Server hochladen und ausprobieren.
Musst sie nur in der config einstellen und einmal neustarten.

@Cumulus7
Copy link
Author

Cumulus7 commented Jan 22, 2022

Danke für die Details und sorry, dass du den vorherigen Issue nicht öffnen kannst. Ich denke, da kommen zwei Sachen zusammen:

  1. bei der ersten Nachkommastelle wird manchmal eine 1.x statt einer 0.x erkannt. das hat folgendes Effekt:
    letzter Wert: 697.1667
    neuer Raw-Wert: 697.0761 --> der Algo denk, dass ein Nulldurchgang stattgefunden hat und erhöht daher die 697 auf 698.
    Zunächst wird das verworfen, da die Rate zu hoch ist. Nach aber ca. 20 Minuten ist eine Veränderung von 1m² (0,05 *20) zulässig und der falsche Sprung wird aktzeptiert.
    Da habe ich jetzt leider keine gute Lösung. Denn eigentlich hilft nur eine Verbesserung der Erkennung und da schein mit alles richtig eingestellt.

Das Problem hier ist ja hier ja gar nicht einmal eine falsch erkannt letzte digitale VORkommastelle:

  • die ist ja die 7.
    Und die steht noch immer in den RAW-Werten, wird also korrekt erkannt.
    Da KANN ja eigentlich keine 8 hingehören.

Ich hätte den Algorithmus für den Übergang von Digital auf Analog jetzt so gemacht:

  1. wenn letzte Digital-Stelle (RAW-Wert) erkannt und aktueller Wert identisch
    oder
    wenn letzte Digital-Stelle nicht erkannt (N)
  • mache nix, unverändert lassen
  1. wenn RAW-Wert und aktueller Wert NICHT identisch (nächst höherer digitaler Wert (oder 0) läuft langsam rein)
  • prüfe folgende Stelle auf Nulldurchgang
  • Nach Nulldurchgang dann auf erkannten Wert setzen.

Aktuell denke ich machst Du nur (2). D.h. auch wenn der digitale Wert noch eindeutig erkannt wird, setzt Du den Zähler hoch.

Was passiert, wenn die erste Nachkommastelle einmal von 0,4 auf 0,3 zurück springt bei der Erkennung? Oder von 0,90 auf 0,89?
Wird dann auch die digitale Stelle eins hoch gesetzt?
Das würde bei Implementation von (1) verhindert.

[Alternativ wäre ggf. zu prüfen, ob die erste Nachkommastelle vor dem Erkennen eines Nulldurchgangs wenigsten einmal > 0,5 gewesen sein muss. Das würde aber z.B. einen digitalen Sprung nicht verhindern der von einem Rücksprung von z.B. 0,70 auf 0,69 ausgelöst wird. Das wäre ja wieder ein Nulldurchgang.]

Übersehe ich hier was?

Edit:
Noch eine Idee:

  • Prüfung für den Nulldurchgang ergänzen um Maximal-Differenz "nach vorne"
    Zumindest für die erste und/oder zweite Nachkommastelle? Kann ja ruhig bei 0,9 liegen. Dann werden minimale Ausleseabweichungen aber nicht als Nulldurchgang gewertet.
    D.h. von 0,9 auf 0,8 -> Differenz "vorwärts" wäre 0,9 -> zu groß
    von 0,9 auf 0,1 -> Diff 0,2 -> wäre i.O.

Edit2:
Laut IOBroker-Forum bin ich wohl nicht der einzige, der so Sprünge hat....

@Cumulus7
Copy link
Author

Bei mir funktioniert die Erkennen mit der Version master - v10.1.0 - 2022-01-09 und den beiden Dateien dig-s2-q-20220104.tflite und ana-s3-q-20220105.tflite jetzt so gut, dass der Wert nicht mehr springt.

@Cumulus7 du könntest vielleicht verschiedene tflite Dateien über den File Server hochladen und ausprobieren. Musst sie nur in der config einstellen und einmal neustarten.

Die von dir angegebenen Dateien verwende ich schon.... Erkennung ist auch echt gut, nur bei der ersten Nachkommastelle im Bereich 0 bis 0,2 gibt es wohl Probleme.... Und die sorgen dann für den digitalen Zählersprung, obwohl da eigentlich noch die Zahl perfekt erkannt wird.
Mal schauen, was jomjol zu meinen Vorschlägen sagt :-)

@Cumulus7
Copy link
Author

Off-Topic Info für jomjol: die Version 10.2 ist MEGA-Stabil. Seit gestern 10:44 kein Reboot!
image

@jomjol
Copy link
Owner

jomjol commented Jan 22, 2022

@Cumulus7 : welche Hardware genau verwendest du? Insbesondere Kamera und Beleuchtung würde mich interessieren.

Mit v10.2 gibt es genau zwei Fraktionen:

  1. Mega stabil - tagelang kein Reboot
  2. Hängt sich komplett auf, da die Kamera auch nach einem Reboot nicht mehr funktioniert. Es hilft nur ein harter Reboot mit PowerDown

Bei mir laufen aktuell 3 Devices in Option 1 und ein ESP32 quasi gar nicht mehr. Der einzige Unterschied ist die LED-Beleuchtung und die Stromversorgung.

Leider fehlt mir diese Woche die Zeit dem nachzugehen, aber ich bin für jeden Hinweis dankbar.

@friedpa
Copy link

friedpa commented Jan 22, 2022

@jomjol Guten Abend :o) bei mir laufen meine zwei ESPs nicht. Wie können wir eine Liste von funktionierenter und nicht funktionierenter HW anlegen? Wie kann man die Key Infos über das Board auslesen? Vielleicht sollten wir das Problem methodisch eingrenzen, da es ja offensichtlich kein SW Problem ist... LG Paul

Note: ich meinte lauft nicht ab 10.0, mit 9.2 laufen beide ESPs so wie vorher (2-5 Reboots pro Tag)

@moeskerv
Copy link

moeskerv commented Jan 23, 2022

Ich bin auch von dem Problem mit den 1m³ Sprüngen betroffen. Mit früheren Version 7.x.x hatte ich dieses Problem nicht. Ich denke, dass die Änderung von MaxRateValue auf eine zeitbasierte Einheit Vorteile hat, dennoch sollte diese nicht beliebig weit in die Zukunft gelten um solche großen Sprünge herauszufiltern. Ansonsten bringt dieser Konfigurationswert nicht viel, oder?

@friedpa
Copy link

friedpa commented Jan 23, 2022

Die MaxRateValue ist nun auf Liter pro Minute bezogen, daher Achtung, wenn z,B. 5 Minuten zwischen zwei Messungen eingestellt wurde bedeutet das 200 Liter mal 5 Minuten = 1000 Liter ist also 1 m3, also MaxRateValue wie von @jomjol beschrieben anpassen!

@Cumulus7
Copy link
Author

Hi, könnten wir die Diskussion um die nicht laufenden ESPs eventuell in einem anderen Thread weiterführen? Und hier bei dem 1-Kubikmeter Problem bleiben?

Heute morgen wieder passiert:
698,0x
698,1x
698,07 -> raus kamen 699,07

@moeskerv
Copy link

Das Anpassen des MaxRateValue reicht ja nicht aus, um das Problem zu lösen. Siehe Post #590 (comment)

Ich hatte heute einen Sprung von 383,9987 auf 384,9987. Leider hatte ich kein Log aktiviert. Habe ich nun nachgeholt.

@jomjol
Copy link
Owner

jomjol commented Jan 23, 2022

Bezüglich der Sprünge: Ursache ist klar und verstanden und benötigt zwei Dinge:

  1. Falsche Erkennung der letzten Nachkommastelle (typischerweise 0.1m³) mit einem Wert der kleiner ist, als er sein sollte (z.B. 698,1 --> 698,0)
  2. Aktiver Korrekturmechanismus CheckDigitIncreaseConsistency = true. Dieser geht dann davon aus, dass ein Nulldurchgang stattgefunden hat und erhöht daher um 1m³ (698,0 --> 699,0).

Dagegen gibt es nur zwei Möglichkeiten

  1. Abschalten Korrekturmechanismus - kann aber dazu führen, dass der m³ Übergang zu früh ist, da ja die "8" schon bei z.b. 697.9 zu sehen sein sollte.
  2. Verbessertes Neuronales Netz.

Es gibt KEINE andere Möglichkeit, also diese beiden, da der Algorythmus keine Chance hat, zwischen einer falschen Ziffer und einem tatsächlichen Nulldurchgang zu unterscheiden. Aktuell habe ich kein besseres neuronales Netz. Ihr könntet natürlich Trainingsbilder erzeugen. Da ich eigentlich aber nur vollständige Sätze trainiere, ist der Aufwand relativ groß.

Die einzige Möglichkeit, dies zu blocken ist dann der zweite Check über MaxRateValue, der zumindest anfänglich den Sprung verhindert. Wenn dann natürlich über einen längeren Zeitraum (z.B. über Nacht), dieser falsche Wert anliegt, da kein Wasser verbraucht wurde, kommt es dann trotzdem zu dem Sprung, denn die Rate wird ja mit der Zeit immer geringer, da das Zeitintervall abnimmt.

@Cumulus7
Copy link
Author

Cumulus7 commented Jan 23, 2022

Hi jomjol,

was wäre denn damit, den Nulldurchgang zum Hochzählen erst zu erlauben, wenn sowohl die nächste Zahl erkannt wird als auch ein Nulldurchgang registriert wurde?
Also die 8 bei 697,9 schon erscheint, und dann ein Nulldurchgang der folgenden Stelle erkannt wird.
Zumindest bei mir nutze ich die CheckDigitIncreaseConsistency nur um ein zu frühes Hochzählen zu verhindern.
Außerdem würde ich noch einmal vorschlagen, den Nulldurchgang nur bei Differenzen von >0,8 zu zählen. D.h. ein Rücksprung um 0,1 oder 0,2 würde KEINEN Nulldurchgang erlauben. Von 0,6 auf 0,1 aber sehr wohl (0,5 Differenz).
GGf. als Option konfigurierbar. Und nur für den Übergang von digital zu analog? Oder nur alle digitalen Ziffern?
Bei den kleinen Nachkommastellen macht diese Prüfung ja eh keinen Sinn.

Ich habe mir das Repository gestern einmal ausgecheckt und mit VSCode angeschaut. Ich programmiere aber normalerweise nur C# beruflich (neben SQL) und habe keine noch Ahnung, wie ich das kompilieren muss, um mir eine eigene Firmware-Version zu bauen :-(.

Du hast Dir ja schon erheblich mehr Gedanken um diesen Algorithmus gemacht als ich... also sag ruhig wenn der/die Vorschläge oben Blödsinn ist!

Danke für Deine Zeit und Gruß
Markus

@jomjol
Copy link
Owner

jomjol commented Jan 23, 2022

Hi Markus,
Vorschläge sind gut, allein fehlt mir die Zeit, sie zu implementieren und zu testen - und zwar aktuell eher mittelfristig (1-2 Monate).

Müssten in jedem Fall konfigurierbar sein. Aber inzwischen gibt es schon so viele Parameter, dass viele damit schon nicht mehr zurecht kommen. Da fehlt mir noch eine Idee, wie man damit in der Freeware Community mit umgeht. Ich komme kaum noch hinterher mit Supportanfragen.

Eigentlich müsste ich mal §einen Zaun bauen, statt die Hühner zu fangen"

@jomjol
Copy link
Owner

jomjol commented Jan 29, 2022

Ich schließe den Request hier jetzt mal, um den Überblick zu behalten. Willst du das Thema in ein Feature Request?

(Bitte trotz geschlossenen Issue antworten - sehe das trotzdem).

@jomjol jomjol closed this as completed Jan 29, 2022
@Cumulus7
Copy link
Author

Hi Jomjol,

ja, ein Feature-Request wäre Klasse, evtl. bearbeite ich den auch selber. Bin mir noch nicht klar, WIE ich das von der Logik her angehen würde, täte es aber wohl erst mal selber versuchen.

Kann ich dir unabhängig davon ggf. die nächsten Wochen mal ein Set von Bildern zum Anlernen zukommen lassen für die roten Zeiger? Komme zur Zeit leider aus beruflichen Gründen zu nix... :-(.

Gruß
Markus

@jomjol
Copy link
Owner

jomjol commented Jan 29, 2022

Okay - nehme das als "extended CheckConsistency" Logik auf (#21)

Und klar, du kannst mir gerne einen Satz Bilder zuschicken - aber bitte die Einstellung gemäß dem Wiki berücksichtigen
https://github.com/jomjol/AI-on-the-edge-device/wiki/ROI-Configuration

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants