Allgemein

openHAB XI: Müllkalender per ical einbinden – OH 3.0

Veröffentlicht am
Geschätzte Lesezeit: 8 Minuten.

Mein Haus soll mich erinnern, wann ich Mülltonnen herausrollen soll. In einem vorigen Artikel hatte ich meine Bemühungen ausführlich dokumentiert, wie ich dieses Szenario für openHAB 2 implementiert hatte. Das hat auch funktioniert – und dann habe ich beschlossen, auf openHAB 3 zu aktualisieren. Seitdem geht nichts mehr, denn das zugrunde liegende Binding binding-caldav-personal1 (1.14.0) existiert nicht mehr. Also muss ich einmal von vorne beginnen.

Tag 1: Langenfeld ist doof

Bisher hatte die Stadt Langenfeld einen schönen ics-Kalender angeboten, in dem sämtliche Abfall-Abholungs-Termine vorhanden waren. Leider gibt es das nicht mehr, ich muss also als erstes sämtliche Termine händisch in meinen Kalender eintragen. Das ist doof, aber letztlich nur Fleißarbeit.

Kommen wir zu openHAB.

Es gibt ein neues Binding: iCalendar (3.0.1). Und es gibt auch einen kleinen Guide im openHAb-Forum. Ich installiere das Binding. Anschließend erzeuge ich ein neues Thing, indem ich Things > + wähle. Ich wähle das iCalendar-Binding, und den Typ Kalender (mit blauem Bridge-Label). So weit, so einfach.

Nun folgt die Konfiguration des Abfallkalenders. Ich vergebe das Label „Abfallkalender“. Außerdem gibt es einige Felder zu füllen. Der folgende Screenshot zeigt die bei mir funktionierende Lösung, aber es hat einige Versuche benötigt, bis ich das alles herausgefunden habe.

Grundsätzlich liegt mein Kalender in einer ownCloud-Instanz, im zugehörigen Kalender-Modul. Daher kann ich Benutzername und Passwort leicht korrekt ausfüllen – dabei hilft mir mein Passwortmanager1Du benutzt keinen Passwortmanager? Dann höre jetzt sofort auf, diesen Artikel zu lesen, und installiere dir einen Passwortmanager. Es ist simpel, und es erhöht deine Sicherheit im Internet extrem. Warte nicht mehr länger, mache dies genau jetzt. Los!. Die maximale Größe lasse ich bei 16 Mebibytes, das sollte schon passen. Das sind ungefähr 16 MB, und meine Kalenderdateien sind viel kleiner. Das Aktualisierungsintervall werde ich während des folgenden Testens immer mal wieder verändern, aber im Endeffekt ist 60 Minuten ein guter Wert. Das ginge sogar noch seltener, denn mein Abfallkalender ändert sich ja nicht regelmäßig.

So. Kommen wir zur Herausforderung, der URL. Und, oh je, das war wirklich schwierig. Denn hier versuche ich zwei Dinge zu verheiraten, die eigentlich nicht zusammenpassen: Ein openHAB-Binding, das ical-Dateien haben will, und eine ownCloud-Kalender-Instan, die WebDAV kommunizieren möchte. ical und WebDAV sind aber zwei völlig verschiedene Dinge, weshalb mein erster Versuch, die Adresse einzugeben, kollossal scheiterte. Analog zum letzten Mal gab ich nämlich folgende Adresse ein:

https://***/remote.php/dav/calendars/***/testkalender/

Der Status des Kalenders blieb offline, und in den Logs sah ich folgendes:

 [WARN ] [g.icalendar.internal.handler.PullJob] - Not able to read downloaded iCal. Validation failed or file not readable. Error message is: No calendar was parsed.

Ich muss ganz ehrlich sagen, ich habe hier viele Dinge ausprobiert, die ich mir nicht alle merken konnte. Irgendwann kam mal die Fehlermeldung, dass der Download abgebrochen wurde, weil die Downloadzeit zu lang war, oder so etwas in der Art. Ich kann meine Versuche nicht mehr alle nachvollziehen. Daher springe ich direkt zur Lösung des Problems.

Also, die Lösung. ownCloud kann ical-Dateien exportieren und zum Download anbieten. In meiner ownCloud-Instanz klicke ich dazu auf drei Punkte rechts neben des Kalenders, und klicke dann auf „Herunterladen“. Anschließend wird mir der Download einer ics-Datei mit dem heutigen Datum angeboten, aber diese hilft mir nicht, denn ich möchte ja, dass es immer aktualisiert wird. In der Adresszeile meines Browsers erscheint aber kurz folgende Adresse:

https://***/remote.php/dav/calendars/***/testkalender?export

Und das ist die Lösung. Das ermöglicht den Direktzugriff von openHAB auf das Exportmodul von ownCloud. Damit kann openHAB nun eine ical-Datei herunterladen, und diese verarbeiten. Natürlich hat auch das nicht auf Anhieb funktioniert – irgendwie hatte mein openHAB Schluckauf oder so. Die Anzeige des Kalenderstatus wollte einfach nur „offline“ sein. Aber in diesem Falle hat es einfach geholfen, das System ein paar Tage in Ruhe zu lassen, denn beim nächsten Nachsehen war der Status plötzlich grün.

Ich weiß, dass das albern klingt, aber ich habe wirklich nichts mehr geändert. openHAB hat sich selbst repariert. Vielleicht war irgendwo etwas im Cache, oder so, aber jetzt funktioniert es.

Tag 2: Die Regeln

Jetzt habe ich viel über die Einbindung des Things geschrieben, und das war auch definitiv die größte Herausforderung. Aber eigentlich möchte ich ja Nachrichten bekommen, wenn ich die Mülltonnen herausrollen muss. Dazu brauche ich eine Regel. Und Items. Also schaue ich mir die Channels des Abfallkalenders mal etwas genauer an.

Man sieht an dem Screenshot, dass ich die Tendenz dazu habe, einfach alle Channels erstmal mit Items zu verknüpfen, die irgendwie sinnvoll klingen, und danach zu überlegen, was ich wirklich brauche.

Der Trigger für meine Regel wird der Switch „Präsenz eines aktuellen Eintrags“. Den verknüpfe ich mit dem Item Abfallkalender_PrasenzeinesaktuellenEintrags. Dieser Switch schaltet nämlich von OFF zu ON, sobald ein Event des Kalenders beginnt. Wenn also mein Kalender sagt, dass ich heute um 07:00 die Papiermülltonnen herausrollen soll, dann schaltet dieser Switch genau um 07:00 Uhr von OFF auf ON. Und genau das triggert dann meine Regel.

Außerdem brauche ich noch den Titel des aktuellen Eintrages, denn ich will ja wissen, welche Mülltonne ich herausrollen soll. Ich verlinke also den entsprechenden Channel mit dem Item Abfallkalender_TiteldesaktuellenEintrags. Und dann kann ich auch schon die Regel überarbeiten, die ich bereits das letzte Mal benutzt habe.

zur Erinnerung, so sah die Regel in openHAB 2 mit dem calDAV-Binding aus:

rule "Abfallkalender"
when
   Item CalDav_Muelltonne changed
then
   if (CalDav_Muelltonne.state != UNDEF) {
      sendNotification("<E-Mail-Adresse>", "Abholung heute: " + CalDav_Muelltonne.state) 
   }
end

Eigentlich muss ich nicht viel ändern. CalDav_Muelltonne wird zu Abfallkalender_PrasenzeinesaktuellenEintrags. Die Statuskontrolle != UNDEF ändere ich zu == ON. Und ganz zum Schluss brauche ich noch das Item Abfallkalender_TiteldesaktuellenEintrags. Und schon sieht es so aus:

rule "Abfallkalender"
when
    Item Abfallkalender_PrasenzeinesaktuellenEintrags changed
then
    if (Abfallkalender_PrasenzeinesaktuellenEintrags.state == ON) {
        sendNotification("<E-Mail-Adresse>", "Abholung heute: " + Abfallkalender_TiteldesaktuellenEintrags.state) 
    }
end

Nun folgt der Wahnsinn: Es funktioniert. Einfach so. Ohne dass ich noch etwas anpassen oder ändern müsste. Es funktioniert!

Allgemein

Soziale Folgen des Klimawandels – Die Kinderkrise

Veröffentlicht am
Geschätzte Lesezeit: 2 Minuten.

In der taz vom 01. Februar 2021 findet sich ein Artikel zum Thema Klimakatastrophe und Familienplanung. Darin findet sich auch eine Aussage von mir, welches ich hier in der ungekürzten Variante dokumentieren möchte. Der gesamte Artikel ist absolut lesenswert, und auch die Perspektiven der anderen Teilnehmer sind sehr interessant. Hier ist meine Aussage:

Mir ist bewusst, dass die Entscheidung, Kinder zu bekommen und somit diesem Planeten weitere Menschen aufzuzwingen, die klimaschädlichste Entscheidung meines Lebens ist. Trotzdem habe ich einen zweijährigen Sohn. Wenn wir das Abwenden der Klimakatastrophe als Voraussetzung für das Überleben unserer Spezies betrachten, dann müssen wir auch dafür sorgen, dass genug Kinder existieren, damit unsere Spezies überleben kann.

Stattdessen motiviert mich mein Sohn, die Klimakatastrophe zu bekämpfen. Die meisten Klimamodelle des IPCC enden im Jahr 2100, viele davon enden katastrophal. 2100 wäre mein Sohn 82 Jahre alt, es ist durchaus realistisch, dass er dieses Alter erreicht. Seine Kinder, meine Enkel, wären dann ca. 50, also mitten im Leben, wenn die Szenarien enden. Selbst falls ich die Klimakatastrophe nicht selbst miterleben sollte, mein Sohn und meine zukünftigen Enkel werden sie erleben. Ich schulde ihnen, dies zu verhindern und den Planeten jetzt zu schützen.

Der ganze Artikel findet sich hier: https://taz.de/Soziale-Folgen-des-Klimawandels/!5744802/.

Allgemein

openHAB VIII: Update auf openHAB 3.0

Veröffentlicht am
This entry is part 8 of 11 in the series openHAB
Geschätzte Lesezeit: 7 Minuten.

Es gibt eine neue Version, und ich möchte auf openHAB 3 aktualisieren. Vielleicht lösen sich so die Probleme mit homematic von selbst.

Also gut. Ich folge dieser Anleitung. Die sieht nämlich sehr leicht aus. Spoiler: Leider wird sich herausstellen, dass es nicht ganz so einfach ist.

Tag 1: Erst einmal alles kaputtmachen

Tolle Überschrift, oder?

Die folgenden Schritte werden alle per SSH in der Konsole durchgeführt. Zuerst mache ich ein Backup, mit diesem Befehl:

sudo $OPENHAB_RUNTIME/bin/backup

Dann öffne ich das openHAB-Konfigurations-Tool:

sudo openhabian-config

Mich begrüßt direkt diese Meldung:
2021-01-02-update-1

Wenn das Update empfohlen ist, dann mache ich das doch direkt. Ich wähle also Continue, und das System rattert vor sich hin.

Nach ein paar Augenblicken kommt der nächste Screen:
2021-01-02-update-2

Öh, ja, ich möchte openHAB 3. Also wähle ich mit dem Cursor den unteren Branch, und drücke Enter.

Es folgt das Hauptmenü. Ich wähle den zweiten Menüpunkt Upgrade System.
2021-01-02-update-3

Das System arbeitet jetzt. Nach einer Weile erhalte ich folgenden Dialog:
2021-01-02-update-4

Öh, ja, also wenn ich Java 11 brauche, dann soll das bitte auch installiert werden. Continue.

Anschließend geht es zurück in das hauptmenü. Hier wähle ich nun Punkt 3, Install openHAB. In der beschreibung steht ja, dass hier openHAB 3 installiert wird, also sollte das passen.
2021-01-02-update-5

Als nächstes werde ich gefragt, ob ich ein Backup anlegen möchte. Das habe ich zwar schon vorhin manuell gemacht, aber es schadet ja nicht. Continue.
2021-01-02-update-6

Und eine Warnmeldung, dass das Update zu openHAB 3 nicht rückgängig zu machen ist. Jaja, Continue.
2021-01-02-update-7

Jetzt rödelt das System. Nach einer Weile erhalte ich eine Erfolgsmeldung:
2021-01-02-update-10

Und direkt danach folgt eine Fehlermeldung:
2021-01-02-update-8

Das ist seltsam. Mal sehen, ob es funktioniert hat. Ich gebe http://openhab/8080 in den Browser ein.

2021-01-02-update-8-2

Okay, da ist also etwas kaputt. Ein Reboot (sudo reboot) hilft nichts. Eine schnelle Google-Recherche führt mich zu dieser Diskussion. Hier wird der Fehler genau beschrieben, aber es wird gesagt, dass das ab openHAB 2.5.1 behoben sein sollte. Ich habe doch openHAB 3 installiert?

Ich gehe also erneut per SSH auf den RasPi. Der Begrüßungsdialog von openhabian sagt aber immernoch, dass ich openHAB 2.5 installiert hätte. Seltsam. Da hat wohl etwas nicht geklappt.

Also nochmal.

sudo openhabian-config

Diesman wähle ich Menüpunkt 1, Select Branch. Und siehe da, ich habe angeblich noch den stable-Branch ausgewählt. Ich muss das Sternchen auf openHAB3 verschieben, und erst dann Enter drücken. Aber wie geht das? Keine Ahnung. Ich drücke wild auf meiner Tastatur herum, und irgendwann ist das Sternchen an der richtigen Stelle. Ich glaube, die Leertaste war richtig, aber ich bin mir nicht sicher. Egal.

2021-01-02-update-9

Weiter geht es. Punkt 3, Install openHAB.
2021-01-02-update-10

Diesmal erhalte ich nur die Erfolgsmeldung, und keine Fehlermeldung. Und der Screen per SSH sieht so aus:

2021-01-02-update-11

Das ist doch super! Erstmal rebooten (sudo reboot), und dann auf zu http://openhab/8080:
2021-01-02-update-8-2

Verdammt.

Okay, die obige Lösung sagte, man müsse openHAB einfach nur löschen und neu installieren. Das würde ich gerne vermeiden, vielleicht geht es auch anders.

Eine andere Lösung sagt, man solle den Cache leeren.

openhab-cli stop
openhab-cli clean-cache
openhab-cli start

Und nun geht es erneut zu http://openhab/8080: Die Website ist nicht erreichbar. ERR_CONNECTION_REFUSED. Verdammt.

Tag 2: Reparieren

Sieh mal einer an, jemand anderes hat den gleichen Fehler wie ich. Die Lösung: Zwinge das System, Java 11 zu nutzen. Nur wie das geht, steht hier leider nicht.

Besser gesagt, da steht, derjenige habe es über das openHAB-Konfigurations-Tool geschafft:

sudo openhabian-config

Okay, ich wähle erstmal Menüpunkt 10, Apply Improvements > Packages. Kann ja nicht schaden. Der Installer läuft erfolgreich durch – aber das war nicht, was ich gesucht habe.

Menüpunkt 40, openHAB Related, listet als Punkt 46 Zulu Java 11 auf.
2021-01-02-update-12

Super, das will ich installieren, in der 32-Bit-Variante. Der Installer läuft erneut erfolgreich durch:
2021-01-02-update-13

Okay, Reboot.

Und siehe da, es funktioniert! Ich werde in das initiale Setup von openHAB 3 geleitet:
2021-01-02-update-14

2021-01-02-update-15

Ich vergebe einen Admin-Account, lege ein paar Daten und meinen Standort fest, und komme in die neutrale Übersichtsseite. Super!

2021-01-02-update-16

Jetzt muss ich das „nur noch“ konfigurieren.

Etwas rumspielen zeigt mir, dass meine Things, Channels und Rules übernommen wurden. Meine Sitemap auch, aber irgendwie funktioniert diese (noch) nicht. Anscheinend gab es da Änderungen. Glücklicherweise sind die wichtigsten Änderungen dokumentiert, insbesondere der Abschnitt über erforderliche manuelle Anpassungen ist sehr interessant. Besonders relevant für mich: Das Gardena-Binding ist komplett neu geschrieben worden. Das muss ich mir ansehen.

Außerdem wird das Fritzbox-064-Binding nicht mehr unterstützt. Vielen Dank an Christian für den Hinweis! Auch hier muss ich eine Lösung finden, die ich hier dokumentieren werde.

Allgemein

Warum du keine Gesundheitstipps von Donald Trump befolgen solltest

Veröffentlicht am
Geschätzte Lesezeit: 3 Minuten.

Ich gebe zu, dass der Titel ungewohnt reißerisch ist. Nichtsdestotrotz folgt hier eine Luste von Gründen, warum du keine Gesundheitstipps von Donald Trump, derzeitiger Präsident der USA, annehmen und befolgen solltest.

  1. Trump glaubt, Sport sei tödlich. Der menschliche Körper habe eine begrenzte Menge Energie, so wie eine Batterie. Wäre diese leer, sterbe man. Sport führe zu erhöhten Energieverbrauch, und daher sterbe man früher.1Donald Trump thinks exercise will kill you, Vox, 2017-05-09.
  2. Trump war überzeugter Impfgegner. Er glaubte, Ärzte würden Kinder mit Impfstoffen vollpumpen, die Autismus erzeugen würden.2Healthy young child goes to doctor, gets pumped with massive shot of many vaccines, doesn’t feel good and changes – AUTISM. Many such cases!, Twitter, Donald J. Trump, 2014-05-28.
  3. Trump glaubt, die Geräusche von Windturbinen würden Krebs erzeugen.3Trump claims wind turbine ’noise causes cancer‘, The Hill, 2019-03-04.
  4. Trump machte sich über Verletzungen von Profisportlern lustig. Bei einer Wahlkampfveranstaltung sagte er über den Umgang der NFL mit Gehirnerschütterungen: „Oh nein, ich habe eine kleine Beule am Kopf. Ich falle den Rest der Saison aus.“4Video: Donald Trump mocks NFL’s handling of brain injuries, Sports Illustrated, 2016-10-12.
  5. Trump glaubt nicht, dass Asbest gesundheitsschädlich sei. Stattdessen sei es eine Verschwörung der Mafia, die Geld mit Asbest-Entsorgung verdienen würde.5DONALD TRUMP CALLED ASBESTOS POISONING A MOB-LED CONSPIRACY, NOW HIS EPA WON’T EVALUATE ASBESTOS ALREADY IN HOMES, Newsweek, 2018-06-07.
  6. Bei einer Pressekonferenz behauptete Trump fälschlicherweise, dass die Arzneimittelbehörde der Vereinigten Staaten, FDA, das Malariamedikament Chloroquin für die Behandlung von COVID-19 zugelassen habe.6AP FACT CHECK: Trump falsely claims drug approval for virus, Associated Press, 2020-03-19. In der Folge starb ein Mann aus den USA, der das Fischtankreinigungsmittel Chloroquin-Phosphat einnahm.7Chloroquine Phosphate Intended for Fish: FDA Letter to Stakeholders – Do Not Use as Treatment for COVID-19 in Humans, FDA.
  7. Trump bezweifelt, dass irgendjemand wüsste, worum es sich bei SARS-CoV-2, dem Erreger von COVID-19, handele.8Trump on Coronavirus: „I’m Not Sure Anybody Even Knows What It Is“; „You Can Call It A Germ, You Can Call It A Flu“, RealClear Politics, 2020-03-27. Am Tag dieser Aussage gab es in den USA erstmals mehr Infizierte an COVID-19 als in China.9US coronavirus cases reach more than 101,000 as reported deaths hit new daily high, CNN, 2019-03-27.

Bitte sei vorsichtig, und höre auf die Empfehlungen der renommierten Experten und Wissenschaftler. Halte Abstand,10So verbreitet sich ein Virus, Der Spiegel, 2020-03-20., fass dein Gesicht nicht an,11How to avoid touching your face so much, BBC, 2020-03-18. und wasche deine Hände ordentlich.12Clean hands protect against infection, WHO.

Allgemein

Meine Seite ist CO2-neutral

Veröffentlicht am
Geschätzte Lesezeit: 2 Minuten.

Es gibt CO2-neutrale Internetseiten?

Anders gefragt: Es entsteht CO2 durch Internetseiten? Ja.

Nach einer Studie von Dr. Alexander Wissner-Gross, Umweltaktivist und Harvard-Physiker, verursacht eine durchschnittliche Internetseite ca. 0,02g CO2 pro Seitenaufruf. Angenommen ein normaler Blog besitzt 15.000 Seitenaufrufe im Monat, ergibt dies einen jährlichen CO2-Ausstoß von 3,6kg. Zurückzuführen ist dieser Wert hauptsächlich auf den immensen Stromverbrauch, der durch die Nutzung von (Groß-)Rechnern, Servern und deren notwendige Kühlung anfällt.

Quelle: http://www.kaufda.de/umwelt/co2-neutral/1-baum-1-blog-so-funktionierts/.

Dieser Verbrauch kann durch das Pflanzen von Bäumen kompensiert werden. Genau dies wird von der Aktion „Mach’s grün“, die Umweltinitiative von kaufDA, und „I Plant a Tree“, einer gemeinnützigen GmbH getan. Aber wie viel CO2 nimmt ein Baum pro Jahr auf?

Der United Nations Framework Convention on Climate Change (UNFCCC), das internationale Umweltabkommen der Vereinten Nationen, rechnet, dass ein Baum pro Jahr etwa 10kg CO2 absorbiert.

Quelle: http://www.kaufda.de/umwelt/co2-neutral/1-baum-1-blog-so-funktionierts/.

Es ist also sehr wahrscheinlich, dass meine Internetseite für die Lebenszeit eines Baumes CO2-neutral ist.


Online-Prospekte umweltfreundlich