IoT Power Monitoring System for Smart Environments
Abstract
:1. Introduction
- Smart Energy by Develco Products [10] focuses on overall building energy monitoring, and provides not only tools to measure energy consumption, through intrusive means, but also energy generation, such as monitoring of photovoltaics, with the use of several communication standards, such as Zigbee, Z-Wave, WLAN, Wireless M-Bus, and Bluetooth Low Energy.
- Sense: Home Energy [11] works in a different way from other, more intrusive, sensors. The main particularity of this sensor is that it uses amperage clamps or current transformers, such as this work, to measure power consumption.
- Engage: Efergy [12] is yet another home energy consumption monitoring solution that uses current transformers to measure energy with the possibility to mix with “coming soon” smart electrical sockets, thus allowing for both intrusive and non-intrusive experience.
2. IoT System (EnerMon)
- Identification of requirements.
- Design of the System.
- System development.
- System Testing.
- Implementation and Results
2.1. Identification of Requirements
- Problem: Pattern identification is important to check power consumers that might be giving problems, such as power consumption deviation from the normality that could indicate that the hardware might be malfunctioning.
- ○
- Requirement: Real-time monitoring of power consumption/ low interval on sending data makes it easier to test for problematic devices
- Problem: It is also important that each month or week, a general vision of how each power consumer is working.
- ○
- Requirement: Aggregate monitoring of power consumption with filters based on different attributes
- Problem: Different environments can have several consumers in different electrical phases so not only the devices must be cheap so many can be made, but they also need to be easy to install in case there is the need to change their location.
- ○
- Requirement: Ease of installation for changeability within different environments.
- ○
- Requirement: Low-cost with an accuracy of 97%.
- Problem: Power consumption monitoring generates summative values, and as such, it is important to reduce failures to a minimum while always keeping the interval between reads within the same time frame.
- ○
- Requirement: Robustness to failures and errors, to keep a near 100% uptime.
- ○
- Requirement: Real-time device synchronization.
- Problem: With different environments comes different networks infrastructures; in most usual cases, the available infrastructure would be Wi-Fi, which can have multiple issues, such as low-range or the signal strength loss when crossing walls.
- ○
- Requirement: Wide area network with low frequency.
2.2. Design of the System
- Device Layer—LoRa (LongRange) End Device: The end devices use edge computing approaches to collect data and then sends it to the LoRa gateway without any need for a nearby, small-range communication network (e.g., Wi-Fi).
- Communication Layer—LoRa Gateway: Receives uplinks from end devices and redirects that data to one or more application servers, while, also, sending downlinks to end devices, in case there is a need to send a command.
- Data Layer—Application Server and Databases: Receives data from the gateways, processes that data and stores it in a database while communicating with the end-device through the LoRa gateway.
- Information Layer—Dashboard and Analysis: The data collected is used to create a dashboard that presents information in the form of detailed graphics alongside proper filters, with the analysis done using PowerBi’s dashboard alongside Python to better understand the data.
3. System Development
- With values close to the expected rating of the current transformer, we can expect a 3% error, [23].
- When measuring values that are very close to zero, we can see errors up to 10%, [23].
- However, if we go above the expected maximum rating of the transformer by a large factor, we risk obtaining a multitude of accuracy error results up to 70% deviation due to saturation, [23].
- A feedback acknowledgment from the LoRa server, indicating that the LoRa server received a message, sent automatically for each data uplink received by the LoRa server.
- A corrective message, sent automatically by the application server when it detects the end-devices clock has gone out of sync, which will force the board’s clock to re-sync.
- The LoRaWAN protocol is used to establish a connection between the end-devices and the LoRa gateway.
- HTTPS connects the router to the WebServer/Application Server.
3.1. Device: LoRa End Device
3.1.1. Current Transformer Sensor
- A sensor whose rating is 100A:50mA, means that when 100 A is passing through the primary conductor, the current value that this sensor will output is 50 mA without any control to the voltage.
- A sensor whose rating is 100A:1V, means that when 100 A is passing through the primary conductor, the voltage value that this sensor will output is 1 V without any control to the current.
3.1.2. Arduino MKR 1300 WAN
- MKRWAN
- ○
- This library provides an API that uses the built-in LoRa chipset to receive and send messages through LoRaWAN.
- ○
- With this library, there is the possibility to define keys and get the device EUI from our device to then create an agreement with the nearest gateway.
- ○
- After an agreement is created, data can be sent to the LoRaWAN network, and each time a message is sent, two types of messages can be received from the LoRa server.
- ▪
- The first message is the feedback acknowledgment from the LoRa server, indicating that the LoRa server received a message, sent automatically for each data uplink received by the LoRa server.
- ▪
- The second message that can be received from the server are messages that will serve as commands that permit the board’s RTC (Real-Time Clock) to calibrate itself in case there is an issue with the timings. These downlink messages are sent by the application server and are put on the queue at the LoRa server waiting for a new data uplink
- RTCZero
- ○
- This library provides an API to use the built-in RTC in the SAMD boards.
- ○
- Real-time clocks provide a means of creating alarms and defining the board’s time in the necessary instant.
- ○
- RTC works in a parallel frequency to the normal clock frequency of the Arduino, so it keeps running even when the Arduino is in sleep mode.
- ○
- RTC requires re-synchronization from time to time so that it does not become unsynchronized with the actual real-time.
- EmonLib (Arduino energy monitoring library)
- ○
- This library provides an easy way to transform the input voltage from the ADC into a current readable value that can be calibrated.
- ○
- For each reading, we can define the number of samples for the library to calculate; the bigger the number of samples, the longer the method will take to calculate the Current.
- ○
- The library uses the root mean square to calculate the current:
- ▪
- Supposing N equals the number of samples, and u(n) being the voltage sample that we get from the ADC:
- ▪
- This (1) Urms value is then multiplied by the calibration coefficients, based on the value we define at the beginning for each ADC input.
- ▪
- Then using results in the current value, we call this Irms that will be used to calculate the apparent power by being multiplied with a voltage constant
- ○
- Each phase calculates its own apparent power in kWh/Interval (kilowatt-hour per data read interval), which is then summed into a total kWh/interval value that is kept in the Arduino’s memory until it is sent as a message. The message is only considered “sent” when feedback from the LoRa server is received, and only then the sequence number is advanced, and the total kilowatt-hour value resets to zero.
- ○
- Calibration:
- ▪
- Calibration of the sensors is done for each ADC input.
- ▪
- Calibration has theoretical value based on the CT sensor rating and the burden resistor used:
- ▪
- Theoretical values, however, do not account for hardware error variations so the calculated value should be used as a baseline and then adapted using real values comparisons.
- Errors can come from several factors, such as:
- ○
- CT materials.
- ○
- Burden resistor ± 1%.
- ○
- Arduino analog reference.
- ○
- Power source.
- To provide real values, an amperometric clamp Uni-T UT202 (Uni-t in Opava – Czech Republic) was used for comparison in real-time calibration.
3.2. Communications Layer: LoRaWAN
- A Wi-Fi network is a low range, and it loses a lot of strength between walls so in areas with only one Wi-Fi Router it would be complicated since the Routers and the electrical boards are not usually right next to each other.
- In the university experiments, we noticed the Wi-Fi network was protected with authentication that required both a user email and a password. Most IoT Wi-Fi boards do not work properly since they are only prepared for WPA authentication, so we needed a way to circumvent this.
- In the near future (not on the scope of this work) the solution is going to be upgraded from being powered through the plug to being powered by batteries and LoRa is perfect for that.
3.3. Data Layer: Web/Application Server and Database
- Receive reading data, treat and analyze that data, and store it in MariaDB.
- Calibration of each end-device’s real-time clock.
- Correction of issues caused by missing uplinks and downlinks.
- Replication and union of databases into one live database.
- Raspberry Pi was chosen as the hardware for this server for the following reasons:
- Low power consumption.
- Unix based OS (Debian/Raspbian), which means it is open-source and, as such, free and, to some degree, safe.
- ○
- Acceptable hardware specifications compared to some free cloud options in the market.
- The easy portability of the hardware and, in some cases, the software too.
- Ease of use.
- Low-cost and durable.
- Ease of use but also easily extensible. The non-structure means that the handling of HTTPS requests are only limited by the knowledge of the user when it comes to python request programming, it also means that in most cases, there will be no structural bloat as in other frameworks, such as Django.
- Databases in use are up to the application developer. Frameworks tend to be able to work only with a limited set of databases. Variations to those databases tend to require a bit of work on the developer part. With Flask, the developer can choose which database it feels more comfortable with and just use the APIs.
- Default options are easy to change, and the framework can easily handle multiple libraries. No structural bloat also means that there will be less external libraries working behind the scenes, so there are more resources for the developer’s own libraries.
- Reading: the main table and connector to all other tables
- Date and Time: both these tables present information based on temporal marks that simplify the analysis of the Reading entries
- Device: contains information about the sensors, the locations they are placed, and what they are measuring. It is used both to feed sensor information to the server and to help the consumption analysis.
- ○
- Active attribute tells the server if it should expect data uplinks from a certain sensor.
- ○
- Correction attribute tells the server what the proper time it should expect from the sensor is, and it also serves as an indicator as to whether that sensor requires correction or not.
- ○
- DevType, indicates the type of sensor, Arduino (made in this work) or third-party.
- ○
- Margin acts as a lower limit to values, to remove outliers caused by small reading errors
- Alert: This table, not connected to any other table, is used to present alerts when it comes to the communication layer’s error, such as delays or missing acknowledgments. When an error is found a new entry is added to the database, where the description tells us the type of error and the value tells us the degree of that error.
- Other Tables based on the implementation (optional): tables that can be added to the database based on where the solution is being used (example: class, for university implementation, shown in Figure 5)
- Simplicity
- ○
- If each “dimension” table (the tables around reading) have pre-defined values, those values can easily be called when inserting a reading entry and then easily queried when the analysis is required.
- ○
- Simple queries create performance gains.
- Storage efficiency (less space occupied overall) and therefore, increased performance when using queries.
- Directly from the sensors and into the database
- Derived from sensor’s reading data
- Data that uses readings from sensors to generate new data.
- Derived data is important because sometimes, due to the way electrical boards were made, there is either no space between wires to add a current transformer or the phases are all mixed up.
- It is based on a simple json file that the user can append new information for the server to work with
- ▪
- Let us say that it is a current measurement from a sensor.
- ▪
- it is another current measurement.
- ▪
- it is yet another reading.
- ▪
- From these three measurements that come from the sensor, we can derive the following data:
- it is derived data that will, also, be added to the database.
3.4. Information Layer: Dashboard and Analysis
4. System Implementation
4.1. System Testing
4.2. System Implementation
5. System Validation and Results
5.1. Case Auditoriums Results
5.2. Case Private House with Heated Pool
- The pool heater is one of the biggest consumers.
- ○
- The pool heater will always turn on at 09:00 h.
- ○
- It will keep running until it reaches a water temperature of 28 °C
- ○
- It will restart running when that temperature reaches a lower threshold (unknown).
- ○
- It is turned off completely at 23:00 h.
- The pool pump that will transfer the heated water is almost always running. Supposedly it is turned on at 09:00 h and off at 23:00 h. Based on the data we have, an approximate value of 20. kWh was spent every day just on the pump.
5.3. Case Agriculture Pump in a Farm
- The pump has a “balloon” that holds water.
- When that “balloon” loses water, the pump will replenish it once that loss reaches a threshold.
- Depending on how much water it needs to be replenished, the pump will increase or decrease power consumption.
5.4. Case Apartment’s Electric Boiler
- Four people live in the apartment.
- Two people always start their day in the morning.
- One of them goes to school.
- The boiler has a capacity of 100 L and works by heating and storing hot water when it is not full.
- Figure 13a shows us a day where all the hot water was used during the morning. And so, we know that at about 0.8 to 0.9 kWh the boiler is going to take approximately 6 h to fill up completely. This means that to fill the entire boiler, approximately 4.8 kWh will be used, which translates into 0.048 kWh or 48 Wh/L at 0.8 kWh. However, the boiler is rated to be able to fill the 100 L completely in 4 h, so there might be some issues related to the efficiency of this particular boiler
- Figure 13b shows a day when no hot water was used, which, in turn, shows us the re-heating timer or the boiler (when no one uses hot water). However, this value can vary depending both on the exterior temperature and the container’s temperature. In Figure 13a, we can also see the re-heating periods between 03:00 and 03:30.
6. Conclusions
- (1)
- Decision making when buying certain equipment;
- (2)
- Decision making when using the equipment and when they are able to turn it off (especially the automatic ones);
- (3)
- Replacement of older appliances that could improve energy efficiency;
- (4)
- Substitution of certain lifestyles. Example: using an electrical fan instead of the HVAC during not-so-hot summer days.
Author Contributions
Funding
Conflicts of Interest
References
- Reinsel, D.; Gantz, J.; Rydning, J. Data Age 2025: The Evolution of Data to Life-Critical. 2017. Available online: https://www.seagate.com/www-content/our-story/trends/files/Seagate-WP-DataAge2025-March-2017.pdf (accessed on 23 November 2018).
- Newman, P. IoT Report: How Internet of Things Technology Is Now Reaching Mainstream Companies and Consumers. 2018. Available online: https://www.businessinsider.com/internet-of-things-report (accessed on 30 October 2018).
- Brunelli, D.; Minakov, I.; Passerone, R.; Rossi, M. Smart monitoring for sustainable and energy-efficient buildings: A case study. In Proceedings of the IEEE Workshop on Environmental, Energy, and Structural Monitoring Systems (EESMS) Proceedings, Trento, Italy, 9–10 July 2015; pp. 186–191. [Google Scholar]
- Balaji, B.; Bhattacharya, A.; Fierro, G. Brick: Towards a Unified Metadata Schema For Buildings. In Proceedings of the 3rd ACM International Conference on Systems for Energy-Efficient Built Environments, Palo Alto, CA, USA, 16–17 November 2016; pp. 41–50. [Google Scholar]
- Hamilton, E. What Is Edge Computing? 2018. Available online: https://www.cloudwards.net/what-is-edge-computing// (accessed on 17 May 2019).
- Chen, J.; Tan, R.; Xing, G.; Wang, X. PTEC: A System for Predictive Thermal and Energy Control in Data Centers. In Proceedings of the IEEE Real-Time Systems Symposium, Rome, Italy, 2–5 December 2014; pp. 218–227. [Google Scholar]
- Liu, Q.; Ma, Y.; Alhussein, M.; Zhang, Y.; Peng, L. Green data center with IoT sensing and cloud-assisted smart temperature control system. Comput. Netw. 2016, 101, 104–112. [Google Scholar] [CrossRef]
- Pocero, L.; Amaxilatis, D.; Mylonas, G.; Chatzigiannakis, I. Open source IoT meter devices for smart and energy-efficient school buildings. HardwareX 2017, 1, 54–67. [Google Scholar] [CrossRef]
- Ardakanian, O.; Bhattacharya, A.; Culler, D. Non-Intrusive Techniques for Establishing Occupancy Related Energy Savings in Commercial Buildings. In Proceedings of the 3rd ACM International Conference on Systems for Energy-Efficient Built Environments, Palo Alto, CA, USA, 16–17 November 2016; pp. 21–30. [Google Scholar]
- Develco. Develco Products Smart Energy. Available online: https://www.develcoproducts.com/business-areas/smart-energy/ (accessed on 25 April 2019).
- Sense. Sense: Home Monitor. Available online: https://sense.com/product (accessed on 25 April 2018).
- Engage. Engage: Efergy. Available online: https://engage.efergy.com/ (accessed on 17 May 2019).
- Adelantado, F.; Vilajosana, X.; Tuset-Peiro, P.; Martinez, B.; Melia-Segui, J.; Watteyne, T. Understanding the Limits of LoRaWAN. IEEE Commun. Mag. 2017, 55, 34–40. [Google Scholar] [CrossRef] [Green Version]
- Gloria, A.; Cercas, F.; Souto, N. Comparison of communication protocols for low cost Internet of Things devices. In Proceedings of the South Eastern European Design Automation, Computer Engineering, Computer Networks and Social Media Conference, Kastoria, Greece, 23–25 September 2017; pp. 1–6. [Google Scholar]
- Mekki, K.; Bajic, E.; Chaxel, F.; Meyer, F. Overview of Cellular LPWAN Technologies for IoT Deployment: Sigfox, LoRaWAN, and NB-IoT. In Proceedings of the IEEE International Conference on Pervasive Computing and Communications Workshops (PerCom Workshops), Athens, Greece, 19–23 March 2018; pp. 197–202. [Google Scholar]
- Kassner, M. Cheat Sheet: What You Need to Know About 802.11ac. 2013. Available online: https://www.techrepublic.com/blog/data-center/cheat-sheet-what-you-need-to-know-about-80211ac/ (accessed on 27 May 2019).
- Kasar, A.R.; Tiwari, S. Zigbee on Wireless Sensor Network. Int. J. Sci. Res. Eng. Trends 2018, 4, 1327–1332. [Google Scholar]
- Rapiński, J. The application of ZigBee phase shift measurement in ranging. Acta Geodyn. Et Geomater. 2015, 12, 291780. [Google Scholar] [CrossRef]
- Zigbee Alliance. ZigBee 3.0. Available online: https://www.zigbee.org/zigbee-for-developers/zigbee-3-0/ (accessed on 27 May 2019).
- Collotta, M.; Pau, G.; Talty, T.; Tonguz, O.K. Bluetooth 5: A Concrete Step Forward toward the IoT. Ieee Commun. Mag. 2018, 56, 125–131. [Google Scholar] [CrossRef]
- Z-Wave Alliance. About Z-Wave Technology. Available online: https://z-wavealliance.org/about_z-wave_technology/ (accessed on 15 July 2019).
- Wong, W.G. Q&A: S2’s Impact on Z-Wave and IoT Security. Available online: https://www.electronicdesign.com/communications/qa-s2-s-impact-z-wave-and-iot-security (accessed on 15 July 2019).
- Wall, R. YHDC SCT-013-000 Current Transformer Report. Available online: https://learn.openenergymonitor.org/electricity-monitoring/ct-sensors/yhdc-sct-013-000-ct-sensor-report (accessed on 1 February 2019).
- Eletronics Tutorials. The Current Transformer. Available online: https://www.electronics-tutorials.ws/transformer/current-transformer.html (accessed on 1 December 2018).
- Semtech. What Is LoRa®? Available online: https://www.semtech.com/lora/what-is-lora (accessed on 16 July 2019).
- TTN. The Things Network Portugal. Available online: https://www.thethingsnetwork.org/country/portugal/ (accessed on 14 September 2019).
- LoRa Alliance. LoRa Coverage. 2019. Available online: https://lora-alliance.org/lorawan-coverage (accessed on 14 September 2019).
- Lin, E.R.; Tourancheau, B.; Alphand, O. LoRa Protocol. Evaluations, Limitations and Practical Test; Universitat Politècnica de Catalunya: Barcelona, Spain, 2016. [Google Scholar]
- Corbellini, A.; Mateos, C.; Zunino, A.; Godoy, D.; Schiaffino, S. Persisting big-data: The NoSQL landscape. Inf. Syst. 2017, 63, 1–23. [Google Scholar] [CrossRef]
System | Source | Sensor Type | Communication | Main Use | Commercial |
---|---|---|---|---|---|
EnerMon (This document) | Open* | Non-Intrusive: Current Transformer | LoRa | Any Power Source | No |
PTEC [6] | Closed | Intrusive: Power Meter Non- Intrusive: Temperature Sensor | IEEE 802.15.4 Ethernet | Data Center Cooling | No |
Open-source IoT meter devices for smart and energy-efficient school buildings [8] | Open | Non- Intrusive: Current Transformer | IEEE 802.15.4 | Educational Buildings / Any Power Source | No |
Non-Intrusive Techniques for Establishing Occupancy Related Energy Savings in Commercial Buildings [9] | Closed | Non- Intrusive: Occupancy Sensor | Not specified | HVAC | No |
Smart Energy by Develco Products [10] | Closed | Intrusive: Plugs, Meter Interface | Zigbee, Z-Wave, WLAN, Wireless M-Bus, BLE | Any Power Source | Yes |
Sense: Home Energy [11] | Closed | Non- Intrusive: Current Transformer | Wi-Fi | Any Power Source | Yes |
Engage: Efergy [12] | Closed | Non- Intrusive: Current Transformer Intrusive: Power Plug (Future) | Not specified | Any Power Source | Yes |
Wireless Technology | Data Rate | Max Payload Length | Communication Range | Security | Strengths | Ref |
---|---|---|---|---|---|---|
LoRaWAN (This thesis) | 50 kb/s | 243 Bytes | ~5km Urban ~15 km–20 km Rural | 128 bit AES | (1) Low Power Consumption (2) Long Communication Range (3) Low Cost (4) Secure (5) Availability | [13,14,15] |
Sigfox | 100 b/s | 12 Bytes | ~10 km Urban ~40 km Rural | No Encryption or Adaptable for each case | (1) Long Communication Range (2) Low Power Consumption | [15] |
NB-IoT | 200 kb/s | 1600 Bytes | ~1 km Urban ~10 km Rural | LTE encryption | (1) Large Maximum payload length (4G coverage) (2) Secure | [15] |
Wi-Fi | Top 1Gb/s - IEEE 802.11ac | 2034 bytes | 1–100 m | WPA/WPA2 | (1) High Speed (2) Advanced/Mature Standard | [14,16] |
ZigBee | 250kb/[email protected] Ghz 40kb/s@915MHz 20kb/s@868MHz | 255 Bytes | 10–300 m Direct Line Sight 75–100 m Indoor | 128 bit AES | (1) Low Cost (2) Low Power Consumption (3) Large number of nodes (up to 65000 nodes) (4) Secure | [17,18,19] |
Bluetooth 5 | 2 Mb/s 500 kb/s (Long Range S = 2) 125 kb/s (Long Range S = 7 | 255 Bytes | Up to 200 m +200 m (BLE) | L1–No security L2–AES 128 L3–AES and Pairing L4–ECDHE | (1) Ease of access and setup (2) Simple Hardware (3) Secure (4) Low power consumption (BLE) | [20] |
Z-Wave | 100 kb/s | 64 Bytes | ~100 m (May vary depending on the number of nodes) (Up to 4 hops) | Security 2 (S2) (Include AES-128, ECDHE, secure TLS tunnel) | (1) Low power consumption (2) Simple installation (3) Secure (4)Interoperability between devices of different manufacturers (Standardization) | [21,22] |
Model | Ma× Input (Range of Possibilities) | Price | Size | Opening Size | Observations |
---|---|---|---|---|---|
SCT-013-××× | 30–150 A | 3.50 €/ea. | 5.7 × 3.2 × 2.2 cm | 13 × 13 mm | Most widely used for IoT works. |
KCT38 | 50–600 A | 5.30 €/ea. | 8.6 × 9.7 × 2.6 cm | 38 × 38 mm | Can only be closed with screws |
BH-066-××× | 10–400 A | 2.54 €/ea. | 8.0 × 6.0 × 3.7 cm | 20 × 20 mm (minimum) | No wire, no known projects |
PZCT-02 | 100 A | 4.63 €/ea. | 3.1 × 2.9 × 4.7 cm | Unknown | - |
BZCT30AL | 50,100 A | 7.20 €/ea. | 7.8 × 6.2 × 2.4 cm | 30 × 30 mm | - |
Spreading Factor | Bandwidth [kHz] | Spreading Factor [chips/symbol] | Bit Rate of the Signal [bits/sec] | Chip Rate [chips/sec] | Time per Symbol [sec/symbol] |
---|---|---|---|---|---|
SF7 | 125 | 128 | 5469 | 125000 | 0.001024 |
SF8 | 125 | 256 | 3125 | 125000 | 0.002048 |
SF9 | 125 | 512 | 1758 | 125000 | 0.004096 |
SF10 | 125 | 1024 | 977 | 125000 | 0.008192 |
SF11 | 125 | 2048 | 537 | 125000 | 0.016384 |
SF12 | 125 | 4096 | 293 | 125000 | 0.032768 |
Device | Ground Level Devices | Underground Devices |
---|---|---|
Spreading Factor | SF7 | SF8/SF9 |
Channel Rotation | Channel 1–3 | Channel 1–8 |
RSSI (average) | –73 | −117 |
Delays (+1 min) | 1.1% | 2.6% |
Average Delay (minutes) | 1.03 | 1.26 |
Missing Acknowledgements | 4% | 7.1% |
© 2019 by the authors. Licensee MDPI, Basel, Switzerland. This article is an open access article distributed under the terms and conditions of the Creative Commons Attribution (CC BY) license (http://creativecommons.org/licenses/by/4.0/).
Share and Cite
Santos, D.; Ferreira, J.C. IoT Power Monitoring System for Smart Environments. Sustainability 2019, 11, 5355. https://doi.org/10.3390/su11195355
Santos D, Ferreira JC. IoT Power Monitoring System for Smart Environments. Sustainability. 2019; 11(19):5355. https://doi.org/10.3390/su11195355
Chicago/Turabian StyleSantos, Diogo, and João C. Ferreira. 2019. "IoT Power Monitoring System for Smart Environments" Sustainability 11, no. 19: 5355. https://doi.org/10.3390/su11195355
APA StyleSantos, D., & Ferreira, J. C. (2019). IoT Power Monitoring System for Smart Environments. Sustainability, 11(19), 5355. https://doi.org/10.3390/su11195355