Dienstag, 24. April 2018

Raspberry Pi - LCD Display (HD44780) ansteuern und Temperatur auslesen

Vor kurzem habe ich mir das LCD Display HD44780 für den Pi bei Amazon (HD44780 1602 LCD Module Display Anzeigen 2X16 Zeichen) für 2,33 EUR gekauft.

In diesem Artikel beschreibe ich, wie man das Display ansteuern kann und z.B. zur Anzeige von Datum, Uhrzeit und Temperatur (http://sebastianhemel.blogspot.de/2015/01/temperatursensor-ds18b20-raspberry-pi.html) verwenden kann.

Bitte auch meine Hinweise am Ende des Artikels beachten!

Es hat zwei Zeilen mit je 16 Zeichen und verfügt über 16 Kontakte. Siehe auch folgende Grafik inkl. der korrekten Zuordnung für die Verkabelung:


Die Kabel vom Display zum Pi habe ich nicht gelötet, sondern nur gesteckt. Hierfür habe ich Jumperkabel verwendet und diese über Listerklemmen verbunden. Alternativ kann man dies auch über ein Laborsteckboard realisieren.

Folgender Aufbau ergibt sich inklusive Verwendung des Temperatursensor DS18B20:


Wenn die Verkabelung korrekt ist, kann der Pi gestartet werde. Das LCD-Display sollte dann sofort aufleuchten (ersten Zeile alle Pixel angeschaltet, in der zweiten Zeile sollten alle dunkel bleiben).

Anschließend muss noch das RPi.GPIO Package für python installiert werden:

sudo apt-get install python-pip
sudo pip install RPi.GPIO

oder

Manueller Download unter https://archive.raspberrypi.org/debian/pool/main/r/rpi.gpio/:

wget https://archive.raspberrypi.org/debian/pool/main/r/rpi.gpio/python-rpi.gpio_0.6.3~jessie-1_armhf.deb
dpkg -i python-rpi.gpio_0.3.1a-1_armhf.deb

Mit der folgenden python Datei, kann das Display getestet werden:

wget http://www.shemel.de/download/raspberry/hd44780_test.py
chmod +x hd44780_test.py
python hd44780_test.py
(Quelle: https://tutorials-raspberrypi.de/raspberry-pi-lcd-display-16x2-hd44780/)

Mit dem folgenden Quellcode kann jetzt der Temperatursensor DS18B20 ausgelesen werden und die aktuelle Temperatur steht im Display:

wget http://www.shemel.de/download/raspberry/display-temp.py
chmod +x display-temp.py 
python display-temp.py  
(Quelle: http://www.schnatterente.net/code/raspberrypi/temperature.py)

...
        Temp = GetTemp() # Temperatur messen....

        lcd_send_byte(LCD_LINE_1, LCD_CMD)
        lcd_message("Temperatur")
        lcd_send_byte(LCD_LINE_2, LCD_CMD)
        lcd_message(Temp+chr(223)+"Celsius")

...

Wichtige Hinweise

  • Generell kann es zu dem Problem kommen, dass Buchstaben teilweise nicht korrekt angezeigt werden. Dieses Problem hatte ich immer wieder, wenn ich nach LCD_LINE_1, LCD_LINE_2 weitere Informationen anzeigen wollte. Dies ist vermutlich produktionsbedingt bei diesem "billigen" Display immer wieder mal der Fall.
  • Das Display reagiert teilweise auch sehr "feinfühlig" auf Spannung. Verwendet man also ein günstiges Netzteil, was keine konstante Spannung von 5V liefert, kann es auch hier zu Anzeigeprobleme kommen.

Donnerstag, 22. März 2018

Softwaretest bei agiler Entwicklung durch Testautomatisierung


Das Testen von Software bzw. eines fertigen Teilprodukts (Product Increment) ist ein fester  Bestandteil der agilen Softwareentwicklung und somit auch ein festes Element während eines Sprints.

Gerade bei Testfällen, die sehr oft wiederholt werden, ist eine Automatisierung sinnvoll (z.B. Regressionstests, testgetriebene Entwicklung oder schwer durchführbaren Tests). Viel zu oft wird gerade bei nicht automatisierten Tests die Anwendung nicht ausgiebig genug getestet.

Folgende Grundsätze sollten daher angewendet werden:

  • So viel Testautomatisierung wie möglich, damit bei vielen neuen oder sich ändernde Anforderungen ein lauffähiges System gewährleistet wird. Darunter fallen Unit Tests, System- und Akzeptanztests.
  • Die Rolle "Tester" innerhalb des Entwicklungsteam verteilen, damit die Zuständigkeit innerhalb des Entwicklerteams gleich ist. Keine strikte Trennung zwischen Entwickler und Tester aufbauen!
  • Teststufen des V-Modells (Einordnung von Testzyklen) aufheben, da dies innerhalb eines Sprints nicht umsetzbar ist und einen zu hohen zeitlichen Aufwand bedeutet. Die einzelnen Teststufen (Komponententest, Integrationstest usw.) sollte als kleine Einheiten innerhalb der einzelne User-Stories integriert oder teilweise als einzelne User-Story je Sprint geplant werden
  • Der finale Abnahmetest (User Acceptance Test) erfolgt jeweils am Ende eines Sprints durch den eigentlichen Auftraggeber oder Product Owner.
  • Continuous Integration, der Prozess des fortlaufenden Zusammenfügens von Komponenten hin zu einer Anwendung, hat das Ziel zur Steigerung der Softwarequalität. Hier erfolgt ein Zusammenspiel von einem Versionsverwaltungssystem z.B. SVN oder GIT, einem Artifactory z.B. Nexus, automatisierter Tests (z.B. JUnit) und einem Tool (z.B. Jenkins ) zur Verwaltung der Continuous Integration (bauen von Pakten und deployen der Anwendung). Dieser Prozess wird z.B. automatisch durch Einchecken einer Codeänderung in das Versionsverwaltungssystem gestartet.

Sonntag, 18. März 2018

AVM FRITZ!DECT Smarthome und Alexa?

Out of the box bietet AVM keine Möglichkeit seine Smarthome Geräte mit Alexa und Co. kommunizieren zu lassen. AVM überlässt diese Möglichkeit aktuell einem Drittanbieter (FB SMART HOME), sich um die Integration zu kümmern.

Um den Fernzugriff zu ermöglichen, sollte für die FRITZ!Box ein eigener Benutzer erstellt werde, der nur Zugriff auf die Smarthome Funktion bekommt. Zwingend erforderlich ist auch die Einrichtung des MyFRITZ! Dienstes, damit der externe Zugriff funktioniert.

Auf der Webseite www.fbsmarthome.site erfolgt dann die Konfiguration der Skills, anschließend sollte dann auch die AVM Geräte in der Alexa-App als Aktoren sichtbar sein.

Was das Thema Datenschutz angeht, hier sollte jedem klar sein, dass dauerhaft in der AWS-Cloud Amazon ID, FRITZ!Box Adresse, FRITZ!Box Benutzername, FRITZ!Box Passwort und die Liste der Smart Home Geräte gespeichert werden!

AVM bietet aktuell folgende Smarthome Geräte an:

Sonntag, 4. März 2018

Externe WLAN Antennen bei der Fritz!Box nachrüsten

Die Fritz!Box von AVM verfügrt in der Regel nur über interne Antennen, daher schneiden sie oft bei Tests im Bereich der WLAN Reichweite nicht sonderlich gut ab. Möchte man keinen Repeater einsetzen, lohnt es sich externe Antennen nachzurüsten.

Passende Sets gibt es hier:
FriXtender – Fritz!Box WiFi Erweiterung mit externen WLAN Antennen
Anschließend sollte auch wieder die nachfolgende Optimierung erfolgen:
http://sebastianhemel.blogspot.de/2016/07/wlan-langsam-funkkanal-optimieren.html 

Wie sicher ist mein Passwort?

In dem Beitrag Have i been pwned? Gehäckte Passwörter checken! habe ich darauf hingewiesen, wie man erkennen kann ob das eigene Kennwort bei einem Datenklau gestohlen wurde.

Mit der folgenden Webseite "HOW SECURE IS MY PASSWORD?" kann man checken, wie lange es dauern würde sein Passwort mit Hilfe von einer Brute-Force-Attacke zu knacken.

Kommandozeilen Spiel - ninvaders (Space Invaders)

Für viele die mit dem Raspberry Pi experimentieren und ihn ohne GUI bzw. X-Server betreiben, gibt es mittlerweile einige Spiele, die man nur auf der Kommandozeile bzw. in der Shell spielen kann.

Eines davon ist zum Beispiel ninvaders, dabei handelt es sich um eine Variante des Weltraum-Ballerspiels Space Invaders. Interessant ist sicherlicher auch der folgende Pacman-Klon.

Installieren kann man es einfach mit dem folgenden Befehl:
sudo apt-get install ninvaders

Danach lässt sich das Spiel mit dem folgenden Befehl starten:
ninvaders
/usr/games/ninvaders

Vielp Spaß beim Zocken!


Montag, 19. Februar 2018

Let’s Encrypt für Synology-NAS mit DSM 6

Schon seit längeren sind die SSL Zertifikate von der Organisation letsencrypt.org in aller Munde. Ich möchte daher kurz zeigen, wie man auch diese für sein NAS zu Hause einsetzen kann. Dies ist vor allem dann wichtig, wenn man per Fernzugriff auf Dateien zugreifen möchte.

Aktuell führt dies zu Zertifikatsfehlern im Browser, da die eingesetzten Zertifikate in der Regel von einem nicht vertrauenswürdigen CA signiert wurden.


Ab der Firmware Version DSM 6 von Synology ist es möglich mit sehr wenig Aufwand ein SSL Zertifikat von Let´s Encrypt einzubauen.

 
Dafür in die Admin Web Oberfläche des NAS gehen http(s)://IPADRESSE:5000(5001) und Systemsteuerung aufrufen und den Erweiterten Modus anzeigen lassen.


Jetzt im Menü Sicherheit den Reiter Zertifikat auswählen und Hinzufügen anklicken.


Anschließend im Dialog auswählen, dass ein Zertifikat von Let´s Encrypt abgerufen werden soll. Wichtig ist, dass jetzt im nachfolgenden Dialog der Name der Domain (auf die das Zertifikat ausgestellt werden soll) eingetragen wird, unter dann auch das NAS über den Port 80/443 im Internet (durch eine zuvor eingerichtete Port-Weiterleitung) zu erreichen ist.


Hier kann es jetzt noch zu einem Problem kommen, wenn man z.B. einen recht populären DynDNS Dienst wie "xyz.selfhost.de" verwendet. Es kommt dann zu der folgenden Fehlermeldung:
"Die maximale Anzahl von Zertifikatsanforderungen wurde für diesen Domänennamen erreicht."
Let’s Encrypt erlaubt nur eine beschränkte Anzahl von Zertifikatsanforderungen. So werden aktuell nur 5 Zertifikate pro Woche und Domain (unabhängig der Subdomain) vergeben. Daher ist es besser in diesem Fall auf einen anderen Dienst wie zum Beispiel FreeDNS umzusteigen.

Mittwoch, 14. Februar 2018

Excel: Aktienkurs mit Zielwertsuche ermitteln

Mit Hilfe der Zielwertsuche von Excel kann man eine Berechnung mit variablen Daten durchführen, bis eine Lösung für das eingegebene Ziel gefunden wurde.

Hiermit lässt sich zum Beispiel ein Aktienkurs ermitteln, damit ein gewünschter Gewinn erreicht wird.


In der Tabelle wird als erstes der Kaufpreis und die Kosten für den "Trade" ermittelt. Daraus ergeben sich dann die "Gesamtkosten".

Die Aufstellung erfolgt dann analog für einen möglichen Verkauf der Aktie. Anschließend lässt sich mit Hilfe der Zielwertsuche der Aktienkurs für den gewünschten Gewinn ermitteln.



Download der Beispieldatei: www.shemel.de/download/Aktien_Zielwertsuche.xlsx

Freitag, 9. Februar 2018

LAN-Kabel Bezeichnung verstehen

LAN-Kabel bzw. Patchkabel gibt es in verschiedenen Kategorien:
  • Cat 5 oder Cat 5e
    • 1 GBit/s
    • Möglich sind aber auch bis zu 10 GBit/s bei einer kurzen Kabellänge < 10m.
  • Cat 6 bis Cat 7
    • 10 GBit/s
    • Die Geschwindigkeit ist hiermit garantiert möglich, auch bei längeren Kabeln.
Außenabschirmung:
  • U/: ungeschirmt
  • F/: Folie
  • S/: Drahtgeflecht

Ader-Abschirmung:
  • UTP: ungeschirmte verdrillte Adern (Unshielded Twisted Pair)
  • FTP: per Folie geschirmte Adern (Foiled Twisted Pair)

Und wann sollte man jetzt welches Kabel verwenden?

Ungeschirmte Kabel sind dünner und sollten am besten "auf den letzten Metern" verwendet werden, also z.B. vom Router oder Switch zum PC.

Muss eine längere Strecke überwunden werden und arbeiten mehr Geräte an diesem Kabel, dann sollten abgeschirmte Kabel verwendet werden.

Montag, 22. Januar 2018

Windows - Bluetooth Maus verliert Verbindung

Nach der Umstellung auf eine Bluetooth Maus, wurde immer die Verbindung im Akkumodus gekappt. Nach kurzer Suche im Gerätemanager konnte das Problem mit den folgenden Einstellungen behoben werden.

So behält die Bluetooth-Maus dauerhaft die Verbindung

  • Bluetooth-Energieverwaltung ausschalten
    • „Geräte-Manager“ in der Systemverwaltung öffnen oder über die Suche starten
    • Im "Geräte-Manager" das Gerät „Bluetooth“ aufklappen und in der Liste "Intel(R) Wireless Bluetooth(R)" auswählen und auf "Eigenschaften" klicken.
    • In der Energieverwaltung den folgenden Eintrag deaktivieren:
      • "Computer kann das Gerät ausschalten, um Energie zu sparen"

Samstag, 20. Januar 2018

VPN Zugriff mit der Fritz Box

Gerdade wenn man unterwegs ist, kann es oft sehr praktisch sein, dass man auf sein Heimnetz zugreifen kann. So ist es möglich , dass man auch an einem öffentlchen WLAN Hotspot sicher surft und man hat Zugriff auf seine FRITZ!Box oder seinem NAS.

Öffentliche IP-Adresse abrufen (DynDNS)

Für den vollen Zugriff per Windows, wird ein VPN-Client von z.B. Shrew Soft benötigt. Als nächtses wird die "öffentliche" IP-Adresse der FRITZ!Box benötigt. Dies geht zum einen mit dem MyFritz-Dienst von AVM oder auch mit einem beliebigen "DDNS über HTTP" (DynDNS) Anbieter wie z.B. selfHOST.


VPN-Verbindung einrichten

Es sollte für jeden VPN-Verbindung ein eigener Benutzer eingerichtet werden.


Der Benutzer muss eine "VPN-Verbindungen zur FRITZ!Box herstellen" dürfen. Das Kästchen "VPN" muss daher aktiviert werden.

Jetzt den Shrew Soft VPN Access Manager starten und auf die Schaltfläche "Add" klicken. Jetzt die oben erwähnten Daten hinzufügen:
  1. Auf der Registerkarte "General" MyFRITZ Domainnamen der FRITZ!Box bzw. des DynDNS anbieters eintragen (xxxx.selfhost.eu).
  2. Auf der Registerkarte "Authentication", unter "Authentication Method" den Eintrag "Mutual PSK + XAuth" auswählen.
  3. Auf der Registerkarte "Local Identity", unter "Identification Type" => "Key Identifier" auswählen und unter "Key String ID" den Benutzernamen des FRITZ!Box-Benutzers eintragen.
  4. Auf der Registerkarte "Remote Identity", unter "Identification Type" => "IP Address" auswählen.
  5. Auf der Registerkarte "Credentials", unter "Pre Shared Key" das "Shared Secret" des zuvor angelegten Benutzers eintragen (VPN-Einstellungen anzeigen). 


Weitere Anleitungen gibt es auch direkt von AVM unter avm.de/service/vpn .

Samstag, 13. Januar 2018

Update: Cryptomining per JavaScript unterbinden

Ein kurzes Update zum Beitrag “Cryptominingper JavaScript unterbinden”. Mit der Version 50 des Opera Browser ist es möglich sich gegen verstecktes Bitcoin-Mining zu schützen.

Die Funktion nennt sich NoCoin und kann in den Einstellungen des Werbeschutzes eingeschaltet werden.



Siehe auch http://blogs.opera.com/desktop/2018/01/opera-50-introduces-anti-bitcoin-mining-tool/