from network import * #Conectarnos a wifi
from umqtt.simple import MQTTClient #Manda mensajes remotamente
from machine import Pin
from time import sleep_ms
from machine import PWM
#Propiedades para conectarse al servidor de mensajes
MQTT_BROKER="broker.emqx.io"
MQTT_USER=""
MQTT_PASSWORD=""
MQTT_CLIENT_ID=""
MQTT_TOPIC="ade/home/wc/luz"
MQTT_PORT=1883
B0 = 31
C1 = 33
CS1 = 35
D1 = 37
DS1 = 39
E1 = 41
F1 = 44
FS1 = 46
G1 = 49
GS1 = 52
A1 = 55
AS1 = 58
B1 = 62
C2 = 65
CS2 = 69
D2 = 73
DS2 = 78
E2 = 82
F2 = 87
FS2 = 93
G2 = 98
GS2 = 104
A2 = 110
AS2 = 117
B2 = 123
C3 = 131
CS3 = 139
D3 = 147
DS3 = 156
E3 = 165
F3 = 175
FS3 = 185
G3 = 196
GS3 = 208
A3 = 220
AS3 = 233
B3 = 247
C4 = 262
CS4 = 277
D4 = 294
DS4 = 311
E4 = 330
F4 = 349
FS4 = 370
G4 = 392
GS4 = 415
A4 = 41
AS4 = 466
B4 = 494
C5 = 523
CS5 = 554
D5 = 587
DS5 = 622
E5 = 659
F5 = 698
FS5 = 71
G5 = 784
GS5 = 831
A5 = 880
AS5 = 932
B5 = 988
C6 = 1047
CS6 = 1109
D6 = 1175
DS6 = 1245
E6 = 1319
F6 = 1397
FS6 = 1480
G6 = 1568
GS6 = 1661
A6 = 1760
AS6 = 1865
B6 = 1976
C7 = 2093
CS7 = 2217
D7 = 2349
DS7 = 2489
E7 = 2637
F7 = 2794
FS7 = 2960
G7 = 3136
GS7 = 3322
A7 = 3520
AS7 = 3729
B7 = 3951
C8 = 4186
CS8 = 4435
D8 = 4699
DS8 = 4978
S = 0
el_lokeron = [
A5,A6,D6,
C6,B4,
]
Silencio = [
S,
]
#Función para conectarnos a wifi
def conectar_wifi():
print("conectando", end="")
sta_if=WLAN(STA_IF)
sta_if.active(True)
sta_if.connect("Wokwi-GUEST", "")
while not sta_if.isconnected():
print(".", end="")
sleep_ms(300)
print("Red conectada!")
#Función que haga algo cuando el mensaje lo indique
def llegada_mensaje(topic, msg):
print("Mensaje:", msg,"Topico:", topic)
if msg==b'ON_BUZZ1':
b.play(el_lokeron, 600, 512)
# Pausa de un segundo
sleep_ms(1000)
else:
b.play(silencio, 600, 512)
if msg==b'OFF_ BUZZ2':
#Función que crea un cliente que se subscribe a un broker
def suscribir():
client=MQTTClient(
MQTT_CLIENT_ID,
MQTT_BROKER,
user=MQTT_USER,
password=MQTT_PASSWORD,
keepalive=0)
client.set_callback(llegada_mensaje)
client.connect()
client.subscribe(MQTT_TOPIC)
return client
class Buzzer:
#Función constructora
def __init__(self, salida):
#Propiedad utilizada
self.pwm = PWM(Pin(salida, Pin.OUT))
#Función de reproducción de sonido
def play(self, song, wait, duty):
#Recorremos la canción
for note in song:
self.pwm.freq(note)
self.pwm.duty(duty)
sleep_ms(wait)
# Colocamos volumen en 0
self.pwm.duty(0)
# Creamos un objeto buzzer
b = Buzzer(23)
#Llamamos la función para conectarnos a red
conectar_wifi()
#Creamos cliente que subscriba al broker
client=suscribir()
while True:
client.wait_msg()