Skip to content

Instantly share code, notes, and snippets.

@huggre
Last active January 28, 2024 13:47
Show Gist options
  • Star 6 You must be signed in to star a gist
  • Fork 4 You must be signed in to fork a gist
  • Save huggre/a3044e6094867fe04096e0c64dc60f3b to your computer and use it in GitHub Desktop.
Save huggre/a3044e6094867fe04096e0c64dc60f3b to your computer and use it in GitHub Desktop.
Integrating physical devices with IOTA and Python
# Imports some Python Date/Time functions
import time
import datetime
# Imports GPIO library
import RPi.GPIO as GPIO
# Imports the PyOTA library
from iota import Iota
from iota import Address
# Setup O/I PIN's
LEDPIN=18
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(LEDPIN,GPIO.OUT)
GPIO.output(LEDPIN,GPIO.LOW)
# Function for checking address balance on the IOTA tangle.
def checkbalance():
print("Checking balance")
gb_result = api.get_balances(address)
balance = gb_result['balances']
return (balance[0])
# URL to IOTA fullnode used when checking balance
iotaNode = "https://nodes.thetangle.org:443"
# Create an IOTA object
api = Iota(iotaNode, "")
# IOTA address to be checked for new light funds
# IOTA addresses can be created using the IOTA Wallet
address = [Address(b'NYZBHOVSMDWWABXSACAJTTWJOQRPVVAWLBSFQVSJSWWBJJLLSQKNZFC9XCRPQSVFQZPBJCJRANNPVMMEZQJRQSVVGZ')]
# Get current address balance at startup and use as baseline for measuring new funds being added.
currentbalance = checkbalance()
lastbalance = currentbalance
# Define some variables
lightbalance = 0
balcheckcount = 0
lightstatus = False
# Main loop that executes every 1 second
while True:
# Check for new funds and add to lightbalance when found.
if balcheckcount == 10:
currentbalance = checkbalance()
if currentbalance > lastbalance:
lightbalance = lightbalance + (currentbalance - lastbalance)
lastbalance = currentbalance
balcheckcount = 0
# Manage light balance and light ON/OFF
if lightbalance > 0:
if lightstatus == False:
print("light ON")
GPIO.output(LEDPIN,GPIO.HIGH)
lightstatus=True
lightbalance = lightbalance -1
else:
if lightstatus == True:
print("light OFF")
GPIO.output(LEDPIN,GPIO.LOW)
lightstatus=False
# Print remaining light balance
print(datetime.timedelta(seconds=lightbalance))
# Increase balance check counter
balcheckcount = balcheckcount +1
# Pause for 1 sec.
time.sleep(1)
@hype08
Copy link

hype08 commented May 19, 2018

This is great! I came from a reddit post showing your medium article. I would love to try this on my Pi if that would be okay!

@mesebilisim
Copy link

thanks @huggre

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment