• Fraunhofer IMS: Vertrauenswürdige eingebettete KI mit RISC-V 16. Oktober 2019
    Auf Basis der freien Befehlssatzarchitektur RISC-V entwickelte das Fraunhofer Institut für Mikroelektronische Schaltungen und Systeme einen Prozessor, der eine vertrauenswürdige eingebettete Künstliche Intelligenz möglich macht. Eine eigene Kryptoeinheit sorgt dabei für Sicherheit.
Know-how für alle

FHEM Abfall Kalender

Abfall ist in FHEM ein Hilfsmodul mit dem bestimmte wiederkehrende Termine aus einem Kalender übernimmt.

Die Voraussetzungen

Ein Calendar Objekt muss zuvor definiert sein. Der benutzte Name muss in der Definition des Abfall-Objekts spezifiziert sein. Es können auch mehrere Calendar Objekte übergeben werden. Sonderzeichen werden nicht übernommen.

Die Installation

Mit folgendem Befehl kann das Modul direkt in den Standard FHEM Update Prozess eingeklinkt werden. update add https://raw.githubusercontent.com/uniqueck/fhem-abfall/master/controls_fhemabfall.txt

Um es nur zu installieren, kann auch einfach nur das Command update all https://raw.githubusercontent.com/uniqueck/fhem-abfall/master/controls_fhemabfall.txt

eingegeben werden.

Entwicklung auf GITHUB

update add https://raw.githubusercontent.com/uniqueck/fhem-abfall/develop/controls_fhemabfall.txt

bzw. update all https://raw.githubusercontent.com/uniqueck/fhem-abfall/develop/controls_fhemabfall.txt

Beispiele

define <Name> ABFALL <calendarname>,<calendarname2>,...

Erläuterung der Parameter im define: <calendarname> Name des Calendar Kalenders

Beispiel: define AbfallGoogleCalender Calendar ical url https://......define myABFALL ABFALL AbfallGoogleCalender

Die Werte aktualisieren sich abhängig vom notify der entsprechenden Calendar Instanz, welche im define angegeben wurde(n).

Attribut Werteliste Beschreibung Default Wert
calendarname_
praefix
0 und 1 soll der Kalendername als praefix dem Reading vorangestellt werden, sollte bei nur einem Kalender auf 0 gesetzt werden 1 – praefix wird vorangestellt, sofern mehrere Kalender angegeben wurden, ansonsten 0 – praefix wird nicht vorangestellt
abfall_clear_
reading_regex
regex zum Entfernen von Anteilen aus dem Termin, dieser wird vor dem Entfernen von Sonderzeichen aus den Namen der Termine angewandt.
disable 0 und 1 deaktiviert das Modul 0
weekday_mapp
ing
Mapping, wie die Readings der Tage angezeigt werden sollen, zum Beispiel So Mo Di Mi Do Fr Sa Sonntag Montag Dienstag Mittwoch Donnerstag Freitag Samstag
delimiter_text_
reading
Wenn zwei Abholungen an ein und demselben Tag existieren, wird dieses Trennzeichen genutzt, um die beiden (oder mehrere) Werte zu einem Text zu verbinden. Nur relevant für die Readings next_text und now_text und
delimiter_read
ing
wie attribute delimiter_text_reading, allerdings nur für die readings next und now
filter regex zum Filtern der Namen der Termine aus den Kalendern, so dass nur solche genutzt werden, welche diesem Filter entsprechen

Beispiel

Fallen die Leerungen zweier verschiedener Tonnen nicht auf den selben Tag, reicht es normalerweise, nur ein Symbol auf der Oberfläche zu platzieren und dieses dann dynamisch zu befüllen. In folgendem Beispiel werden folgende Anforderungen umgesetzt:

  • Anzeige unterschiedlicher Symbole bzw. Farben für Papiertonne, Restmülltonne, Biotonne und gelbe Säcke
  • Anzeige der verbleibenden Tage bis zur Leerung als „Warn“-Marker in Rot, aber nur, wenn die Leerung innerhalb der nächsten 2 Tage ist
  • Blinken des Symbols, wenn die nächste Leerung morgen ansteht
  • Rotation des Symbols, wenn die nächste Leerung noch am selben Tag ansteht. Nach einer bestimmten Uhrzeit (z.B. 9 Uhr morgens) soll dann auf die nächste Tonne geschaltet werden
  • Anzeige des Datums bzw. von „heute“ oder „morgen“ unter dem Symbol als Label

Zur Datumsanzeige wird eine kleine Hilfsfunktion in die 99_myUtils eingebaut.

sub datumHeuteMorgen($){
		my $compareDate = shift;
		my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
		$year += 1900; $mon += 1; 
		my $heute = sprintf('%02d.%02d.%04d', $mday, $mon, $year);
		($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(time+86400);
		$year += 1900; $mon += 1;
		my $morgen = sprintf('%02d.%02d.%04d', $mday, $mon, $year);
		return "heute" if $compareDate eq $heute;
		return "morgen" if $compareDate eq $morgen;
		return $compareDate;
}

Diese Funktion wird in den userReadings des Abfall-Moduls verwendet. Das Abfallmodul erzeugt eine Gruppe von Readings mit dem Namen now_*, wenn die Leerung am selben Tag ansteht, bzw. genau dann, wenn der Termin im zu Grunde liegenden Kalender gerade aktiv ist. In diesem Beispiel liegt dem Kalender-Modul ein Google-Kalender zu Grunde, bei dem die Termine immer von 0 Uhr bis 9 Uhr morgens eingetragen sind. Dadurch wird erreicht, dass die Anzeige nach 9 Uhr weiterspringt, weil dann die now-Readings verschwinden.

Folgende userReadings werden zum Abfallmodul hinzugefügt, welches in diesem Beispiel „myABFALL“ genannt ist:

attr myABFALL userReadings ftui_datum {ReadingsVal("myABFALL","now_text","") eq "" ? datumHeuteMorgen(ReadingsVal("myABFALL","next_date","")) : "heute";},ftui_next {ReadingsVal("myABFALL","now_text","") eq "" ? ReadingsVal("myABFALL","next","") : ReadingsVal("myABFALL","now","")."_0";;}

Für Jede Tonne werden hier drei Zustände unterschieden und einzeln in „data-get-on“, „data-on-colors“ und „data-icons“ zugeordnet. Daher haben diese Listen jeweils 12 Einträge.

Pushbullet Beispiel

Die morgigen Leerungen per Push um 19:30 mittels Pushbullet:

define dAbfallmorgen doif ([19:30] and [myABFALL:next_days] == 1) ( msg |Morgen wird [myABFALL:next_text] abgeholt)

attr dAbfallmorgen do always

Die heutigen Leerungen per Push um 07:00 mittels Pushbullet:

define dAbfallheute doif ([07:00] and [myABFALL:now_text] ne "") ( msg |Heute wird [myABFALL:now_text] abgeholt)

attr dAbfallheute do always

Print Friendly, PDF & Email