{"id":10043,"date":"2013-10-21T16:07:35","date_gmt":"2013-10-21T20:07:35","guid":{"rendered":"http:\/\/scruss.com\/blog\/?p=10043"},"modified":"2013-10-21T16:07:35","modified_gmt":"2013-10-21T20:07:35","slug":"utility-meter-reader-nice-idea-flawed-implementation","status":"publish","type":"post","link":"https:\/\/scruss.com\/blog\/2013\/10\/21\/utility-meter-reader-nice-idea-flawed-implementation\/","title":{"rendered":"Utility Meter Reader: nice idea, flawed implementation"},"content":{"rendered":"<p><a href=\"http:\/\/utility-meter-reader.com\/\">Utility Meter Reader<\/a> is a great idea for an app. Using the camera on your smartphone, snap a picture of your utility meter&#8217;s analogue dials, and through the power of some clever image processing, the app will return your meter reading. <a href=\"http:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2013\/10\/DSC_1450.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-10045\" alt=\"five-dial analogue kWh meter fascia\" src=\"http:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2013\/10\/DSC_1450-1024x576.jpg\" width=\"604\" height=\"339\" srcset=\"https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2013\/10\/DSC_1450-1024x576.jpg 1024w, https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2013\/10\/DSC_1450-160x90.jpg 160w, https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2013\/10\/DSC_1450-320x180.jpg 320w, https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2013\/10\/DSC_1450.jpg 1918w\" sizes=\"auto, (max-width: 604px) 100vw, 604px\" \/><\/a>Traditional meters are a bit hard to read, as the dials rotate in alternate directions. You won&#8217;t realize why this is unless you get a chance to peek behind the fascia:<\/p>\n<p><a href=\"http:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2013\/10\/DSC_1454.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-10044\" alt=\"the fiddly gear-train inside a five-dial analogue kWh meter\" src=\"http:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2013\/10\/DSC_1454-1024x575.jpg\" width=\"604\" height=\"339\" srcset=\"https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2013\/10\/DSC_1454-1024x575.jpg 1024w, https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2013\/10\/DSC_1454-160x89.jpg 160w, https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2013\/10\/DSC_1454-320x179.jpg 320w, https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2013\/10\/DSC_1454.jpg 1923w\" sizes=\"auto, (max-width: 604px) 100vw, 604px\" \/><\/a>There&#8217;s an incredibly fiddly set of 10:1 reduction gears in there, so each dial registers a tenth of the one next to it. Because it&#8217;s a drive-train, adjacent shafts rotate in opposite directions. This serves to keep the cost of the meter down at the expense of having to think a bit about how to read the thing.<\/p>\n<p>We only have one dial meter on the house. It&#8217;s a 58 year old gas meter (same age as the house) and it&#8217;s certainly been around a bit:<\/p>\n<p><a href=\"http:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2013\/10\/xgasmeter-1.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-10049\" alt=\"gas meter (but not Scarlett O'Gasmeter)\" src=\"http:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2013\/10\/xgasmeter-1-1024x669.jpg\" width=\"604\" height=\"394\" srcset=\"https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2013\/10\/xgasmeter-1-1024x669.jpg 1024w, https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2013\/10\/xgasmeter-1-160x104.jpg 160w, https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2013\/10\/xgasmeter-1-320x209.jpg 320w, https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2013\/10\/xgasmeter-1.jpg 1272w\" sizes=\"auto, (max-width: 604px) 100vw, 604px\" \/><\/a><\/p>\n<p>Here it&#8217;s reading 969700 ft\u00c2\u00b3, ignoring the lower dials; the units are hundreds of cubic feet. Let&#8217;s see how Utility Meter Reader made out with that:<\/p>\n<p style=\"text-align: center;\"><a href=\"http:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2013\/10\/2013-10-21_18.59.26.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter  wp-image-10050\" alt=\"meter read failed\" src=\"http:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2013\/10\/2013-10-21_18.59.26-614x1024.jpg\" width=\"362\" height=\"604\" srcset=\"https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2013\/10\/2013-10-21_18.59.26-614x1024.jpg 614w, https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2013\/10\/2013-10-21_18.59.26-96x160.jpg 96w, https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2013\/10\/2013-10-21_18.59.26-192x320.jpg 192w, https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2013\/10\/2013-10-21_18.59.26.jpg 768w\" sizes=\"auto, (max-width: 362px) 100vw, 362px\" \/><\/a><\/p>\n<p style=\"text-align: left;\">Not very well, it seems. How about if I carefully process the image, sharpening it up, straightening it, and making it very high-contrast greyscale:<\/p>\n<p style=\"text-align: center;\"><a href=\"http:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2013\/10\/2013-10-21_16.16.56.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter  wp-image-10052\" alt=\"not quite right: gas meter\" src=\"http:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2013\/10\/2013-10-21_16.16.56-614x1024.jpg\" width=\"362\" height=\"604\" srcset=\"https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2013\/10\/2013-10-21_16.16.56-614x1024.jpg 614w, https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2013\/10\/2013-10-21_16.16.56-96x160.jpg 96w, https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2013\/10\/2013-10-21_16.16.56-192x320.jpg 192w, https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2013\/10\/2013-10-21_16.16.56.jpg 768w\" sizes=\"auto, (max-width: 362px) 100vw, 362px\" \/><\/a><\/p>\n<p style=\"text-align: left;\">Hmm, the big figure&#8217;s completely wrong, but it got the rest.<\/p>\n<p>Okay, so let&#8217;s feed it a nice canned example, like this one (courtesy of <a href=\"http:\/\/www.glps.net\/default.htm\">Greeneville Light &amp; Power System<\/a>&#8216;s \u00e2\u20ac\u0153<a href=\"http:\/\/www.glps.net\/meterread.htm\">How to Read Your Electric Meter<\/a>\u00e2\u20ac\u009d page). Even <em>I<\/em> can see that this reads 46372:<\/p>\n<p><a href=\"http:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2013\/10\/glps.net-sm46372.gif\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-10051\" alt=\"glps.net-sm46372\" src=\"http:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2013\/10\/glps.net-sm46372.gif\" width=\"438\" height=\"83\" \/><\/a>According to Utility Meter Reader, though:<\/p>\n<p style=\"text-align: center;\"><a href=\"http:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2013\/10\/2013-10-21_16.28.15.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter  wp-image-10053\" alt=\"2013-10-21_16.28.15\" src=\"http:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2013\/10\/2013-10-21_16.28.15-614x1024.jpg\" width=\"362\" height=\"604\" srcset=\"https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2013\/10\/2013-10-21_16.28.15-614x1024.jpg 614w, https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2013\/10\/2013-10-21_16.28.15-96x160.jpg 96w, https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2013\/10\/2013-10-21_16.28.15-192x320.jpg 192w, https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2013\/10\/2013-10-21_16.28.15.jpg 768w\" sizes=\"auto, (max-width: 362px) 100vw, 362px\" \/><\/a><\/p>\n<p>The big figure&#8217;s off by one again. Very strange, especially since it picked up 4.23 for the first dial. In desperation, I clipped a small part of the GE meter image from my screen, and sent it to the app:<\/p>\n<p style=\"text-align: center;\"><a href=\"http:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2013\/10\/2013-10-21_18.41.11.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter  wp-image-10054\" alt=\"2013-10-21_18.41.11\" src=\"http:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2013\/10\/2013-10-21_18.41.11-614x1024.jpg\" width=\"362\" height=\"604\" srcset=\"https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2013\/10\/2013-10-21_18.41.11-614x1024.jpg 614w, https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2013\/10\/2013-10-21_18.41.11-96x160.jpg 96w, https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2013\/10\/2013-10-21_18.41.11-192x320.jpg 192w, https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2013\/10\/2013-10-21_18.41.11.jpg 768w\" sizes=\"auto, (max-width: 362px) 100vw, 362px\" \/><\/a><\/p>\n<p style=\"text-align: left;\">2558 is the right answer. Phew! But the app only seemed to work on a well-lit, clean meter fascia with no glass in the way and an image taken by a rather nice DSLR. One out of three ain&#8217;t quite good enough.<\/p>\n<p>One concern I have about the app is that \u00e2\u20ac\u201d while it allows you to e-mail a reading to your utility \u00e2\u20ac\u201d it quietly BCCs a copy of that reading (which includes your meter details) to <em>imeterreader [at] the-next-future.com<\/em>. I didn&#8217;t see much of a privacy contract when I downloaded the app onto my Android phone, so I don&#8217;t know what they are going to do with my readings or personal data. So if it ever gets to working properly, I won&#8217;t use that feature.<\/p>\n<p>The app&#8217;s a good idea, but the implementation&#8217;s pretty far off where it needs to be. Of course, one could quickly whip up an implementation in <a href=\"http:\/\/opencv.org\/\">OpenCV<\/a> to identify dial circles and read the pointers. But do all this on your smartphone, however, and you&#8217;d fall foul of their <a title=\"A method and apparatus to read an analog dial utility meter including a plurality of analog dials \u00e2\u20ac\u00a6\" href=\"http:\/\/www.google.com\/patents\/US20130050498\">US patent application<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Utility Meter Reader is a great idea for an app. Using the camera on your smartphone, snap a picture of your utility meter&#8217;s analogue dials, and through the power of some clever image processing, the app will return your meter reading. Traditional meters are a bit hard to read, as the dials rotate in alternate [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[7],"tags":[1105,2331,1571,1557,2731,2732,2730],"class_list":["post-10043","post","type-post","status-publish","format-standard","hentry","category-computers-suck","tag-analogue","tag-android","tag-dial","tag-meter","tag-opencv","tag-patent","tag-read"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/pQNZZ-2BZ","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/scruss.com\/blog\/wp-json\/wp\/v2\/posts\/10043","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/scruss.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/scruss.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/scruss.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/scruss.com\/blog\/wp-json\/wp\/v2\/comments?post=10043"}],"version-history":[{"count":4,"href":"https:\/\/scruss.com\/blog\/wp-json\/wp\/v2\/posts\/10043\/revisions"}],"predecessor-version":[{"id":10058,"href":"https:\/\/scruss.com\/blog\/wp-json\/wp\/v2\/posts\/10043\/revisions\/10058"}],"wp:attachment":[{"href":"https:\/\/scruss.com\/blog\/wp-json\/wp\/v2\/media?parent=10043"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/scruss.com\/blog\/wp-json\/wp\/v2\/categories?post=10043"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/scruss.com\/blog\/wp-json\/wp\/v2\/tags?post=10043"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}