EnergySaverHighScore
Preface
I know I am a little bit late in the competition but the conecpt needed a few more thoughts on it and now I give it a start. I hope I finish in time for the deadline but I will keep the project up until it is completely finished ...
Idea
The biggest challenge of our times is fighting climate change. But everyone of us can do his part and change his behaviour and reduce his energy consumption. In order to do this you first have to know your consumpton. My project will help you to find that out.
In a household most of the energy is used for heating and the next big part is electricity for lighting and white goods. My project will collect this data and visualize it. So that everyone can see his energy consumption at every moment and in comparison to past days and react to it.
In addtion to that I plan to implement a scoring system for energy savings. I think this will challenge the gamer in everyone of us to be better than the the day before and thus reduce consumption.
Data collection
My project will read the information of the energy meter and the heating controller, store it, compute it and send it to a display unit. The main controller will be a Raspberry Pi and will be powered by the grid.
energy meter
Recent energy meters are solid state types and have an optical infra-red interface. This will be connected to the serial port of the Raspberry Pi and interpreted. The SML protocol is used on this interface.
heating controller
My heating controller has a CAN bus and uses the CANopen protocol. It will be directly connected to the Raspberry Pi using my CANFDZeroHAT - CAN FD controller for the Raspberry Pi
Display Unit
The display unit will use the Arduino Nano 33 IoT and will be powered by a rechargeable battery. In this use case this is the most efficient power supply because a grid power supply would have more standby losses than the system overall needs. It will use an 2.9 inch e-paper display which consumes no power when displaying static content. It will wake up from time to time controlled by the internal timer and get the current data from the Raspberry Pi via WiFi. Additionally it will be possible to wake the Arduino by tapping on it. I want to use the tap detection of the builtin accelerometer for this function.
Life time
The e-paper display has only a limited life time of 1.000.000 display refresh cycles and a temperature range of 0 - 40 °C. As my application is an inhouse use the temperature is (should be) no problem. And I am going to refresh the content every 10 minutes. Then the cycles should last for more than 10 years. And I would be very happy if the unit is used for 10 years.
Data transmission
I plan to use MQTT to transmit the data and conect all parts of the project together. The Raspberry Pi will be the MQTT Broker and hold all the data. The heating controller deamon will also run on the Raspberry Pi and publish its data. The energy meter deamon will do the same. A third deamon, the database deamon, will collect the data from heating and energy meter and store it to a database and calculate historical data and savings. The Arduino will subscribe to that data and publish it. As the Arduino will stay mostly in sleep state it won't get live data but request the data from the broker each time it wakes up.
system overview
This block diagram schows all the parts of the system
Project steps
- setup Raspberry Pi and connect heating controller
- setup MQTT Broker on Raspberry Pi and connect data from heating controller (heating controller deamon)
- connect Arduino to MQTT Broker
- connect display to Arduino and implement update logic using internal timer and accelerometer
- implement data base to store data and compute energy savings
- measure and reduce energy consumption of devices
- connect energy meter to database and display
- gamification - implement scoring system
Previous projects related to this topic
CANFDZeroHAT - CAN FD controller for the Raspberry Pi
The Windchillator - Reducing the sleep current of the Arduino MKR WIFI 1010 to 800 uA
https://github.com/107-systems/107-Arduino-UAVCAN