jomjol / AI-on-the-edge-device

Easy to use device for connecting "old" measuring units (water, power, gas, ...) to the digital world
https://jomjol.github.io/AI-on-the-edge-device-docs/
5.27k stars 580 forks source link

Zähler zu früh #3028

Open MBecke36 opened 2 months ago

MBecke36 commented 2 months ago

Issue

Mein Zähler kommt viel zu früh. Der Sprung ist 391,9980 auf 392,9992 obwohl ich nur eine Tasse Wasser genommen habe.

Was kann ich da machen?

IMG_20240409_100016_NR

[TakeImage] ;RawImagesLocation = /log/source WaitBeforeTakingPicture = 10 ;RawImagesRetention = 15 Demo = false Brightness = -2 Contrast = 1 Saturation = -2 Sharpness = 2 LEDIntensity = 10 ImageQuality = 15 ImageSize = VGA Zoom = false ZoomMode = 0 ZoomOffsetX = 0 ZoomOffsetY = 0 Grayscale = false Negative = false Aec2 = true AutoExposureLevel = 0 FixedExposure = false

[Alignment] InitialRotate = -108.1 InitialMirror = false SearchFieldX = 20 SearchFieldY = 20 AlignmentAlgo = default FlipImageSize = true /config/ref0.jpg 328 177 /config/ref1.jpg 11 275

[Digits] Model = /config/dig-class100-0168_s2_q.tflite CNNGoodThreshold = 0.5 ;ROIImagesLocation = /log/digit ;ROIImagesRetention = 3 main.dig1 188 177 23 42 0 main.dig2 216 177 23 42 false main.dig3 244 177 23 42 false main.dig4 272 177 23 42 0 main.dig5 300 177 23 42 0

[Analog] Model = /config/ana-class100_0171_s1_q.tflite ;ROIImagesLocation = /log/analog ;ROIImagesRetention = 3 main.ana1 309 275 76 76 false main.ana2 258 352 76 76 false main.ana3 167 360 76 76 false main.ana4 103 293 76 76 false

[PostProcessing] main.DecimalShift = 0 main.AnalogDigitalTransitionStart = 6 PreValueUse = true PreValueAgeStartup = 720 main.AllowNegativeRates = false main.MaxRateValue = 0.05 main.MaxRateType = AbsoluteChange main.ExtendedResolution = true main.IgnoreLeadingNaN = true ErrorMessage = true CheckDigitIncreaseConsistency = false

[MQTT] Uri = mqtt://192.168.1.41:1883 MainTopic = watermeter ClientID = watermeter user = XXXXX password = XXXXX RetainMessages = false HomeassistantDiscovery = false ;MeterType = other ;CACert = /config/certs/RootCA.pem ;ClientCert = /config/certs/client.pem.crt ;ClientKey = /config/certs/client.pem.key

;[InfluxDB] ;Uri = undefined ;Database = undefined ;user = undefined ;password = undefined ;main.Measurement = undefined ;main.Field =

;[InfluxDBv2] ;Uri = undefined ;Bucket = undefined ;Org = undefined ;Token = undefined ;main.Measurement = undefined ;main.Field = undefined

;[GPIO] ;IO0 = input disabled 10 false false ;IO1 = input disabled 10 false false ;IO3 = input disabled 10 false false ;IO4 = built-in-led disabled 10 false false ;IO12 = input-pullup disabled 10 false false ;IO13 = input-pullup disabled 10 false false LEDType = WS2812 LEDNumbers = 2 LEDColor = 150 150 150

[AutoTimer] AutoStart = true Interval = 10

[DataLogging] DataLogActive = true DataFilesRetention = 3

[Debug] LogLevel = 1 LogfilesRetention = 3

[System] TimeZone = CET-1CEST,M3.5.0,M10.5.0/3 ;TimeServer = pool.ntp.org ;Hostname = undefined ;RSSIThreshold = -75 CPUFrequency = 240 SetupMode = false

SybexX commented 2 months ago

Wie sind den deine Einstellungen? lade am besten deine config.ini hier hoch. So auf die schnelle würde ich sagen das dein MaxRateValue zu hoch eingestellt ist. https://jomjol.github.io/AI-on-the-edge-device-docs/Correction%20Algorithm/#maxratevalue-and-maxratetype

MBecke36 commented 2 months ago

Vielen Dank. Hab die Config.ini oben angehängt.

SybexX commented 2 months ago

hast du den MaxRateValue Wert in dieser config.ini schon geändert oder war er vorher auch so? Gibt es einen Grund wieso der Wert AnalogDigitalTransitionStart = 6 ist, den wenn dein Zähler mit der letzten DigitalStelle "normal" ist (https://github.com/jomjol/AI-on-the-edge-device/issues/3027) , dann würde ich den Wert auf mindestens 9 stellen. https://jomjol.github.io/AI-on-the-edge-device-docs/Watermeter-specific-analog---digital-transition/

MBecke36 commented 2 months ago

MaxRateValue hab ich heute erst so Gesetz, zum testen. AnalogDigitalTransitionStart mit 9 geht gar nicht, 30 mal am Tag falsche Messung. Bei 6 nur noch 2-3 mal

SybexX commented 2 months ago

dieser Beiträge könnten dir eventuel auch was bringen: https://github.com/jomjol/AI-on-the-edge-device/issues/3025 https://github.com/jomjol/AI-on-the-edge-device/discussions/2926 Bei MaxRateValue = 0.05 wirst du jedoch einen Fehler (Rate too high - Read:...) bekommen, der erst wieder verschwindet wenn der Zähler den falsch gelesenen Wert übersteigt^^

MBecke36 commented 2 months ago

Die MaxRateValue hab ich deaktiviert. Die Änderung von #3025 habe ich gemacht und werde testen.

SybexX commented 2 months ago

probire mal die Firmware aus dem Beitrag https://github.com/jomjol/AI-on-the-edge-device/discussions/2926 mit aktiviertem MaxRateValue

MBecke36 commented 2 months ago

welche Version ist das? ich Habe rollend (Commit: d6a1838+) drauf

SybexX commented 2 months ago

das aktuelle rolling mit zig Verbesserungen/Änderungen

MBecke36 commented 2 months ago

Versuchen Sie mal die Firmware aus dem Beitrag #2926 mit aktiviertem MaxRateValue

Das geht leider nicht kommt immer eine Viruswarnung.

SybexX commented 2 months ago

komisch, diese Dateien wurde ja von github.com Kompeliert und gezipt, daher dürfte da keine Viruswarnung kommen^^

Slider0007 commented 2 months ago

@MBecke36: Ich würde empfehlen, den Parameter AnalogDigitalTransitionStart wie folgt zu ermitteln: --> Höchstwertigen Analogzeiger ablesen, wenn das niederwertigste Digit von x.7 auf x.8 wechselt und davon von ca. 0.5 abziehen. Welcher Wert ergibt sich?

Ich vermute, dein niederwertigstes Digit wechselt zu früh / zu schnell auf x.0. Ich würde versuchen, dies bewusst etwas hängend auszuführen, damit der Analogzeiger vorher über 0 kommt. Schiebe deshalb das ROI des niederwertigsten Digit minimal hoch.

Duke194 commented 1 day ago

Hallo Ich habe ein ähnliches Problem und hab mir ein paar Gedanken dazu gemacht. Ihr dürft mich gerne korrigieren wenn ich hier einen Gedankenfehler gemacht habe, aber müsste man nicht die Digitalisierten Werte immer mit floor abrunden?

Ich bin der Meinung, dass die Erkennung im Beispiel alles richtig erkennt, die Zahl jedoch sollte meiner Meinung nach 713.4284 sein, was sie auch wäre, wenn die Zahlen abgerundet werden würden. Das macht denke ich insofern Sinn, dass ja die Zahl dann "abgeschlossen" ist wenn sie mittig in die ROI gedreht ist. Teil mal gerne eure Gedanken dazu. Danke im voraus :)

image