Müllabfuhr — ReadMe
ÜBERSICHT — FREISCHALTUNG — SCREENSHOTS
1. Funktionsumfang
Dieses Modul ermöglicht die Offline-Eingabe (via WebFront, Modul-Instanz, Skript) von Terminen wann die Müllabfuhr kommt. Anhand
dieser Termine werden dann mehrere Variablen mit Inhalten gefüllt. Ihr bekommt dann z.B. angezeigt, in wie vielen Tagen das nächste
Mal die schwarze Tonne geleert wird. Zusätzlich kann man sich per Push über eine anstehende Leerung benachrichtigen lassen,
Sprachausgaben (sofern passende Hardware vorhanden) über eine Leerung am nächsten Tag durchführen, …
Es werden nur die Müllarten in Variablen angelegt und angezeigt die in der Modul-Instanz ausgefüllt sind. Ihr könnt also alle Müllsorten
eintragen oder auch nur 3 Müllsorten. Sind die Felder "Name" und "Art" von z.B. Müll3 gefüllt, dann werden die Variablen erstellt.
ACHTUNG — Werden die Felder geleert, dann werden die Variablen, falls vorhanden, gelöscht und die Termine müssen neu eingetragen werden!
Sollten eure Mülltonnen in bestimmten Intervallen geleert werden (z.B. jeden Mittwoch einer ungeraden Woche, oder jeden 3. Dienstag, …), dann könnt ihr in eurem GitLab Account, im Müllabfuhr-"Ordner" ein Skript finden (Berechnungsskript_fuer_Abholtermine_mit_festem_Intervall.php), welches euch automatisch die entsprechenden Tage berechnet, diese ausgibt und auf Wunsch auch direkt in das Müllabfuhr-Modul überträgt.
Beispiel für die Namensgebung der Variablen:
Die Variablen werden mit dem Text in "Name" angelegt. Möchtet ihr also "Restmüll" in der Variable stehen haben, dann muss das bei "Name" eingetragen werden. Hättet ihr lieber "schwarze Tonne" in der Variable stehen, dann tragt das bei "Name" ein und "Restmüll" bei "Art". Für den Benachrichtigungstext habt ihr beides zur Verfügung!
Beispiel für die Namensgebung der Variablen:
In der Modul-Instanz könnt ihr folgende Einstellungen vornehmen:
- Müllname, Müllart (6 Mal vorhanden)
- Mülltermine (6 Mal vorhanden) — müssen in diesem Format eingetragen werden: 01.01.2017|10.01.2017|23.01.2017|…
- Automatisches Entfernen vergangener Abhol-Termine de/aktivieren
- Benachrichtigungseinstellungen (siehe weiter unten im Abschnitt "Benachrichtigung")
- Uhrzeit für Benachrichtigung bei Müll-Leerung Heute (2 verschiedene Uhrzeiten möglich)
- Uhrzeit für Benachrichtigung bei Müll-Leerung Morgen (2 verschiedene Uhrzeiten möglich)
- Allgemein De/aktivierung der Benachrichtung per CheckBox
- Vorlagen für Benachrichtigungstexte inkl. Variablen (siehe weiter unten im Abschnitt "Benachrichtigung")
- Boolean Variable zum Steuern der Benachrichtigung (false = Benachrichtung inaktiv // true = Benachrichtung aktiv)
- WebFront Instanz für Push-Benachrichtigungen (siehe weiter unten im Abschnitt "Benachrichtigung")
- SMTP Instanz für Email-Benachrichtigungen (siehe weiter unten im Abschnitt "Benachrichtigung")
- Eigenes Skript für Skript-Benachrichtigung (siehe weiter unten im Abschnitt "Benachrichtigung")
Benachrichtigung:
Die Art der Benachrichtigung kann nur allgemein gewählt werden, nicht für jede Müllsorte einzeln! Aber man kann für jede Müllsorte einzeln
einstellen, ob eine Benachrichtigung erfolgen soll, oder nicht. Je nachdem, ob eine Benachrichtigung per EMail/Push/Skript gewünscht ist,
muss noch die entsprechende Instanz ausgewählt und auf aktiv gesetzt werden (Haken setzen). Eine Benachrichtigung erfolgt über den/die
eingestellten Wege zur vom Benutzer eingestellten Uhrzeit. Außerdem könnt ihr eine Boolean-Variable definieren und damit die Benachrichtigungen
steuern (Bool-Variable TRUE = Benachrichtigung, FALSE = keine Benachrichtigung).
Je Müllsorte wird eine Benachrichtigung gesendet! Bei z.B. 3 Leerungen am nächsten Tag kommen 3 Benachrichtigungen!
Im Benachrichtigungstext können die folgenden Variablen verwenden werden. Diese werden beim Versand einer Benachrichtigung automatisch übersetzt:
§MUELLART = String der in der Modul-Instanz bei "Art Müll X" eingetragen ist — z.B. "schwarze Tonne"
§MUELLNAME = String der in der Modul-Instanz bei "Name Müll X" eingetragen ist — z.B. "Restmüll"
§MUELLDATUM = String mit Datum, wann der entsprechende Müll das nächste Mal geleert wird — z.B. "01.10.2016"
§MUELLTAG = String des Wochentages, an dem der entsprechende Müll das nächste Mal geleert wird — z.B. "Freitag"
§MUELLINTAGEN = Integer in wie vielen Tagen der entsprechende Müll das nächste Mal geleert wird — z.B. 5
Ihr könnt auch ein eigenes Skript festlegen, welches zur Benachrichtigung verwendet wird. Dieses Skript ausgeführt, wenn eine Leerung ansteht.
Über dieses Skript kann man dann Benachrichtigungen über Push, Sonos, Enigma2-Nachricht, SMS, … einrichten.
Für eigene Aktionen stehen einem im ausgewählten Skript die folgenden Variablen zur Verfügung:
$_IPS["MUELL_Art"] (String der in der Modul-Instanz bei "Art Müll X" eingetragen ist — z.B. "schwarze Tonne")
$_IPS["MUELL_Name"] (String der in der Modul-Instanz bei "Name Müll X" eingetragen ist — z.B. "Restmüll")
$_IPS["MUELL_Datum"] (Datum wann der entsprechende Müll abgeholt wird — z.B. "01.10.2016")
$_IPS["MUELL_Tag"] (Tag wann der entsprechende Müll abgeholt wird — z.B. "Freitag")
$_IPS["MUELL_InTagen"] (In wie vielen Tagen der entsprechende Müll abgeholt wird — z.B. 5)
$_IPS["MUELL_Text"] (Der komplette Benachrichtigungstext inkl. "Übersetzung" der Variablen)
Beispiel-Script:
<?
$Enigma2BYinstanzID = 12345; // InstanzID des Enigma2BY-Modul eintragen (muss natürlich installiert und eingerichtet sein)
IPS_LogMessage("Müllabfuhr", $_IPS["MUELL_Text"]); // Schreibt den Text ins IPS-Log (zu sehen im Meldungen-Fenster in der IPS-Console)
Enigma2BY_SendMsg($Enigma2BYinstanzID, $_IPS["MUELL_Text"], 3, 10); // Zeigt 10 Sekunden lang eine Alarm-Nachricht über einen Enigma2-Receiver an
?>
2. Systemanforderungen
- IP-Symcon ab Version 4.x
3. Installation
Über die Kern-Instanz "Module Control" folgende URL hinzufügen:
https://GITLAB-BENUTZERNAME:GITLAB-PASSWORT@gitlab.com/BY-IPS-Module/Muellabfuhr.git
Die neue Instanz findet ihr dort, wo ihr sie angelegt habt.
4. Befehlsreferenz
$result = MUELL_Update($InstanzID);
Liest die eingetragenen Müllsorten aus und speichert die Berechnungen in die entsprechenden Variablen.
In $result stehen alle in der Modul-Instanz eingetragenen Müllsorten mit allen verfügbaren Informationen
zu anstehenden Leerungen.
MUELL_BenachrichtigungHeuteMorgen($InstanzID, string $HeuteMorgen);
Für $HeuteMorgen sind die Werte "Heute" und "Morgen" gültig. Je nachdem was an die Funktion übergeben wird,
wird eine entsprechende Benachrichtigung über mögliche anstehende Leerungen für Heute/Morgen gesendet. Steht
keine Leerung Heute/Morgen an, dann erfolgt auch keine Benachrichtigung.
MUELL_BenachrichtigungInTagen($InstanzID, $Muellsorte);
Für $Muellsorte kann man an die Funktion entweder den bei Müll-Art oder Müll-Name eingetragenen String
(z.B. "Restmüll" oder "schwarze Tonne") übermitteln. Ebenfalls kann man die Müll-Nummer (z.B. 1) verwenden.
Man erhält dann eine Benachrichtigung (über die eingestellten Wege), in wie vielen Tagen die entsprechende
Müllsorte geleert wird.
$result = MUELL_AbfrageMuellsorte($InstanzID, $Muellsorte);
Für $Muellsorte kann man an die Funktion entweder den bei Müll-Art oder Müll-Name eingetragenen String
(z.B. "Restmüll" oder "schwarze Tonne") übermitteln. Ebenfalls kann man die Müll-Nummer (z.B. 1)
verwenden.
In $result stehen dann alle verfügbaren Informationen zur entsprechenden Müllsorte.
MUELL_TerminEintragungMuellsorte($InstanzID, $Muellsorte, string $Termine);
Mit dieser Funktion könnt ihr über ein eigenes Skript eure Müll-Termine auslesen (aus einem Kalender, einer
Internetseite oder woher auch immer) und mit dieser Funktion einfach in das Müllabfuhr-Modul eintragen.
Für $Muellsorte kann man an die Funktion entweder den bei Müll-Art oder Müll-Name eingetragenen String
(z.B. "Restmüll" oder "schwarze Tonne") übermitteln. Ebenfalls kann man die Müll-Nummer (z.B. 1) verwenden.
In $Termine müssen die Leerungs-Termine für die entsprechende Müllsorte im folgenden Format eingetragen
werden: "01.01.2016|02.02.2016|03.03.2016" (TagTag.MonatMonat.JahrJahrJahrJahr|TagTag.MonatMonat.JahrJahrJahrJahr|…)
ACHTUNG — Eventuell bereits eingetragene Termine dieser Müllsorte werden komplett überschrieben!
$result = MUELL_VergangeneTermineEntfernen($InstanzID);
Durch Aufruf dieser Funktion können manuell die bereits vergangenen Termine für Müllleerungen/-abholungen
aus der Liste entfernt werden. Alternativ kann in der Modul-Instanz ein Haken gesetzt werden, dann
wird jede Nacht automatisch aufgeräumt.