Beschreibung:
Hier habe ich für euch ein Beispiel eines Müllkalenders mit einem iCalEventDevice, der euch darüber informiert welche Mülltonne Morgen eventuell rausgestellt werden muss.
Vorraussetzung:
Paket | Version | |
---|---|---|
Smartha Miscellaneous | 0.1.0-37 |
Schwirigkeitsgrad:
Einfache Variante für nur einen Eintrag:
In dieser einfachen Variante bekommt ihr zu einem Kalendereintrag des Müllkalnders einen Tag vorher eine Nachrricht.
Inhalt der Funktions Node
// ID of iCall Peer
$peerId = 319;
// Laden der daten aus dem Müllkalender Device
$trashNextEventTimestamp = $hg->getValue($peerId, 2, "NEXT_EVENT");
if(date('d') == date('d', strtotime('-1 day', $trashNextEventTimestamp))) {
$trashType = $hg->getValue($peerId, 2, "NEXT_EVENT_TITLE");
// Auflistungs Zeilen jedes einzelne Event
$msg['payload'] = "Morgen wird " . $trashType . " geholt";
return $msg;
}
Hier wird nach dem Laden der Daten das Datum überprüft, um anschliessend die Message zu generieren.
Was Ihr ändern Müsst:
Die PeerId eures Kalender muss hier eingetragen werden.
// ID of iCall Peer
$peerId = 319;
Die PeerId findet Ihr in den Einstellungen des Gerätes.
Und natürlich könnt Ihr den Text der gesendet werden soll anpassen.
$msg['payload'] = "Morgen wird " . $trashType . " geholt";
Und danach könnt ihr die Messages Genießen.
Komplexe Variante:
Unter umständen kann es natürlich vorkommen, dass nicht nur ein Eintrag Vorhanden ist.
Zum Beispiel wenn Altpapier und Biotonne am gleichen Tag geleert werden.
Genauso kann es sein, dass Ihr Freitags wissen wollt, ob Montags der Müll abgeholt wird. In der Komplexen Variante sind beide Fälle enthalten.
Inhalt der Funktions Node
// Peer ID des Müllkalenders
$peerId = 319;
// Event Label nur für NodeBlue wenn Ihr weitere sotierungen vor habt :)
$messageEventLabel="Info Müllabfuhr";
// Erste Zeile für die Message.
// Auflistungs Zeilen weiter unten.
$messageEventTitle="Bitte folgende Mülltonnen heute rausstellen!\n";
// Laden der daten aus dem Müllkalender Device
$nextEventsArray = json_decode($hg->getValue($peerId, 5, "NEXT_EVENTS_LIST"),true);
$today = date('d.m.Y');
$todayWeekday = date("l", time());
$dayToCheckOffSet = 1;
// Erkennen ob Wochenende damit Freitags die Meldung für Montags schon erscheint
// (kann wenn nicht nötig auskommentiert werden)
if($todayWeekday == 'Friday'){
$dayToCheckOffSet = 3;
} else if($todayWeekday == 'Sunday'){
$dayToCheckOffSet = 0;
}else if($todayWeekday == 'Saturday'){
$dayToCheckOffSet = 0;
}
// Wochenedne erkennung ENDE
$dayToCheckTimestamp = strtotime($today . " + $dayToCheckOffSet day");
$dayToCheckFormatted = date('d.m.Y', $dayToCheckTimestamp);
// Durchlauf bei mehreren Events zur zusammenstellung der Message
$events = array();
foreach ($nextEventsArray as &$event) {
$unixTimestamp = strtotime($event["EVENT_DATE"]);
$lastEventDate = date('d.m.Y', $unixTimestamp);
$lastEventWeekDay = date("l", $unixTimestamp);
if($dayToCheckFormatted == $lastEventDate){
array_push($events, $event);
}
}
$msg['today'] = $today;
$msg['isWeekend'] = $dayToCheckOffSet == 0;
$msg['dayToCheck'] = $dayToCheckFormatted;
$msg['todayWeekday'] = $todayWeekday;
$msg['lastEventDate'] = $lastEventDate;
$msg['lastEventWeekDay'] = $lastEventWeekDay;
$msg['payload'] = $events;
$countEvents = count($events);
$message['event'] = $messageEventLabel;
$eventListText .= $messageEventTitle;
foreach ($events as &$event) {
// Auflistungs Zeilen jedes einzelne Event
$eventListText .= 'Am ' . $event['EVENT_DATE'] . ' wird ' . $event['EVENT_TITLE'] . ' abgeholt. ' . $event['EVENT_DESCRIPTION'];
$eventListText .= "\n";
}
if($countEvents > 0){
$message['payload'] = $eventListText;
output(0, $message);
}
Was Ihr ändern Müsst:
Natürlich wieder die PeerId eures Kalender’s eintragen. ( siehe oben )
// Peer ID des Müllkalenders
$peerId = 319;
Wenn Ihr wollt die erste Zeile der Message
// Erste Zeile für die Message.
// Auflistungs Zeilen weiter unten.
$messageEventTitle="Bitte folgende Mülltonnen heute rausstellen!\n";
Oder die Message der Einzelnenen Einträge
// Auflistungs Zeilen jedes einzelne Event
$eventListText .= 'Am ' . $event['EVENT_DATE'] . ' wird ' . $event['EVENT_TITLE'] . ' abgeholt. ' . $event['EVENT_DESCRIPTION'];
Und dann heißt es wieder Messages Genießen.
Viel Spaß dabei
Michael
Hier noch der Flow als Json:
Müllkalender_einfach.json (2,1 KB)
MüllkalenderKomplex.json (4,6 KB)