Mein ThingSpeak Setup

Schon etliche Jahre betreibe ich einen Temperatur Sensor DS18B20 bei ThingSpeak. Aber irgendwann dieses Jahr ist mir mein Raspberry abgeschmiert und lieferte keine Daten mehr.

Mein ThingSpeak Channel

Heute hatte ich endlich die Muse mich um das kleine Kästchen zu kümmern. Wie sich herausstellte ist die SD Card korrupt. Also der Supergau. Das Raspian stammte von Mai-2016 (nicht schlecht, 3 1/2 Jahre)

Dieser Beitrag zeigt wie ich meinen Raspberry wieder zum Leben erweckt habe. Also eine Komplettinstallation und die Installation meiner Python Tools und Skripte.

Das Basis Setup

Als erstes einmal das aktuelle Raspian heruntergeladen.

Wie man es installiert und auf die SD Karte bringt habe ich ja schon beschrieben. Siehe Quickstart V3 und Quickstart V2. Nur auf die WLAN Konfiguration habe ich verzichtet, da mein Raspi kein WLAN besitzt und auch bisher am LAN hängt.

Updating to STABLE Kernal

Bisher bin ich immer davon ausgegangen, dass

sudo rpi-update

den aktuellen, stabilen Linux kernel und Raspberry Pi firmware installieren.

Wie ich aber nun in der “Updating the Kernal” Seite lese, bekomme ich möglicherweise Beta und instabile Version. Das richtige Vorgehen ist:

sudo apt update
sudo apt install --reinstall raspberrypi-bootloader raspberrypi-kernel

Aktuelle Version des Bootloader und des Kernel abfragen:

uname -a
Linux pi-thingspeak 4.19.75-v7+ #1270 SMP Tue Sep 24 18:45:11 BST 2019 armv7l GNU/Linux

Hier noch einmal der komplette Update/Upgrade Weg:

First, update your system's package list by entering the following command:

# sudo apt update

Next, upgrade all your installed packages to their latest versions with the following command:

# sudo apt full-upgrade

Note that full-upgrade is used in preference to a simple upgrade, as it also picks up any dependency changes that may have been made. 

VNC aktivieren

Wie in meinem Post aus 2018 erklärt, ist RealVNC Teil der Installation. Einfach der Anleitung auf Raspberry.org folgen.

Python Files kopieren

Nachdem nun alles normal funktioniert:

  • SSH
  • VNC
  • User Settings
  • upgrade und update

kopiere ich meine BACKUP Dateien wieder in das pi Home Verzeichnis.

DS18B20 aktivieren

Als nächstes den Temperatur Sensor aktivieren und mit einem kleinen Script local testen. Infos zum Sensor habe ich in einem Beitrag zusammengefasst.

Device Treiber aktivieren. Das geht auch über das Rasp-Config Tool:

Sensor device am w1 bus identifizieren (könnte jetzt anders sein).

Mit Script example_ds18b20_sensor.py den Sensor local prüfen.

LED testen

Mein Script verwendet auch noch eine LED.

ThingSpeak manuell testen

Als erstes einmal das Testskript laufen lassen, das eine einfach Status Meldung absetzt:

Nun kommt der entscheidende Schritt. Das Python Script zum Senden eines Temperatur Wertes alle 15min starten.

Nun ein paar Stunden laufen lassen und prüfen, ob auch ThingSpeak allmählich eine Kurve erscheint und auch die anderen Daten vernünftig aussehen.

Skript im systemd etablieren

Dazu habe ich schon einen Beitrag geschrieben. Das Konfigurations Skript habe ich natürlich noch. Raspberry.org hat auch eine gute Beschreibung.

Die Raspberry Anleitung verweist auch auf diese Seite:

Quickstart -v3

Hier mal wieder eine aktuelle Version zum Installieren eines neuen Raspian auf einer frischen SD-Karte.

Alle wesentlichen Installationsanweisungen des Quickstart – v2 sind nach wie vor gültig.

Die zwei wesentlichen und wichtigen Ergänzungen sind:

  1. SSH enable (für Headless)
  2. WIFI Konfiguration (für Headless)

SSH enable

Eine gute Anleitung findet sich in der Zwischenzeit auf raspberry.org selbst.

Ich habe mich dafür entschieden, nach dem flash der SD-Karte auf der Boot Partition SSH zu enablen. Dazu einfach auf der Boot Partition ein File mit dem namen ssh anlegen (ohne Inhalt).

WIKI Konfiguration (Raspbian Stretch)

Um die WIFI Konfiguration schon vorzudefinieren, wird auf die Boot Partition die Datei wpa_supplicant.conf mit folgendem Inhalt kopiert/erstellt:

# Datei wpa_supplicant.conf in der Boot-Partition (Raspbian Stretch)
country=DE  #omit if US
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
       ssid="wlan-bezeichnung"
       psk="passwort"
       key_mgmt=WPA-PSK
}

So schaut nun die Boot Partition aus, bevor die SD-Karte in den Raspi gesteckt wird:

Boot Partition Dateien

Quellen:

WLAN schon vor der Inbetriebnahme konfigurieren

 

Raspberry Pi – VNC Konfiguration – v2

Nachdem nun die Jessie Version bei Raspian aktuell ist, war es einmal an der Zeit den alten Artikel durch einen neuen, aktuellen zu ersetzen.

Auf dem Pi

Das Paket TightVNC mit dem Packetmanager installieren (xfonts werden mit installiert):

sudo apt-get install tightvncserver

TightVNC konfigurieren

vncserver
You will require a password to access your desktops.
Password:
Verify:
Would you like to enter a view-only password (y/n)? n

New 'X' desktop is raspi-test2:1

Creating default startup script /home/pi/.vnc/xstartup
Starting applications specified in /home/pi/.vnc/xstartup
Log file is /home/pi/.vnc/raspi-test2:1.log

Passwort vergeben. Bei read only N eingeben.

Nun kann schon einmal per RealVNC vom Windows Rechner aus zugegriffen werden:

  • 192.168.65.xx:1 mit IP Adresse und dem gewähltem Passwort
  • raspi-test2:1 mit Rechner Name und dem gewähltem Passwort

Unter Windows am PC

Hier benutze ich RealVNC.

Eine Installation ist nicht nötig. Mit der folgenden Anleitung habe ich das Programm an mein Windows 10 Startmenü geheftet:

Copy / Paste zwischen Windows und Raspi

Von Haus kann man nicht Text zwischen dem Raspi und Windows hin und her kopieren. Dazu muss man autocutsel installieren:

sudo apt-get install autocutsel

Im Anschluss noch die Konfigurationsdatei des vnc servers (~/.vnc/xstartup) mit dem autocutsel Kommando erweitern:

#!/bin/sh

xrdb $HOME/.Xresources
xsetroot -solid grey
autocutsel -fork
#x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
#x-window-manager &
# Fix to make GNOME work
export XKL_XMODMAP_DISABLE=1
/etc/X11/Xsession

Danach den vncserver neu starten:

vncserver -kill :1 (pick your display number)
vncserver :1

Tuning. Display :0 disable

Wenn man den Raspi ausschliesslich per remote VNC Viewer bedienen möchte, kann man den Display Manager des Hauptdisplay :0 entfernen:

service lightdm stop

Tuning. Mauspointer

Statt des großen Kreuzes in der remote VNC, lässt sich auch ein normaler Mauszeiger konfigurieren. Dazu ergänzt man in der vnc Konfigurationsdatei ~/.vnc/xstartup

xsetroot -solid grey -cursor_name left_ptr

Tuning. Secure VNC mit putty Tunnel

Von Haus aus ist das VNC Protokol nicht sicher und überträgt alles im Klartext. Dies lässt sich dadurch vermeiden, indem man per putty einen SSH Tunnel zu Raspi aufbaut und erst darüber den VNC viewer startet. Dies ist in einer englischen Anleitung beschrieben.

Automatischer Start des VNCSERVER mit systemd

Seit Jessie wird zum automatischen Start der systemd eingesetzt. Um den vncserver automatisch beim Booten zu starten, müssen wir eine .service Datei für den systemd erstellen. Diese muss an folgender Stelle angelegt werden (unter dem Directory system kann man eigene service Dateien anlegen):

sudo nano /etc/systemd/system/vncserver.service

Ein passender Inhalt kann wie folgt aussehen:

# neue Datei /etc/systemd/system/vncserver.service
[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target

[Service]
Type=forking
User=pi
PAMName=login
PIDFile=/home/pi/.vnc/%H:1.pid
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill :1 > /dev/null 2>&1 || :'
ExecStart=/usr/bin/vncserver -geometry 1300x800 -depth 16 :1
ExecStop=/usr/bin/vncserver -kill :1

[Install]
WantedBy=multi-user.target

Das File noch präparieren. Owner root und executable:

sudo chown root:root /etc/systemd/system/vncserver.service
sudo chmod 755 /etc/systemd/system/vncserver.service

Enable den Start beim Booten:

sudo systemctl enable vncserver

Um den VNC Server manuell zu starten:

sudo systemctl daemon-reload && systemctl start vncserver

Um den Status des VNC Server abzufragen:

sudo systemctl status vncserver

Um den VNC Server zu stoppen:

sudo systemctl stop vncserver

Quellen