NEWS
Wasserzähler - Version 2 - all-in-device
-
Ansonsten dachte ich, dass mqtt auch bei einer anderen Datenstruktur senden und im Protokoll sehen sollte, aber das Protokoll auf mqtt ist leer.
das ist die mqtt-Einstellung
[MQTT]
Uri = mqtt: //10.10.20.11: 1883
; Hauptthema =
ClientID = Wasser
user = mqttuser
Passwort = mqttpassword -
@jezinka
Hauptthema
ist ungewöhnlich. Meine MQTT sieht wie folgt aus:[MQTT] Uri = mqtt://aaa.bbb.ccc.ddd:1883 MainTopic = wasserzaehler ClientID = wasser ;user = USERNAME ;password = PASSWORD
-
@jomjol Dieses Hauptthema war ein Übersetzungsfehler von Google. Jetzt habe ich also das Hauptthema ausgefüllt und es scheint sich bereits richtig zu verhalten. Zuerst fror es ein und startete immer wieder neu. Wahrscheinlich störte ihn der gefüllte Wert. In der Vorgängerversion war dies jedoch kein Problem. Zumal es bereits funktioniert. Danke für Ihre Hilfe !
2021-08-17T20:45:29: =============================================================================================
2021-08-17T20:45:29: =================================== Main Started ============================================
2021-08-17T20:45:29: =============================================================================================
2021-08-17T20:45:33: Time zone set to CET-1CEST
2021-08-17T20:45:33: task_autodoFlow - next round - Round #1
2021-08-17T20:45:33: FlowControll.doFlow - ClassFlowMakeImage
2021-08-17T20:45:45: FlowControll.doFlow - ClassFlowAlignment
2021-08-17T20:46:04: FlowControll.doFlow - ClassFlowDigit
2021-08-17T20:46:31: FlowControll.doFlow - ClassFlowAnalog
2021-08-17T20:46:46: FlowControll.doFlow - ClassFlowPostProcessing
2021-08-17T20:46:46: FlowControll.doFlow - ClassFlowMQTT
2021-08-17T20:46:47: sent publish successful in MQTTPublish, msg_id=600, watermeter/connection, connected
2021-08-17T20:46:47: sent publish successful in MQTTPublish, msg_id=23981, watermeter/uptime, 78
2021-08-17T20:46:47: sent publish successful in MQTTPublish, msg_id=8775, watermeter/freeMem, 2986444
2021-08-17T20:46:47: sent publish successful in MQTTPublish, msg_id=52043, watermeter/value, 0.2314
2021-08-17T20:46:47: sent publish successful in MQTTPublish, msg_id=36114, watermeter/error, no error
2021-08-17T20:46:47: sent publish successful in MQTTPublish, msg_id=3472, watermeter/rate, 0.000157
2021-08-17T20:46:47: sent publish successful in MQTTPublish, msg_id=46553, watermeter/timestamp, 2021-08-17T20:45:42
2021-08-17T20:46:47: sent publish successful in MQTTPublish, msg_id=6605, watermeter/json, {"value":0.2314,"error":"no error","rate":0.000157,"timestamp":"2021-08-17T20:45:42"}
2021-08-17T20:46:47: task_autodoFlow - round done
2021-08-17T20:46:47: CPU Temperature: 59.4
2021-08-17T20:47:51: download_get_handler
2021-08-17T20:48:22: download_get_handler
2021-08-17T20:48:30: download_get_handler -
Nachdem das System nun vier Wochen ohne Probleme durchlief, habe ich seit gestern eine Dauer-reboot-Schleife:
[MQTT] abort() was called at PC 0x40153923 on core 0 ELF file SHA256: d625d782fdb447c4 Backtrace: 0x4008cd78:0x3fff9560 0x4008d1a9:0x3fff9580 0x40153923:0x3fff95a0 0x4015396a:0x3fff95c0 0x40153a77:0x3fff95e0 0x40162cc7:0x3fff9600 0x4018f162:0x3fff9620 0x40191ca6:0x3fff9660 0x4019297d:0x3fff9c50 0x4018b21e:0x3fff9d00 0x400f0d4a:0x3fffa180 0x400f0f9f:0x3fffa1c0 Rebooting... ets Jun 8 2016 00:22:57 rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) configsip: 0, SPIWP:0xee clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00 mode:DIO, clock div:2 load:0x3fff0030,len:4 load:0x3fff0034,len:7248 ho 0 tail 12 room 4 load:0x40078000,len:13856 load:0x40080400,len:4052 entry 0x40080688 I (31) boot: ESP-IDF 3.40100.200827 2nd stage bootloader I (31) boot: compile time 10:16:06 I (31) boot: chip revision: 1 I (34) boot_comm: chip revision: 1, min. bootloader chip revision: 0 I (41) boot.esp32: SPI Speed : 40MHz I (46) boot.esp32: SPI Mode : DIO I (51) boot.esp32: SPI Flash Size : 4MB I (55) boot: Enabling RNG early entropy source... I (61) boot: Partition Table: I (64) boot: ## Label Usage Type ST Offset Length I (71) boot: 0 nvs WiFi data 01 02 00009000 00004000 I (79) boot: 1 otadata OTA data 01 00 0000d000 00002000 I (86) boot: 2 phy_init RF data 01 01 0000f000 00001000 I (94) boot: 3 ota_0 OTA app 00 10 00010000 001db000 I (101) boot: 4 ota_1 OTA app 00 11 001f0000 001db000 I (109) boot: End of partition table I (113) boot_comm: chip revision: 1, min. application chip revision: 0 I (120) esp_image: segment 0: paddr=0x00010020 vaddr=0x3f400020 size=0x507c0 (329664) map I (272) esp_image: segment 1: paddr=0x000607e8 vaddr=0x3ffb0000 size=0x05038 ( 20536) load I (282) esp_image: segment 2: paddr=0x00065828 vaddr=0x40080000 size=0x00404 ( 1028) load I (283) esp_image: segment 3: paddr=0x00065c34 vaddr=0x40080404 size=0x0a3e4 ( 41956) load I (310) esp_image: segment 4: paddr=0x00070020 vaddr=0x400d0020 size=0x14f8a8 (1374376) map I (905) esp_image: segment 5: paddr=0x001bf8d0 vaddr=0x4008a7e8 size=0x12194 ( 74132) load I (958) boot: Loaded app from partition at offset 0x10000 I (958) boot: Disabling RNG early entropy source... I (959) psram: This chip is ESP32-D0WD I (963) spiram: Found 64MBit SPI RAM device I (968) spiram: SPI RAM mode: flash 40m sram 40m I (973) spiram: PSRAM initialized, cache is in low/high (2-core) mode. I (980) cpu_start: Pro cpu up. I (984) cpu_start: Application information: I (989) cpu_start: Project name: esp32cam-server-only I (995) cpu_start: App version: 0.0.9.3 I (1000) cpu_start: Compile time: Jul 25 2021 18:09:35 I (1006) cpu_start: ELF file SHA256: d625d782fdb447c4... I (1012) cpu_start: ESP-IDF: 3.40100.200827 I (1018) cpu_start: Starting app cpu, entry point is 0x40081ad8 I (1009) cpu_start: App cpu up. I (1916) spiram: SPI SRAM memory test OK I (1916) heap_init: Initializing. RAM available for dynamic allocation: I (1916) heap_init: At 3FFAE6E0 len 00001920 (6 KiB): DRAM I (1922) heap_init: At 3FFC29D0 len 0001D630 (117 KiB): DRAM I (1929) heap_init: At 3FFE0440 len 00003AE0 (14 KiB): D/IRAM I (1935) heap_init: At 3FFE4350 len 0001BCB0 (111 KiB): D/IRAM I (1942) heap_init: At 4009C97C len 00003684 (13 KiB): IRAM I (1948) cpu_start: Pro cpu start user code I (1953) spiram: Adding pool of 4096K of external SPI memory to heap allocator I (1978) spi_flash: detected chip: generic I (1979) spi_flash: flash io: dio I (1979) cpu_start: Starting scheduler on PRO CPU. I (0) cpu_start: Starting scheduler on APP CPU. I (1987) spiram: Reserving pool of 32K of internal memory for DMA/internal allocations Do Reset Camera I (1997) gpio: GPIO[32]| InputEn: 0| OutputEn: 1| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0 Init Camera I (4007) gpio: GPIO[5]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 I (4007) gpio: GPIO[18]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 I (4007) gpio: GPIO[19]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 I (4017) gpio: GPIO[21]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 I (4027) gpio: GPIO[22]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 I (4037) gpio: GPIO[23]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 I (4047) gpio: GPIO[25]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 I (4057) gpio: GPIO[34]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 I (4067) gpio: GPIO[35]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 I (4077) gpio: GPIO[36]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 I (4087) gpio: GPIO[39]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 I (4097) sccb: pin_sda 26 pin_scl 27 I (4097) gpio: GPIO[32]| InputEn: 0| OutputEn: 1| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0 I (4247) camera: Detected OV2640 camera I (4257) camera: Allocating 1 frame buffers (150 KB total) I (4267) camera: Allocating 150 KB frame buffer in OnBoard RAM I (4867) main: Using SDMMC peripheral Name: 00000 Type: SDHC/SDXC Speed: 20 MHz Size: 15208MB I (4907) server_ota: Start CheckOTAUpdateCheck ... Start CheckOTAUpdateCheck ... I (4917) server_ota: SHA-256 for the partition table: : 9d4a2809ae90fb20709a8ca3dd3ac3462e1e73286bcd31b689060c91de06fa3a I (4977) server_ota: SHA-256 for bootloader: : 8677ca5aab674ba732c280f0c34b595fce09e670bf8282c4147250de215bf674 I (5677) server_ota: SHA-256 for current firmware: : 96b6dc9fddcfb5775935a1c42d8adbe2938758f34a84a784278d4a09f4052572 CheckOTAUpdate Partition: ESP_OK open config file /sdcard/wlan.ini in mode r file loaded WLan: FRITZ!Box Fon WLAN 7390, Hostename: watermeter I (5737) wifi:wifi driver task: 3ffd9cb0, prio:23, stack:6656, core=0 I (5737) system_api: Base MAC address is not set, read default base MAC address from BLK0 of EFUSE I (5737) system_api: Base MAC address is not set, read default base MAC address from BLK0 of EFUSE I (5767) wifi:wifi firmware version: 3ea4c76 I (5767) wifi:config NVS flash: enabled I (5767) wifi:config nano formating: disabled I (5767) wifi:Init dynamic tx buffer num: 32 I (5777) wifi:Init data frame dynamic rx buffer num: 32 I (5777) wifi:Init management frame dynamic rx buffer num: 32 I (5787) wifi:Init management short buffer num: 32 I (5787) wifi:Init static tx buffer num: 16 I (5797) wifi:Init static rx buffer size: 1600 I (5797) wifi:Init static rx buffer num: 10 I (5797) wifi:Init dynamic rx buffer num: 32 I (5897) phy: phy_version: 4180, cb3948e, Sep 12 2019, 16:39:13, 0, 0 I (5897) wifi:mode : sta (24:6f:28:af:18:a8) I (5897) BLINK: Blinken - start I (5907) wifi station: wifi_init_sta finished. I (6027) wifi:new:<1,1>, old:<1,0>, ap:<255,255>, sta:<1,1>, prof:6 I (6027) wifi:state: init -> auth (b0) I (6037) wifi:state: auth -> assoc (0) I (6047) wifi:state: assoc -> run (10) I (6057) wifi:connected with FRITZ!Box Fon WLAN 7390, aid = 4, channel 1, 40U, bssid = 9c:c7:a6:fa:3a:04 I (6057) wifi:security: WPA2-PSK, phy: bgn, rssi: -27 I (6067) wifi:pm start, type: 1 I (6107) BLINK: Blinken - done I (6117) wifi:AP's beacon interval = 102400 us, DTIM period = 1 I (6717) esp_netif_handlers: sta ip: 192.168.3.14, mask: 255.255.255.0, gw: 192.168.3.1 I (6717) wifi station: got ip:192.168.3.14 I (6717) BLINK: Blinken - start I (6727) wifi station: connected to ap SSID:FRITZ!Box Fon WLAN 7390 password: main: sleep for : 200ms I (8737) sntp: Time is not set yet. Connecting to WiFi and getting time over NTP. I (8737) sntp: Initializing SNTP I (8737) sntp: Waiting for system time to be set... (1/10) TimeZone set to CET-1CEST,M3.5.0,M10.5.0/3 Logfile opened: /sdcard/log/message/log_2021-08-18.txt I (10747) sntp: The current date/time in Berlin is: Wed Aug 18 18:49:09 2021 I (10747) sntp: The current date/time in Berlin is: 2021-08-18_18:49 timeist 20210818-184909 Logfile opened: /sdcard/log/message/log_2021-08-18.txt Logfile opened: /sdcard/log/message/log_2021-08-18.txt Logfile opened: /sdcard/log/message/log_2021-08-18.txt time 20210818-184909 main: sleep for : 200ms I (12787) server-main: Starting server on port: '80' I (12787) server-main: Registering URI handlers I (12787) server_tflite: server_part_camera - Registering URI handlers I (12787) server_ota: server_ota - Registering URI handlers I (12797) server_GPIO: start GpioHandler I (12797) server_GPIO: register GPIO Uri I (12807) server_GPIO: server_GPIO - Registering URI handlers vor reg server main vor dotautostart task_autodoFlow: start open config file /sdcard/config/config.ini in mode r [MakeImage] Start ReadParameter ;LogImageLocation = /log/source WaitBeforeTakingPicture = 5 ;LogfileRetentionInDays = 15 ;Brightness = -2 ;Contrast = 0 ;Saturation = 0 ImageQuality = 5 ImageSize = VGA FixedExposure = true [Alignment] I (16727) BLINK: Blinken - done Start ReadParameter InitialRotate = 170 InitialMirror = false SearchFieldX = 20 SearchFieldY = 20 ;AlignmentAlgo = default ;FlipImageSize = false /config/ref0.jpg 269 20 /config/ref1.jpg 462 370 [Digits] 2021-08-14T10:50:09 Start ReadParameter aktparamgraph: [Digits] Name Digit: Model = /config/dig0820s2q.tflite ;LogImageLocation = /log/digit ;LogfileRetentionInDays = 3 ModelInputSize = 20 32 main.dig1 244 80 33 60 GetDIGIT - digit main - roi dig1 main.dig2 282 82 33 60 GetDIGIT - digit main - roi dig2 main.dig3 320 82 34 60 GetDIGIT - digit main - roi dig3 [Analog] Start ReadParameter Model = /config/ana0700s1lq.tflite ;LogImageLocation = /log/analog ;LogfileRetentionInDays = 3 ModelInputSize = 32 32 ExtendedResolution = false main.ana1 387 145 123 123 GetANALOG - ANALOG main - roi ana1 main.ana3 346 255 115 115 GetANALOG - ANALOG main - roi ana3 main.ana4 244 300 112 112 GetANALOG - ANALOG main - roi ana4 main.ana2 127 252 118 118 GetANALOG - ANALOG main - roi ana2 [PostProcessing] Start ReadParameter Anzahl NUMBERS: 1 - DIGITS: 1, ANALOG: 1 Number main, Anz DIG: 3, Anz ANA 4 main.DecimalShift = 0 PreValueUse = true PreValueAgeStartup = 720 AllowNegativeRates = true main.MaxRateValue = 0.1 ErrorMessage = true CheckDigitIncreaseConsistency = false [MQTT] abort() was called at PC 0x40153923 on core 0 ELF file SHA256: d625d782fdb447c4 Backtrace: 0x4008cd78:0x3fff9560 0x4008d1a9:0x3fff9580 0x40153923:0x3fff95a0 0x4015396a:0x3fff95c0 0x40153a77:0x3fff95e0 0x40162cc7:0x3fff9600 0x4018f162:0x3fff9620 0x40191ca6:0x3fff9660 0x4019297d:0x3fff9c50 0x4018b21e:0x3fff9d00 0x400f0d4a:0x3fffa180 0x400f0f9f:0x3fffa1c0 Rebooting... ets Jun 8 2016 00:22:57 rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) configsip: 0, SPIWP:0xee clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00 mode:DIO, clock div:2 load:0x3fff0030,len:4 load:0x3fff0034,len:7248 ho 0 tail 12 room 4 load:0x40078000,len:13856 load:0x40080400,len:4052 entry 0x40080688 I (31) boot: ESP-IDF 3.40100.200827 2nd stage bootloader
-
Also bei mir läuft das System stabil.
Allerdings muss ich nach jedem Durchlauf eines m³ (von 305,... auf 306,... usw) die Pre-Value neu setzen.
Letzter Stand des Zählers waren 306,9969 m³, beim nächsten Durchlauf waren es 307,0008 m³ und die Software hängt im "rate too high" Error, obwohl maxRateValue auf 0,3 steht.
Das kann ich mir nicht erklären.
Hatte das jetzt bei drei Durchläufen eines vollen m³.
-
@rene_hm sagte in Wasserzähler - Version 2 - all-in-device:
Dauer-reboot-Schleife
Ursache war wohl die SD-Karte. Es gab zwar keinen Fehler, sie konnte normal gelesen und geschrieben werde. Ich habe alle Daten kopiert, Karte neu formatiert und Daten wieder zurück kopiert. Seitdem läuft das System wieder... seltsam...
-
@feinfinger sagte in Wasserzähler - Version 2 - all-in-device:
Allerdings muss ich nach jedem Durchlauf eines m³ (von 305,... auf 306,... usw) die Pre-Value neu setzen.
Das habe ich auch manchmal. Bei mir ist das Problem, dass sich die letzte Stelle nicht sprunghaft ändert, sondern langsam. Das führt dazu, dass diese Stelle dann ein NaN liefert, weil sie nicht erkannt wird und das führt dann bei mir zu dem "rate too high" Fehler. Ich ignoriere das, weil sich das nach kurzer Zeit automatisch wieder korrigiert (wenn die letzte Stelle wieder erkannt wird)
-
Kann man hier auch Improvisieren ? Habe aktuell keine 3D Druck Möglichkeit. Oder verschickt jemand ? Ich benötige 3 Stück.
-
@chrisxy
Meine erste Version war eine -P/r/i/n/g/e/l/s- Dose entsprechen bearbeitet zusammen mit einem Pflanztopfring zum anbringen an den Wasserzähler. Funktionierte perfekt.Die P***box hatte sogar den Vorteil der reflektierenden Wände was mit dem abkleben der LED-Leuchte zu einem nahezu Reflextionsfreien Uhrglas führte.
Gruß
DerDani -
@dan-master Danke für den Tipp.
Problem 2.. Luftfeuchte ca. 99% Ich glaube das der ESP so nicht lange Überlebt .. -
@chrisxy
Das -
@jomjol Moin und vielen Dank für die tolle Arbeit!
Ich habe mir mal erlaubt dein Design auf Thingiverse zu remixen und einen [Adapter für den Sensus620](link url) (Wasserwerke Hamburg) zur Verfügung zu stellen. Ich hoffe das ist okay. Hält bombenfest und sicher das Ding. Passgenau. Als 3D Druck Anfänger bin ich auch recht stolz
Aber das eigentliche- aus Doku-Zwecken - für alle die auch so ein Gerät haben. Die Erkennung scheint mittlerweile recht gut. Folgende Einstellung habe ich getroffen:
Damit hatte jemand anderes hier einige Erkennungsprobleme, da die Zahl recht knapp unten ist. Leider noch einige Reflexionen auf den Zahlen. Habe ich da irgendeine Möglichkeit das dem neuronalen Netzwerk beizubringen bzw. "per Hand" anzulernen?
-
@jomjol Bei mir läuft die Version 2 mit dem Sensus 620 sehr gut außer dass eine 6 oft als 0 erkannt wird. In welcher Form/Ausschnitt kann ich dir Bilder zum Lernen schicken?
-
@martinz01 sagte in Wasserzähler - Version 2 - all-in-device:
@jomjol Bei mir läuft die Version 2 mit dem Sensus 620 sehr gut außer dass eine 6 oft als 0 erkannt wird. In welcher Form/Ausschnitt kann ich dir Bilder zum Lernen schicken?
Du kannst das Logging in der Config.ini einschalten und mir dann von jeder Ziffer ca. 2-3 Bilder (nicht mehr!) schicken. Die nehme ich dann in mein nächstes Training mit auf.
-
@oberfragger Um die "Randziffern" zu berücksichtigen bräuchtest du einen eigenen Trainingsatz. Ist etwas Aufwenidig
-
@jomjol Danke für die Rückmeldung.
Jetzt gerade macht er alles was "man" braucht. Selbst die komische 5 hat er erkannt.
Hatte mir einen Diffusor mit weissem PLA gebaut, aber den mal rausgenommen und rumprobiert. Dadurch die Refexionen reduziert und selbt die "0"en erkennt er zuverlässig. Fieserweise haben die nämlich irgendso eine Plastikwurst unterhalb der Zahlen verbaut. Vermutlich kommen die Reflexionen dadurch.
Mal sehen ob er morgen die "6" erkennt.
-
@jomjol
Sehe ich dass richtig, dass man leider GIO26 und 27 nicht ansprechen kann. Zumindest geht das in den GPIO-Settings nicht.
https://randomnerdtutorials.com/esp32-cam-ai-thinker-pinout/Am liebsten würde ich da noch 1nen BME680 anschliessen und Temperatur, Luftfeuchtigkeit und vor allem VOC via MQTT empfangen. Wenn es da eine Möglichkeit gibt, dann spare ich mir den NodeMCU, der direkt neben der Wasseruhr hängt. Ein 1-wire Termometer wie ein AM2301 könnte ich dran hängen...? Vermutlich nicht, da nicht die richtigen Bibiotheken drin sind. Oder?
Und sehe ich das richtig, dass man prinzipiell an die GPIOs weitere Leuchtdioden anschliessen könnte? Wenn ich also eine indirekte Beleuchtung ohne interne LED (wegen der Reflexionen) erreichen möchte. GPIO4 ausstellen und dann einfach an einen anderen GPIO klemmen? So würde ich die Zerstörung der LED vermeiden.
-
@oberfragger Alle GPIOs bis auf GPIO 12 und 13 sind belegt. Du kannst noch den GPIO1 und 3 verwenden, wenn du auf die serielle Ausgabe zum Debuggen verzichtest und dies nur zum Flashen verwendest. Dito für GPIO4, der hängt aber auch mit der SD-Karte zusammen.
-
@jomjol
Ich hoffe, die sind so in Ordnung:
digits_sensus620.zip
Vielen Dank! -
@martinz01 Daten sind gut - Timing ist etwas ungünstig, da ich gerade erst ein neues Training gemacht habe (siehe Rolling). Aber die Bilder sind schon kopiert und fließen automatisch in die nächste Version ein.