Sonntag, 15. Juli 2018

Raspberry Pi Stretch Lite - Installation incl. SSH Fernsteuerung

Die Installation habe ich bereits im Beitrag vom 23.05.2015 (http://sebastianhemel.blogspot.de/2015/05/raspberry-pi-raspbian-wheezy.html) beschrieben. Daher wieder ein kurzes Update zum aktuellen Raspbian Stretch Lite.

Der Download ist wie gewohnt unter https://www.raspberrypi.org/downloads/raspbian/ möglich. Nach dem Download muss das Zip-Archiv entpackt werden. Das Image ist folgendermaßen aufgebaut:
  • yyyy-mm-dd-wheezy-raspbian.img
Anschließend kann das Image mit Hilfe des Programms Etcher Portable oder auch mit dem bereits zuvor erwähnten Win32 Disk Imager auf eine FAT-32 formatierte SD-Karte installiert werden.


Nun sollte die Karte kurz aus dem Kartenleser entfernt werden und gleich weider eingesteckt werden. Jetzt kann man auf der Bootpartition des Pi eine leere Datei mit dem Namen ssh anlegen, um den Fernzugriff per ssh zu aktivieren.

Hierfür kann man den folgenden Power-Shell Befehl verwenden:
fsutil file createnew ssh 0

Danach ist der Zugriff mit putty und der IP-Adresse des Pi oder mit dem Host Name raspberrypi auf die Kommandozeile möglich. Benutzername und Passwort sind per default pi / raspberry .


Im Anschluss können die folgenden Einstellungen vorgenommen werden: http://sebastianhemel.blogspot.com/2015/05/raspberry-pi-einrichtung-nach.html

Mittwoch, 11. Juli 2018

Identitätsdiebstahl vermeiden - Schufa Dienst

Schufa bietet mittlerweile einen Datenleck-Informationsdienst an, wenn es um Finanzdaten (z.B. Kreditkarteninformationen) geht. Ab 3,95 EUR im Monat erhält man bei Schufa-Anfragen und -Eintragungen von Firmen zu seinen Daten eine E-Mail-Benachrichtigung,

Bucht man z.B. bei Netflix ein Abo und hinterlässt seine Kreditkarteninformationen, versendet in diesem Fall Schufa eine Warn- bzw. Infomail.
"Behalten Sie jederzeit die bei der SCHUFA gespeicherten Daten im Blick, lassen Sie sich automatisch über Änderungen informieren und klären Sie Fragen direkt online oder persönlich per Telefon** - mit meineSCHUFA"

Samstag, 23. Juni 2018

Android Smartphone tunen - GPU-Rendering / Entwickleroptionen

Hat man ein sehr günstiges Smartphone gekauft, wie ich zum Beispiel vor kurzem das Nokia 1 mit Android GO, dann kann mit Hilfe der Aktivierung des "GPU-Rendering" noch etwas Performance herausholen.

Als erstes muss man dafür die unter "Einstellungen" die "Entwickleroptionen" aktivieren. Dies geht über den Eintrag "Über das Telefon" öffnen.

 

Jetzt muss man die "Build-Nummer" suchen und sieben Mal hintereinander auf sie tippen, bis die Mitteilung "Sie sind nun Entwickler" angezeigt wird.


Im nun verfügbaren Menü "Entwickleroptionen", kann jetzt der Menüpunkt "GPU Rendering erzwingen" aktiviert werden.  

Der Grafikprozessor ist jetzt immer aktiv und kann so zu einer deutlich besseren Perfomace der Smartphones Apps führen.

Samstag, 9. Juni 2018

Persönliche Daten von Facebook abrufen

Facebook erstellt (wie Google, Twitter und Co.) umfangreiche Profile seiner Nutzer.

Über die folgende Funktion, kann man eine Übersicht seiner gespeicherten Daten abrufen:
"Allgemeine Kontoeinstellungen" => "Deine Facebook-Informationen"

Hier können jetzt alle Userdetails heruntergeladen werden und man erhält so eine guten Überblick über das Profiling von Facebook mit Hilfe von Algorithmen.

Hinweis: Die Erstellung der Datei dauert etwas, man wird per E-Mail informiert, wenn sie zum Download bereitsteht.

Samstag, 2. Juni 2018

Datenrettung mit einer Linux-Live-CD

Möchte man seine persönlichen Daten von der Festplatte retten, wenn die Windows Installation nicht wiederherstellbar ist, dann bietet sich die folgende Linux-Live-CD an:

SystemRescueCd: http://www.system-rescue-cd.org/
USB-Stick Installationsanleitung: http://www.system-rescue-cd.org/Installing-SystemRescueCd-on-a-USB-stick/

SystemRescueCd ist ein von CD bootendes Linux-System, mit der man anschließend sein PC-System reparieren und wichtige Daten retten kann.

Erkennen kann man die Windows-Partition in der Regel an "/dev/sda2", anschließend muss diese eingebunden werden (NTFS-3G), damit man darauf zugreifen kann:
ntfs-3g /dev/sda2 /mnt/windows
Folgende System-Tools bietet u.a. die SystemRescueCD:
  • GParted - Partitionierung eines Laufwerks änden (vergrößern oder verkleinern, neu angelegt, verschoben oder neu formatierten)
  • ClamAV - Virenscanner
  • TestDisk - Datenrettung, Bootsektoren wieder herstellen

Freitag, 1. Juni 2018

Schnell und einfach Treiber aktualisieren?

Sind die PC-Treiber nicht aktuell, kann dies zu einem instabilen System führen. Mit der folgenden Freeware kann man seine Treiber schnell und einfach automatisch aktualisieren lassen:

Driver Booster 5 Free: https://www.iobit.com/de/driver-booster.php


Samstag, 26. Mai 2018

Raspberry Pi - OLED Display (SSD1306) I2C ansteuern und Temperatur auslesen

Hier nun mein 2. Versuch erfolgreich ein Display anzusteuern, nachdem es beim LCD Display HD44780 (http://sebastianhemel.blogspot.de/2018/04/raspberry-pi-lcd-display-hd44780.html) immer wieder zu Problemen kam.

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.

Das 128 x 64 Pixel - 0,96 Zoll OLED I2C Display gibt es bei Amazon für ca. 7 EUR. 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, siehe auch folgende Grafik inkl. der korrekten Zuordnung für die Verkabelung:


Das Display wird zur Spannungsversorgung an 3,3 Volt (Pin 1) und Ground (ein GND z.B. Pin 6, 9, 14 usw.) und an die I2C Schnittstelle des Raspberry Pi angeschlossen. Für I2C muss man Pin 3 (SDA) und 5 (SCL) verwenden.

I2C Schnittstelle im Raspbian Betriebssystem einschalten:

Hinweis: Ich verwende den vi als Texteditor, man gerne auch z.B. den Nano verwenden.

sudo vi /etc/modules

Und die folgenden 2 Zeilen hinzufügen (zusätzlich zu denen vom Temperatursensor):

w1-gpio
w1-therm

i2c-bcm2708
i2c-dev


Jetzt muss noch die Konfigurationsdatei angepasst werden:
sudo vi /boot/config.txt

dtparam=i2c_arm=on #entfernen
dtparam=i2s=on     #entfernen

Jetzt muss noch ein reboot erfolgen, damit die Einstellungen übernommen werden:
sudo reboot

Damit man jetzt die Verbindung testen kann, sollte noch das folgemde Packet installiert werden:
sudo apt-get install i2c-tools

Mit dem folgenden Befehl kann überprüft werden, ob die Verbindung zum Display funktioniert bzw. verbunden ist:
i2cdetect -y 1

Installation der SSD1306 Bibliothek für Python

Damit der SSD1306 Displaycontroller angesprochen werden kann, muss noch die folgende Bibliothek installiert werden.

https://github.com/adafruit/Adafruit_Python_SSD1306

git clone https://github.com/adafruit/Adafruit_Python_SSD1306.git

Noch kein Git installiert? Dann muss noch der folgende Befehl ausgeführt werden:
sudo apt-get install git-core 

Jetzt in das soeben angelegte Git Verzeichnis gehen und per setup.py installieren:
~/Adafruit_Python_SSD1306 $ sudo python setup.py install

Sollte es zu den folgenden Fehlermeldung kommen:
error: Setup script exited with error: command 'arm-linux-gnueabihf-gcc' failed with exit status 1

Muss noch der folgende  Befehl ausgeführt werden:
sudo apt-get install python-dev 

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

Folgende (python) Module müssen noch installiert werden:

sudo apt-get install libjpeg8-dev zlib1g-dev libfreetype6-dev liblcms2-dev libwebp-dev tcl8.5-dev tk8.5-dev python-tk
sudo pip install --upgrade pip
sudo pip install Pillow (PIL ist die Python Imaging Library)

Jetzt kann es endlich losgehen, ich habe noch eine andere Schriftart verwendet. Weitere gibt es auch hier: https://www.dafont.com/bitmap.php
wget http://www.shemel.de/download/raspberry/arial.ttf


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

wget http://www.shemel.de/download/raspberry/OLEDdisplayTemp.py
chmod +x OLEDdisplayTemp.py
python OLEDdisplayTemp.py
(Quelle: https://learn.adafruit.com/ssd1306-oled-displays-with-raspberry-pi-and-beaglebone-black/usage)

Damit das Script direkt beim Starten des Pi ausgeführt wird, kann man jetzt noch einen Eintrag unter crontab -e hinzufügen:
@reboot python OLEDdisplayTemp.py


Quellcode:

#!/usr/bin/python
# coding=utf-8
# Temperatur von Sensor auslesen auf OLED Display anzeigen
# (c) Sebastian Hemel, www.shemel.de
#-----------------------------------------------------------------------------------
import time
import datetime
import re
import os, sys, threading

# 0,96 Zoll OLED Display 128x64 Pixel
import Adafruit_SSD1306
from PIL import Image, ImageDraw, ImageFont

a=u"°" # damit Sonderzeichen korrekt dargestellt wird 
 
#Quelle: http://www.schnatterente.net/code/raspberrypi/temperature.py
############################################################################################
# Temperatursensor Name ermitteln
SensorPfad = "/sys/bus/w1/devices/" # Pfad
SensorNames = open("/sys/bus/w1/devices/w1_bus_master1/w1_master_slaves" ,"r")
Sensor = SensorNames.readline()
if Sensor:
 SensorNames.close() 
 
# Temperatur ermitteln und Wert value zurckgeben
def GetTemp():
 a = open(SensorPfad+Sensor.strip()+'/w1_slave', 'r') # Ermittelten Sensor lesen
 Temp = a.readline()

 if re.match(r"([0-9a-f]{2} ){9}: crc=[0-9a-f]{2} YES", Temp): # Erste Zeile auf "YES" am Ende uberprufen
  Temp = a.readline()
  m = re.match(r"([0-9a-f]{2} ){9}t=([+-]?[0-9]+)", Temp) # Wert aus zweiter Zeile prufen 
 if m:
  value = str(float(m.group(2)) / 1000.0) # Wert nach t= auslesen und umwandeln
 a.close()
 return value # Ruckgabewert "value" definieren
# Temperatur zurueckgeben
############################################################################################
 
# Display einrichten
 
# Raspberry Pi pin configuration:
RST = 24
 
# Display 128x64 display with hardware I2C:
disp = Adafruit_SSD1306.SSD1306_128_64(rst=RST)
 
# Initialize library.
disp.begin()
 
# Clear display.
disp.clear()
disp.display()
 
# Create blank image for drawing.
# Make sure to create image with mode '1' for 1-bit color.
width = disp.width
height = disp.height
image = Image.new('1', (width, height))
 
# Get drawing object to draw on image.
draw = ImageDraw.Draw(image)
 
# Draw a black filled box to clear the image.
draw.rectangle((0,0,width,height), outline=0, fill=0)

# First define some constants to allow easy resizing of shapes.
padding = 2
shape_width = 20
top = padding
bottom = height-padding
 
# Move left to right keeping track of the current x position for drawing shapes.
x = padding
 
# Load default font.
#font = ImageFont.load_default() #
# Alternatively load a TTF font. => https://www.dafont.com/bitmap.php
font12 = ImageFont.truetype("font/arial.ttf", 12) # Schriftart, Schriftgröße
font20 = ImageFont.truetype("font/arial.ttf", 20)
font15 = ImageFont.truetype("font/arial.ttf", 14)

# Write two lines of text.
draw.text((x, top+15), ' (c) Sebastian Hemel',  font=font12, fill=255)
draw.text((x, top+30), '     www.shemel.de  ',  font=font12, fill=255)
 
# Display image.
disp.image(image)
disp.display()

time.sleep(5) # 5sec warten, damit Sensor ausgelesen werden kann

while True: # endlos Schleife
 try: # Fehler abfangen?
 
  now=datetime.datetime.now()
  Zeit = now.strftime("%d.%m.%Y - %H:%M:%S") # Aktuelles Datum + Uhrzeit
  Temp = GetTemp() # Temperatur messen....
  draw.rectangle((0,0,width,height), outline=0, fill=0) #clear Display
  draw.text((x, top), Zeit,  font=font12, fill=255)
  draw.text((x, top+15), '-------------------------------',  font=font12, fill=255)
  draw.text((x, top+30), Temp+' '+a+'C',  font=font20, fill=255)
  disp.image(image)
  disp.display()
  
  time.sleep(5) # 5sec warten, bis Sensor erneut abgefragt wird
 
 except KeyboardInterrupt: # STR+C = Abbruch
  draw.rectangle((0,0,width,height), outline=0, fill=0) #clear Display
  disp.image(image)
  disp.display()