Skip to content
This repository was archived by the owner on Dec 24, 2021. It is now read-only.

Commit 29d08e5

Browse files
committed
Update to V4.2.0
Option to enable / disable the AnalogReadout via Config.ini
1 parent 28bb23a commit 29d08e5

File tree

5 files changed

+74
-18
lines changed

5 files changed

+74
-18
lines changed

Config_Description.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,12 @@ Options for ErrorReturn are the following:
4040
* `ErrorMessage` = attach to value a reason for the inconistent value (max rate or negative)
4141
* `Readout` = attach the original readout - usefull, if the OldValue is given back to see, what the readout really was
4242

43+
## Enable/Disable AnalogReadOut
44+
#### Main section [AnalogReadOut]
45+
Enable or disable the readout of the analog counter.
46+
| Parameter | Meaning | Example |
47+
| ------------- | ------------- | ------------- |
48+
| Enabled | Diable or Enable the read out of the analog counters | `Enabled=True` or `Enabled=False` |
4349

4450

4551
## Alignment

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ This repository is the sum of different projects to read out an analog water met
44
The result is a HTTP-server, that takes an image as input, processes it and gives as an output the water meter number, including the subdigits.
55

66
## Changelog - lastest version
7+
##### 4.2.0 (2019-12-07)
8+
* Reading of analog counters is enabled or disabled via config.ini **special thanks to alikanarya**
79
##### 4.1.1 (2019-11-29)
810
* Error correction in ReadDigitalDigitClass.py
911
##### 4.1.0 (2019-11-25)

code/config/config.ini

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,10 @@ ErrorReturn=OldValue, ErrorMessage, Readout
2020
#ErrorReturn=NewValue, ErrorMessage
2121

2222

23+
[AnalogReadOut]
24+
#If enabled analog counters will be read, if disabled only digital counters will be read.
25+
Enabled=False
26+
2327
[alignment]
2428
initial_rotation_angle=180
2529

code/lib/CutImageClass.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,12 @@ def __init__(self):
2828
self.ref1 = cv2.imread(self.reference_image1)
2929
self.ref2 = cv2.imread(self.reference_image2)
3030

31+
self.AnalogReadOutEnabled = True
32+
if config.has_option('AnalogReadOut', 'Enabled'):
33+
self.AnalogReadOutEnabled = config['AnalogReadOut']['Enabled']
34+
if self.AnalogReadOutEnabled.upper() == 'FALSE':
35+
self.AnalogReadOutEnabled = False
36+
3137

3238
zw_Analog_Counter = config.get('Analog_Counter', 'names').split(',')
3339
self.Analog_Counter = []
@@ -101,6 +107,10 @@ def Cut(self, image):
101107
zeiger = self.cutZeiger(target)
102108
ziffern = self.cutZiffern(target)
103109

110+
zeiger = ziffern
111+
if self.AnalogReadOutEnabled:
112+
zeiger = self.cutZeiger(target)
113+
104114
return [zeiger, ziffern]
105115

106116
def cutZeiger(self, source):

code/lib/ZaehlerstandClass.py

Lines changed: 52 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,19 @@ def __init__(self):
1515
config.read('./config/config.ini')
1616

1717
print('Start Init Zaehlerstand')
18-
self.readAnalogNeedle = lib.ReadAnalogNeedleClass.ReadAnalogNeedle()
19-
print('Analog Model Init Done')
18+
19+
self.AnalogReadOutEnabled = True
20+
if config.has_option('AnalogReadOut', 'Enabled'):
21+
self.AnalogReadOutEnabled = config['AnalogReadOut']['Enabled']
22+
if self.AnalogReadOutEnabled.upper() == 'FALSE':
23+
self.AnalogReadOutEnabled = False
24+
25+
if self.AnalogReadOutEnabled:
26+
self.readAnalogNeedle = lib.ReadAnalogNeedleClass.ReadAnalogNeedle()
27+
print('Analog Model Init Done')
28+
else:
29+
print('Analog Model Disabled')
30+
2031
self.readDigitalDigit = lib.ReadDigitalDigitClass.ReadDigitalDigit()
2132
print('Digital Model Init Done')
2233
self.CutImage = lib.CutImageClass.CutImage()
@@ -53,11 +64,17 @@ def setPreValue(self, setValue):
5364
zerlegt = setValue.split('.')
5465
vorkomma = zerlegt[0][0:len(self.CutImage.Digital_Digit)]
5566
self.LastVorkomma = vorkomma.zfill(len(self.CutImage.Digital_Digit))
56-
nachkomma = zerlegt[1][0:len(self.CutImage.Analog_Counter)]
57-
while len(nachkomma) < len(self.CutImage.Analog_Counter):
58-
nachkomma = nachkomma + '0'
59-
self.LastNachkomma = nachkomma
60-
result = 'Last value set to: ' + self.LastVorkomma + '.' + self.LastNachkomma
67+
68+
result='N'
69+
if self.AnalogReadOutEnabled:
70+
nachkomma = zerlegt[1][0:len(self.CutImage.Analog_Counter)]
71+
while len(nachkomma) < len(self.CutImage.Analog_Counter):
72+
nachkomma = nachkomma + '0'
73+
self.LastNachkomma = nachkomma
74+
result = 'Last value set to: ' + self.LastVorkomma + '.' + self.LastNachkomma
75+
else:
76+
result = 'Last value set to: ' + self.LastVorkomma
77+
6178
return result
6279

6380
def getROI(self, url):
@@ -76,12 +93,20 @@ def getZaehlerstand(self, url, simple = True, UsePreValue = False, single = Fals
7693
txt, logtime = self.LoadFileFromHTTP.LoadImageFromURL(url, './image_tmp/original.jpg')
7794

7895
if len(txt) == 0:
79-
print('Start CutImage, AnalogReadout, DigitalReadout')
96+
if self.AnalogReadOutEnabled:
97+
print('Start CutImage, AnalogReadout, DigitalReadout')
98+
else:
99+
print('Start CutImage, DigitalReadout')
80100
resultcut = self.CutImage.Cut('./image_tmp/original.jpg')
81-
resultanalog = self.readAnalogNeedle.Readout(resultcut[0], logtime)
101+
102+
resultanalog = 0
103+
if self.AnalogReadOutEnabled:
104+
resultanalog = self.readAnalogNeedle.Readout(resultcut[0], logtime)
82105
resultdigital = self.readDigitalDigit.Readout(resultcut[1], logtime)
83106

84-
self.akt_nachkomma = self.AnalogReadoutToValue(resultanalog)
107+
self.akt_nachkomma = 0
108+
if self.AnalogReadOutEnabled:
109+
self.akt_nachkomma = self.AnalogReadoutToValue(resultanalog)
85110
self.akt_vorkomma = self.DigitalReadoutToValue(resultdigital, UsePreValue, self.LastNachkomma, self.akt_nachkomma)
86111
self.LoadFileFromHTTP.PostProcessLogImageProcedure(True)
87112

@@ -100,28 +125,37 @@ def getZaehlerstand(self, url, simple = True, UsePreValue = False, single = Fals
100125
zw = str(int(resultdigital[i]))
101126
txt += '<img src=/image_tmp/'+ str(resultcut[1][i][0]) + '.jpg></img>' + zw
102127
txt = txt + '<p>'
103-
txt = txt + 'Analog Meter: <p>'
104-
for i in range(len(resultanalog)):
105-
txt += '<img src=/image_tmp/'+ str(resultcut[0][i][0]) + '.jpg></img>' + "{:.1f}".format(resultanalog[i])
106-
txt = txt + '<p>'
128+
if self.AnalogReadOutEnabled:
129+
txt = txt + 'Analog Meter: <p>'
130+
for i in range(len(resultanalog)):
131+
txt += '<img src=/image_tmp/'+ str(resultcut[0][i][0]) + '.jpg></img>' + "{:.1f}".format(resultanalog[i])
132+
txt = txt + '<p>'
107133
print('Get Zaehlerstand done')
108134
return txt
109135

110136
def MakeReturnValue(self, error, errortxt, single):
111137
output = ''
112138
if (error):
113139
if self.ErrorReturn.find('Value') > -1:
114-
output = str(self.akt_vorkomma.lstrip("0")) + '.' + str(self.akt_nachkomma)
140+
output = str(self.akt_vorkomma.lstrip("0"))
141+
if self.AnalogReadOutEnabled:
142+
output = output + '.' + str(self.akt_nachkomma)
115143
if not single:
116-
output = output + '\t' + self.akt_vorkomma + '\t' + self.akt_nachkomma
144+
output = output + '\t' + self.akt_vorkomma
145+
if self.AnalogReadOutEnabled:
146+
output = output + '\t' + self.akt_nachkomma
117147
if len(output) > 0:
118148
output = output + '\t' + errortxt
119149
else:
120150
output = errortxt
121151
else:
122-
output = str(self.akt_vorkomma.lstrip("0")) + '.' + str(self.akt_nachkomma)
152+
output = str(self.akt_vorkomma.lstrip("0"))
153+
if self.AnalogReadOutEnabled:
154+
output = output + '.' + str(self.akt_nachkomma)
123155
if not single:
124-
output = output + '\t' + self.akt_vorkomma + '\t' + self.akt_nachkomma
156+
output = output + '\t' + self.akt_vorkomma
157+
if self.AnalogReadOutEnabled:
158+
output = output + '\t' + self.akt_nachkomma
125159
return output
126160

127161
def UpdateLastValues(self, error):

0 commit comments

Comments
 (0)