Things used in this project

Hardware components:
Photon new
Particle Photon
12002 04
Breadboard (generic)
MikroElektronika Alcohol Click
Software apps and online services:
Zpm toolbar 1
Zerynth Studio
Zerynth lamp app
Zerynth App


Alcohol tester code - Zerynth App - TemplateHTML (Ruby)

  <meta name="viewport" content="width=device-width, initial-scale=1">

  <div data-role="page">
    <div data-role="header">
      <h1>IoT Alcohol Tester</h1></div>
    <div role="main" class="ui-content" style="text-align:center">
          <div class="demo-gauge" style="position: relative; height: 380px;">
        <div id='gauge' style="position: relative; margin: auto;">
    <p id="label" style="color:#468c8c; font-size:36px;" >Blooooooooow!</p>
    <div data-role="footer">Powered by Zerynth</div>
 $(document).ready(function () {
                 ranges: [{ startValue: 0, endValue: 60, style: { fill: '#4cb848', stroke: '#4cb848' }, startDistance: 0, endDistance: 0 },
                         { startValue: 60, endValue: 80, style: { fill: '#fad00b', stroke: '#fad00b' }, startDistance: 0, endDistance: 0 },
                         { startValue: 80, endValue: 100, style: { fill: '#e53d37', stroke: '#e53d37' }, startDistance: 0, endDistance: 0}],
                cap: { size: '5%', style: { fill: '#2e79bb', stroke: '#2e79bb'} },
                border: { style: { fill: '#8e9495', stroke: '#7b8384', 'stroke-width': 1 }, visible: false},
                ticksMinor: { interval: 5, size: '5%' },
                ticksMajor: { interval: 20, size: '10%' },       
                labels: { position: 'outside', interval: 20 },
                pointer: { style: { fill: '#2e79bb' }, width: 5 }, 
                value: 0,
                max: 100,
                animationDuration: 1000
            msg_ok = "Keep Calm and Drink Beer!";
            msg_no = "You're drunk, go home! (Don't Drive!)";
            function update_graph(x){
            $("#gauge").jqxGauge('setValue', x)
            function update_label(msg){
            if (msg == 0){
            } else if (msg == 1) {
Alcohol tester code - Zerynth StudioPython
# IoT Alcohol Tester

# import everything needed
import streams
from wireless import wifi
from broadcom.bcm43362 import bcm43362 as wifi_driver
from zerynthapp import zerynthapp
import adc


# save the template.html in the board flash with new_resource

# init the wifi driver!
# The driver automatically registers itself to the wifi interface
# with the correct configuration for the selected board

# connect to a wifi network
    # use the wifi interface to link to the Access Point
    # change network name, security and password as needed
    print("Establishing Link...")"wifi-name", wifi.WIFI_WPA2, "wifi-password")
except Exception as e:

def map_range(x, in_min, in_max, out_min, out_max):
    if x < in_min:
        x = in_min
    elif x > in_max:
        x = in_max
    return (x - in_min) * (out_max - out_min) // (in_max - in_min) + out_min

# Configure and run the Zerynth App instance

zp = zerynthapp.ZerynthApp("IoT Alcohol Tester", "Yeah, an IoT breathalyzer", "resource://template.html", logging=True)

msgs = ["Keep Calm and Drink Beer!", "You're drunk, go home! (Don't Drive!)"]
x =
max_in = 1100  # set the potentiometer to low and check the max value
range = 100
threshold = 80
x_old = map_range(x, 0, max_in, 0, range)

while True:
    # read from adc
    x =
    x = map_range(x, 0, max_in, 0, range)
    # send the value to the mobile app via a notification event called "adc"
    # the notification is sent only after the mobile app to zerynth script link is established ;)
    zp.notify("adc", x)
    if x <= threshold and x_old >= threshold:
        zp.notify("show_msg", 0)
    elif x > threshold and x_old < threshold:
        zp.notify("show_msg", 1)
    x_old = x
IoT Alcohol Tester

Yeah, an IoT breathalyzer



Did you replicate this project? Share it!

I made one

Love this project? Think it could be improved? Tell us what you think!

Give feedback


Similar projects you might like

Weather Box
  • 2,114
  • 10

Full instructions

Small weather station that uploads to Weather Underground with a NeoPixel ring for visualization.

Washer/Dryer Monitor
  • 538
  • 5

Full instructions

Monitor your appliance's power indicator with a photocell for easy notifications without high voltage wiring.

Two Person Weasley Clock with Particle Photon and IFTTT
  • 1,010
  • 14

Full instructions

Taking inspiration from the Harry Potter character's Weasley clock, this one uses Particle and IFTTT to tell you where two people are.

Study Buddy
  • 2,532
  • 140

Full instructions

Know when an assignment is coming up!

Study Buddy

Team Alexa and Shannon

Security + 2.0 MyQ Garage Door Opener
  • 1,133
  • 4

Full instructions

Interface newer garage door openers with more than a relay.

Connecting Particle Photon with Twitter, Facebook or Mail
  • 646
  • 18

Full instructions

Whenever someone tweets you or sends a Facebook message or you receive a mail, a LED on Photon glows.

Add projectSign up / Login
Respect project