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 ...


 
  )
 )
 Da ich auf dem Gebiet der Domiq-Base noch recht schwach bin,
 Da ich auf dem Gebiet der Domiq-Base noch recht schwach bin,