Raspberry PI Project Setup [2024]
Flashing Raspberry
Der Raspberry PI Imager ist die einfachste Möglichkeit, eine SD-Karte für einen Raspberry vorzubereiten.
Headless Setup
Für ein Headless Setup sollten während des Flash-Vorgangs die wichtigsten Informationen vor-eingestellt werden. Hierzu gehören die WiFi-Verbindung (falls benötigt), das Passwort und die Aktivierung von SSH.
Updates durchführen
sudo apt-get dist-upgrade
sudo apt-get update
sudo apt-get upgrade
Allgemeine Packages
Folgende Pakete werden meistens benötigt und werden bei Bedarf OS-weit installiert:
sudo apt-get install build-essential
sudo apt-get install python3-full
sudo apt-get install python3-dev
sudo apt-get install python3-setuptools
sudo apt-get install python3-pil
sudo apt-get install git
sudo apt-get install swig
sudo apt-get install i2c-tools
Virtual Environment Setup
Gerade bei neueren Versionen des Raspberry PI muss zuerst eine virtuelle Umgebung erstellt werden.
Als erstes wird dazu eine virtuelle Umgebung definiert und erstellt:
python3 -m venv --system-site-packages VENVNAME
Die Option --system-site-packages gibt an, dass Module, die auf System-Ebene installiert sind, ebenfalls in der VENV erreichbar sind. Der Name für die virtuelle Umgebung kann frei gewählt werden. Als Beispiel wird hier venvtp verwendet. Die Installation der virtuellen Umgebung kann im User-Verzeichnis /home/pi/ durchgeführt werden.
Danach wird die virtuelle Umgebung "aktiviert":
source /home/pi/venvtp/bin/activate
Damit nicht bei jedem Start einer Applikation der gesamte Befehl sudo /home/pi/venvtp/bin/python3 script.py eingegeben werden muss, kann ein Alias erstellt werden, welcher das abkürzt:
alias supy='sudo /home/pi/venvtp/bin/python3'
Danach können Scripts ganz einfach über den Befehl supy start.py aufgerufen werden. Allerdings muss dieser Alias zusätzlich in die Datei .bashrc gespeichert werden, damit er dauerhaft bestehen bleibt. Ausserdem wird ein Eintrag für die Aktivierung der VENV hinzugefügt. Dazu wird die Datei ~/.bashrc mittels nano geöffnet und am Ende der Datei folgende Zeilen eingesetzt:
elif [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
fi
alias supy='sudo /home/pi/venvtp/bin/python3'
alias venv='source /home/pi/venvtp/bin/activate'
Webserver Setup
Apache deinstallieren
Zuerst soll die Apache-Installation deaktiviert und deinstalliert werden, falls vorhanden und aktiv:
sudo systemctl stop apache2
sudo systemctl disable apache2
sudo apt remove apache2
sudo apt autoremove
sudo apt clean all && sudo apt update && sudo apt dist-upgrade
sudo apt purge apache2
NGINX installieren
NGINX ist eine Webserver-Applikation, welche die Grundfunktionalitäten für den Webserver bereitstellt. Diese wird über folgende Befehle installiert und dann gestartet.
sudo apt-get install nginx
Nach der Installation von nginx sollte die IP-Adresse des Raspberry pi über einen Webserver aufrufbar sein und die nginx Welcome-Seite dargestellt werden.
PHP installieren
Um PHP zu installieren wird folgender Befehl ausgeführt:
sudo apt-get install php-fpm
Die fpm-Version wird benötigt, falls der Webserver auf NGINX und nicht Apache2 basiert.
MySQL Server installieren
MySQL (mariadb) wird mit folgendem Befehl installiert:
sudo apt-get install default-mysql-server
NGINX Konfiguration
Als erstes wird die Konfigurations-Datei aufgerufen:
sudo nano /etc/nginx/sites-enabled/default
Hier werden einige Konfigurationen benötigt. Das folgende Beispiel zeigt eine Möglichkeit, den Server zu konfigurieren. Hierbei werden folgende Einstellungen vorgenommen:
- Das Root-Verzeichnis der Website (/home/pi/..../web)
- Das reagieren auf die index.php als Eingangspunkt
- Der Server-Name xyz.pi
- Das Reagieren und Auslesen auf URL-Argumente wie z.B.
index.php?page=settings - Zugriff auf .htaccess verhindern
Am Ende sollte die Config-Datei ungefähr wie folgt aussehen:
server {
listen 80 default_server;
listen [::]:80 default_server;
# define the website root
root /home/pi/wClock/web;
#define to listen to index.php first
index index.php index.html index.htm index.nginx-debian.html;
# define the server name
server_name puzzle.pi;
# define to process arguments within the urls
location / {
try_files $uri $uri/ /index.php?q=$uri&$args;
}
# pass PHP scripts to FastCGI server
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
Berechtigungen für das Web-Verzeichnis setzen. Der gesamte Pfad benötigt read und execute Permissions:
# sudo chown -R www-data:www-data /home/pi/testipi/web
# sudo chown -R www-data:www-data /home /home/pi /home/pi/testipi/ /home/pi/testipi/web
# sudo chmod 755 /home/pi/testipi/web
sudo chmod +rx /home /home/pi /home/pi/testipi/ /home/pi/testipi/web/
Nach diesen Anpassungen muss der NGINX-Service neu gestartet werden:
sudo systemctl reload nginx
Nun sollte der Webserver und eine index.php im Verzeichnis /web per Browser aufrufbar sein.
PHP Error Reporting & Display
Wenn beim Aufruf einer PHP-Seite Fehler passieren, werden Sie aktuell noch nicht im Browser sondern nur im Error-Log von nginx ausgegeben. Um das zu ändern, müssen noch ein paar Schritte unternommen werden. Zuerst wird die entsprechende php.ini geöffnet.
sudo nano /etc/php/8.2/fpm/php.ini
Der Wert display_errors (relativ weit unten im File) wird von Off zu On geändert und die Datei gespeichert.
PHP Short Tags
Ausserdem können in der PHP.ini die PHP Shorttags (also <? anstatt <?php) aktiviert werden:
short_open_tag = On
Nach dem Update der Datei, wird der PHP service neu gestartet:
sudo /etc/init.d/php8.2-fpm restart
Nun werden die Errors sowohl im nginx Log gespeichert wie auch im Browser direkt ausgegeben.
MySQL Konfiguration
Nach der Installation von MySQL (MariaDB) wird die Konfiguration gestartet. Das Basis-Setup ist durch folgenden Befehl zu erreichen:
sudo mysql_secure_installation
Die Passwort-Abfrage kann mit Enter bestätigt werden, da noch keines gesetzt wurde. Dann soll mit Y zur unix_socket_authentification gewechselt werden. Abermals Y führt zur neuen Passwort-Vergabe für den root user. Danach wird für anonymous_users, disalow_rootlogin, remove_testdatabase und reload_configuration ebenfalls jeweils mit Y geantwortet. Damit ist das Setup grundsätzlich abgeschlossen und mittels folgendem Befehl kann auf mysql zugegriffen werden:
sudo mysql -uroot -p
Danach wird das root Passwort abgefragt, welches vorher gesetzt wurde. Die Installation kann zum Beispiel mittels SHOW DATABASES; getestet werden, welches die bereits vorhandenen Datenbanken ausgeben sollte.
Datenbank und User definieren
Mittels folgender Befehle wird eine neue Datenbank und ein dazugehöriger User erstellt, ihm alle Rechte gegeben und die Konfiguration reloaded:
CREATE DATABASE db_test;
CREATE OR REPLACE USER 'usr_test'@'%' IDENTIFIED BY 'test77';
GRANT ALL PRIVILEGES ON db_test.* TO 'usr_test'@'%' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
Um diesen Schritt zu testen, kann eine Verbindung mit dem neuen User zu MySQL hergestellt werden:
sudo mysql -u usr_test -p
Nach Eingabe des vorher vergebenen Passwortes, gelangt man wieder in die MySQL-Umgebung, diesmal mit dem neuen User.
Damit die Datenbank auch von extern zu erreichen ist, muss in der Konfiguration noch ein sogenanntes Bind eingetragen werden:
sudo nano /etc/mysql/my.cnf
Folgende beiden Zeilen werden am Ende der Konfiguration eingetragen:
[mysqld]
bind-address = 0.0.0.0
Danach wird der Server über folgenden Befehl neu gestartet. Danach sollte eine Verbindung von ausserhalb (z.B. PyCharm, etc.) möglich sein.
sudo systemctl restart mysql.service
MySQL für PHP installieren
sudo apt-get install php-mysql
MySQL für Python installieren
pip3 install pymysql
Install Adafruit Blinka
Adafruit Blinka ist ein Framework, welches es erleichtert, auf Hardware-Komponenten des Raspberry PI zuzugreifen. Es kann ganz einfach mittels folgendem Script installiert werden, nachdem eine virtuelle Umgebung erstellt und aktiviert wurde:
cd ~
pip3 install --upgrade adafruit-python-shell
wget https://raw.githubusercontent.com/adafruit/Raspberry-Pi-Installer-Scripts/master/raspi-blinka.py
sudo -E env PATH=$PATH python3 raspi-blinka.py
Das Script aktiviert die benötigten Hardware-Schnittstellen (I2C, SPI, etc.) installiert blinka und die Dependencies. Der Prozess wird durch einen Neustart beendet.
Adafruit SPI Display Setup
Zuerst wird die entsprechende Library via pip in die venv installiert:
pip3 install adafruit-circuitpython-rgb-display
Danach wird die Font "Dejavu" installiert, falls sie nicht bereits im System vorhanden ist:
sudo apt-get install fonts-dejavu
asdf
I2C Port Expander (MCP23017)
Um einen (oder mehrere) I2C Port-Expander zu verwenden, muss das entsprechende Package installiert werden:
pip3 install adafruit-circuitpython-mcp230xx
Adafruit 16x2 LCD Display (I2C)
Um die benötigten Daten zu installieren wird folgender Befehl innerhalb der venv ausgeführt:
pip3 install adafruit-circuitpython-charlcd
Danach kann das Display bereits über die I2C-Schnittstelle angesprochen werden.
1.3" OLED (I2C) Display
Das Display hat die fixe I2C Adresse 0x3C, es können somit nicht mehrere desselben Displays gleichzeitig angesteuert werden. Für die Ansteuerung des Displays wird das folgende Modul über die venv installiert:
pip3 install luma.oled
text
1.3* LCD SPI Display
pip3 install numpy
Servo Hat Setup
Um den Waveshare Servo Hat zu installieren, wird zuerst das Modul smbus installiert:
pip3 install smbus
Da
LUX Sensor (I2C) – Adafruit TSL2561
Der LUX-Sensor hat standardmässig die Adresse 0x39. Das dazugehörige Modul wird mittels folgendem Befehl installiert:
pip3 install adafruit-circuitpython-tsl2561
Rotary Knobs Breakout – Adafruit NeoRotary 4
Das Breakout Board hat standardmässig die Adresse 0x49. Das dazugehörige Modul wird mittels folgendem Befehl installiert:
pip3 install adafruit-circuitpython-seesaw
Sparkfun Audio Hat (MAX38957a)
In raspi-config wird zuerst das entsprechende Gerät als Audio-Gerät ausgewählt. Danach muss folgendes Script aus der venv ausgeführt werden. Die Installation wird mit einem Reboot abgeschlossen.
sudo apt install -y wget
wget https://github.com/adafruit/Raspberry-Pi-Installer-Scripts/raw/main/i2samp.py
sudo -E env PATH=$PATH python3 i2samp.py
Das selbe Script wird danach nochmal ausgeführt und erneut mit einem Reboot beendet. Danach sollte der alsamixer verfügbar sein.
Um die Sound-Ausgabe zu testen, kann folgender Befehl ausgeführt werden, welcher ein Test-File ausgibt:
speaker-test -c2 --test=wav -w /usr/share/sounds/alsa/Front_Center.wav
Neopixel (rpi_ws281x) Setup
Um die Neopixel Library zu installieren wird folgender Befehl innerhalb der venv ausgeführt:
pip3 install rpi_ws281x
asdf
Current PC Specs
Mainboard
Modell: ASUS Prime X570-P
SSD Slots: 2x
Prozessor
Modell: AMD Ryzen 7 3700X
Cores: 8-Core
Frequenz: 4050 MHz
Speicher
Modell: Corsair Vengeance RGB Pro
Anzahl: 4x
Speicher: 8GB (Total: 32GB)
Modell-Nr: CMW16GX4M2Z3600C18
Type: DDR4
Pins: 288-Pin
Speed: 3600 MHz CL18
Harddrives
SLOT 1
Modell: Samsung 970 EVO Plus
Storage: 1TB
Add. Specs: PCIe 3.0 NVMe M.2 SSD
Verwendung: Games
SLOT 2
Modell: ?
Storage: 500GB
Add. Specs: ?
Verwendung: System
SLOT X (NEW)
Modell: Samsung 990 PRO
Storage: 2TB
Add. Specs: PCIe 4.0 NVMe M.2 SSD
Verwendung: Games
Graphics
Modell: NVIDIA GeForce RTX 2080 Ti
Hersteller: Gainward Phoenix GS
Speicher: 11GB
Modell: GeForce RTX 4080 GAMING OC
Hersteller: Gigabyte
Speicher: 16GB
Netzteil
Modell: Seasonic Focus
Modell: Seasonic Focus GX-1000
Leistung: 1000W
Flugsimulation A-Z
- Online Flug Plan erstellen
- http://onlineflightplanner.org/
- Departure Airport (LSZH)
- Arrival Airport (EDDF)
- Min. Altitude (FL280)
- Max. Altitude (FL300)
- Aircraft (737-800)
- Create Plan
- Download Files (FMS / PDF)
- X-Plane Flugplan
- Dieses Teil da, Bordcomputer
- FPLN
- ORIGIN: LSZH
- DEST: EDDF
- FLT NO: TET33
- TO: ZUE (1. Eintrag des Airways nach LSZH)
- NEXT PAGE (Button)
- VIA: T163 (1. Airway nach 1. Eintrag)
- TO: EMPAX
- VIA: "Airway"
- TO: "Intersection"
- Flugplan aktivieren (EXEC (MOD FPLN wird zu ACT FPLN))
- SID / STAR
- http://www.vacc-sag.org
Erste Schritte in CraftCMS
Nachdem die Installation von Craft vorgenommen wurde und sowohl das Front- wie auch das Backend erreichbar ist, benötigt es ein paar erste Schritte, damit mindestens mal irgend ein Inhalt im Frontend angezeigt wird. Für den einfacheren Einstieg sind diese ersten Punkte hier beschrieben.
Installation von Redactor
Um einen Wysiwyg-Editor für den Inhalt zu bekommen, wird das Plugin "Redactor" installiert. Dieses bietet einen einfachen und schlichten Editor. Das Plugin kann über den Plugin-Store kostenlos heruntergeladen und direkt installiert werden. Ein weiteres Setup ist hierbei vorerst nicht nötig.
Erste Felder erstellen
Um irgendwas im Frontend angezeigt zu bekommen, müssen zuerst ein paar Felder im Backen erstellt werden, die dann auch gefüllt werden können. Es bietet sich an, hier erstmal mit einem PageTitle und einem PageContent zu beginnen.
Page Title
Das Feld "Page Title" wird als reines Textfeld erfasst.
Page Content
Das Feld "Page Content" wird als Redactor Feld erfasst.
Erstellung einer Sektion
Für die Hauptseiten wird als erstes eine Sektion erstellt. Der Name kann hierbei z.B. Main Pages heissen. Dies generiert den Slug mainPages. Als Sektions-Typ wird "Struktur" gewählt, damit die Seiten in mehreren Ebenen erstellt werden können.
Website-Einstellungen
Die Einstellungen der Sektion sind sehr wichtig. Das Eintrags-URI-Format lautet:
{parent.uri}/{slug}
Bei der Vorlage wird der folgende Pfad eingetragen:
pages/_entry
Eintragstyp bearbeiten
Zurück auf der Sektionen-Übersicht, wird der Eintragstyp "MainPages" bearbeitet.
- Titelfeld anzeigen -> deaktivieren
- Titelformat -> {{pageTitle}}
- Feld-Layout -> Content-Tab hinzufügen (inkl. PageContent und PageTitle)
Damit sind die Vorbereitungen abgeschlossen und es kann der erste Eintrag (die erste Seite) erstellt werden.
Erstellung der Startseite
Um die Startseite der Website zu erstellen, wird ein neuer Eintrag in der Sektion "Main Pages" erstellt. wichtig ist hierbei der Slug. Hier muss zwingend folgender Slug eingetragen werden, damit die Seite als Startpunkt fungiert:
__home__
Wird das Frontend nun aufgerufen, wird versucht, die gerade erstellte Seite mit dem Slug __home__ aufzurufen. Das klappt allerdings nicht, da das entsprechende Template noch nicht vorhanden ist. Um dieses Problem zu lösen, brauchen wir endlich einen Code-Editor. ;)
Basic Template-Setup
Als Basis wird im Ordner /templates folgende Dateistruktur angelegt:
_layouts
base.twig
site.twig
pages
_entry.twig
Die Dateien base.twig und site.twig kümmern sich um das Basis-Layout aller Seiten. Die Datei _entry.twig beinhaltet das eigentliche Template, bzw. den eigentlichen Hauptinhalt der angezeigten Frontend-Seite.
Das Frontend ist da!
Nachdem diese Dateien erstellt wurden, sollte das Frontend angezeigt werden. Das ist ein guter Startpunkt für das nächste Projekt.
Lokales CraftCMS Setup
Lokale Installation via Composer
Im ersten Schritt wird Craft heruntergeladen und direkt an der schlussendlichen Stelle installiert. Der Pfad am Ende des folgenden Scripts muss daher je nach Projekt angepasst werden.
composer create-project craftcms/craft ~/Dropbox/Websites/projectname
Setup von MAMP Pro
In MAMP Pro wird ein neuer Host eingerichtet. Das Document Root zeigt dabei auf das /web Unterverzeichnis des gerade installierten CraftCMS. In oben stehendem Beispiel wäre das somit:
markus/Dropbox/Websites/projectname/web
Dabei soll gleichzeitig eine Datenbank erstellt werden, also wird die entsprechende Checkbox angewählt. Im folgenden Schritt werden die gewünschten Datenbank-Credentials eingetragen.
Der Name des Hosts in MAMP Pro kann so gewählt werden, dass eine Endung verwendet wird. Hier bietet sich beispielsweise projekt.loc an. Ausserdem kann der Port manuell auf 80 geändert werden, das vereinfacht die lokale Test-URL ein wenig, da sonst die Seite mit dem Port :8888 aufgerufen werden muss.
Nach diesem Schritt wird der neue Host in MAMP Pro gespeichert und sollte danach direkt erreichbar sein. Beim Aufruf der entsprechenden Seite wird allerdings noch ein Fehler angezeigt, da das Setup von Craft noch nicht stattgefunden hat.
Basic Setup von CraftCMS
Um das Setup von Craft vorzunehmen, wird die URL mit dem Zusatz /admin erweitert um auf das Control Panel zu gelangen.
1. Datenbankverbindung
Für die Datenbankverbindung wird der Datenbank-Name, der Benutzername und das Passwort eingetragen.
2. Benutzer-Account
Der Benutzeraccount wird entsprechend den Vorstellungen erstellt.
3. System-Name
Der Systemname ist der Name der Website, welche gerade erstellt wird. Die Basis-URL kann unverändert bleiben.
CraftCMS ist installiert
Herzlichen Glückwunsch, CraftCMS ist somit bereits installiert.
Basic Raspberry Setup
Inhalt
In diesem Artikel wird beschrieben, wie ein Basic Setup für den Raspberry Pi vorzunehmen ist um eine Basis für die meisten Projekte zu schaffen. Von der Vorbereitung der SD-Karte bis zum Betreiben des NGINX Webservers oder der Neopixel-Library.
Basic Raspberry Setup
1. Raspbian Stretch
Raspbian Stretch herunterladen: Raspberry.org
2. SD-Karte flashen
SD-Karte mit der aktuellen Version von Raspbian Stretch flashen
3. Headless Setup
Die folgende Datei herunterladen und dessen Inhalte in das Root-Verzeichnis der Speicherkarte legen:
Datei Download (raspberry-headless.zip)
country=CH
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="Zeltfunk"
psk="D8317iegbTfuz!"
id_str="home"
}
4. SSH Connection
SD-Karte in Raspberry einlegen und booten. IP-Adresse ausfindig machen und per SSH auf den Raspberry connecten.
ssh pi@10.0.0.xxx
5. Raspi Config
Raspi-Config aufrufen und Einstellungen für Dateisystem, Hostname, Passwort, Netzwerk, Update vornehmen.
- Enlarge Filesystem
- Reboot
- Hostname setzen
- Passwort ändern
- "Wait for Network at boot"
- Update raspi-config
- Reboot
6. Allgemeine Updates
Um das System vorzubereiten sollten ein paar allgemeine Updates durchgeführt werden um alle Pakete auf den aktuellsten Stand zu bringen und nachfolgende Probleme zu vermeiden.
sudo apt-get dist-upgrade
sudo apt-get update
sudo apt-get upgrade
7. Allgemeine Paket-Installation
Als nächstes werden ein paar Pakete installiert, welche immer von Nutzen sein werden und in den meisten Projekten benötigt werden:
sudo apt-get install build-essential python-dev python-setuptools git swig i2c-tools
8. Python Version 3.x
Damit mit aktuellsten Voraussetzungen entwickelt wird, sollte der Default der Python-Version auf 3.x geändert werden. Hierzu müssen lediglich die beiden folgenden Befehle ausgeführt werden:
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.5 2
9. NGINX Installation
NGINX ist eine Webserver-Applikation, welche die Grundfunktionalitäten für den Webserver bereitstellt. Diese wird über folgende Befehle installiert und dann gestartet.
sudo apt-get install nginx
sudo /etc/init.de/nginx start
10. PHP 7 installieren
Um PHP (in Version 7.x) zu installieren wird folgender Befehl ausgeführt:
sudo apt-get install php-fpm
11. MySQL (Server) installieren
MySQL ist für die Datenbanken zuständig. MySQL Datenbanken können erst angelegt und verwendet werden, wenn der MySQL Server installiert ist. Dies wird über folgenden Befehl erreicht:
sudo apt-get install mysql-server
12. MySQL Konfiguration
Für MySQL wird als erstes eine dem Projekt entsprechende Datenbank erstellt, welche danach vom Web-Interface und von der Python-Applikation angesteuert wird. Hierfür wird MySQl im Terminal gestartet:
sudo mysql -u root
Um eine neue Datenbank zu erstellen, wird folgender Befehl genutzt. Als Datenbank-Name wird der Projektname in lowercase verwendet:
CREATE DATABASE aquapi;
Für die gerade erstellte Datenbank wird ein Benutzer mit Passwort erstellt und entsprechende Zugangsberechtigungen vergeben. Hierbei werden username, dbname und password entsprechend ersetzt.
CREATE OR REPLACE USER 'username'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON dbname.* TO 'username'@'%' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
Zuletzt muss in der Config noch die bind-address eingetragen werden:
sudo nano /etc/mysql/my.cnf
Hier werden dann am Ende der Datei die folgenden zwei Zeilen eingetragen:
[mysqld]
bind-address = 0.0.0.0
Danach: Neustarten des MySQL service via:
sudo systemctl restart mysql.service
13. Github-Projekt klonen
Als nächstes kann das Beispiel-Projekt von Github geklont werden um die wichtigsten und initialen Files für ein Projekt auf dem Raspberry zur Verfügung zu haben. Hierbei wird target durch das entsprechende Ziel-Verzeichnis ersetzt.
git clone https://github.com/Tetrikus/BasePi /home/pi/target
Da das Projekt auf Github als "privat" gelistet ist, wird für den Klon-Vorgang ein Benutzername und ein Passwort benötigt.
14. NGINX Konfiguration
Die NGINX-Config ist im Applikations-Verzeichnis des Base-Projekts enthalten (/web/nginx.conf). Dieses muss allerdings zuerst noch angepasst werden:
- Zeile 7: Korrekten Pfad zum /web Verzeichnis einfügen
- Zeile 11: Sinnvollen Servernamen verwenden
Im NGINX-Verzeichnis (/etc/nginx/sites-enabled/) gibt es bereits eine Default-Config, welche mit folgendem Befehl überschrieben wird – hierbei muss projectpath mit dem korrekten Namen des Verzeichnisses überschrieben werden:
sudo cp -r /home/pi/projectpath/web/nginx.conf /etc/nginx/sites-enabled/default
Die Ursprungsdatei im /web Verzeichnis sollte gelöscht werden, wenn sie nicht mehr weiter benötigt wird. Folgendes ist ein Backup der Default-Konfiguration:
# Default NGINX server configuration
#
server {
listen 80 default_server;
listen [::]:80 default_server;
root /home/pi/projectpath/web;
index index.php index.html index.htm index.nginx-debian.html;
server_name aqua.pi;
location / {
try_files $uri $uri/ /index.php?$args;
}
# pass PHP scripts to FastCGI server
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
Nachdem die Konfiguration entsprechend überschrieben wurde, muss diese neu geladen werden, damit nginx mitbekommt, dass sich die Config geändert hat:
sudo /etc/init.d/nginx reload
15. MySQL für PHP (php-mysql)
Damit PHP mit MySQL kommunizieren kann, wird ein weiteres Package benötigt. Dieses kann mittels folgendem Befehl installiert werden:
sudo apt-get install php-mysql
16. MySQL für Python (PyMySQL)
Damit Python ebenfalls mit MySQL kommunizieren kann, wird folgendes Package benötigt:
pip install pymysql
17. Python Requests
Requests Package für Web-Requests von PHP und Python
sudo apt-get install python-requests requests
18. NeoPixel Installation
Die Neopixel Library wird über folgenden Befehl installiert:
sudo pip install rpi_ws281x
19. NeoPixel Konfiguration
Bounce Back Expression
Weitere Informationen und Tutorial auf YouTube
e = .7; g = 5000; nMax = 9; n = 0; if (numKeys > 0){ n = nearestKey(time).index; if (key(n).time > time) n--; } if (n > 0){ t = time - key(n).time; v = -velocityAtTime(key(n).time - .001)*e; vl = length(v); if (value instanceof Array){ vu = (vl > 0) ? normalize(v) : [0,0,0]; }else{ vu = (v < 0) ? -1 : 1; } tCur = 0; segDur = 2*vl/g; tNext = segDur; nb = 1; // number of bounces while (tNext < t && nb <= nMax){ vl *= e; segDur *= e; tCur = tNext; tNext += segDur; nb++ } if(nb <= nMax){ delta = t - tCur; value + vu*delta*(vl - g*delta/2); }else{ value } }else value
Bounce Expression
Inertial Bounce (Created by Dan Ebberts at motionscript.com)
Zusätzliche Infos und Tutorial auf YouTube
n = 0; if (numKeys > 0){ n = nearestKey(time).index; if (key(n).time > time){ n--; } } if (n == 0){ t = 0; }else{ t = time - key(n).time; } if (n > 0 && t < 1){ v = velocityAtTime(key(n).time - thisComp.frameDuration/10); amp = .05; freq = 4.0; decay = 8.0; value + v*amp*Math.sin(freq*t*2*Math.PI)/Math.exp(decay*t); }else{ value; }
NAS als Router: NAT
Um das Synology NAS als Router verwenden zu können, muss NAT aktiviert werden. Die Einstellung kann bisher lediglich über die Shell aktiviert werden und geht normalerweise bei einem Reboot des NAS wieder verloren. Mit folgenden Terminal-Commands kann NAT aktiviert werden, sodass - einfach gesagt - die beiden LAN-Interfaces des NAS miteinander kommunizieren können.
ssh -p 2222 admin@10.0.0.5
-p 2222 wählt hierbei den auf dem NAS eingestellten ssh Port aus. Die IP ist die lokale Adresse des NAS.
Das benötigte Passwort entspricht dem normalen admin-Account des NAS. Um die ash Shell zu starten, wird folgender Befehl ausgeführt:
sudo su
Danach kann über den folgenden Befehl NAT aktiviert werden. Die IP-Adresse entspricht hierbei dem lokalen Netzwerk. Hat das NAS z.B. die IP 10.0.0.5, wird die IP 10.0.0.0/24 verwendet.
iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -j MASQUERADE
Direkt danach sollten die internen LAN-Geräte das Internet "sehen".
NAS als Router: Settings
Um das Synology NAS als Router zu betreiben, müssen ein paar Einstellungen vorgenommen werden.
LAN Interface #1
Für das LAN Interface #1 an welchem das Modem betrieben wird, werden alle Einstellungen auf automatisch gesetzt. Ausserdem handelt es sich bei diesem Interface um den “Default Gateway”.
LAN Interface #2
Für das LAN Interface #2, an welchem alle lokalen Geräte angeschlossen sind, wird die statische IP des NAS, das Standard-Gateway (dieselbe IP wie für das Interface) und ein DNS definiert. Der DNS von Google lautet 8.8.8.8
DHCP Server: Overview
Der DHCP-Server wird für das Interface #2 aktiviert und ein entsprechendes Subnetz eingerichtet und aktiviert. Die Adress lease time wird in Sekunden eingetragen – 600 bedeutet somit 10 Minuten.
DHCP Server: Detail
Der DHCP-Server wird für das Interface #2 aktiviert und ein entsprechendes Subnetz eingerichtet und aktiviert. Die Adress lease time wird in Sekunden eingetragen – 600 bedeutet somit 10 Minuten.




