print("Praise the Omnissiah!")
import network
import urequests
import utime
from utime import sleep
from machine import Pin, SoftI2C, PWM
from i2c_lcd import I2cLcd
from servo import Servo
from dht import DHT22
import utelegram
servo1 = Servo(18)
i2c = SoftI2C(sda=Pin(21), scl=Pin(22))
lcd = I2cLcd(i2c, 0x27, 4, 20)
trigger = Pin(12, Pin.OUT)
echo = Pin(14, Pin.IN)
sensor = DHT22(Pin(25))
led = Pin(5, Pin.OUT)
i2c = SoftI2C(sda=Pin(21), scl=Pin(22))
lcd = I2cLcd(i2c, 0x27, 4, 20)
wifi = network.WLAN(network.STA_IF)
doorstate = 0
lcd.putstr('Connecting...')
wifi.active(1)
wifi.scan()
wifi.connect('Wokwi-GUEST','')
while not wifi.isconnected():
utime.sleep(0.1)
lcd.clear()
lcd.putstr('Connected. Praise \nthe Omnissiah!')
sleep(1)
lcd.clear()
def lcdprt(message):
lcd.clear()
lcd.putstr(message)
def lcdmsg(message):
lcd.clear()
lcd.putstr(message['message']['text'])
# def get_id(message):
# global mspi_id
# mspi_id = message['message']['chat']['id']
def ultra():
trigger.off()
utime.sleep_us(2)
trigger.on()
utime.sleep_us(5)
trigger.off()
while echo.value() == 0:
signal_off = utime.ticks_us()
while echo.value() == 1:
signal_on = utime.ticks_us()
try:
time_passed = signal_on - signal_off
except NameError:
return 0
return time_passed/58
def wethr(message):
sensor.measure()
temp = sensor.temperature()
humi = sensor.humidity()
mspi.send(message['message']['chat']['id'], f'Temperature: {temp} Celcius \nHumidity: {humi}%')
lcdprt(f'Temperature: {temp} Celcius \nHumidity: {humi}%')
def omicron(message):
rho = ultra()
mspi.send(message['message']['chat']['id'], f'Distance: \n{rho} cm')
lcdprt(f'Distance: \n{rho} cm')
def dlock(message):
servo1.write_angle(0)
global doorstate
doorstate = 1
def dopen(message):
servo1.write_angle(180)
global doorstate
doorstate = 0
def ledon(message):
led.on()
def ledoff(message):
led.off()
def doorchk(message):
global doorstate
if doorstate == 1:
mspi.send(message['message']['chat']['id'], f'Door is currently LOCKED')
lcdprt(f'Door is currently LOCKED')
if doorstate == 0:
mspi.send(message['message']['chat']['id'], f'Door is currently OPEN')
lcdprt(f'Door is currently OPEN')
def checkall(message):
doorchk(message)
wethr(message)
omicron(message)
def helpmsg(message):
mspi.send(message['message']['chat']['id'], f'Command list: \n/on - Turns LED ON \n/off - Turns LED OFF \n/lock - LOCKS the door \n/open - OPENS the door \n/dist - Measures infrared sensor dist. \n/weather - Shows the current weather using the DHT22 \n/praise - Praises the Omnissiah! \n/check - Checks the door state (locked/open) \n/status - Displays all information the sensors can gather. \nTo display text on the LED screen, type it into the chat.')
def praise(message):
mspi.send(message['message']['chat']['id'], f'Praise the Omnissiah!')
lcdprt(f'Praise the Omnissiah!')
lcdprt('Waking machine \nspirit...')
token = '6702945532:AAGilyfLnzk-hrU5WjIkd0iojU51kwVhjt8'
mspi = utelegram.ubot(token)
mspi.register('/on', ledon)
mspi.register('/off', ledoff)
mspi.register('/open', dopen)
mspi.register('/lock', dlock)
mspi.register('/check', doorchk)
mspi.register('/dist', omicron)
mspi.register('/weather', wethr)
# mspi.register('/start', get_id)
mspi.register('/help', helpmsg)
mspi.register('/praise', praise)
mspi.register('/status', checkall)
mspi.set_default_handler(lcdmsg)
lcdprt('Machine spirit \nawoken. \nPraise the \nOmnissiah!')
lcdprt('Type /help to get the command list')
mspi.listen()
# dlock()
# sleep(1)
# dopen()
# sleep(1)
# lcdprt('Praise the \nOmnissiah!')
# omicron()
# wethr()
# ledon()
# sleep(1)
# ledoff()