The basic object of our project can be divided into three parts. The first part is collecting data from meter by using remote nodes and sending the data to main controller node via Lora Radio. The primary challenge here is that the radio signal is shared by all nodes. That means the remote node and control nodes would both receive the radio signal. Thus we have to design a data transmission schema to coordinate the different nodes. This Schema can be found in our github repository. This is the same challenge for each meter on the RS485 twisted pair. Each meter has an address and must be requested individually. The second part is visualizing the data on controller node. This is a relatively simple task, since we can display on a web page and html programming is not hard. The third part is controlling the meters via user interface. In this part the user would send request to controllers via http and then the controller turns off the remote meter via radio signal. The most challenging part in our project is that all the devices we chose are general embedded devices, which means that they have no existing operating system. Everything must be programmed from bare C. The Arduino environment aids in this with some existing libraries but there are little to no AWS APIs for easy data upload. Designing the software this way allows almost any simple and cheap device to be used, which will sharply lower the cost. Another challenging part of using a simple embedded device is that all the task management must be built up from the ground. Our software uses Interrupt Service Routines (ISRs) and a timer to manage each task.