RPICT Series
RPICT series are a range of Raspberrypi hat for AC current sensor (CT) and temperature sensor. This page introduces generalities concerning the RPICT series. Information for each individual board can be found below.
All RPICT board connect to the GPIO connector and provide data via the serial port. An Arduino programmable microcontroller (ATtiny84 or Atmega328) operates the board. Source code for the microcontroller is freely available.
There are various options for logging and viewing the data. Most commonly used are Emoncms and Influxdb with Grafana. Using your own Python script is also possible.
Applications
- Raspberrypi Smart Meter.
- Internet of Things.
- Data Logging.
- Real Time Monitoring.
- Home Automation.
Raspberrypi
- RPICT3T1 - 3 CT 1 Temperature.
- RPICT3V1 - 3 CT 1 AC Voltage.
- RPICT4T4 version 2.5 - 4 CT 4 Temperature.
- RPICT3V1T1 - 3 CT 1 ac Voltage 1 Temperature *New*
Raspberrypi Stackable Boards
V 6
- RPICT7V1 Version 6 *New*
- RPICT4V3 Version 6 *New*
- RPICT8 Version 6 *New*
V 5
V 4 [DISCONTINUED]
V 2 & 3 [DISCONTINUED]
- RPICT4V3 version 2 & 3 - 4 CT 3 AC Voltage.
- RPICT7V1 version 2 & 3 - 7 CT 1 AC Voltage.
- RPICT8 version 2 & 3 - 8 CT.
Temperature Only
- RPI_T8 - 8 temperatures.
Raspberrypi Zero
- RPIZ_CT3V1 - 3 CT 1 AC Voltage. Raspberrypi Zero.
- RPIZ_CT3T1 - 3 CT 1 Temperature. Raspberrypi Zero.
- RPIZCT4V3T2 - Rpi Zero 4 CT 3 AC Voltage 2 Temperature (RTD & DS18B20)
with relays
- RPICT3T1_RLY2 - 3 CT 1 Temperature 2 Relays
- RPICT3V1_RLY2 - 3 CT 1 AC Voltage 2 Relays
Raspberrypi for 5A output CT [DISCONTINUED]
- RPI LCT3V1 V3 - 3CT 1 Voltage for large CT.
- RPI LCT4V3 V3 - 3CT 3 Voltage for large CT.
- RPI_LCT8 V3 - 8CT for large CT.
Model | #CT | #Volt* | #Temp | Stackable |
---|---|---|---|---|
RPICT3T1 | 3 | - | 1 | No |
RPICT3V1 | 3 | 1 | - | No |
RPICT4T4 | 4 | - | 4 | No |
RPICT4V3_v2.0 | 4 | 3 | - | Yes |
RPICT7V1_v2.0 | 7 | 1 | - | Yes |
RPICT8 | 8 | - | - | Yes |
RPIZCT4V3T1 | 4 | 3 | 1 | n/a |
RPI_T8 | - | - | 8 | Slave 1 only |
RPI_LCT4V3 | 4 | 3 | - | One board stack only |
RPI_LCT8 | 8 | - | - | One board stack only |
\* AC Voltage
First time use
Insert on Raspberrypi
Insert the RPICT board on the Raspberrypi GPIO as shown above. The picture is a RPI3B but all other Raspberrypi are also compatible.
The RPICT boards gets power from the Raspberrypi. Just connect the USB power adaptor to the Raspberrypi as normal.
Raspberrypi Configuration
If using Raspberry Pi OS follow the guide below to get the Raspberrypi ready for use with the RPICT.
Howto setup Raspbian for serial read
Next steps
- The board is sold ready to go with firmware and configuration already loaded.
- Make sure to test all sensors with the cat or lcl-run command before changing the configuration.
- Carefully read the FAQ below
FAQ - Frequently Asked Questions
First configuration
Current Sensor
Any current sensor with current output is compatible. Note there are considerations for the burden resistor which scales the range of measured current. We recommend the sensor below to start with.
Recommended sensor:
- SCT-013-000 100A/50mA
- SCT-019 200A/33mA
- SCT-006 20A/25mA
- SCT-024 400A/100mA
- SCT-031 600A/100mA
Connector: 3.5mm Jack
Measured range
The range is determined by the burden resistor fitted on the RPICT unit. At purchase time this is selected using the parameter rating in the shop.
The default range is 100A on all RPICT series which correspond to a burden resistor of 24 or 27 Ohm. Other ratings (or ranges) can be selected at purchase time.
More details about the input range and the burden resistor is given in the links below.
For RPICT3T1 RPICT3V1 RPICT4T4v2.5 and also RPICT8/RPICT7V1/RPICT4V3 in version 3:
For RPICT7V1 RPICT8 and RPICT4V3 in version 4:
For RPICT7V1 RPICT8 RPICT4V3 in version 5:
For RPICT3V1T1 in version 6:
Notes
CT sensors only measures Alternating Currents (AC). Refer to sensor ACS715 for DC current.
Only RPICT7V1 Version 4 and RPI_DCV8 can support voltage output CT. SCT-013-xxx other than SCT-013-000 and any voltage output CT are not supported for all other boards.
Voltage Sensor
To evaluate the power of an installation a voltage sensor is not strictly necessary. Power can be estimated using an estimated fixed voltage (usually 240 or 110V). Voltage sensor becomes necessary if you wish to measure more accurately Real Power, Apparent Power and Power Factor. The combination of a voltage sensor with a CT sensor will also provide the direction of power (import/export).
In any case power readings with voltage sensor are more precise and consistent. They also have much lower noise and are better for low power readings.
The RPICT series are shipped using a basic calibration for the voltage port. A calibration would be needed if you feel the measured voltage is not accurate enough against another well trusted measuring device (scope, multimeter). Use this page to calibrate the voltage port.
AC/AC Voltage Sensor
Low Voltage < 250V
The three models available depending on mains power type:
- UK: 77DB-06-09
- EU: 77DE-06-09
- US: 77DA-10-09
These units can be easily plug in a main wall socket. No wiring is required.
Three units are needed to monitor 3 phase.
High Voltage up to 1500V
The TV30GB can read Voltages up to 1500V. Wiring required.
Three units are needed to monitor 3 phase.
ZMPT101B Module
The ZMPT101B module is a voltage module to be wired. It measures voltages up to 250V and can be mounted on DIN rails.
For single phase: ZMPT101B_Module_1x_v2
For three phase: ZMPT101B_Module_3x_v4
Do not use these ZMPT module sold on the market. They do not scale against the RPICT units and the presence of a potentiometer make them unreliable.
Temperature Sensor
The temperature sensor is the DS18B20.
Temperature sensors come with various connectors.
3 pin Molex
This applies for board RPIZCT4V3T1 and RPIZCT4V3T2.
Bare wires
This applies for boards RPICT3T1 RPICT4T4 and RPIZ_CT3T1. Connectors are screw terminals. Temperature probe should present bare wires for connecting.
Our DS18B20 Junction board requires bare wires for connection.
Power Supply
The raspberrypi should use the usual micro-usb PSU.
The RPICT series do not need any extra PSU. Power for the RPICT is taken from the Raspberrypi GPIO.
View/Record data
In the most basic use the RPICT series only output a serial string. It is down to the user to collect this data string and record/view as needed. We offer below various way to achieve this.
- Using cat command.
- Using Influxdb and Grafana.
- Using a Json request.
- Using Emonhub tool from Emoncms.
- Using a Python script.
Using plain Linux terminal - CAT command
This option reads data output from a linux terminal using the cat command. Direct reading of the serial port.
Note: This is the most basic usage. We highly recommend to make use of this first before anything else.
Before hand make sure you have followed this guide if you are
using the Rasbian image.
Let's use the RPICT3T1 as an example. The format of the output is as shown below. Powers in W. Temperature in deg Celsius. For any other RPICT unit refer to its specific page to know the default output format.
nodeid power1 power2 power3 temperature
Log in the Raspberrypi using ssh and issue the commands
stty -echo -F /dev/ttyAMA0 raw speed 38400
cat /dev/ttyAMA0
The terminal should then show something like this below
pi@raspberrypi ~ $ cat /dev/ttyAMA0
11 46.23 52.25 126.56 19.46
11 47.43 52.28 129.60 19.54
11 48.90 53.88 131.22 19.89
To figure out which channel correspond to which measured value refer to the specific board dedicated page.
Note. If using the emonpi image run the command below before the stty command.
sudo /etc/init.d/emonhub stop
See another alternative here. Using plink
To record the data in a text file see Recording RPICT Serial stream on local file
Using Freeboard and Dweet
This is maybe the quickest and easiest way to get a real time monitoring dashboard with a RPICT unit.
Follow this guide to get started.
Freeboard and Dweet with RPICT
Using InfluxDB and Grafana
InfluxDB is an open source project backed by Influxdata. It is all free if you install on your own server. Only a hosted solution is payable.
InfluxDB on its own is just a database ready to store the data. Data can be viewed with Grafana or directly inside Influxdb.
See this guide proposing a solution to send data to an Influxdb database. Forward to Influxdb from RPICT
See also Install an InfluxDB Grafana stack on a Raspberrypi
Using Home Assistant - home-assistant.io
Follow this guide below for Homeassistant.
Using OpenHAB Domoticz HomeGenie mycontroller.org Jeedom
We have not yet documented any of these platform yet. Please contact us to notify your interest in using them with RPICT series board.
Jeedom. Credit to tlierdotfr on Github for making a plugin for Jeedom.
Using Node-Red
See the link below for an example using Node-Red. RPICT_and_Node-Red_hosted_on_Raspberrypi
Using JSON request
The Raspberrypi can be setup to serve Json requests on http.
Preliminaries. This is for a Raspbian default image. This guide should be completed first.
Issue the commands below. This installs a http server. Configure it and setup the binary of emonwrt3. Emonwrt3 aims to save the data into a rolling database.
sudo apt-get install lighttpd
sudo wget lechacal.com/repo/emonwrt3/lighttpd.conf -O /etc/lighttpd/lighttpd.conf
sudo /etc/init.d/lighttpd restart
wget lechacal.com/repo/emonwrt3/emonwrt3_rpi_armhf_v1.0.1.deb
sudo dpkg -i emonwrt3_rpi_armhf_v1.0.1.deb
Once complete you should be able to request the json data using the address below.
http://raspberrypi/cgi-bin/emonwrt3-json?last=1
Modify last=1 to the number of records you need to acquire. Remove the variable altogether to obtain all data (default limit is 128 records).
The web browser will show the data as below. Number of channels will depend on the unit used. Our example here as 4 channels CH_00 to CH_03.
Using Emoncms
Emoncms is a very complete and user friendly interface. Emonhub is used to forward the data from the RPICT to the Emoncms service. We also show some alternatives below.
Emoncms and RPICT on the same Raspberry
Emoncms and RPICT on the same Raspberry
Forward to a remote Emoncms server
There are 2 ways to do this. The first one is using our gateway tool called lcl-gateway. The second one involves installing Emonhub alone.
lcl-gateway
Get the lcl-gateway tool and install it this way.
wget https://github.com/lechacal/lcl-gateway.py/releases/download/v2.1.0/lcl-gateway_2.1.0_armhf.deb
sudo dpkg -i lcl-gateway_2.1.0_armhf.deb
Edit the lcl-gateway.conf file to reflect your own setting. Content is self explanatory.
sudo nano /etc/lcl-gateway.conf
Insert the RPICT and run
/usr/local/bin/lcl-gateway.py -d
Emonhub
An alternative way is to install Emonhub on the raspberry. See this guide.
Using Python basic script
Using the same sketch as mentioned above a python script can be used to work with the data. The example script below will be a good starting point.
First of all make sure you have python3-serial package installed
sudo apt-get install python3-serial
Then copy the following into an executable file and run it.
#!/usr/bin/python3
import serial
ser = serial.Serial('/dev/ttyAMA0', 38400)
try:
while 1:
# Read one line from the serial buffer
line = ser.readline().decode().strip()
# Create an array of the data
z = line.split(" ")
# Print it nicely
if len(z)>=3:
print("Power 1: %s Watts" % z[1])
print("Power 2: %s Watts" % z[2])
print("Power 3: %s Watts" % z[3])
print("Temperature: %s Degrees" % z[4])
except KeyboardInterrupt:
ser.close()
The above example is for the RPICT3T1 board. If using a different RPICT refer to the page of that particular board.
Full Output Firmware
For the most advanced user who code things themselves and do not use any readily made platforms like emoncms or influxdb we have a special firmware that produces an output with the most complete information.
This firmware brings in the additional features
- Relative timestamping to MCU boot time.
- One line per computation result. This means that data computed together are packed together and not mixed with other computation results.
- Data are sent along with the ports and level information that was used to compute them. This alleviate the need to know a user defined data field format.
Flashing the firmware / Upload Sketch
There is no need to flash the firmware (sketch) if you have just purchased the unit. They are sold ready to run. There is no need to reflash the microcontroller if you wish to change parameters. The board can be configured using the Raspberrypi. See relevant configuration documentation for this.
The reasons one would flash a new firmware are:
- Update to a new version.
- Flash your own sketch.
RPICT series come with 4 types of microcontrollers. Attiny84, Atmega328p, avr32db28 and avr32db32. See below.
RPICT4T4, RPICT3V1, RPICT3T1, RPIZ_CT3V1, RPIZ_CT3T1 (any versions)
These boards use attiny84 mcu.
This link is a tutorial to upload Arduino sketches to the Attiny84.
The onboard microcontroller can be re-programmed using the Arduino IDE software and an AVR programmer. We recommend our NanoProg programmer for this.
RPICT8, RPICT7V1, RPICT4V3, RPIZ_CT4V3T2 (Versions 2/3/4/5)
These boards use atmega328p mcu.
Upload Arduino sketch to Atmega328.
See this guide below to change or update the firmware:
Upload Arduino sketch from Raspberrypi to RPICT
RPICT3V1T1
They use avr32db28 mcu.
See this guide below to change or update the firmware:
Upload Arduino sketch from Raspberrypi to RPICT
RPICT8, RPICT7V1, RPICT4V3 (Version 6)
They use avr32db32 mcu.
See this guide below to change or update the firmware:
Upload Arduino sketch from Raspberrypi to RPICT
Developing Arduino Sketch
There is no need to know how to program or even flash any firmware to use any of the RPICT series. They all come with a ready to use firmware (or Arduino sketch). Nevertheless it is possible to modify or edit your own arduino sketch. RPICT series are well inclined for this purpose.
To make things easier we have developed the RPICTlib. It contain functions to easily compute all aspect of AC signal such as RMS value or Active Power and more.
The link below is an introduction to this library with plain simple examples.
Enclosures
Some RPICT have enclosures available as 3D printed product.
See the shop item for RPICT3T1 Enclosure
RPICT3V1 Enclosure (uses the same as RPICT7V1)
Related Articles and Howto
Howto setup Raspbian for serial read
First time troubleshoot for RPICT
Upload Arduino sketch from Raspberrypi to RPICT
Calibration VCAL ICAL PHASECAL
How to program an Attiny85 or Attiny84
RPICT Online Config Generator (old)
RPICT Configuration Web Tool (new)
Remote terminal access with tmate
Burn bootloader on RPICT Atmega with Arduino UNO
Playground
Transform a RPICT into a web scope
RPICT and Node-Red hosted on Raspberrypi
Compute Energy used using a RPICT
Third Party Developments
All of the links below are not managed by LeChacal. We think they might be of interest if you need inspiration. Contact us if you want your project to be added to the list below.
An enclosure alternative for RPICT7V1
'myPower' Power monitoring and logging developed by KM6WYE
An exporter for Prometheus on Github
rpict-mqtt / A package delivering MQTT support for RPICT
A Low-Cost and Do-It-Yourself Device for Pumping Monitoring in Deep Aquifers