The data of the energy monitor Arduino is published online with PVOutput.org, but you have to be online to see the data. I want to see the data in our livingroom without using a PC or smartphone. Therefore I’ve build an Arduino based wireless LCD Display that can send and receive data using the RFM12b 868Mhz transceiver.

Unfortunately you need a powersupply, so 1 wire is necessary :-(.

(in my previous versions I used cheap 434Mhz receivers with the Virtual Wire library. I’ve upgraded my setup to all RFM12b transceivers so I can send & receive data and use the Jeelib library. Additional benefit is that I can easily use an Attiny84 for sensors like TinyTX)

The Wireless LCD Display uses the following components:

  • Arduino Nano (Atmega328)
  • 20×4 LCD Display
  • 868Mhz RFM12b Transceiver
  • DS1307 RTC (realtime Clock)
  • DHT22 Temperature & Humidity sensor
  • Powersupply (7-12 volts)
  • Photoframe as housing

It’s main purpose is to display data that is received wireless over 868Mhz from the Domotica Gateway. The Domotica gateway can forward data received over LAN, Internet or send data it has generated itself (think about switch statusses).

Data received is:

  • Energy statistics like Actual Solar power, EnergyConsumption, Gas usage, Energy Import & Export, and so on. Data is send over lan from Energy Monitor to Domotica Gateway and then forwarded wireless over 868Mhz to the wireless LCD Display.
  • Sunrise, Sunset, Moonrise en Moonset times. Times are calculated on Raspberry Pi, send over lan to domotica gateway and then forwarded over 868Mhz to wireless LCD Display
  • Switch status of gardenlights (from Raspberry Pi) and indoor lights (on Domotica Gateway itself)
  • UNIX Timestamp to update realtime clock periodically
  • Temperature & Humidity from two TinyTX based sensors.

To enhance the display more, a DHT22 temperature and humidity sensor is attached. Also a realtime clock is attached so the actual date and time can be displayed.

Data format:
The RF12 library from Jeelib can send up to 66 bytes. We can use a struct to define a collection of variables to be send, and also received. Have a look at the source code and read some manuals about the RF12 Library. The struct contains all the data I want to display on the LCD. Data can be send from several devices. Primarily it is send by the Domotica gateway but data can be received from other devices using the RFM12b too. (like one of my outdoor temperature sensors based on TinyTX)

868Mhz Transceiver:
Data is received using a cheap RFM12b 868Mhz transceiver. The library used is RF12 from Jeelib. The benefit of using the RFM12b is that it is a transceiver, capable of sending and receiving data. Primarily the display receives data from the domotica gateway like energy used and the status of some lights. Because the Wireless LCD Display also contains a DHT22 temperature / humidity sensor I’ve added code to send those values to my sensor box. Now the Wireless LCD Display has become an additional sensor too!
That’s the benefit of also being able to send data.

DS1307RTC:
Realtime clock module that holds time and date when no powersupply is connected.
In this post I explain how I’ve implemented a time sync mechanisme with the domotica box and the Raspberry Pi so the time is synchronised periodically.

DHT22:
for about 6 dollars you get a calibrated temperature and humidity sensor. Search on ebay for it. The DHT11 is cheaper but also less accurate. I tried it first, but switched it for a DHT22.

Libraries used:
Several libraries are used available on the internet. See this page for the libraries used in my projects. Credits go to the people who created those libraries, it saves us loads of work 😉

[wpdm_file id=4]

[wpdm_file id=5]

You receive the whole package, Energy Meter, Domotica Gateway, SensorBox and Wireless LCD Display so all versions are working together. I’ve packed all libraries as they are on my disk now. Those might not be the most recent versions, but they should work with sources.
Unfortunately the sources are not ‘monkey proof’, so you have to dig into the code and change it to suit your situation and needs.