Light Cube/Projektcode: Unterschied zwischen den Versionen
Aus C3MAWiki
Weitere Optionen
Berkay (Diskussion | Beiträge) KKeine Bearbeitungszusammenfassung |
Berkay (Diskussion | Beiträge) KKeine Bearbeitungszusammenfassung |
||
| Zeile 1: | Zeile 1: | ||
[[Kategorie:öffentlich]] | [[Kategorie:öffentlich]] | ||
{{aktives Projekt|Kontakt=Berkay|öffentlich=ja}} | {{aktives Projekt|Kontakt=Berkay|öffentlich=ja}} | ||
Dies ist der vollständige Projektcode. Die Projektseite: [[Light Cubes]] | |||
Version vom 1. Dezember 2016, 20:32 Uhr
Dies ist ein Projekt, an dem momentan aktiv gearbeitet wird. Wenn du Fragen hast oder mitarbeiten möchtest, wende dich an Berkay.
Dies ist der vollständige Projektcode. Die Projektseite: Light Cubes
ESP-Platine/Bauteil ESP NodeMCU Devboard
wifi.setmode(wifi.STATION)
wifi.sta.config("SSID", "PW")
ws2812.init();
local ledCount = 34;
local leds = string.char(10,00,0):rep(ledCount)
local hadIP = false;
local tick = false;
function readjson(data)
ok, json = pcall(cjson.decode, data)
if ok then
leds = ""
for ledid = 1, ledCount, 1 do
local ledData = json[ledid];
leds = leds .. string.char(ledData.g,ledData.r,ledData.b)
end
else
print("failed to decode!")
end
end
local pseudoRemote = {}
for ledid = 1, ledCount, 1 do
pseudoRemote[ledid]={}
pseudoRemote[ledid].r=100
pseudoRemote[ledid].g=0
pseudoRemote[ledid].b=ledid
end
local remoteData = cjson.encode(pseudoRemote);
print(remoteData)
local srv=net.createServer(net.TCP)
srv:listen(80,function(conn)
conn:on("receive",function(conn,payload)
print("Got something...")
print(payload);
readjson(payload)
conn:send("HTTP/1.1 200 OK\n")
conn:send("Content-Type: text/html\n\n")
end)
end)
local led1 = 0;
local led2 = 0;
local led3 = 0;
function countBlinks(eingabe)
while(eingabe > 0) do
if(eingabe >= 100) then
led1 = led1 +1
eingabe = eingabe -100
else
if(eingabe >= 10) then
led2 = led2 +1
eingabe = eingabe -10
else
led3 = led3 +1
eingabe = eingabe -1
end
end
end
end
function update()
ws2812.write(leds)
end
local anSekunde = false;
function blinkIP()
anSekunde = not anSekunde
if(anSekunde) then
if led1 > 0 then
ws2812.write(string.char(0,20,0))
led1 = led1 -1
return
end
if (led2 > 0) then
ws2812.write(string.char(0,0,0) .. string.char(0,20,0))
led2 = led2 -1
return
end
if (led3 > 0) then
ws2812.write(string.char(0,0,0):rep(2) .. string.char(0,20,0))
led3 = led3 -1
return
end
tmr.alarm(0, 100, tmr.ALARM_AUTO, update)
else
ws2812.write(string.char(00,0,0):rep(ledCount))
end
end
function wlaninit ()
if(not wifi.sta.getip())then
tick = not tick;
if(tick)then
ws2812.write(string.char(0,0,20):rep(ledCount))
else
ws2812.write(string.char(0,0,0):rep(ledCount))
end
return;
else
if not hadIP then
hadIP = true
local IP = wifi.sta.getip()
local o1,o2,o3,o4 = IP:match("(%d%d?%d?)%.(%d%d?%d?)%.(%d%d?%d?)%.(%d%d?%d?)" )
local eingabe = tonumber(o4)
countBlinks(eingabe);
tmr.alarm(0, 1000, tmr.ALARM_AUTO, blinkIP)
end
end
end
tmr.alarm(0, 100, tmr.ALARM_AUTO, wlaninit)