{"id":786,"date":"2015-06-15T22:45:56","date_gmt":"2015-06-16T04:45:56","guid":{"rendered":"https:\/\/scadametrics.com\/blog\/?p=786"},"modified":"2022-10-15T16:04:36","modified_gmt":"2022-10-15T22:04:36","slug":"free-automatic-meter-reading-software","status":"publish","type":"post","link":"https:\/\/scadametrics.com\/blog\/?p=786","title":{"rendered":"Free Automatic Meter Reading Software!"},"content":{"rendered":"<p><div id=\"attachment_3732\" style=\"width: 160px\" class=\"wp-caption alignright\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-3732\" src=\"https:\/\/scadametrics.com\/blog\/wp-content\/uploads\/2025\/07\/IMG_0987-1-150x150.jpeg\" width=\"150\" height=\"150\" data-srcset=\"https:\/\/scadametrics.com\/blog\/wp-content\/uploads\/2025\/07\/IMG_0987-1.jpeg 2x\" alt=\"James Mimlitz &#039;Slim&#039;\" class=\"avatar avatar-150 wp-user-avatar wp-user-avatar-150 photo\" \/><p id=\"caption-attachment-3732\" class=\"wp-caption-text\">Jim &#8216;Slim&#8217; Mimlitz, SCADAmetrics<\/p><\/div>In recent months, we&#8217;ve been receiving regular requests from non-industrial-controls clients who wish to build an AMR System around the EtherMeter.\u00a0 Examples include owners and managers of commercial properties, such as apartment buildings and strip malls.\u00a0 In most cases, this category of client works in the commercial sub-metering realm, and therefore does not have prior experience using\u00a0Ethernet-based SCADA and industrial controls software.\u00a0 Furthermore, they\u00a0also generally wish to avoid the\u00a0licensing and training expenses associated with SCADA software.\u00a0 However, at the same time, they are beckoned by the EtherMeter&#8217;s ability to transmit Meter Readings and Flow-Rates over an Ethernet network.<\/p>\n<p>Today, we are pleased to announce that help has arrived for commercial sub-metering clients with the\u00a0release of our\u00a0<strong>Free<\/strong>, Open-Source AMR software!\u00a0 Downloadable under the non-restrictive BSD license &#8212; users may freely download, install, and tailor the C++ source code for their own proprietary purposes.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-790\" src=\"https:\/\/scadametrics.com\/blog\/wp-content\/uploads\/2015\/06\/Software_Developer_01.jpg\" alt=\"Software_Developer_01\" width=\"218\" height=\"241\" srcset=\"https:\/\/scadametrics.com\/blog\/wp-content\/uploads\/2015\/06\/Software_Developer_01.jpg 353w, https:\/\/scadametrics.com\/blog\/wp-content\/uploads\/2015\/06\/Software_Developer_01-272x300.jpg 272w\" sizes=\"auto, (max-width: 218px) 100vw, 218px\" \/><\/p>\n<p>This software uses the non-proprietary Modbus protocol to communicate to a group of EtherMeters across an Intranet or across the Internet.\u00a0 Collected meter readings are time-stamped and stored into an ASCII .CSV File (Comma-Separated Text File), which can be opened and manipulated using spreadsheet software, such as Microsoft Excel.<\/p>\n<p>Today&#8217;s article will help you to build an AMR system using\u00a0this new free software package.\u00a0 This non-proprietary program was designed to\u00a0poll a network of EtherMeters using the standard Modbus\/TCP or Modbus\/UDP protocol from a Windows-based PC.\u00a0 The EtherMeters could be coexistent on a LAN, or they could be scattered across various Internet IP addresses.<\/p>\n<p>Step 1.\u00a0 Store the executable file (amr.exe) to an empty directory.<\/p>\n<p>Step 2. Within that directory, create a file called &#8216;sites.txt&#8217; that defines the network addresses of the flow meters on the network:<\/p>\n<h3><strong>Sample &#8216;SITES.TXT&#8217; File (Meter Definitions File):<\/strong><\/h3>\n<pre>600 # SAMPLE_PERIOD_SECS\n1 2 192.168.1.114 502 U # METER_ID_1 , METER_ID_2 , HOSTNAME(OR_IP_ADDRESS) , VIRTUAL_PORT , TCP_OR_UDP\n3 4 192.168.1.115 502 U # METER_ID_1 , METER_ID_2 , HOSTNAME(OR_IP_ADDRESS) , VIRTUAL_PORT , TCP_OR_UDP\n5 6 192.168.1.116 502 U # METER_ID_1 , METER_ID_2 , HOSTNAME(OR_IP_ADDRESS) , VIRTUAL_PORT , TCP_OR_UDP\n\n<\/pre>\n<p>Step 3. Open a Windows Command Prompt Window, and change directory to the directory containing amr64.exe or amr32.exe.<\/p>\n<p>Step 4. Execute the program (amr64.exe or amr32.exe)\u00a0from the command line, as follows:<\/p>\n<pre>amr64.exe  &lt;enter&gt;<\/pre>\n<p>The program then polls each\u00a0networked meter\u00a0every 600 seconds and stores the data to a .CSV file.\u00a0 Here is an example of the file:<\/p>\n<h3><strong>Sample &#8216;METER.CSV&#8217; File (Historical Database File):<\/strong><\/h3>\n<p>(Note that each EtherMeter is capable of reading ONE or TWO meters. \u00a0If one of the two meter input channels is inactive, then the METER_ID should be set to ZERO.)<\/p>\n<pre>Date , Time , Meter_ID , Network_Fault , Meter_Fault , Meter_Reading , Units , Rate_of_Flow\n2017\/08\/27 , 11:30 , 0001 , 0 , 0 ,       169.000 , GAL ,   0.000\n2017\/08\/27 , 11:30 , 0002 , 0 , 0 ,  99999986.000 , GAL ,   0.000\n2017\/08\/27 , 11:30 , 0003 , 0 , 0 ,       520.000 , GAL ,   0.000\n2017\/08\/27 , 11:30 , 0004 , 0 , 0 ,    258923.000 , GAL ,   0.000\n2017\/08\/27 , 11:30 , 0005 , 0 , 0 ,     35011.000 , GAL ,   0.000\n2017\/08\/27 , 11:30 , 0006 , 0 , 0 ,  12982175.000 , GAL ,   0.000\n2017\/08\/27 , 11:40 , 0001 , 0 , 0 ,       169.000 , GAL ,   0.000\n2017\/08\/27 , 11:40 , 0002 , 0 , 0 ,  99999986.000 , GAL ,   0.000\n2017\/08\/27 , 11:40 , 0003 , 0 , 0 ,       520.000 , GAL ,   0.000\n2017\/08\/27 , 11:40 , 0004 , 0 , 0 ,    258923.000 , GAL ,   0.000\n2017\/08\/27 , 11:40 , 0005 , 0 , 0 ,     35011.000 , GAL ,   0.000\n2017\/08\/27 , 11:40 , 0006 , 0 , 0 ,  12982175.000 , GAL ,   0.000\n2017\/08\/27 , 11:50 , 0001 , 0 , 0 ,       169.000 , GAL ,   0.000\n2017\/08\/27 , 11:50 , 0002 , 0 , 0 ,  99999986.000 , GAL ,   0.000\n2017\/08\/27 , 11:50 , 0003 , 0 , 0 ,       520.000 , GAL ,   0.000\n2017\/08\/27 , 11:50 , 0004 , 0 , 0 ,    258923.000 , GAL ,   0.000\n2017\/08\/27 , 11:50 , 0005 , 0 , 0 ,     35011.000 , GAL ,   0.000\n2017\/08\/27 , 11:50 , 0006 , 0 , 0 ,  12982175.000 , GAL ,   0.000\n2017\/08\/27 , 12:00 , 0001 , 0 , 0 ,       169.000 , GAL ,   0.000\n2017\/08\/27 , 12:00 , 0002 , 0 , 0 ,  99999986.000 , GAL ,   0.000\n2017\/08\/27 , 12:00 , 0003 , 0 , 0 ,       520.000 , GAL ,   0.000\n2017\/08\/27 , 12:00 , 0004 , 0 , 0 ,    258923.000 , GAL ,   0.000\n2017\/08\/27 , 12:00 , 0005 , 0 , 0 ,     35011.000 , GAL ,   0.000\n2017\/08\/27 , 12:00 , 0006 , 0 , 0 ,  12982175.000 , GAL ,   0.000\n2017\/08\/27 , 12:10 , 0001 , 0 , 0 ,       169.000 , GAL ,   0.000\n2017\/08\/27 , 12:10 , 0002 , 0 , 0 ,  99999986.000 , GAL ,   0.000\n2017\/08\/27 , 12:10 , 0003 , 0 , 0 ,       520.000 , GAL ,   0.000\n2017\/08\/27 , 12:10 , 0004 , 0 , 0 ,    258923.000 , GAL ,   0.000\n2017\/08\/27 , 12:10 , 0005 , 0 , 0 ,     35011.000 , GAL ,   0.000\n2017\/08\/27 , 12:10 , 0006 , 0 , 0 ,  12982175.000 , GAL ,   0.000<\/pre>\n<h3><strong>Downloads:<\/strong><\/h3>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li><a href=\"https:\/\/scadametrics.com\/lib\/amr.cpp\" target=\"_blank\" rel=\"noopener\">amr.cpp (Source Code)<br \/>\n<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li><a href=\"https:\/\/scadametrics.com\/lib\/amr64.exe\" target=\"_blank\" rel=\"noopener\">amr64.exe (Win64 Executable, Built Using Visual C++ Version 2008, Multi-Threaded Debug Runtime Library Embedded)<br \/>\n<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li><a href=\"https:\/\/scadametrics.com\/lib\/amr32.exe\" target=\"_blank\" rel=\"noopener\">amr32.exe (Win32 Executable, Built Using Visual C++ Version 2008, Multi-Threaded Debug Runtime Library Embedded)<br \/>\n<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li><a href=\"https:\/\/scadametrics.com\/lib\/sites.txt\" target=\"_blank\" rel=\"noopener\">sites.txt (Sample Meter Definitions File)<br \/>\n<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li><a href=\"https:\/\/scadametrics.com\/lib\/meter.csv\" target=\"_blank\" rel=\"noopener\">meter.csv (Sample Meter Readings Data, Comma-Separated File)<br \/>\n<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3><\/h3>\n<p>We will occasionally post modifications and updates here &#8212; so if you are interested in using this free software\u00a0as part of\u00a0your flow meter monitoring solution, please refer back to this blog article\u00a0occasionally.<\/p>\n<h3><strong>Notes\/Updates:<\/strong><\/h3>\n<p>19 Dec 2015 &#8211; Added DNS Name Resolution Lookup to Program. Allows for Hostnames and\/or IP Addresses, which serves situations where the meter does not have a static IP address, and the internet location is handled via dynamic DNS.<\/p>\n<p>19 Mar 2016 &#8211; Updated .EXE files with embedded C++ runtime libraries.<\/p>\n<p>12 April 2016 &#8211; Updated source and executables to provide both Modbus\/TCP and Modbus\/UDP socket options. Previous version only provided\u00a0Modbus\/UDP.<\/p>\n<p>27 Aug 2017 &#8211; Updated source and executables that allows for specifying TCP or UDP socket types on a per-EtherMeter basis. Also, moved the polling sample period specifier from the command line to the input file (sites.txt). The code was re-organized for more efficient meter reads: Previously, if an EtherMeter had two connected meters, then two network polling requests were performed to collect the two readings. In the new code, only one network poll request is performed. \u00a0Also meter registration units are now queried from the EtherMeters (e.g. Gallons, Liters, Cubic Feet, Acre Feet, etc\u2026). Meter Fault (e.g. Cut Meter Signal Cable) is also now queried from the EtherMeters.<\/p>\n<p>17 Sep 2018 &#8211; Updated source and executables that fix errors in performing the proper meter total scalings (x10, x100, etc&#8230;) and in displaying the meter registration units.<\/p>\n<p>01 Nov 2018 &#8211; Updated source and executables to patch a resource leak.\u00a0 There was an fopen() call, without a corresponding fclose() call.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In recent months, we&#8217;ve been receiving regular requests from non-industrial-controls clients who wish to build an AMR System around the EtherMeter.\u00a0 Examples include owners and managers of commercial properties, such as apartment buildings and strip malls.\u00a0 In most cases, this category of client works in the commercial sub-metering realm, and therefore does not have prior <span class=\"ellipsis\">&hellip;<\/span> <span class=\"more-link-wrap\"><a href=\"https:\/\/scadametrics.com\/blog\/?p=786\" class=\"more-link\"><span>Read More &rarr;<\/span><\/a><\/span><\/p>\n","protected":false},"author":1,"featured_media":790,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,8,4,5],"tags":[120,124,41,123,139,122],"class_list":["post-786","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-applications","category-general","category-meteringtechnology","category-modbusprotocol","tag-amr","tag-free-software","tag-modbus","tag-network","tag-tcp","tag-udp"],"_links":{"self":[{"href":"https:\/\/scadametrics.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/786","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/scadametrics.com\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/scadametrics.com\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/scadametrics.com\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/scadametrics.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=786"}],"version-history":[{"count":41,"href":"https:\/\/scadametrics.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/786\/revisions"}],"predecessor-version":[{"id":2426,"href":"https:\/\/scadametrics.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/786\/revisions\/2426"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/scadametrics.com\/blog\/index.php?rest_route=\/wp\/v2\/media\/790"}],"wp:attachment":[{"href":"https:\/\/scadametrics.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=786"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/scadametrics.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=786"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/scadametrics.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=786"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}