Reinigung einer Graef CM 800 Kaffeemühle

Eine sehr wichtige Komponente bei einem Home-Barista Setup ist die Kaffeemühle und dazu gehört auch deren Reinigung. Die (Achtung Amazon Affiliate Link, mehr dazu hier) Graef CM 800 ist eine Einsteigermühle im Preissegment unter 200€ und bietet sich für den Einstieg in diese Welt regelrecht an.

Sie hat allerdings durch den großen Totraum, also den Bereich wo Kaffee im Mahlwerk oder zwischen Mahlwerk und Auslass zurück bleibt, obwohl sie gerade nicht arbeitet, auch einen Nachteil.

Aus diesem Grund sollte man sie regelmäßig putzen und diese paar Schritte möchte ich euch zeigen.

ACHTUNG: Ich übernehme keine Verantwortung für irgendwelche Schäden die durch diese Reinigung bei euren Maschinen entstehen. Ebenso werden hier spannungsführende Teile offengelegt, also auf jeden Fall von Fachpersonal erledigen lassen und natürlich immer ohne Strom (also das Mahlwerk abgesteckt) durchführen.

Solltet ihr noch Kaffee im Behälter haben, dann schließt unten die Klappe damit die Bohnen nicht rausrieseln und trennt den Behälter vom Rest der Maschine mit einer einfachen Drehbewegung. Anschließend seht ihr das Mahlwerk mit der mechanischen Drehvorrichtung zum Einstellen des Mahlgrads. Das Mahlwerk besteht aus einem oberen, fixen Teil und einen unteren, durch den Motor angetriebenen Teil. Der obere Teil wird auf und ab gestellt und somit wird die größe des Mahlguts verstellt.

Um den oberen Teil abzunehmen, müsst ihr nun den Mahlgrad bis zum Anschlag nach unten drehen und anschließend die Verriegelung auf der Hinterseite drücken. Nun könnt ihr die Einstellung für den Mahlgrad weiter gegen den Uhrzeigersinn drehen, bis ein mechanischer Anschlag das weitere Verdrehen verhindert.

Ihr könnt jetzt den oberen Teil des Mahlwerks von der Maschine nach oben abheben. Widmen wir uns zunächst dem oberen Teil, der aus der äußeren Drehverstellung (hellgrau) und dem Mahlwerk selbst besteht. Auch diese beiden Dinge kann man trennen, indem ihr den Metallbügel des Mahlwerks anhebt und das Mahlwerk gegen den Uhrzeigersinn aus dem großen Teil rausdreht. Beide Teile könnt ihr nun getrennt reinigen und ggf. trocknen lassen.

ACHTUNG: Folgende Schritte dürfen nur erledigt werden, wenn die Mahlmaschine von der Netzversorgung getrennt wurde!

Nun zum unteren Teil: Oftmals reicht es bereits diesen mit einem kleinen Besen auszukehren oder mit einem Sauger zu reinigen. Hilfreich ist auch das verkehrte ausleeren. Soll es aber mal richtig sauber werden, dann muss noch eine Abdeckung runter.

Wenn ihr nun von oben drauf schaut, dann seht ihr vier Schrauben. Diese einfach mit einem Kreuzschraubendreher lösen. Nun könnt ihr die Abdeckung auf der Hinterseite, also gegenüber vom Auslass des Kaffeeguts abheben und rausnehmen.

Nun fehlt noch ein Deckel der vorne beim Auslass drüber liegt, den könnt ihr auch einfach rausnehmen und separat reinigen.

ACHTUNG: Diese Maschine hat auf der Hinterseite zusätzlich eine Sicherung integriert, damit sie nicht ohne den oberen Teil des Mahlwerks loslegt und diese ist nun freigelegt. Die liegt einfach nur oben drauf und kann evtl. eingesaugt werden. Weiters ist diese Sicherung mit der Netzversorgung verbunden, also nochmal, vorher Maschine abstecken!

Der Zusammenbau ist ganz einfach. Die Teile einfach wieder in der verkehrten Reihenfolge festmachen und verschrauben. Den oberen Teil des Mahlwerks innerhalb des hellgrauen Außenrings drauflegen

und leicht in eine Richtung drehen bis er nach unten fällt.

Dann könnt ihr die Verriegelung hinten schließen. Beim Drehen des Mahlgrads sollte der innere Teil in der maximalen Stellung nur ganz leicht drüberstehen und in der anderen ganz leicht unter der Kante des äußeren Mahlwerkteils.

Falls ihr mit dieser Maschine nicht fein genug mahlt, um einen guten Espresso hin zu bekommen, könnt ihr hier mit einem Trick noch ein wenig feiner mahlen. Dazu einfach dieses Video ansehen.

Viel Spaß beim Reinigen eurer Graef CM 800

Bluetooth Headset und externes Mikrofon am Windows PC

Im vorigen Blogpost hab ich grundlegend beschrieben, warum ein Bluetooth Headset am PC nur sehr schlechte Soundqualität liefert wenn man es für Mikro und Tonausgabe zugleich verwendet. Meine Abhilfe dahingehend war ein externes Ständermikrofon zur Eingabe und das Headset als Kopfhörer.

Nachdem sich das Headset allerdings mit zwei Profilen beim PC anmeldet, kommen einige Proigramme durcheinander wenn man beides tun möchte, also Sprache zur Eingabe und Hören über die Bluetooth Kopfhörer als Ausgabe. Ein Beispiel dafür ist Teamspeak.

Sobald man Teamspeak startet, schaltet das Programm die Windows Audio Einstellungen automatisch auf den Hands Free Mode um und die Soundqualität ist meh.

Der Trick dabei ist, einfach den Hands Free Modus in den Soundeinstellungen zu deaktivieren. Dazu geht ihr in die Einstellungen.

Und hier dann oben im Suchfeld “Sound” eingeben und unten dann “Eingabegeräte verwalten” auswählen.

Hier sollte nun bei Ausgabegeräte und bei Eingabegeräte jeweils euer Headset einmal als “Kopfhörertype Stereo” und einmal als “Kopfhörertype Hands-Free” auftauchen. Dabei einfach jeweils dieses Hands-Free Gerät auswählen (einmal darauf klicken) und auf Deaktivieren klicken.

Wenn ihr Teamspeak nun neustartet und vorher rechts unten bei der Uhr am Lautsprecher Symbol das Headset mit der Bezeichnung Stereo ausgewählt habt. Sollte Teamspeak auch dieses für die Soundausgabe verwenden (sofern in den Einstellungen Windows Standard gewählt wurde). Als Mikro verwendet ihr dann das extern angeschlossene Mikro.

Falls ihr noch Fragen habt, bitte einfach hier kommentieren. Ansonsten wünsch ich allen Leser-innen einen guten Rutsch ins neue Jahr 2021.

Sg Euer Matze

Probleme mit Bluetooth Headsets am PC/Notebook für Gaming oder Video-Konferenzen

Bluetooth ist ein Funkstandard zum Übertragen von Daten, soweit so gut. Es gibt da mittlerweile einige Versionen und die zwei aktuell gängigsten sind die Version 4.2 und 5.0. Mehr Details zu den einzelnen Versionen findet ihr hier. Wichtig für den Durchbruch von Bluetooth war die Version 4, da hier der Low Energy Standard (abgekürzt LE) eingeführt wurde, was zu einer enormen Laufzeitverbesserung aller mobilen Geräte geführt hat.

Ich schreibe hier diesen Artikel, da ich mich heuer etwas über diesen Bluetooth Standard geärgert habe und ich einen halben Tag recherchieren musste, bis ich dem Problem auf den Grund gegangen bin.

Wie viele andere wurde ich 2020 ins HomeOffice geschickt. HomeOffice heißt aber nicht unbedingt weniger Besprechungen, die meisten sind halt von zuhause aus, digital und eben mit Mikrofon und Lautsprecher – oder noch komfortabler mit Headset. Das ganze funktionierte super mit meinen Bose Quiet Comfort 25, da die per Kabel an die Soundkarte des Firmen-Notebooks angeschlossen waren. Das heißt, Spotifyhören in hoher Qualität und fliegend in die nächste Besprechung gehen und dort mit hoher Qualität diese abhalten, alles kein Problem. Die Aufnahme wurde also mit Mikrofon und die Ausgabe über Lautsprecher simultan erledigt. Einziger Nachteil an dem Ganzen: Das Kabel ist manchmal schon sehr nervig.

Weihnachten nahte und ich bekam heuer das Top Modell von (Achtung Amazon Affiliate Link, mehr dazu hier) Sony den WH-1000XM4 geschenkt. Endlich ein toller Bluetooth Lautsprecher mit Bluetooth 5.0 und Noise Cancelling. Die Sound-Ausgabe bei den Dingern ist super und auch das Telefonieren mit dem Handy funktioniert einwandfrei.

Nun zu meinem Problem mit Bluetooth in der aktuell verbreiteten Version: Ich zocke ab und zu mit ein paar Kollegen online. Wir treffen uns dazu im Teamspeak mit Headset und spielen diverse Titel auf und ab. Auch zu Weihnachten das sogenannte “Weihnachtszocken” hat schon Tradition. Also dachte ich mir, super mit den neuen Kopfhörern muss das ja der Wahnsinn sein. Doch leider wurde ich ordentlich enttäuscht. Ich bekam die Kopfhörer im Teamspeak einfach nicht ordentlich zum Laufen. Die Sound Qualität war ähnlich wie bei den alten Analogtelefonen von früher und auch meine Freunde haben mich nicht ordentlich verstanden. Etliche Hilfen in HiFi und anderen Foren brachten nicht die nötige Abhilfe. Was ist hier das Problem? Mal ein kurzer Ausflug in die Welt von Bluetooth.

Zuerst nochmal zur Übertragungsart: Bluetooth ist ein Funkstandard und überträgt Daten im 2.4Ghz Band wie das bekannte WLAN im 802.11b und g Standard. Ich möchte hier eigentlich nur noch die Bluetooth Technik ab V4.2 behandeln, da alles vorher sowieso schon länger nicht mehr Strandard ist und verwendet wird.

Damit ein Gerät mit einem anderen kommunizieren kann, müssen sich die beiden auf eine Art Austauschformat oder auch Protokoll einigen. Um einen Wildwuchs an Protokollen diverser Hersteller zu verhindern, hat die Bluetooth Special Interest Group (BSIG) dies mit diversen Profilen standardisiert.

Also um das nochmal festzuhalten: Damit ein Gerät mit einem anderen reden kann, müssen beide sich auf ein gewisses Bluetooth Profil einigen und natürlich auch beide Seiten das Profil implementiert haben. Dem Physical Layer, also der Übertragungsschicht, ist es prinzipiell egal, welche Daten übertragen werden. Die Profile werden in Software abgehandelt und folgende, für uns wichtige Profile seien hier als Beispiel genannt:

  • A2DP – Advanced Audio Distribution Profile: Profil zum Übertragen von Stereo Audio Daten an ein entsprechendes Empfangsgerät. Darüber liegt meist noch ein Codec, dazu kommen wir noch.
  • AVRCP – Audio/Video Remote Control Profile: Dient zum Fernsteuern von Audio- und Videogeräten. Hier werden Dinge wie nächster Titel, vorheriger Titel, lauter, leiser usw… abgehandelt. Ohne dieses Profil kann auch keine Fernsteuerung des Sendegeräts erfolgen.
  • HFP – Hands Free Profile: Erlaubt es Autoherstellern einen standardisierten Zugang zu den Empfangsgräten (Smartphones oder einfach nur Handys) für Telefonie herzustellen. Wichtig hierbei ist, dass die Verbindung zwischen Auto und Gerät geregelt wird. Dabei sind neben normaler Telefonie auch weitere Telefon-übliche Dinge wie zuletzt angerufenen Teilnehmer anrufen, Telefonat halten usw… standardisiert. Dieses Profil wird meist in Kombination mit dem HSP Profil implementiert, um den Funktionsumfang zu erweitern. Für HFP gibt es mehrere Versionen. Die Version 1.6 hat den mSBC Codec eingeführt, dies bedeutet Sprache in 16kHz mono mit SBC Codec. Die Version 1.7 hat kleinere Metaabfragen hinzugefügt für zB. Battery-Level.
  • HSP – Headset Profile: Standardprofil für Bluetooth Headset und ursprünglich für Telefonie gedacht. Daten werden mit maximal 64kBit/s ausgetauscht und es gibt auch Funktionen zum Lauter und Leisterstellen bzw. Anrufannehmen und Auflegen.

Es gibt noch eine Reihe anderer Profile und die Liste ist lang, die oben genannten sind die wichtigsten für Telefonie und Audio-Übertragung. Eine komplette Liste gibts hier.

Also wie erwähnt, obige Profile sind für uns am wichtigsten, um:

  • Musik zu hören (A2DP), one way
  • unsere Playlist am Sendegerät fernzusteuern (AVRCP), bsp Spotify nächster Titel
  • zu telefonieren und währenddessen lauter & leiser stellen bzw. abheben und auflegen (HSP)
  • im Auto zu telefonieren, lauter & leiser stellen bzw. auch letzten Anrufer nochmals anzurufen (HFP)

Wie ihr bereits erkennen könnt, ist das A2DP Profil nur One-Way, das heißt die Daten fließen in (meist, je nach Codec) hoher Qualität nur vom Sendegerät, also euerem Smartphone, zum Kopfhörer. Es gibt hier keine Möglichkeit gleichzeitig die Mikrofon-Signale vom Kopfhörer ans Sendegerät zurückzusenden. Dafür ist dieses Profil nicht gedacht.

Wenn man nun in beide Richtungen Daten übertragen möchte, muss man entweder das HSP oder das HFP Profil verwenden, doch leider wird hier die Bandbreite sehr begrenzt und das ist auch das Problem.

Windows erkennt beim Verbindungsaufbau über den Bluetooth Dongle mit euren Kopfhörern meist zwei Geräte:

  • Kopfhörer Type (Stereo): Hier wird das A2DP Profil angeboten und übertragen, also reiner Sound in die Kopfhörer Richtung und je nachdem was der Bluetooth Kopfhörer kann auch ein entsprechender Codec mit der jeweiligen Qualität.
  • Kopfhörer Type (Hands free): Hier wird das HFP oder HSP Protokoll angeboten, also in beiden Richtungen allerdings mit geringer Qualität.

Windows hält sich bei letzterem meist bedeckt, welches Profil verwendet wird. Zumindest konnte ich das auf die Schnelle nicht rausfinden.

Das ganze wurde auch mit Bluetooth 5.0 nicht besser, was heißt für Gamer sieht es bis hierhin zumindest sehr mau aus. Es bleibt nur noch ein separates Mikro zu verwenden und die Soundsignale allein über Bluetooth zu übertragen.

Mit Bluetooth 5.2 sollen die Audioprofile überarbeitet werden und dann kommen vermutlich neue Profile dazu, wo diese Übertragung mit hoher Soundqualität in beide Richtungen klappen sollte. An der Bandbreite würde es nach aktuellem Standard (bei 5.0 ca. 3Mbps) nicht happern. Mal schauen, was hier 2021 noch bringt: wahrscheinlich neue Dongles und neue Kopfhörer mit den neuen Profilen, vermutlich wird das ganze nicht mit einem Update der Kopfhörer Firmware zu machen sein.

Ein Wort noch zu den Codecs: Oft hört man ja die Begriffe SBC, aptX usw. Das sind die Sound Codecs, die auf dem Profil A2DP verwendet werden, um den Sound komprimiert zu übertragen, damit Bandbreite gespart und somit auch weniger Energie verbraten wird. Hier gibt es eigentlich folgende bekannte Codecs:

  • AAC (Apple): Ist der Standard Audio Codec der Apple Geräte und soll als Nachfolger für MP3 gehandelt werden. Dieser Codec ist bei den Bluetooth Geräten weit verbreitet und wird auch breit unterstützt.
  • aptX (Qualcomm), HD, Low Latency (LL), Adaptive: sind Audio Codecs von der Firma Qualcomm (also eigentlich hat Qualcomm die Technik auch nur zugekauft) und ist somit in allen Android Geräten mit Snapdragon Prozessor standardmäßig mitgeliefert. Dieser Codec ist lizenzpflichtig und somit nicht sehr verbreitet. Gerade fürs Gaming ist jedoch die Erweiterung mit Low Latency geeignet, um hier möglichst ereignisnahe den Sound zu hören, der auch zum Bild passt.
  • LDAC (Sony): Audiocodec von Sony, wo auch der Encoder als OpenSource unter der Apache Lizenz 2.0 veröffentlicht wurde. Dieser Codec gilt als Hauptkonkurrent zu aptX von Qualcomm. Anders als bei aptX kann dieser Codec frei verwendet werden.
  • SBC (BSIG): Low Complexity Subband Codec ist ein Standard Audio Codec, der speziell für das Bluetooth Profil A2DP entwickelt wurde und muss von allen Herstellern, die Bluetooth einsetzen, unterstützt werden.

Wichtig hier, diese Codecs müssen von Empfangs- und Senderseite unterstützt werden, damit die Geräte miteinander kommunizieren können. Ist dies nicht der Fall, wird als Fallback der SBC Codec mit dementsprechend schlechterer Qualität verwendet. Zudem können diese Codecs (außer SBC) nicht bei HFP oder HSP verwendet werden, was uns wiederum zum ursprünglichen Problem führt.

Teamspeak und Gaming über Bluetooth Headset wird es nicht so schnell spielen. Vielleicht kommen hier ja 2021 mit dem neuen, überarbeiteten Bluetooth 5.2 Standard noch spannende Produkte auf den Markt.

Ich hoffe, mit diesem Artikel ein paar Leuten die Suche nach der Headset Problemlösung verkürzt zu haben. Ich habe mir auf Amazon (Achtung Amazon Affiliate Link, mehr dazu hier) ein Ständer Mikro gekauft und verwende das nun als Aufnahmegerät und das Sony Headset ist mein Kopfhörer.

Einige Quellen:

Dockercontainer über subdomains erreichen

Über Docker lassen sich Webservices komfortabel auf einem NAS von zu Hause aus hosten. Wenn man zusätzlich ein VPN
einrichtet, kann man auf alle selbstgehosteten Webservices komfortabel und sicher von überall auf der
Welt darauf zugreifen. Wenn man nun aber – wie ich – damit begonnen hat, intensiv auf solche selbstgehosteten
Webservices zu setzen (nur als Beispiel, gitlab, nextcloud, bitwarden, teamspeak) muss man sich mit der Zeit
einige Ports merken, um auf die Webservices zuzugreifen. Schließlich läuft jeder Webservice in einem eigenen Dockercontainer
und besitzt einen eigenen Port. Hier die Übersicht zu behalten, ist mit der Zeit unmöglich. Vielleicht weiß man beim Einrichten
noch, welchen Port man einem Webservice gegeben hat, aber nach spätestens nach 1-2 Monaten hat man den Port vergessen. Bookmarks helfen
hier zwar, aber deutlich eleganter ist es Subdomains für die Webservices einzurichten.

Um Subdomains im lokalen Netzwerk einzurichten, kann man im Prinzip jeden Webserver verwenden und konfigurieren (z.B. nginx oder apache), aber ich bin nun – besonders in der
Kombination mit Docker – auf einen komfortableren Weg gestoßen einen reverse proxy einzurichten: Traefik ist ein sogenannter Edge
Router, der genau für Services wie Docker, Docker Swarm, Kubernetes (etc.) entwickelt worden ist. Einmal eingerichtet, erkennt
Traefik automatisch alle Dockercontainer, die gerade laufen. Die Dockercontainer kann man über Labels bei der Erstellung so
einstellen, dass Traefik automatisch Subdomains dafür einrichtet. Außerdem sieht man über ein Webinterface sofort den Status der so
verfügbaren Container.

Hier eine kurze Anleitung dazu, wie man Traefik installiert, konfiguriert und anschließend einen Dockercontainer über eine
Subdomain erreichen kann. Die Anleitung setzt die vorige Installation von Docker und Kenntnis darüber voraus.
Zunächst muss das offizielle Traefik Dockerimage gepulled werden und ein Container damit angelegt werden.

docker pull traefik:latest
docker create -p 443:443 
              -p 80:80 
              -p 8080:8080
              -v /volume1/docker/traefik-config/traefik.yml:/etc/traefik/traefik.yml
              -v /var/run/docker.sock:/var/run/docker.sock
              --name traefik1 traefik:latest

Der Container ist eingerichtet, dass https und http einfach weitergeleitet werden. Falls man auf seinem Heimserver schon einen
apache oder Ähnliches laufen hat, oder man einfach nicht die Standardports verwenden will, kann man natürlich auch andere Ports verwenden.
Im yml File auf das verwiesen wird, steht die Konfiguration von Traefik. Im einfachsten Fall kann diese wie folgt lauten:

# /volume1/docker/traefik-config/traefik.yml

providers:
  docker:
    exposedByDefault: false
api:
  insecure: true

Der Pfad in den “docker create” Parametern muss natürlich angepasst werden. Diese Konfiguration stellt sicher, dass nicht alle,
sondern nur speziell angegebene Dockercontainer über Subdomains erreichbar sind – Mir ist es lieber hier die Kontrolle zu haben,
außerdem muss man bei der Erstellung ohnehin Labels für Traefik anlegen.
Das wars auch schon mit der Konfiguration von Traefik. Natürlich kann man noch SSL Zertifikate usw. angeben, aber das wäre dann ein
Thema für einen anderen Eintrag. Traefik muss nun nur noch gestartet werden.

docker container start traefik1

Über localhost:8080 kommt man auf das Webinterface. Jetzt, wo noch keine Dockercontainer für Traefik freigegeben sind, ist dieses zwar hübsch
anzusehen, aber noch relativ leer. Um einen Container für Traefik verfügbar zu machen, muss die Erstellung eines Containers um Labels erweitert
werden.

docker create [...] \
              -l "traefik.enable=true" \
              -l "traefik.http.routers.<CONTAINER_NAME>.rule=Host(\"container.example.com\")" \
              -l "traefik.http.services.<CONTAINER_NAME>-service.loadbalancer.server.port=80" \
              [...] 

Diese 3 Labels reichen im Normalfall aus, um einen Container über eine Subdomain im lokalen Netzwerk verfügbar zu machen. Durch die angegebenen
Labels, leitet Traefik über reverse-proxy auf den Container um. Die Angabe des Port ist nicht unbedingt nötig, sollte ein Container nur
einen Port verwenden, erkennt Traefik diesen automatisch. Einige Webservices verwenden aber mehrere Ports und hier muss der Port dann explizit
angegeben werden.

Let’s encrypt Zertifikate für Hosted Websites

Bei Hosteurope gibt es die Möglichkeit Let’s encrypt Zertifikate zu verwenden, allerdings müssen diese manuell angelegt und auch (alle 3 Monate) erneuert werden. Der Vorteil bei diesen Zertifikaten ist, sie sind gratis, der Nachteil man muss die Schritte bis zum eingetragenen Zertifikat für Hosteurope manuell durchführen. Andere Hosting Provider sind hier schon weiter, ich habe leider keine Ahnung warum sich Hosteurope weigert Let’s encrypt direkt aufzunehmen, es wird wohl ums Geld gehen, da das automatisierte Anlegen und Erneuern ebenso angeboten wird, allerdings gegen Bares.

Nichts destotrotz, die Möglichkeit gibt es, manuell halt. Hosteurope hat hierzu auch eine Anleitung veröffentlicht die es Schritt für Schritt zeigt (zu finden hier). Leider ist der ZeroSSL Service ab nun für Wildcard Domains kostenpflichtig und somit für manche auch keine Alternative mehr. Also nützt es nichts, man muss sich doch mit dem Certbot auseinandersetzen.

Certbot ist ein Tool welches für Zertifikaterstellung/erneuerung der Let’s encrypt Zertifikate zuständig ist. Das Tool ist in Python geschrieben und einfach zu handhaben. Die größere Arbeit ist es, sich in die vielen Möglichkeiten und die für einem selber notwendigen Schalter dieses Python-Kommandozeilentools einzulesen.

Meine Voraussetzungen:

  • Webspace bei Hosteurope (Webhosting Basic oder Premium, somit kein Zugriff auf Webserver Konfigs o.ä.)
  • Die Domain ist entweder direkt bei Hosteurope gehostet/gekauft oder bei einem externen Anbieter (domaindiscount24)

Um für diese Anfordungen ein Zertifikat zu bekommen, muss man Zugriff auf die DNS-Konfig haben, um eben TXT Einträge erledigen zu können und man muss vom Hosting-Provider die Möglichkeit haben manuell Zertifikate hochladen zu können.

In diesem Beispiel wird ein Let’s encrypt Zertifikat für seesle.at und *.seesle.at erstellt. Die Domain und die Website liegt bei Hosteurope.

Der Aufruf bei certbot sieht wie folgt aus:

sudo certbot -d "seesle.at,*.seesle.at" --manual-public-ip-logging-ok --manual --preferred-challenges dns certonly

Dabei bedeuten die Schalter folgendes:

  • -d: Domainnamen als Liste mit , getrennt; Durch den *. in der Wildcard Domain muss man für den Befehl diesen Parameter unter “” setzen
  • –manual-public-ip-logging-ok: Let’s encrypt verlangt, dass die IP des Rechners auf dem der Certbot ausgeführt wird mitgeloggt wird und auch öffentlich einsehbar ist, das Ganze kommt als Abfrage und bei Nein bekommt man kein Zertifikat; Mit diesem Schalter stimmt man dem explizit zu
  • –manual: bedeutet, dass die Ausführung von Certbot interaktiv (mit Abfragen und Text) in der Kommandozeile durchgeführt wird.
  • certonly: Das Zertifikat wird erstellt und lokal gespeichert aber nicht installiert; Der Grund hier ist, normalerweiße wird certbot auf dem Server auf dem der Webservice läuft ausgeführt und kann somit gleich automatisiert die Zertifikate installieren

Nach bestätigen des Befehls wird (sofern das Zertifikat noch nie erstellt wurde) eine E-Mail Adresse als Admin Adresse abgefragt. Wenn es sich um eine Erneuerung des Zertifikats handelt, dann bekommt man sofort den ersten Schlüssel den man im DNS-Eintrag ablegen muss.

Der Schlüssel besteht aus einer gewissen Anzahl an Zeichen/Sonderzeichen und muss nun direkt aus der Kommandozeile rauskopiert werden.

Nun geht man zu Hosteurope ins KIS und geht auf Domainservices -> Domain Administration -> Nameserver – / DNS-Einträge bearbeiten. In der Liste unten wählt man nun die Domain aus und klickt auf editieren.

Sollte der TXT Eintrag im Falle einer Zertifikatserneuerung bereits gemacht worden sein, dann einfach den Eintrag _acme-challenge.seesle.at raussuchen und dort den Schlüssel hinterlegen. Falls dieser noch nicht gemacht wurde, kann er ganz unten angelegt werden.

Wichtig hier: Falls man die normale Domain und alle Subdomains (mittels Wildcard Zertifikat) beim Certbot angegeben hat, muss man zwei TXT Einträge mit _acme-challenge.seesle.at anlegen

Wenn die Keys eingegeben sind, müssen sie mit jeweils nacheinander einem Klick auf zunächst Update und anschließend Speichern bestätigt werden.

Nun muss man ein paar Minuten warten bis die Einträge im DNS-System verfügbar werden. Zur Prüfung kann hierzu eine DNS TXT-Abfrage durchgeführt werden. Bei mir lokal, hat mein Router diese Einträge gecached und somit teils sehr lange nicht erneuert deshalb hab ich dann auf folgendes Tool zurückgegriffen.

Wenn hier die zwei Schlüssel korrekt angezeigt werden, kann man wieder zurück zum Certbot in die Kommandozeile und mit Enter die Zertifikatserstellung abschließen.

Certbot prüft nun ob die Keys an den korrekten Stellen eingetragen wurden (und ob man dadurch auch der Eigentümer der Domains ist) und erstellt bei Erfolg die Zertifikate ins Verzeichnis:

/etc/letsencrypt/username/live/seesle.at

Für Hosteurope sind die Zertifikate fullchain.pem und privkey.pem wichtig. Die beiden kopiert man sich am besten irgendwohin, wo man auch über den Browser zukommt (ACHTUNG: die müssen im Anschluss wieder lokal gelöscht werden).

Nun geht man bei Hosteurope unter WebHosting -> beim jeweiligen Vertrag auf Konfigurieren -> Sicherheit/SSL -> SSL administrieren

Unten in der Liste sucht man sich die Domain raus, für die das Zertifikat werstellt wurde und klickt auf Ersetzen bzw. Anlegen.

Im folgenden Fenster gibt es drei Felder die mit einer Datei gefüllt werden und ein Passwort Feld:

  • Im Feld Zertifikat lädt ihr das fullchain.pem File rein
  • Im Feld Key lädt ihr das privkey.pem File rein
  • Unser von Let’s encrypt angelegtes Zertifikat benötigt kein Passwort, somit kann dieses leer bleiben.
  • Das Feld CA* wird ebenfalls einfach leer gelassen

Anschließend ein Klick auf Absenden und das Zertifikat sollte hochgeladen sein. Nach ein paar Minuten ist bei korrekter Konfiguration des DNS auch über https erreichbar.

Zwei zusätzliche Dinge sind bei Hosteurope noch zu beachten:

  • Wechselt ihr von http auf https muss meist auch der A-Eintrag im DNS auf eine andere IP gewechselt werden (mehr dazu findet ihr in den FAQs von Hosteurope
  • Diesen Vorgang müsst ihr nun alle 3 Monate durchführen, ihr werdet aber per E-Mail auf die am Anfang eingegebene Adresse 20 Tage vor Ablauf benachrichtigt

Ich hoffe mit diesem Artikel ein geeignete Anleitung für diese Nische verfasst zu haben und würde mich auf Feedback freuen.

Stromverbrauch bei einer Million zusätzlicher E-Autos

Ich bin in der Automatisierungstechnik tätig und arbeite im Bereich Motion Control. Dementsprechend begeistert bin ich von Elektromotoren und verteidige auch den derzeitigen Trend hin zur Elektromobilität.
Mir ist klar:

  • dass E-Autos noch nicht die gewünschte Reichweite haben
  • noch nicht so verfügbar sind wie der Verbrenner-Kollege
  • einige Probleme mit den Akkus noch nicht gelöst sind (Recycling, Ladestationen,…)

Jedoch wenn man sich das Klima weltweit ansieht, kommen wir auf so einen radikalen Umbruch in der Automobilen-Branche nicht drum rum und ganz ehrlich, 95% Wirkungsgrad des E-Antriebs sind hier ein starkes Argument.

Nichts desto trotz kommt es des Öfteren vor, dass ich mit Kollegen oder Bekannten über dieses Thema diskutieren darf und oft fällt folgender Satz: Wenn alle ein E-Auto fahren geht uns der Strom aus.

So, ich hab mal ein wenig nachgerechnet:

Angenommen von heut auf morgen steigen 1.000.000 (eine Million) Österreicher auf ein E-Auto um. Das würde bedeuten, dass bei einem durchschnittlichen Verbrauch von 20kWh/100km (Quelle), was einem mittleren Verbrauch bei eher kalten Temperaturen eines BMW i3 entspricht und bei 34 gefahrenen km/Tag/Österreicher (Quelle), pro Jahr ca. 2482kWh Strom zusätzlich pro Staatsbürger benötigt werden würde. Wenn man dies in € ausdrückt, dann ergibt das jährliche Kosten von 496,4€ bei einem Strompreis von 0,2€/kWh (Quelle) pro Österreicher. Ganz einfach weitergerechnet ergibt das 2482GWh Stromverbrauch in Österreich für eine Million E-Auto Fahrer.

Klingt erst mal viel, aber wenn man das nun auf den jährlichen Gesamtstromverbrauch in Österreich von 63390GWh (Quelle) bezieht, dann wäre das eine Steigerung von 3,915% was wiederum nicht so viel ist.

Also falls ihr auch mal in solch eine Diskussion kommt, hier habt ihr die nackten Zahlen.

PS: Müsste man diese 34km/Tag aufs Jahr gerechnet Diesel tanken kommt man bei einem Dieselpreis von 1,3€/Liter auf Gesamtkosten von 1024€…

iPhone DCIM Übertragung (Photos und Videos) bricht ab

Das Thema nervt mich schon länger und dürfte ab ca. iOS 10 aktuell sein. Wenn man am Windows PC seine Bilder von Hand auf den lokalen PC kopiert, also als DCIM Übertragung im Explorer, dann ist es mir oft (fast immer) passiert, dass er während der Übertragung abgebrochen hat mit einem Fehler: “Ein an das System angeschlossenes Gerät funktioniert nicht.”

Ich konnte diesen Fehler soweit eingrenzen, dass die Übertragung immer bei einem Video abgebrochen hat und hab bisher dann nur noch die Fotos übertragen.

Heute hat es mich so genervt, also mal ein wenig gegoogelt und dann bin ich auf folgenden Eintrag gestoßen: https://communities.apple.com/de/thread/200028951

Anscheinend konvertiert das iPhone beim Übertragen der Dateien die Files in ein anderes Format und dies scheint sich irgendwie nicht ganz mit dem Windows Übertragungsdienst zu vertragen.

Diese Option kann am iPhone in den Einstellungen unter Fotos, ganz unten bei Übertragung auf PC oder MAC mit der Auswahl “Originale behalten” abgestellt werden.

Anschließend muss das iPhone einmal neu mit dem PC verbunden werden und nun sollte alles funktionieren.

Tastaturkürzel unter Plasma

Für einen Windows Nutzer ist der Wechsel auf Linux gar nicht so einfach, wenn man viel mit Tastaturkürzel (zb. Win+E oder Win+D) und den Windows Boardmitteln (zb. Explorer) arbeitet. Gerade die Tastaturkürzel habe ich sehr häufig verwendet und diese vermisst man standardmäßig unter Linux komplett.

Was nicht heißen muss, dass man sie nicht nachrüsten kann:

  • Win (Meta)+D: Unter Windows löst dieses Kürzel ein minimieren aller Fenster aus. Um dies unter Plasma aktivieren zu können muss man zunächst für KWin das Skript zum Minimieren aller Fenster aktivieren. Dazu zuerst KWin-Skripte starten und dort muss das erste Skript “Alle minimieren” aktiviert werden. Mit einem Klick auf Anwenden und OK ist dieser Schritt erledigt. Als nächstes muss das Tastaturkürzel in den Globalen Kurzbefehlen hinzugefügt werden. Dazu diesen Einstellungsdialog öffnen und dort unter KWin oben mit der Suche MinimizeAll suchen. Den Eintrag markieren und dann bei Benutzerdefiniert auf den Button rechts daneben klicken. Nun kann man ein Tastaturkürzel seiner Wahl drücken und das sollte dann dort stehen (in meinem Fall Win+D oder im englischen Meta+D).
  • Win (Meta)+E: Unter Windows löst dieses Kürzel den Start des Windows Explorers aus. Bei Linux soll an dieser Stelle der Dateiexplorer Dolphin geöffnet werden. Dazu muss ein eigenes Shortcut erstellt werden. Zunächst den Einstellungs-Dialog Eigene Kurzbefehle starten. In diesem Fenster die oberste Gruppe markieren und unten auf Bearbeiten => Globaler Kurzbefehl => Anwendungsstarter-Eintrag klicken. Im neuen Fenster dann Dolphin als Name für den Kurzbefehl eingeben und rechts im Reiter Auslöser auf den Button neben Kurzbefehl klicken. Nun kann man ein Tastaturkürzel seiner Wahl definieren, in meinem Fall wird dies Win+D (Meta+D) sein. Zu guter Letzt noch auf den Reiter Aktion wechseln und dort auf Anwendung auswählen klicken. Im folgenden Dialog muss man nun Dolphin als Anwendung auswählen und mit OK bestätigen.

Diese Einstellungen werden nur selten getätigt und dadurch suche ich diese Dialoge immer wieder aufs neue. Durch die Macht der Gewohnheit, sind diese Kürzel unter Linux allerdings sehr praktisch, da sie nun die selben Aktionen ausführen wie unter Windows und einem so den gewohnten Workflow fortsetzen lassen.

Spotify Notification bei Songwechsel

Seit kurzer Zeit spielt Spotify in der Standardeinstellung eine kurze Notification bei einem Songwechsel ab. Den Sinn dahinter verstehe ich nicht ganz, wenn ich mir überlege wieviele MP3-Spieler ich bereits hatte, diese Idee kam noch keinem Hersteller in den Sinn.

Wie auch immer, das Geräusch muss weg. Nach kurzer Suche im Internet wird man gleich im wundervollen ArchWiki fündig. Diese Einstellung lässt sich im prefs File im Home Ordner des eingeloggten Users anpassen.

Dazu zuerst im Home Verzeichnis unter

cd ~/.config/spotify/Users/<myUser>-user/prefs

und dort dann die Zeile

ui.track_notifications_enabled=false

am Ende (oder am Platz deiner Wahl) hinzufügen. Achtung Spotify darf während diesem Vorgang nicht gestartet sein, da es beim Beenden die Einstellungen neu ins prefs-File rausschreibt und somit eure Änderung wieder dahin ist.

Twincat Web-Visualisierung

Nach langer Zeit gibt es mal wieder einen Blogeintrag, diesmal zu einem Thema aus einer ganz anderen Ecke. Meine Haupttätigkeit liegt eigentlich in der Automatisierungstechnik/SPS-Programmierung/Motion Control und genau diesem Thema widme ich diesen Eintrag.
In den letzten Jahren sind Web-Applikationen so ein bischen der Inbegriff für moderne, Industrie-4.0-fähige Steuerungen geworden. Diesen Trend haben auch die Hersteller wie Beckhoff usw. für sich entdeckt und arbeiten mit Hochdruck an HMI Lösungen basierend auf Web-Technologie (JavaScript, HTML5 uvm).
Gerade für Beckhoff gibt es allerdings eine einfache Möglichkeit solch eine Web-HMI selbst zu erstellen und das möchte ich hier in einem kurzen Tutorial zeigen.
Um auf Variablen in einer Twincat-SPS zugreifen zu können kommt man am ADS Protokoll nicht vorbei. Hierbei handelt es sich um eine Art Verbindung zwischen der in einer Echtzeit Umgebung laufenden Steuerung und der Außenwelt. Im Grunde läuft es so: Man verbindet sich auf eine Variable und bekommt deren Wert per Event oder man liest diese einmalig aus. Als HMI Backend dient in diesem Beispiel ein Python Webserver und das Frontend kann mit jedem beliebigen Framework (Bootstrap, JQueryUI) geschrieben werden.

  • Zuerst muss Python mit Version 3.x installiert werden.
  • Anschließend muss über den Python-internen Paketverwalter PIP das PyADS Paket nachinstalliert werden
    • Öffnet hierzu die Command Shell (Windows + R) und dann einfach cmd (ACHTUNG: Falls der normale User keine Adminrechte hat, dann muss die Command Shell als Admin ausgeführt werden)
    • Mit folgendem Befehl “python -m pip install pyads” installiert ihr das Paket
    • Python lädt dieses Paket automatisch runter und gleichzeitig wird auch sichergestellt ob die Pfad Variable zum Python Paket richtig geladen wurde, andernfalls würde der Befehl python nicht zur Verfügung stehen
  • Nun muss ein Webserver Verzeichnis eingerichtet werden
    • Ich hab hier einfach C:\www gewählt
    • Dort muss auch noch das Unterverzeichnis C:\www\cgi-bin angelegt werden, in welchem später die Python Skripts für alle Ajax Calls ausgeführt werden
  • Für den ersten Test erstelle ich ein einfaches SPS-Programm mit einer Zählervariable um in der Web-Visu was anzeigen zu können
    • Dieses Projekt am besten für den ersten Test lokal laufen lassen
  • Um den Python Webserver zu starten, öffnet ihr am besten erneut eine Command Shell und wechselt mit dieser in das www Verzeichnis (cd C:\www)
  • Dort angekommen startet ihr mit dem Befehl “python -m http.server –bind localhost –cgi 8000” den Python-Webserver
  • Wenn ihr nun in den cgi-bin Pfad das Script aus dem Bild kopiert und dieses vom Browser aus aufruft (https://localhost:8000/cgi-bin/test.py) dann sollte das Python Script eine Variable aus der SPS auslesen und als Textfile ausgeben => der Browser zeigt dieses File nun an

Hiermit könnt ihr nun jegliche Visualisierung erstellen und natürlich auch falls gewünscht Charts (mit Chart.js) anzeigen. Zudem ist diese Art sich auf SPS-Variablen einer Twincat Runtime zu verbinden gratis.