import network
wifi = network.WLAN(network.STA_IF)
wifi.active(1)
wifi.connect("Wokwi-GUEST","")
import urequests as requests
import ujson
import time
print("Connecting to WiFi", end="")
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect("Wokwi-GUEST", "")
while not wlan.isconnected():
print(".", end="")
time.sleep(0.1)
print(" Connected!")
print(wlan.ifconfig())
from ws import AsyncWebsocketClient
async def echo():
ws = AsyncWebsocketClient()
await ws.handshake("wss://parking-rio.rezel.net/api")
a = await ws.recv()
print(a)
await ws.send("message")
import uasyncio
uasyncio.run(echo())
import machine
import time
import ujson
#import usocket as socket
from machine import Pin
echo_pin = Pin(2, Pin.IN)
trig_pin = Pin(4, Pin.OUT)
led_red_pin = Pin(8, Pin.OUT)
led_green_pin = Pin(7, Pin.OUT)
server_name = "parking-rio.rezel.net"
path = "/"
host = "parking-rio.rezel.net"
last_time = 0
timer_delay = 5000
sound_speed = 343.2
previous_state = False
current_state = False
mqtt_server = "parking-rio.rezel.net"
mqtt_port = 443
mqtt_topic = "api"
client_id = "your_client_id"
client = MQTTClient(client_id, mqtt_server, mqtt_port, ssl=True, ssl_params={"certfile": "cert.pem"})
def send_mqtt_request(state):
try:
if client.is_connected():
client.publish(mqtt_topic, ujson.dumps({"state": state}))
print("Request sent.")
except Exception as e:
print("Error sending request:", str(e))
def connect_wifi():
import network
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
if not wlan.isconnected():
print("Connecting to WiFi...")
wlan.connect(wifi_ssid, wifi_password)
while not wlan.isconnected():
pass
print("Connected to WiFi.")
return wlan
def connect_mqtt():
print("Connecting to MQTT...")
client.connect()
print("Connected to MQTT.")
def on_message(topic, msg):
global current_state
try:
data = ujson.loads(msg)
if "request" in data:
request = data["request"]
if request == "name":
send_mqtt_request({"name": "send IP"})
elif request == "state":
send_mqtt_request({"state": current_state})
else:
send_mqtt_request({"error": "Unknown request"})
except Exception as e:
print("Error processing MQTT message:", str(e))
def setup():
print("Initializing...")
trig_pin.off()
wlan = connect_wifi()
connect_mqtt()
client.set_callback(on_message)
client.subscribe(mqtt_topic)
print("Initialization complete.")
def loop():
global last_time, current_state, previous_state
trig_pin.off()
time.sleep_us(2)
trig_pin.on()
time.sleep_us(10)
trig_pin.off()
duration = machine.time_pulse_us(echo_pin, 1, 30000) # 30ms timeout for 5m distance
distance = duration * (sound_speed / (2 * 10 ** 4))
disp = str(distance)
print("Distance: " + disp + " cm")
current_state = distance <= 50
if current_state != previous_state:
if current_state:
send_mqtt_request("setOn")
led_green_pin.off()
led_red_pin.on()
else:
send_mqtt_request("setOff")
led_red_pin.off()
led_green_pin.on()
previous_state = current_state
# Reset the timer after sending the MQTT request
last_time = time.ticks_ms()
# Add any additional logic or handling of MQTT messages if needed
client.check_msg()
time.sleep(1)
if __name__ == "__main__":
setup()
while True:
loop()