client: finish

This commit is contained in:
Jérémy 2025-04-26 15:21:53 +02:00
parent 55603f969e
commit c474aff5eb
3 changed files with 79 additions and 41 deletions

79
clientlua Normal file
View file

@ -0,0 +1,79 @@
-- Description: Client MQTT pour jouer une mélodie sur un ESP8266
client = mqtt.client("AlarmeStarWars","localhost",1883,false)
client:connect("student","ensibs")
-- Initialiser la broche GPIO2 pour la sortie
pio.pin.setdir(pio.OUTPUT, pio.GPIO2)
-- Définir la mélodie simplifiée Star Wars
local melody = {
{"A4", 500}, {"A4", 500}, {"F4", 350}, {"C5", 150},
{"A4", 500}, {"F4", 350}, {"C5", 150}, {"A4", 1000},
{"E5", 500}, {"E5", 500}, {"E5", 500},
{"F5", 350}, {"C5", 150}, {"G4", 500},
{"F4", 350}, {"C5", 150}, {"A4", 1000}
}
-- Fréquences associées aux notes (en Hz)
local notes = {
["A4"] = 440, ["F4"] = 349, ["C5"] = 523,
["E5"] = 659, ["F5"] = 698, ["G4"] = 392
}
-- Allumer la broche GPIO2
function ledon()
pio.pin.sethigh(pio.GPIO2)
end
-- Éteindre la broche GPIO2
function ledoff()
pio.pin.setlow(pio.GPIO2)
end
-- Jouer une note
function playTone(freq, duration)
local period = 1000000 / freq -- période en microsecondes
local cycles = (duration * 1000) / period
for i = 1, cycles do
ledon()
tmr.delay(period / 2) -- moitié HIGH
ledoff()
tmr.delay(period / 2) -- moitié LOW
end
end
-- Fonction pour jouer la mélodie
function playMelody()
for i, note in ipairs(melody) do
local n, d = note[1], note[2]
local freq = notes[n] or 0
if freq == 0 then
-- Pause : silence
ledoff()
tmr.delay(d * 1000)
else
playTone(freq, d)
end
-- Petite pause entre les notes
tmr.delay(50 * 1000)
end
end
-- Lancer la musique
-- playMelody()
-- Cette fonction sera appelée chaque fois qu'un message est reçu sur le canal souscrit
function recp(mess)
if mess then
playMelody() -- Jouer la mélodie à chaque message reçu
end
end
-- Boucle principale pour maintenir le script actif
while true do
tmr.delay(1000) -- Attendre 1 seconde entre les itérations
end
client:subscribe("NOM_CHANNEL", mqtt.QOS0, recp)

View file

@ -1,32 +0,0 @@
function start_wifi()
print("Starting WiFi...")
wifi.setmode(wifi.STATIONAP)
wifi.sta.config("SachamamaGoingHome", "GoFoundIt") -- Set SSID and password
wifi.sta.connect()
end
local dataReceive={}
start_wifi()
tmr.alarm(0, 1000, 1, function()
if wifi.sta.status() == wifi.STA_GOTIP then
print("WiFi connected!")
print("IP Address: " .. wifi.sta.getip())
tmr.stop(0)
elseif wifi.sta.status() == wifi.STA_CONNECTING then
print("Connecting to WiFi...")
else
print("WiFi connection failed.")
end
end)
-- Function to send data to the server
function sendData(data)
local conn = net.createConnection(net.TCP, 0)
conn:on("receive", function(conn, payload) print(payload) end)
conn:connect(80, "")
end

View file

@ -1,9 +0,0 @@
-- Initialize the Wi-Fi server
wifi.setmode(wifi.STATIONAP)
wifi.sta.config("SachamamaGoingHome", "GoFoundIt")
wifi.sta.connect()
wifi.sta.http.start()
wifi.sta.http.on("receive", function(conn, payload)
print(payload)
end)