ich habe vor 4 ca. Jahren angefangen und mich über das Thema Smarthome "eingelesen". Das meiste habe ich aus diesem Forum gelernt. Dann habe ich mir eine kleine Testanlage aufgebaut und losgelegt. Aller Anfang ist schwer, aber mittlerweile komme ich ganz gut zurecht.
Das Haus steht und mit der Anlage LCN/Base bin ich auch fast fertig. Daher noch mal DANKE, an alle die hier im Forum Beiträge beantworten und posten.
Jetzt habe ich mir einen Müllkalender mit der Domiq Base gebaut und möchte (auch als kleines Dankeschön an das Forum, es hat mit sehr geholfen) ein Tutorial dafür einstellen.
Also Los ...
So sollte es mal aussehen: [img] [/img]
Die Zahle neben den Tonnen zeigt die Resttage an, wann die entsprechende Tonne rausgestellt werden muss.
Als erstes habe ich mir die Daten in Excel erstellt. Das sieht komplizierter und zeitaufwändiger aus als es ist.
Ich habe für das ganze Jahr bei 4 Tonnen ca. 20 min. gebraucht. Dann waren die Daten fertig. Excel hilft dabei ganz gut.
Wer Schwierigkeiten hat, gerne fragen.
Sieht bei mir so aus: [img] [/img]
Dann habe ich folgenden Code in LUA in den Bereich "Logic" der Base geschrieben:
Ich habe ihn etwas kommentiert, aber wenn dazu Fragen sind, auch gerne stellen.
Als erstes ganz Unten im Code die Daten aus der Excel Tabelle: (Sollte man durch seinen eigenen Daten natürlich ersetzen. Aber zu Testzwecken, reichen meine natürlich auch aus)
Code: Alles auswählen
daten = {[20170505] = "Blau",[20170508] = "Bio",[20170509] = "Grau",[20170511] = "Gelb",[20170518] = "Blau",[20170522] = "Bio",[20170523] = "Grau",[20170526] = "Gelb",[20170601] = "Blau",[20170606] = "Bio",[20170607] = "Grau",[20170609] = "Gelb",[20170616] = "Blau",[20170619] = "Bio",[20170620] = "Grau",[20170622] = "Gelb",[20170629] = "Blau",[20170703] = "Bio",[20170704] = "Grau",[20170706] = "Gelb",[20170713] = "Blau",[20170717] = "Bio",[20170718] = "Grau",[20170720] = "Gelb",[20170727] = "Blau",[20170731] = "Bio",[20170801] = "Grau",[20170803] = "Gelb",[20170810] = "Blau",[20170814] = "Bio",[20170815] = "Grau",[20170817] = "Gelb",[20170824] = "Blau",[20170828] = "Bio",[20170829] = "Grau",[20170831] = "Gelb",[20170907] = "Blau",[20170911] = "Bio",[20170912] = "Grau",[20170914] = "Gelb",[20170921] = "Blau",[20170925] = "Bio",[20170926] = "Grau",[20170928] = "Gelb",[20171006] = "Blau",[20171009] = "Bio",[20171010] = "Grau",[20171012] = "Gelb",[20171019] = "Blau",[20171023] = "Bio",[20171024] = "Grau",[20171026] = "Gelb",[20171103] = "Blau",[20171106] = "Bio",[20171107] = "Grau",[20171109] = "Gelb",[20171116] = "Blau",[20171120] = "Bio",[20171121] = "Grau",[20171123] = "Gelb",[20171130] = "Blau",[20171204] = "Bio",[20171205] = "Grau",[20171207] = "Gelb",[20171214] = "Blau",[20171218] = "Bio",[20171219] = "Grau",[20171221] = "Gelb",[20171229] = "Blau"}
Dann darüber diesen Code:
Code: Alles auswählen
---------tonnentage-------------------------------------------------------
function tonnenTage()
heute = date("%Y%m%d") ---setzt heute als aktuelles Datum
local tkeys = {} -- legt die Liste tkeys (wird zum sortieren benötigt) an
function rechnen(k) -- berechnet die Tage Zwischen 2 Tagen
heuteString = date("%Y%m%d")
tonneJahr=string.sub(k, 1, 4)
tonneMonat=string.sub(k, 5, 6)
tonneTag=string.sub(k, 7, 8)
heuteJahr=string.sub(heuteString, 1, 4)
heuteMonat=string.sub(heuteString, 5, 6)
heuteTag=string.sub(heuteString, 7, 8)
reference = time{day=tonneTag, year=tonneJahr, month=tonneMonat}
heute = time{day=heuteTag, year=heuteJahr, month=heuteMonat}
diffZeit = reference / (24 * 60 * 60)- heute / (24 * 60 * 60)-- sekunden
diffTage = math.floor(diffZeit)
print(("TageDazwischen: ") .. diffTage)
return diffTage
end
for k in pairs(daten) --schreibt die Daten in neue Liste als k = Key = Datum, Farbe als Value
do
table.insert(tkeys, k)
end
table.sort(tkeys) --sortiert die Daten nach Datum (tkeys) (hier als Schlüssel angegebennen Zahl)
i=1;
for _, k in ipairs(tkeys) --durchläuft alle Daten (tkeys)
do
heute = tonumber(date("%Y%m%d")) -- Muss hier noch mal neu Initialisiert und gesetzt werden. Keine Ahnung warum
if (k >= heute)
then
if (i<5) --damit nur die ersten 4 Ergebnisse verwertet werden.
then
rechnen(k) -- ruft rechnen auf und übergibt das Datum (bekommt durch return diffTage zurück)
if (i==1) then --das erste Ergebnis
farbe=daten[k] --- holt die fareb der Tonne aus den Daten
print (farbe)
if (farbe == "Blau") then set('VAR.tageBlau',diffTage) end --Wenn Farbe xxxxx dann wird
if (farbe == "Bio") then set('VAR.tageBraun',diffTage) end --VAR.XXXXX mit den dazugehörigen
if (farbe == "Grau") then set('VAR.tageGrau',diffTage) end --diffTagen gesetzt
if (farbe == "Gelb") then set('VAR.tageGelb',diffTage) end --
end
if (i==2) then --das zweite Ergebnis
farbe=daten[k]
print (farbe)
if (farbe == "Blau") then set('VAR.tageBlau',diffTage) end
if (farbe == "Bio") then set('VAR.tageBraun',diffTage) end
if (farbe == "Grau") then set('VAR.tageGrau',diffTage) end
if (farbe == "Gelb") then set('VAR.tageGelb',diffTage) end
end
if (i==3) then --das dritte Ergebnis
farbe=daten[k]
print (farbe)
if (farbe == "Blau") then set('VAR.tageBlau',diffTage) end
if (farbe == "Bio") then set('VAR.tageBraun',diffTage) end
if (farbe == "Grau") then set('VAR.tageGrau',diffTage) end
if (farbe == "Gelb") then set('VAR.tageGelb',diffTage) end
end
if (i==4) then --das 4. Ergebnis
farbe=daten[k]
print (farbe)
if (farbe == "Blau") then set('VAR.tageBlau',diffTage) end
if (farbe == "Bio") then set('VAR.tageBraun',diffTage) end
if (farbe == "Grau") then set('VAR.tageGrau',diffTage) end
if (farbe == "Gelb") then set('VAR.tageGelb',diffTage) end
end
i=i+1 -- erhöht i damit irgenwann der Schleifenausstieg gemacht wird.
end
end
end
end
-------------------------------------------------
"speichern" Drücken.
Siehe Screenshot:
[img] [/img]
Wenn kein Fehler erscheint, und in der Ausgabe steht: TageDazwischen : x und darunter eine Farbe
alles richtig gemacht. Super!
Dann habe ich mich um die Visualisierung gekümmert.
Die Grafik der Tonnen sind als .7z File in der Anlage. Die habe ich auch noch als Vektordatei in CorelDRAW. Wer sie haben möchte, gerne.
7z Datei entpacken.
Dann zuerst alle einzelnen Tonnen Icons unter Ressourcen-Bilder Hinzufügen (Button unten links).
Siehe Screenshot:
[img] [/img]
Weiter im nächsten Teil. Ich darf, glaube ich zumindest, nur 5 Anhänge hochladen.
to be continued ...