Skip to content

How to use PellMon with a generic pellet burner

Anders Nylund edited this page Apr 20, 2017 · 10 revisions

Configure PellMon for use with any pellet burner

By default PellMon comes with the ScotteCom plugin enabled for use with a NBE scotte/woody burner, follow this guide to configure PellMon for use with any other burner.

The replacement for ScotteCom is called PelletCalc. PelletCalc monitors the feeder auger and supplies the parameters feeder_time and feeder_capacity which need to be logged to the database to provide data for calculation of pellet usage.

PelletCalc has two modes of operation: Counter mode and Timer mode.

Counter mode

In Counter mode PelletCalc provides the necessary parameters needed to be able to calculate power_kW and feeder_time from the auger revolution count. The auger revolutions are read from a data Item that has to be provided by another plugin. At the moment there are two possible ways to count feeder auger revolutions: you can use the hardware specific RaspberryGPIO plugin or the generic OWFS plugin. Both reads the signal from a switch that you arrange to output one or several pulses for every feeder auger revolution.

1. Open the configuration file

/etc/pellmon/conf.d/enabled_plugins.conf with a text editor or use the pellmonconf tool to edit the file in your web browser.

2. Disable Scottecom

#p01 = ScotteCom

3. Enable PelletCalc

p07 = PelletCalc

4. Create an item called feedercounter to count feeder auger revolutions

Alternative A: use RaspberryGPIO

A.1 Enable raspberryGPIO

p03 = RaspberryGPIO

A.2 Configure the RaspberryGPIO plugin

Open the file /etc/pellmon/conf.d/plugins/raspberrygpio.conf. Set an available GPIO, for instance pin 15, to function as a counter and create an Item called feedercounter to hold the value:

gpio22_function = counter
gpio22_item = feedercounter
gpio22_pin = 15

GPIO's cofigured as input or counter have the internal pullup resistor activated. This means that the switch shall connect the GPIO pin to ground when closed and leave the pin unconnected when open.

Alternative B: use OWFS

Use a onewire sensor to count feeder auger revolutions. The OWFS plugin has special support for the DS2406 onewire I/O chip to use it as a counter by utilizing it's build in latch. The latch makes it possible to see short pulses even though the input status is read only every 5 seconds.

B.1 Enable OWFS

p05 = OWFS

B.2 Configure OWFS

You need to have the owserver up and running, the OWFS plugin talks directly to the owserver and not to the fuse-mounted filesystem view of the onewire network. Add this to the file /etc/pellmon/conf.d/plugins/owfs.conf

ow1_item = feedercounter
ow1_path = uncached/12.8D3E7D000000/sensed.A
ow1_type = COUNTER
ow1_latch = uncached/12.8D3E7D000000/latch.A

Note that the path is just an example, 12.8D3E7D000000 needs to be replaced with the correct path to the DS2406 sensor. The uncached path must be used to provide an up to date value, otherwise pulses could be missed due to owserver internal caching.

5. Configure the PelletCalc plugin

Edit the file /etc/pellmon/conf.d/plugins/pelletcalc.conf to configure the plugin to read feader auger revolution count from the item feedercounter as provided by RaspberryGPIO or OWFS:

counter = feedercounter

6. Restart the server or reboot

to activate changes

7. Measure the feeder auger speed and capacity

And write the measured values to the PelletCalc settings Feeder 6 Min Capacityfeeder_capacity and Feeder Rev Per 6 Minfeeder_rp6m by using the web interface or the command line interface.


You now have pellet consumption logging up and running. If you'd like to have some pretty temperature graphs on top of that you can add as many onewire temperature sensors as you like and read them with the OWFS plugin

Timer mode

In Timer mode PelletCalc needs to be provided with the auger running time directly, instead of calculating it from auger revolution count. The RaspberryGPIO plugin can be configured to make a GPIO pin act as a timer, that is reading the timer item will return the cumulative time in seconds the input has been in it's active state. A simple way to interface from the auger motor to the raspberry input is to use a suitable transformer connected to the motor main supply, which drives a relay connected between the GPIO input and ground.

RaspberryGPIO configuration

Look for the section named [plugin_RaspberryGPIO]. Set an available GPIO, eg pin 15, to function as a timer and create an Item called feedertimer to hold the value:

gpio22_function = timer
gpio22_item = feedertimer
gpio22_pin = 15

PelletCalc configuration

Look for the section named [plugin_PelletCalc] and configure it to read feader run time from the item feedertimer as provided by RaspberryGPIO:

timer = feedertimer
You can’t perform that action at this time.