Project in progress
Smart IOT Propane Monitoring Pedestal

Smart IOT Propane Monitoring Pedestal © GPL3+

Smart IOT Propane Pedestal capable of tracking propane level as well as detecting any propane leaks. Integration with Amazon Alexa.

  • 1 comment
  • 15 respects

Components and supplies

Necessary tools and machines

Apps and online services

About this project


We wanted to make a IOT device to reflect our love for grilling and that is why we made The Smart IOT Propane Pedestal. The device is capable of monitoring the weight of the tank as well as detecting any propane leaks. This all requires creating an Alexa Smarthome Skill, an AWS Lambda function and to communicate with the MKR1000.

Weight Monitoring

Using (4) 50kg Load Sensors in a Wheatstone Bridge arraignment a Load Cell Amplifier, Logic Level Converter, and Arduino MKR1000 we set up a scale similar to your average digital bathroom scale.

Sparkfun has documented hookup guides that should be referenced.

Arduino IDE Sketch we used the sketch example referenced in the spark fun hookup guide for the load cells titled HX711.ino

GAS Leak Detection

A Sparkfun LPG Sensor was also connected to the Logic Level Converter and Arduino MKR1000 to provided basic gas leak monitoring rather then varying levels we kept it simple using T/F either gas is detected or its not. With more time we plan on setting certain thresholds to increase accuracy.

Arduino IDE Sketch/Hookup - we used the code example referenced below:

Pedestal Housing

The pedestal housing consists of two aluminium pans details available in CAD file. We had these fabricated for us by our friends at out of aluminum sheet metal.

The inner pan is where the hardware components were located and the load cell's were mounted on top of 3d printed feet to allow for enough room underneath for our Arduino MKR1000, LPG Sensor, LoadCellAmp, LogicLevelConverter, etc. A smaller circular plate was placed atop for the propane tank to sit on.


Lambda FunctionPython
float gas, currentWeight, double propaneLevel
def MAX_WEGHT = 36.6
def TARE_WEIGHT = 16.6

def lambda_handler(event, context):
  # TODO implement
 return 'Hello from Lambda'
def isDetected(gas):
  if (gas > 0)
  result = True
  print("Gas Leak Detected!")

  result = False

  return result


def checkLevel(currentWeight):
  if (currentWeight <= MAX_WEGHT):
  propaneLevel = currentWeight - TARE_WEIGHT

  print("Careful, your tank is too full!")

  return propaneLevel
  print("The current level")
Amazon SkillJavaScript
  "languageModel": {
    "intents": [
        "name": "AMAZON.CancelIntent",
        "samples": []
        "name": "AMAZON.HelpIntent",
        "samples": []
        "name": "AMAZON.StopIntent",
        "samples": []
        "name": "GetPropane",
        "samples": [
          "check propane",
          "tell me propane",
          "get propane",
          "get current propane",
          "check current propane"
        "slots": []
    "invocationName": "check propane"
File Transfer: PropaneMeasurement.ino
#include <WiFi101.h>
#include <MQTTClient.h>
#include <Bridge.h>
#include "HX711.h"

const char ssid[] = "";
const char pass[] = "";

#define DOUT 3
#define CLK 2

HX711 scale(DOUT, CLK);

char username[] = "";
char password[] = "";
char clientID[] = "";

float calibration_factor = -11100;

WiFiClient net;
MQTTClient client;

unsigned long lastMillis = 0;

void setup() {
  WiFi.begin(ssid, pass);
  long zero_factor = scale.read_average();
  // Note: Local domain names (e.g. "Computer.local" on OSX) are not supported by Arduino.
  // You need to set the IP address directly.
  client.begin("", net);


void connect() {
  Serial.print("checking wifi...");
  while (WiFi.status() != WL_CONNECTED) {

  while (!client.connect("arduino", "try", "try")) {


  // client.unsubscribe("/hello");

void loop() {
  Serial.print(scale.get_units(), 1);
  Serial.print(" lbs");
  Serial.print(" calibration_factor: ");
  if (!client.connected()) {

  // publish a message roughly every second.
  if (millis() - lastMillis > 1000) {
    lastMillis = millis();
    client.publish("/hello", "world");

void messageReceived(String &topic, String &payload) {
  Serial.println("incoming: " + topic + " - " + payload);

Custom parts and enclosures

Strain Gauge Raised Feet
3d Printed Raised Feet Mounts for each of the 4 strain gauges.
CAD Sheet Metal Fabrication
Housing consists of two Aluminium Pan's Fabricated from 10 Gauge Sheet Metal


Generic Layout


Similar projects you might like

Smart Personal Money Vault Monitoring System Based on IoT

Project tutorial by Salah Uddin

  • 1 comment
  • 13 respects

Hygge Home - Alexa Smart Bath

Project tutorial by J Howard

  • 22 respects

Habitat Hub: An Alexa and Arduino Smart Home for terrariums.

Project in progress by Garth Frenzel

  • 4 respects

IOT - Smart Jar Using ESP8266, Arduino and Ultrasonic Sensor

Project tutorial by Team Smazee

  • 15 respects

SMART Temperature Monitoring for Schools

Project tutorial by Aden and reginald loo

  • 1 comment
  • 11 respects

Alexa BBQ/Kitchen Thermometer with IoT Arduino and e-Paper

Project tutorial by Roger Theriault

  • 10 respects
Add projectSign up / Login