Files
ErhaCam-controller/main.py
2025-07-21 11:29:58 +07:00

101 lines
2.3 KiB
Python

from machine import Pin
from time import sleep
import sys
# Pin definition
R1 = Pin(14, Pin.OUT)
R2 = Pin(13, Pin.OUT)
R3 = Pin(12, Pin.OUT)
R4 = Pin(11, Pin.OUT)
R5 = Pin(10, Pin.OUT)
# State definition
# untuk kondisi active low atau active high
ON = 0
OFF = 1
def relay_control(id, isON):
if id == 1 :
R1.value(ON if isON else OFF)
print("R1","ON" if isON else "OFF")
elif id==2 :
R2.value(ON if isON else OFF)
print("R2","ON" if isON else "OFF")
elif id==3 :
R3.value(ON if isON else OFF)
print("R3","ON" if isON else "OFF")
elif id==4 :
R4.value(ON if isON else OFF)
print("R4","ON" if isON else "OFF")
elif id==5 :
R5.value(ON if isON else OFF)
print("R5","ON" if isON else "OFF")
else:
print("Invalid ID")
def all_on():
for i in range(1,6): # 1..5
relay_control(i,True)
def all_off():
for i in range(1,6): # 1..5
relay_control(i,False)
def init_relay():
# first boot
all_off()
# nyalain satu per satu dengan interval 5 detik
sleep(5)
for i in range(1,6): # 1 .. 5
relay_control(i,True)
sleep(5)
init_relay()
while True:
line = sys.stdin.readline() # reads until \n
if not line:
# nothing received
sleep(0.01)
continue
cmd = line.strip().upper()
# valid command Rx=ON for ON
# valid command Rx=OFF for OFF
if len(cmd) < 5 :
# so minimum cmd length is 5 bytes
continue
if len(cmd) > 6 :
# so maximum cmd length is 6 bytes
continue
if cmd == "RX=ON":
all_on()
elif cmd == "RX=OFF":
all_off()
elif cmd == "R1=ON":
relay_control(1,True)
elif cmd == "R1=OFF":
relay_control(1,False)
elif cmd == "R2=ON":
relay_control(2,True)
elif cmd == "R2=OFF":
relay_control(2,False)
elif cmd == "R3=ON":
relay_control(3,True)
elif cmd == "R3=OFF":
relay_control(3,False)
elif cmd == "R4=ON":
relay_control(4,True)
elif cmd == "R4=OFF":
relay_control(4,False)
elif cmd == "R5=ON":
relay_control(5,True)
elif cmd == "R5=OFF":
relay_control(5,False)
elif cmd == "REINIT":
init_relay()