Willkommen auf unserer neuen Forenplattform für das Bus-Profi Forum

Neue Felder für die persönlichen Daten
Man kann jetzt seine öffentlich einsehbare Daten genau bestimmen. Details findet ihr in in diesem Beitrag.

Durch die neue Forensoftware und die Portierung der Daten konnten die Passwörter aus dem alten Forum nicht übernommen werden, bitte lassen Sie sich ein neues Passwort über die Passwort vergessen Funktion zusenden. Sollte es zu Problemen kommen kontaktieren Sie das Bus-Profi Team per E-Mail.

Anleitung für Müllkalender mit Erinnerung auf IPhone

Hard- und Softwarefragen rund Domiq-Module fürs LCN-System

Themenersteller
Maxi
Mitglied
Mitglied
Beiträge: 28
Registriert: Mi 31. Jul 2013, 11:56

#1 Anleitung für Müllkalender mit Erinnerung auf IPhone

Beitragvon Maxi » Mi 17. Mai 2017, 09:15

Hallo,

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]
Visu.png
[/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]
Excel.png
[/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]
Logic.png
[/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]
Ressourcen.png
[/img]

Weiter im nächsten Teil. Ich darf, glaube ich zumindest, nur 5 Anhänge hochladen.

to be continued ...
Dateianhänge
Logic.png
Ressourcen.png
MüllIcons.7z
(934 Bytes) 56-mal heruntergeladen
Excel.png
Visu.png
Zuletzt geändert von Maxi am Fr 19. Mai 2017, 14:27, insgesamt 3-mal geändert.


Themenersteller
Maxi
Mitglied
Mitglied
Beiträge: 28
Registriert: Mi 31. Jul 2013, 11:56

#2 Re: Müllkalender mit Erinnerung

Beitragvon Maxi » Mi 17. Mai 2017, 09:46

zweiter Teil.


Dann zum "Display" wechseln.
Erst ein "Bild" von oben in die Visu gezogen, und als "src" den Wert "Blaue.png" ausgewählt (sollte in der Drop Down Liste stehen) Daneben dann ein "Text"-Feld. Bei Kanal in das Textfeld den Wert der Variablen, die ich im Code deklariert habe: hier für die Blaue Tonne: "VAR.tageBlau"
Siehe Screenshot:

[img]
TageText.png
[/img]

Das gleiche mit den restlichen Tonnen machen.
Jetzt sollten schon Zahlen neben den Tonnen zu sehen sein. (Hoffentlich)

Jetzt muss man noch unter "Timer" das Programm "tonnenTage()" aus der Logic ausführen, damit die Zahlen in der Visu aktualisiert werden. Das mach ich mit einem Timer, der jeden Tag um 1:11 Uhr ausgeführt wird.
Das geht wie folgt:
Links unten auf "Timer Hinzufügen" klicken. Neuen Timer auswälen und die Felder ausfüllen:
Beschreibung: irgendein Text. Bei mir: TonnenPRG_Ausführen
Stunde, Minute, Sekunde jeweils eine 1 und dann unter Wochentag: 1,2,3,4,5,6,7 für alle Tage eingeben.

Siehe Screenshot:

[img]
TimerTäglich.png
[/img]

Unter Aktionen jetzt noch eingaben, was gemacht werden soll.
"Befehl hinzufügen ..." klicken.
Name: C.LOGIC
Wert: tonnenTage()
(Klammern nicht vergessen)
Siehe Screenshot:
[img]
AktionTimerPRG.png
[/img]

Fertig! Das war es ...

Ob das der beste und einfachste Weg ist, den Abfallkalender zu integrieren weiß ich nicht.
Ob der Code kürzer oder einfacher geht weiß ich auch nicht.
Es funktioniert und es gibt viele Wege nach Rom. :)

Wer jetzt noch eine Erinnerung auf sein Handy oder worauf auch immer haben möchte, das geht so:

Unter "Timer" "Timer hinzufügen.
Beschreibung: Blaue Tonne Benachrichtigung
Stunde: 7, 21 ( Zwei Erinnerungen, eine um 7 Uhr und eine um 21 Uhr am Vortag)
Wochentag: 1,2,3,4,5,6,7
Als Bedingung muss man eingeben: VAR.tageBlau==1

Unter Aktion "Befehl hinzufügen..."
Name: C.REMOTE.notify
Wert: einen Wunschtext. Bei mir: Blaue Tonne raus (geht auch netter :P )
siehe Screenshot
[img]
notify.png
[/img]

Das war es.

Ich hoffe es gefällt euch. Ich bin jedenfalls begeistert.

Grüße
Ralf.
Dateianhänge
notify.png
AktionTimerPRG.png
TimerTäglich.png
TageText.png


HJB
Neues Mitglied
Neues Mitglied
Beiträge: 8
Registriert: Mi 24. Aug 2016, 00:40

#3 Re: Anleitung für Müllkalender mit Erinnerung auf IPhone

Beitragvon HJB » Mo 12. Jun 2017, 10:49

Hallo Maxi
Deine Idee mit dem Müllkalender fide ich gut. :thumbup: Da ich auf dem Gebiet der Domiq-Base noch recht schwach bin,
werde ich es auch demnächst mal versuchen. Deshalb auch schon mal vielen Dank für die ausfürliche Anleitung,
denn durch solche Beispiele, kann man (ich) schneller was lernen.
Mein vordringliches Problem ist aber die Visualisierung von offenen Fenstern pro Etage. In deiner VISU habe ich
gesehen, daß du dieses Problem gelöst hast. Kannst du diese Herangehensweise auch dokumentieren?
Hast du für deine Jalousien auch eine "Zentral-Taste" in deiner VISU?
MfG Jürgen


DOMIQ-Support
Fleißiges Mitglied
Fleißiges Mitglied
Beiträge: 289
Registriert: Fr 7. Jun 2013, 09:59
Danksagung erhalten: 1 Mal
Kontaktdaten:

#4 Re: Anleitung für Müllkalender mit Erinnerung auf IPhone

Beitragvon DOMIQ-Support » Mo 19. Jun 2017, 08:58

:thumbup:


Zurück zu „Domiq-Module - DOMIQ Sp. z o.o.“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 7 Gäste