Tool zur Überwachung der Streckenkunde

Ein jeder Lokführer kennt es: Am Monatsende ist die Streckenkundekarte fällig. Verdammt, wann bin ich auf der Strecke nach Posemuckel noch mal zuletzt gefahren? Wann läuft meine Streckenkunde nach Lummerland aus?

Um das im Auge zu behalten hab ich mir ein Tool mit Access programmiert welches mir monatsaktuell das anzeigen oder auch halbjährlich die Gesamtübersicht ausdrucken kann.

Nun haben ja vielleicht auch andere Lokführer jeden Monat das gleiche Problem wie ich. Also hab ich mich dazu entschlossen dieses Tool für alle kostenlos zur Verfügung zu stellen. Ihr dürft gern darin weiter entwickeln, lasst aber bitte die Hinweise auf mich, den Urheber drin. Für Anregungen und Tipps wie man das ein oder andere evtl. besser lösen könnte hab ich immer ein offenes Ohr, denn ich programmiere so etwas als Hobby und bin sicher nicht 100% perfekt. Die Lizenz dazu läuft unter Creative Commons BY NC.
Ihr könnt schon produktiv mit Euren Daten arbeiten, das Tool hat die Daten und die Bedienebene getrennt gespeichert, wenn ich etwas anpasse dann idR nur im Frontend, Eure Daten bleiben erhalten.

Schauen wir doch mal was das Tool so genau treibt und wie das geht.

Vorab:
Access geht ja auf Nummer Sicher was Makros angeht.
In dieser Datenbank wird ein einziges Makro benutzt um den Startbildschirm auf Bildschirmgröße zu maximieren.

 

Damit alles rund läuft solltest Du den gezeigten Button “Inhalt aktivieren” drücken.

Auf dem Startbildschirm findet man ein paar Buttons die wir gleich der Reihe nach durchschauen.
In der Version hier zum Download hab ich mal ein paar Demodaten hinterlegt um zu schauen wie man mit dem Tool arbeitet. Diese lassen sich über das Menü “Benutzerdaten” auch später löschen. Zum Anschauen und Herumprobieren einfach mal auf den Monat November 2019 stellen.

Der Button “Datenbank neu verknüpfen” ist wichtig falls Du Den Ordner vom Tool verschiebst oder beim Setup einen eigenen Pfad ausgewählt hast. Das Tool passt dann intern den Dateipfad zu Deinen Daten an. Solltest Du zwischendurch mal drauf klicken: keine Angst, die Daten bleiben unberührt, es wird nur der Pfad angepasst.

Als erstes hätten wir da den Button “Touren und Strecken editieren”. Einfach mal anklicken, dann öffnet sich folgendes Fenster:
Hier findet man zum einen oben links ein Dropdown-Menü um eine Tour auszuwählen. Warum hab ich das mit den Touren so gelöst?
Es gibt immer wieder gleichbleibende Touren wie Hannover – Frankfurt oder auch immer gleichbleibende Schichten. Diese kann man hier anlegen, editieren oder löschen.
Zum Editieren einfach im Dropdown-Menü die Tour auswählen, die Details werden dann ins rechte Fenster geladen. Die Buttons dort sind eigentlich selbsterklärend. Will man Strecken zur Tour hinzufügen klickt man im linken Fenster auf den entsprechenden Pfeil nach rechts. Will man Strecken aus den Touren entfernen klickt man rechts auf den Mülleimer (Achtung! der Mülleimer im linken Fenster löscht die Strecke aus der Datenbank!!!).
Um eine neue Tour anzulegen klickt man auf das Dropdown-Menü und schreibt einfach den Namen rein und bestätigt das mit Enter.

Um neue Strecken anzufügen scrollt man das linke Fenster runter bis zum letzten, leeren Feld, füllt das aus und ZACK! drin in der Auswahl. Aktuell hab ich “noch” das Problem dass wenn man die Eingabe mit “Enter” abschließt sich die Liste nicht automatisch aktualisiert. Das passe ich aber noch an. Derzeit muss man nach der Eingabe mit der Maus in das Feld darunter klicken. Vielleicht löse ich das mit den Strecken aber auch noch ganz anders.
Warum man überhaupt Touren braucht zeige ich Euch jetzt im nächsten Menü. Spätestens da wird klar dass das ne Menge Zeit und Arbeit erspart.

“Schicht erfassen” ist das nächste Menü.
Wählt hier nun Euer Wunschdatum mit + oder – aus oder klickt direkt auf das Datum, überschreibt es oder wählt aus dem kleinen Kalendertool das Datum aus.
Dann könnt ihr per Dropdown-Menü eine Tour auswählen und mit dem Button “Tour eintragen” die Details nach unten einfügen. Habt ihr an dem Tag mehrere Touren wählt ihr die einfach nacheinander aus und fügt sie unten mit dem Button “Tour eintragen” ein. Tauchen dort Dubletten auf (also eine Strecke mehrfach) könnt ihr das ignorieren, das Tool filtert diese später automatisch weg.
Habt ihr an dem Tag mal ne Sonderleistung, die ihr nicht über die Touren erstellt habt, könnt ihr Euch das auch einzeln zusammen klicken. Einfach auf den Button “Tour individuell eingeben” klicken.
Einfach Häkchen setzen wo ihr so entlang gekommen seid und oben auf den Button “Auswahl hinzufügen” klicken, das fügt dann dem Tag alle einzelnen Strecken hinzu. Mit “Auswahl zurücksetzen” könnt ihr alle Haken aus Eurer “Klick-Orgie” auf einen Streich löschen.
Zwei Schönheitsmakel hat dieses Menü noch, ich arbeite noch dran:
– Habt ihr an dem Datum schon Strecken aus dem vorherigen Menü eingefügt werden die hier noch nicht mit angezeigt.
– Nach jedem Klick auf ein Hakenfeld aktualisiert sich die Auswahl und die Liste springt wieder an den Anfang,
Das geht derzeit noch nicht anders, ich versuche das aber in einem späteren Update auszubessern.

Kommen wir nun zum Menü “Streckenkunde”.
Wählt hier den Monat und das Jahr aus und schwupps wird Euch eine Liste angezeigt wann ihr welche Strecke zuletzt gefahren seid (oder eben nicht, dann steht da –)
Ebenfalls rechnet das Tool aus bis wann ihr auf der Strecke noch kundig seid.
Ausdrucken kann man das natürlich auch. Dabei habe ich mich daran orientiert dass viele EVU diese Übersicht pro Halbjahr führen.

Das schaut dann so aus:
Euren Namen und das EVU bezieht das Tool aus dem Menüpunkt “Benutzerdaten” vom Startmenü.

 

 

 

Ein paar Worte zur Installation:

Damit das Tool läuft wird mindestens Windows 7 oder höher benötigt. Außerdem brauchst Du Microsoft Access 2016 oder höher. Alternativ kannst Du Dir auch von Microsoft eine Access Runtime installieren. Du findest sie hier:
Access Runtime 2016
Access Runtime für Office 365 ohne Access

Das Setup-Tool installiert sich in Laufwerk C im Ordner “Streckenkunde”. Ich habe diesen Ordner gewählt weil ich dort ohne relative Dateipfade und Zugriffsrechte mit InstallForge einfach die Dateien rein kopieren kann und es später keine Probleme mit Admin-Rechten gibt. Du kannst den Ordner natürlich  auch dahin kopieren wo Du ihn gern hättest. Du musst dann nur auf der Startseite unten rechts auf den Button klicken.

Für eine einfache Installation des Tools hab ich eine Setup-Datei erstellt die Dir alles unkompliziert auf Deinen PC kopiert. Selbst ein Uninstall-Programm wird abgelegt falls es Dir mal nicht mehr zusagt.

Du hast Ahnung von Access und möchtest selbst bestimmen wo was hin kommt? Dann kannst Du auch die beiden Access-Dateien hier als ZIP downloaden. Muss dann allerdings die Verknüpfung händisch erledigen. Aber als Access-Kenner weißt Du ja wie das geht.

Update vom 24.08.21:
Ich habe auf Wunsch zusätzlich zwei Erweiterungen eingebaut.
1. Sollte die Streckenkunde in 90 Tagen (oder weniger) ablaufen bekommt das Feld “gültig bis” eine farbliche Markierung. Sowohl im Formular als auch auf dem Ausdruck.
2. auf der letzten Seite gibt es jetzt noch eine Zeile für ne Unterschrift.

Allerdings findet man diese beiden Funktionen vorerst nur in den Access-Dateien, nicht im Setup. Ich muss mir Installforge erst wieder neu installieren um ein Setup zu erzeugen 😉 Habt bitte etwas Geduld, mir fehlt etwas die Zeit.

Wer das Streckenkunde-Tool bereits in Benutzung hat tauscht aus der Zip-Datei nur die Datei “Streckenkunde.accdb” gegen seine im Installationsverzeichnis aus. Die Daten bleiben erhalten. Ggf muss man noch die Datenbank neu verknüpfen. Wie das geht steht ganz oben im Artikel..

Der “Notfall”-Taster – eine FHEM-Spielerei

Für “spezielle” Notfälle

Nachdem ich in unserem Bad einen Abluftventilator eingebaut und die Steuerung feuchtigkeitsabhängig mit FHEM in die Hausautomation eingebunden habe kam mir die “Schnapsidee”: Was ist eigentlich wenn man auf dem “Thron” hockt und ein Notfall eintritt? (Muss ich das wirklich näher erläutern 😉 ) Das ließe sich doch bestimmt mit Trick 17 und FHEM lösen…

Die erste Idee versuchte meine Frau dann niederzuschmettern mit dem Argument “Dafür haben wir doch dieses Raumspray Brise One Touch“.
Aber ich wäre nicht ich wenn ich dafür nicht eine Gadget-Lösung erfinden könnte. Und das Argument meiner Frau brachte mich auf eine noch größere Idee – eine Verbindung aus beidem!!!. Also ran ans Werk!

mit Fritzing zusammen gepfuscht

Zuerst habe ich mir Gedanken gemacht wie ich überhaupt ein Signal absetzen kann damit die Hausautomation den Lüfter aktivieren kann. Da bei mir bereits MQTT auf dem Raspberry läuft wollte ich auf das System setzen. Im Keller lagen noch ein paar Bauteile wie Taster und ESP8266 herum mit denen man das realisieren könnte. Ähnlich einem Dash-Button von Amazon habe ich dann einen WLAN-Taster gebaut der eine MQTT-Message absetzt. Anregungen dazu findet man zu Hauf im Netz, ich habe mich für die allereinfachste Variante entschieden: Ein ESP8266 der im Deepsleep schlummert, auf Tastendruck auchwacht, eine bestimmte Message absetzt und wieder in den Deepsleep zurück fällt. Bevor jetzt gemault wird “warum denn der ESP8266 12e? Der ESP-01 langt doch vollkommen!”: Ja, der langt, aber ich hatte aus einer Falschlieferung noch ne Menge 12e übrig und da musste ich auch keine Stifte auslöten 😉  (Pinouts für den 12e und den ESP-01)
Die Schaltung ist nicht zu 100% perfekt (man könnte am Taster noch nen PullDown-Widerstand einsetzen), für meinen Anwendungszweck aber ausreichend und bisher hatte ich noch keine Ausfälle. Ebenso könnte man die Batterie durch eine andere Variante tauschen, aber auch hier wollte ich es so einfach wie möglich haben und habe mich für 2 AAA-Batterien entschieden. Aktuell habe ich einen Satz seit rund 7 Monaten in Betrieb und die Spannung langt immer noch für die Schaltung.

Nun zur Software auf dem ESP. Grundlage hierfür war ein Script von Andy Wolff welches ich für meine Zwecke etwas “ausgedünnt” habe (Ich brauche nicht alle Funktionen).

Was macht das Script? Durch Tastendruck den ESP aus dem Deepsleep aufwecken, MQTT-Message mit Schaltzustand und Batteriespannung absetzen, ESP wieder in den Deepsleep setzen. (Moment, hatte ich das nicht schon erwähnt?)

Script auf den ESP flashen, testen, weiter geht es.

Natürlich würde das jetzt schon langen um den Lüfter zu aktivieren. Aaaaber: meine Frau sprach ja was von “Raumspray”. Das muss natürlich auch mit integriert werden.
Also ein Gehäuse entwerfen wo Batterien, der ESP nebst Taster und so eine Brise One Touch Kartusche rein passen UND auch noch zusammen aktiviert werden können!
Gemessen, gemessen, gemessen und in Fusion360 konstruiert. Nach einiger Zeit war dann die Grundplatte fertig und mit dem 3D-Drucker gedruckt. Schaltung eingebaut, Deckel gedruckt, Taster etwas “feingetunt” (Ich hab ein Stück Zellkautschuk drüber geklebt um den Druck etwas abzufangen) und ausprobiert: fertig.

 

 

 

 

 

Ist nicht schick aber funktional. Die Dateien für den 3D-Drucker könnt ihr bei Thingiverse downloaden (ihr findet dort auch einen Deckel ohne Schriftzug).

In FHEM wird die MQTT_Message  mittels eines MQTT-Device ausgelesen und in meinem Fall mit einem DOIF ein Watchdog-Timer gesetzt der den Badlüfter für 5 Minuten aktiviert (hier: Fall ## 1)

## 1
([Paniktaster] eq "ON" )
(set Watchdog_Paniktaster on-for-timer 300)
(set Bad_Luefter on)
## 2
DOELSEIF
([Sensor_Badezimmer:humidity] > 70)
(set Bad_Luefter on)
## 3
DOELSEIF
([Watchdog_Paniktaster] eq "off" and [Sensor_Badezimmer:humidity] < 70)
(set Bad_Luefter off)

Fertig!

 

 

Salz- & Pfefferstreuer aus PETlingen

Auf der Suche nach einem wirklich wasserdichten Salzstreuer stolperte ich über Petlinge. Das sind Kunststoffrohlinge für Pfandflaschen. Diese werden gern auch beim Geocaching als Behälter benutzt. Diese sind, je nach Deckel, auch wasserdicht. Einfach mal in den Deckel schauen, es gibt viele Flaschen mit einer eingelegten Dichtung. Die sind perfekt.
Den Streueinsatz habe ich mit meinem 3D-Drucker aus lebensmittelechtem PETG gedruckt.
Einen Einsatz für Pfeffer habe ich auch zum Ausdrucken beigefügt.

Die Files kann man hier downloaden:
THINGIVERSE

Backup des Raspberry Pi im laufenden Betrieb

Auf meinem Raspberry Pi läuft die Hausautomatisierung FHEM. Diese kann von Haus aus schon Backups von sich selbst anlegen, allerdings laufen auf meinem Raspberry noch weitere Dinge im Hintergrund die ich garantiert bei einem Wechsel der SD-Karte vergessen würde neu aufzusetzen. Und dann sitz ich wieder da, mache dicke Backen und weiß nicht warum der Quark nicht läuft.

Also habe ich für mich beschlossen dass ich liebe die komplette SD-Karte als Backup ablege. Das kann man nun mit verschiedenen Methoden veranstalten. Einerseits könnte man mit Software wie Win32 Disk Imager an einem Windows PC die Karte klonen wozu ich aber jedes Mal den Raspberry herunter fahren müsste, die SD-Karte raus pfriemeln und ins Lesegerät stecken müsste.
Praktischerweise kann so ein Raspberry mit dem “dd Kommando”  sich auch selber klonen und das Backup auf einen externen USB-Stick, oder wie in meinem Fall, dieses auf ein externes NAS legen.

“dd” würde ein Image auf der SD-Karte anlegen was aber totaler Quatsch wäre, wie käme man bei einem Defekt dann an die Daten? 😉
Also müssen wir ein externes Laufwerk “mounten”. Das bedeutet, wir gaukeln dem Raspberry vor dass das externe Laufwerk, welches wir beim Mounten verknüpfen ein Verzeichnis auf dem Raspberry sei.

Und das geht so:
Mit Putty auf dem Raspberry einloggen.
Als erstes legen wir nun das Verzeichnis an welches als Verbindungspunkt laufen soll.

sudo mkdir /backup

Als nächstes folgt die Verknüpfung mit dem externen Laufwerk. In meinem Fall ein externes NAS im Keller welches Benutzername und Passwort benötigt, die Backups sollen später im Verzeichnis “backup” abgelegt werden (muss schon existieren):

sudo mount -t cifs -o user=meinBenutzername,pass=MeinBenutzerPasswort //192.168.178.123/backup //backup

Dabei muss dann entsprechend Benutzername, Passwort und IP-Adresse bei Euch angepasst werden.

Damit bei jedem Neustart des Raspberry das Laufwerk auch wieder neu gemounted wird muss noch per Crontab ein Job angelegt werden. Dazu gehe ich aber später ein, wir müssen eh noch im Crontab einen Job anlegen.

Nachtrag vom 16.12.2020:
Das mit dem Crontab kann man sich getrost schenken wenn man den Mount-Prozess in fstab einträgt. Dazu weiter unten mehr.

Um einen USB-Stick zu mounten muss man etwas anders vorgehen, da hängt es unter anderem davon ab welchen Typ man benutzt. Da verweise ich auf dieses Tutorial, es würde hier zu lang werden.

Nun benutzen wir ein Script welches recht komfortabel die Backups erstellt und, wenn eine bestimmte Anzahl an Backups vorhanden ist, das älteste löscht.
Dazu einfach den Editor nano starten:

sudo nano /home/pi/Backup.sh

Hier nun das Script (Quelle:  Raspberry-tips) hinein kopieren und folgende Variablen anpassen:

  • BACKUP_PFAD – Pfad zum verknüpften Laufwerk (in unserem Fall /backup)
  • BACKUP_ANZAHL – Wieviele Backups sollen aufbewahrt werden?
  • BACKUP_NAME – Name der Sicherung
  • DIENST_START_STOP – Dienste die vor dem Backup gestoppt und dann wieder gestartet werden. Das ist zum Beispiel ziemlich wichtig wenn u.a. ein MySQL-Server mit drauf läuft, es gibt sonst korrupte Datenbankeinträge. Hat man keine wichtigen Dienste laufen kann man die Zeilen 11 und 17 mit einer Raute auskommentieren.
#!/bin/bash
 
# VARIABLEN - HIER EDITIEREN
BACKUP_PFAD="/pfad/zum_backup_order"
BACKUP_ANZAHL="5"
BACKUP_NAME="RaspberryPiBackup"
DIENSTE_START_STOP="service mysql"
# ENDE VARIABLEN
 
# Stoppe Dienste vor Backup
${DIENSTE_START_STOP} stop
 
# Backup mit Hilfe von dd erstellen und im angegebenen Pfad speichern
dd if=/dev/mmcblk0 of=${BACKUP_PFAD}/${BACKUP_NAME}-$(date +%Y%m%d-%H%M%S).img bs=1MB
 
# Starte Dienste nach Backup
${DIENSTE_START_STOP} start
 
# Alte Sicherungen die nach X neuen Sicherungen entfernen
pushd ${BACKUP_PFAD}; ls -tr ${BACKUP_PFAD}/${BACKUP_NAME}* | head -n -${BACKUP_ANZAHL} | xargs rm; popd

Abspeichern mit STRG+X, Y und Enter. Das Script muss nun ausführbar gemacht und verschoben werden:

sudo chmod 755 /home/pi/Backup.sh
sudo mv /home/pi/Backup.sh /usr/local/bin/Backup.sh

Kommen wir nun zum Crontab. Mit Crontabs können zeitgesteuert Prozesse gestartet werden.
Dazu den Crontab-Editor öffnen mit:

sudo crontab -e

Unter der letzten Zeile einen neuen Job anlegen mit

00 01 * * * /usr/local/bin/Backup.sh

Damit wird jeden Tag um 1 Uhr früh ein Backup gestartet.
Wer sich selber andere Zeiten oder nur für bestimmte Tage die Woche ein Backup anlegen möchte schaut sich mal den crontab guru an, da kann man sich seinen Zeitplan recht komfortabel zusammenstellen und dann die Zeile kopieren.

Nun noch speichern mit STRG+X, Y und Enter und schon laufen zur gewünschten Zeit die Backups.
Für meine 8 GB SD-Speicherkarte dauert ein Backup etwa 9 Minuten. Ich lasse die Backups 2x wöchentlich laufen jeweils morgens um 3 Uhr.
Mein Job dazu sieht dann wie folgt aus:

00 03 * * 1,5 /usr/local/bin/Backup.sh

Ich sprach ja vorhin davon dass wir bei den Crontabs noch einen weiteren Job wegen des Mounts anlegen müssen. In eine weitere Zeile fügt ihr folgendes ein:

@reboot mount -t cifs -o user=meinBenutzername,pass=MeinBenutzerPasswort //192.168.178.123/backup //backup

Passt auch hier wieder ggf. Eure IP, Pfade und Name/Passwort an.

Nachtrag vom 16.12.2020:
Ich erwähnte ja weiter oben schon dass man sich den Quatsch mit dem mounten per Crontab schenken kann. Dazu muss der Mount nur in die Datei /etc/fstab eingetragen werden. Dann wird der Mount bei jedem Neustart ausgeführt.

sudo nano /etc/fstab
dort in die unterste Zeile folgenes eintragen:
//192.168.178.xx/Backup /Ordner/fuer/NASVerbindung cifs username=HorstKevin,password=meingeheimesPasswort,uid=1000,gid=1000,dir_mode=0700,file_mode=0600,nounix,vers=1.0 0 0

Achtung! Diese Zeile passt nur für mein System, bei Euch müssen ggf noch Änderungen vorgenommen werden wie IP, Dateipfad, Username, Passwort, Filetyp etc.
Das hier ist auf ein Sambashare auf meinem Synology-Laufwerk ausgelegt. NFS würde vermutlich komfortabler laufen, funktioniert bei mir derzeit nur nicht so recht. Da bin ich noch auf der Fehlersuche.
Um das mit dem fstab besser zu verstehen verweise ich auf eine deutschsprachige Hilfeseite zum Thema:
https://wiki.ubuntuusers.de/fstab/ 

 

 

Und was macht man nun im Fall des Falles um das Backup zurück zu spielen?

Einfach das Image vom NAS mit dem Programm Win32 Disk Imager (oder einer anderen Software zum Bespielen von Images auf SD-Karten) auf eine frische Speicherkarte spielen, einstecken, Rasperry booten, fertig.

 

+++++++++++++++++++++++++++++++++++++++++++++
Update vom 26.12.19
Vor einiger Zeit hat jemand nach der Möglichkeit der Mailbenachrichtigung gefragt. Ich hab das mal hinzugefügt. Wie das geht findet man in diesem Artikel.
+++++++++++++++++++++++++++++++++++++++++++++
Und noch ein Update:
Wer seine Archive gezippt ablegen möchte tauscht einfach die Zeile

dd if=/dev/mmcblk0 of=${BACKUP_PFAD}/${BACKUP_NAME}-$(date +%Y%m%d-%H%M%S).img bs=1MB


gegen diese aus:

dd if=/dev/mmcblk0 bs=1MB status=progress | gzip > ${BACKUP_PFAD}/${BACKUP_NAME}-$(date +%Y%m%d).img

Zurückspielen kann man das mit:

gunzip -c ${BACKUP_PFAD}/${BACKUP_NAME}-$(date +%Y%m%d).img | dd of=/dev/mmcblk0

+++++++++++++++++++++++++++++++++++++++++++++
Update vom 16.12.20
Ich hab den Beitrag etwas editiert, das Mounten per Crontab ist Unfug. das kann man besser per fstab erledigen.

FHEM – Homematic Heizkörperthermostat mit externem Temperatursensor peeren

Homematic Heizkörperthermostat HM-CC-RT-DN

Vor einiger Zeit habe ich angefangen unser Haus “smart” zu machen. Für die Automatisierung habe ich mich für das Projekt FHEM entschieden welches auf einem kleinen Raspberry Pi 3 werkelt und daher ohne Hersteller-Clouds klar kommt. FHEM arbeitet mit sehr vielen Hersteller-Protokollen zusammen und ist umfangreich editierbar. Allerdings setzt es einen gewissen Grad an Programmierkenntnissen voraus. Und manchmal findet man die Lösung für seine Probleme nicht immer sofort sondern über mehrere Quellen verteilt.
So erging es mir z.B. als ich meine Homematic Funk-Heizkörperthermostate HM-CC-RT-DN nachträglich mit externen Temperatursensoren verbinden wollte. Die Homematic-Sensoren lassen sich zwar unabhängig von FHEM mit den Thermostaten peeren, kosten aber ne Menge. Und da XIAOMI seine Aquara Sensoren für sehr schmales Geld anbietet stand für mich schnell fest: die sollen es werden.
Die nun folgende Prozedur funktioniert aber auch mit anderen externen Sensoren so lang sie in der Lage sind ihre Werte an FHEM zu übermitteln.

XIAOMI Aqara SensorEin Blick ins FHEM-Wiki verspricht: kinderleicht. *hust*
Dort wird das Peering nur “husch-husch” beschrieben. Allerdings gibt es ein paar Klippen zu umschiffen bis alles so läuft wie gewünscht. Nachdem ich über mehrere Quellen mir alle Informationen zusammen getragen habe schreibe ich sie hier mal nieder. In erster Linie für mich für weitere Sensoren, aber vielleicht hilft es dem ein oder anderen ebenfalls.

zum peeren mit externen Sensoren muss man sich in FHEM ein virtuelles Homematic-Device (in meinem Fall fürs Wohnzimmer) anlegen. den Teil <Homematic-Id> ersetzt man durch eine beliebige, 6stellige Zahl die in Zukunft als eigenständige “Adresse” des Device dient.

define Wohnzimmer_virt_Temperatur CUL_HM <Homematic-Id>

Dem Device einen virtuellen Kanal hinzufügen:

set Wohnzimmer_virt_Temperatur virtual 1

Da das kein virtueller Knopf sondern ein Sensor ist benennen wir das mal um:

rename Wohnzimmer_virt_Temperatur_Btn1 Wohnzimmer_virt_Temperatur_Sensor1

Ich füge das Device nun dem Raum “Heizung” hinzu (ist aber nicht erforderlich)

attr Wohnzimmer_virt_Temperatur_Sensor1 room Heizung

Das Device muss nun noch wissen mit wem es die Daten kommuniziert, in meinem Fall ist das ein nanoCUL

attr Wohnzimmer_virt_Temperatur IODev nanoCUL

Das Attribut “expert” bitte löschen.

deleteattr expert

Nun wird das virtuelle Device mit meinem Thermostat gepeert. Bei den Thermostaten macht man dies über den Kanal 01 Weather

set Wohnzimmer_virt_Temperatur_Sensor1 peerChan 0 Wohnzimmer_Heizung_Weather single set

 

Bevor man nun weiter macht sollte man (nein, man muss) dringend warten bis das Peering abgeschlossen ist. Man erkennt es daran dass im Status des Thermostat CMDs_done steht und mit dem Befehl

set hm peerXref

das Peering in beide Richtungen eingetragen ist. das sieht dann so aus:

 

 

Sollte das Peering in beide Richtungen nicht abgeschlossen sein dann den letzten Schritt

set Wohnzimmer_virt_Temperatur_Sensor1 peerChan 0 Wohnzimmer_Heizung_Weather single set

so lang wiederholen bis beide Richtungen zu sehen sind.
Im Grunde genommen kann man nun schon überprüfen ob Daten vom virtuellen Device ans Thermostat übermittelt werden.
Mit

set Wohnzimmer_virt_Temperatur_Sensor1 virtTemp 30

sollte nach kurzer Zeit in FHEM beim Thermostat im Weather-Channel bei state  nach kurzer Zeit die 30 angekommen sein.

Gut, nun müssen wir aber noch die Werte vom XIAOMI (oder anderem) Sensor automatisiert zum Thermostat bekommen.
Das macht man per “at”
In meinem Fall sieht das so aus:

define at_Wohnzimmer_virt_Temperatur at +*00:05 { my $T=(ReadingsVal("Sensor_Wohnzimmer","temperature",20.0));; fhem "set Wohnzimmer_virt_Temperatur_Sensor1 virtTemp $T";;}

Damit wird alle 5 Minuten der gemessene Temperaturwert vom “Sensor_Wohnzimmer” (mein XIAOMI Aqara) an das virtuelle Device (welches wir gerade erstellt haben) übergeben und schlussendlich dank Peering ans Thermostat übergeben.
Ich verschiebe nun noch das at in den Raum “Zeitschaltuhren”

attr at_Wohnzimmer_virt_Temperatur room Zeitschaltuhren

 

Der Übersichtlichkeit wegen nun noch mal alle Schritte ohne Erklärung und mit verkürzten Namen nacheinander:

define wz_vTemp CUL_HM&nbsp;<Homematic-Id>
set&nbsp;wz_vTemp virtual 1
rename&nbsp;wz_vTemp_Btnl&nbsp;wz_vTemp_Sensor1
attr&nbsp;wz_vTemp_Sensor1 room Heizung
attr&nbsp;wz_vTemp IODev nanoCUL&nbsp;
deleteattr expert
set&nbsp;wz_vTemp_Sensor1 peerChan 0 WZ_Heizung_Weather single set
define at_wz_vTemp at +*00:05 { my $T=(ReadingsVal("Sensor_WZ","temperature",20.0));; fhem "set wz_vTemp_Sensor1 virtTemp $T";;}
attr at_wz_vTemp room Zeitschaltuhren

Nun sollte alles laufen.

Ich bau mir nen Ugly Drum Smoker…

mein "Schätzelein"Schon lang träume ich davon einen Smoker zu besitzen. Angefixt durch meinen Freund Hans hab ich mich immer wieder in Baumärkten und im Internet dafür interessiert. Ein Selbstbau schied bei mir mangels Schweißkenntnissen aus. Und auch die Preise für fertige Smoker hielten mich immer davon ab. Klar, man bekommt schon ab 200 Euro was, aber ein bisschen was aushalten soll der ja auch.

Durch Zufall stolperte ich über den Begriff UDS – Ugly Drum Smoker. “Hässlicher Fass Smoker”? Was ist das? Ein wenig Recherche ergab: grob gesagt nimmt man ein altes Ölfass und zaubert mit etwas handwerklichem Geschick einen 1a Smoker den man komplett ohne Schweißen bauen kann.

Bei weiteren Recherchen stieß ich auf die absolut tolle Facebook-Gruppe “Ugly Drum Smoker Germany“. Dort las ich stundenlang erst einmal mit und schaute mir unzählige Fotos an. Dann “bombardierte” ich die Gruppe mit all meinen Fragen die mir alle toll und freundliche beantwortet wurden.

die ersten Bauteile (längst nicht alle)Also Preise eingeholt, skizziert, die Genehmigung der “Regierung” (meiner lieben Frau) eingeholt und los ging es!

Weiterlesen

Treiber für Arduino Nano Clones

469521107_1280x720Wer sich beim “Chinamann” (z.B. Aliexpress oder Banggood) Arduino Nano Clones kauft steht recht flott vor dem Problem dass diese Clones nicht vom PC erkannt werden.
Das liegt daran dass dort statt der FTDI-Chips die deutlich preiswerteren CH340G USB 2 Serial Chips verbaut wurden.
Dies führt beim Upload von Sketches auf den Arduino zu Fehlermeldungen.
Die Clones benötigen einen eigenen Treiber. Diesen findet man kostenlos im Netz unter dem Namen CH340SER.EXE oder auch unter dem Namen CH341SER.EXE.

Ich habe für mich den Treiber hier im Blog als Backup gespeichert. Dieser funktioniert bei mir hervorragend, ich übernehme dafür allerdings weder Garantie noch Haftung. Der Download erfolgt auf eigenes Risiko.

Bevor man den Arduino mit dem PC verbindet:

  • Treiber downloaden (und ggf entzippen)
  • Setup starten
  • Die Software fragt dann nach ob sie den Treiber CH341SER.INF für den Chip CH340 (Version 11/04/2011, 3.3.2011.11) installieren darf, ‘INSTALL’ klicken
  • Nach Installation erfolgt noch eine Windows-Meldung dass der Treiber erfolgreich installiert wurde
  • Den Arduino Nano per USB verbinden
  • Im Gerätemanager findet man dann den Eintrag “USB-SERIAL CH340 (COM XX)” bei XX steht dann welcher COM-Port benutzt wird
  • In der Arduino Software entsprechend den COM-Port einstellen, fertig

Ausgesperrt aus WordPress nach einem Update?

BaustelleNach einem Update eines Plugins heute ließ sich die Webseite einfach nicht mehr aufrufen. Weder das Frontend noch das Backend. Das Update des Plugin hatte einen Fehler. Nun ist guter Rat teuer, wie soll man das Plugin deaktivieren wenn man nicht einmal mehr ans Dashboard gelangt?

Hier ein paar Tipps wie man seine Webseite wieder zum Laufen bekommt.

Deaktivierung des Plugins
Kann man das Dashboard noch Aufrufen sollte man zuerst versuchen das Plugin zu deaktivieren. Hilft das nicht oder kann man das Dashboard nicht mehr aufrufen geht es weiter im nächsten Schritt

Umbennen
Loggen Sie sich per FTP auf den Server, suchen Sie das Pluginverzeichnis und benennen es um.
Hilf auch das nicht geht es einen radikalen Schritt weiter.

Plugin löschen
Da Sie ja nun schon per FTP auf den Server Zugriff haben löschen Sie einfach das Plugin-Verzeichnis. Wo nichts mehr ist kann WordPress auch nichts fehlerhaftes mehr laden.

Das jedenfalls hat bei mir geholfen. Ich konnte wieder auf das Dashboard zugreifen und die Vorgängerversion des Plugins installieren.

 

Mistery-Helfer: ROT13- / Cäsar-Verschlüsselung

Die beim Geocaching am häufigsten benutze Verschlüsselung ist wohl ROT13. Sie eine Variante der Cäsar-Verschlüsselung bei der die Buchstaben einfach um 13 Stellen verschoben werden. Aus A wird N, aus B wird M und so weiter. Beim Geocaching werden auf der Webseite von geocaching.com die Hints mit dieser Methode verschlüsselt.

Weiterlesen

Buchstabenwortwert & Quersumme

Da ich beim Geocaching häufiger mal einen Buchstabenwert oder sogar einen Wortwert benötige und dabei nicht immer auf mein Smartphone zurückgreifen möchte (weil ich beim Rätseln meist eh vor dem Rechner sitze) habe ich hier im Blog rechts am Rand einen Wortwertrechner eingebaut. Dieser basiert auf dem Schema A=1 Z=26, zeigt die Quersumme und die iterierte Quersumme an.
Für “unterwegs” habe ich dann ja immer noch GCC für Android auf dem Smartphone.

Für Nicht-Geocacher:
Bei einigen Rätselcaches wird nach dem Wortwert von z.B. “Hausmaus” gefragt um mit dem Ergebnis eine weitere Berechnung zu veranstalten. Dabei geht man davon aus dass jedem Buchstaben eine Zahl zugeordnet wird. Man beginnt bei A = 1 und endet bei Z = 26.

Das Wort “Hausmaus” gliedert sich dann wie folgt auf:
h:8
a:1
u:21
s:19
m:13
a:1
u:21
s:19
Das ergibt addiert den Wortwert 103.
Manchmal wird auch nach der iterierten Quersumme gefragt. Darunter versteht man die kleinstmögliche Quersumme, denn 103 hat ja auch noch mal eine Quersumme, die 4.

Viel Spaß beim Ausprobieren!