COOKIES

This site may be using cookies to melk you with your own data. I, ben0bi, am not the owner of this web service and I also do not maintain their servers. But the EU and the owner of this service think, that the user (me) has the responsibility to inform the consumer (you), that this website uses cookies. Again: I, ben0bi, NEVER use cookies. I am not responsible for the setup of this web service. I just present some information here and do not intend to spy on you for whatever reason ever. But (also again), I do not host this website nor do I maintain any servers related to this website nor do I benefit from using the cookies maintained from this service. I hereby give the responsibility for using cookies on blogspot back to the owners of blogspot.
Posts mit dem Label raspi werden angezeigt. Alle Posts anzeigen
Posts mit dem Label raspi werden angezeigt. Alle Posts anzeigen

Mittwoch, 12. Juni 2019

Server mit Backup und Display

Das ist mein Server:



und von Innen:



Online: http://masterbit.net

Vorab: Ich habe weder ein SSL-Zertifikat noch sonstwas und bin auch zu faul und geizig, mir eins zu besorgen. Warum auch, ich habe keine wirklich wichtigen Daten da drauf....darum nur http, ohne s. :)

Er macht jeden Tag ein Backup (remove and copy) und ein Sync (ohne remove, nur neue/geänderte Dateien) auf die Festplatte und zeigt die aktuelle Uhrzeit, Datum, die Startzeit und die Laufzeit des Servers an.  Wie du siehst läuft meiner seit 3 Monaten ohne Unterbruch. :)



Die Zahl in der Mitte der Uhr zeigt an, wieviele Minuten es noch dauert, bis das Display einen kompletten Refresh macht. Ich habe dies auf 10 Minuten eingestellt.

Hardware


Zusammenbau

Der USB-Hub muss auseinander genommen werden. Dann wird ein Kabel an die 5V und GND Leitungen des Hubs gelötet, also bei einem USB-Stecker, an den Lötstellen.
An dieser Leitung wird die Festplatte eingesteckt. Ich weiss nicht, ob der Strom sich an die anderen Leitungen verteilt, darum die Festplatte lieber gleich am richtigen Teil anschliessen.

Das Kabel vom Netzteil wird am Ende, also möglichst nah am KLEINEN Stecker durchgetrennt. ACHTUNG: Noch ein bisschen Kabel am Stecker lassen, dieser wird dann ins Raspi gesteckt.

Wie schon erwähnt,  werden die neuen Kabel am USB-Hub direkt an den Strom vom Adapter angeschlossen. Das ist mit den Kabelklemmen bewerkstelligt: Die Eine ist am kleinen Kabel vom Raspi und geht dann auf die andere, wo noch dazu der Strom vom Hub rein kommt. Diese geht dann an den Stromadapter.

Der Bildschirm wird folgendermassen am Raspi eingesteckt:

Die Kabel haben diese Farben.                          


Das ganze Zeug irgendwie in die Box reinpassen,  Loch für den Bildschirm machen, etc...ich hab das nicht wirklich schön gemacht (hinbekommen) sondern einfach so, dass es geht. Siehe Loch vom Bildschirm... :)

Software

System

Ich benutze Raspian Stretch Lite, also ohne Desktop. Meistens bin ich mit SSH (also remote, von meinem PC aus) drinne, da brauchts keinen Desktop.

Dieses wird mit Balena Etcher auf die SD-Karte geflasht.

Danach die SD-Karte in den Raspi stopfen, LAN-Kabel, Tastatur, Maus, Bildschirm für die Erstinstallation und angeschaltert...

(Noch OHNE USB-Platte zur Sicherheit)

Login: pi / raspberrz (y und z sind erstmal vertauscht auf der deutschen Tastatur)

Erstmal konfigurieren:

sudo raspi-config

sudo heisst superuser do und wird fast immer benötigt, wenn man am System rumbastelt.

Ein Menü öffnet sich. Wir ändern erstmal das Passwort (Change User Password)

Danach stellen wir die Netzwerkoptionen ein: 2->N1 Hostname: Gib einen Namen für deinen Raspi ein.

Die Sprache sollte auch eingestellt werden, damit man nicht immer mühsam z mit y verwechseln muss.
  • 4-> I1 Change Locale -> de.CH.UTF8 -> (nochmal auswählen)
  • 4-> I2 Change Timezone -> Berlin
  • 4-> I3 Change Keyboard Layout -> [ENTER] -> Other -> German (Switzerland) -> Erster Eintrag, default Setting, No Compose Key (immer schön Enter drücken :) )
  • 4-> I4 Change WiFi Country -> Switzerland
Nun muss noch SSH angeschaltert werden und für den Bildschirm auch noch SPI:
  • 5-> P2 SSH -> enable
  • 5-> P4 SPI -> enable
Und schliesslich noch ein bisschen "Schminke" in den "Advanced Options":
  • 7-> A1 Expand Filesystem (beim ersten Start hat der Raspi das eh schon gemacht, dies ist nur nochmal zur Sicherheit.
  • 7-> A3 Memory Split -> zB: 16Mb : Hier wird der Grafikspeicher aufs Minimum beschränkt, da nicht wirklich gebraucht. Ich nehme trotzdem 16MB statt 8, zur Sicherheit.
Nun kann man das Tool beenden und einen Neustart machen (lassen).

Schliesslich wird noch git installiert:
erstmal sudo apt-get update um die Paketliste zu erneuern.
Git: sudo apt-get install git

Die Backup-Platte

Ausschalten, die Festplatte an den USB-Hub und diesen an den Raspi dran und neu starten. Der Hub braucht ab jetzt auch Strom! (Nicht vergessen, die Kabel zu verbinden)

Um eine "normale" NTFS-Platte anzusprechen braucht es eventuell noch ntfs-3g:
sudo apt-get install ntfs-3g

Erstmal erstellen wir einen Pfad, wo die Festplatte herein gemountet wird:
sudo mkdir /media/backupDrive

Mit sudo blkid werden die Labels und Partition-IDs der angeschlossenen Speichermedien angezeigt. Hier die UUID der Festplatte abschreiben.

Diese muss in fstab eingetragen werden:

sudo nano /etc/fstab

Hier eine neue Zeile machen mit:

UUID=DEINEUUID /media/backupDrive ntfs auto,nofail,sync,users,rw

Mit Ctrl-O speichern und mit Ctrl-X beenden. (Ctrl = Strg)

Check: sudo mount -a  oder lsblk

Wenn die Festplatte auch nach einem Neustart hier ist, ist alles richtig.

Der Webserver

Falls noch nicht gemacht:
sudo apt-get update
sudo apt-get upgrade -y


Wir haben ein Script im Hintergrund, welches den Bildschirm steuert. Um es im Hintergrund laufen zu lassen, braucht es screen.

sudo apt-get install screen

Ein Webserver braucht natürlicherweise einen Webserver. Ich nutze Apache, weil der Indianer sich bewährt hat. Nginx kenne ich nicht.

sudo apt-get install apache2

Wenn der Server läuft, ist das Standard-Webverzeichnis in: /var/www/html
Nun wechseln wir ins Homeverzeichnis und installieren meine Scripts:

cd ~
git clone https://github.com/ben0bi/ServerScripts.git

Installation des Backup-Scripts

Das Backup-Script sollte jeden Tag um eine bestimmte Zeit ausgeführt werden.
Dazu können wir cronjobs gebrauchen, welche in der crontab eingefügt werden.

Eventuell muss das BackupScript noch ausführbar gemacht werden:
sudo chmod +x /home/pi/ServerScripts/BackupScript.sh

sudo crontab -e

Dort dann auf eine neue Linie:

30 9 * * * /home/pi/ServerScripts/BackupScript.sh

Mit Ctrl-O speichern und mit Ctrl-X verlassen.

Damit wird jeden Tag um 9.30 morgens ein Backup gemacht. Du kannst natürlich auch eine andere Zeit einstellen.

Installation des Displays

Das Display benötigt python und einige Bibliotheken dafür. Bibliotheken für python können mit pip installiert werden.

sudo apt-get install python python-pip

Dann brauchen wir noch eine SPI-Bibliothek spidev, eine Bildbearbeitungsbibliothek pillow und dazu eine jpeg-Bibliothek libjpeg-dev. Irgendwas braucht noch die python-requests, also wird das auch installiert.

sudo apt-get install spidev libjpeg-dev pillow python-requests

Nun muss das Display nur noch bei jedem Neustart gestartet und beschrieben werden. Da jede Minute ein Bild upgedatet wird, läuft das ganze über screen.

sudo nano /etc/rc.local

Und dort dann auf eine neue Zeile:

/home/pi/SeverScripts/screen.sh

Noch einmal Ctrl-O und Ctrl-X benutzen.

Eventuell muss screen.sh auch ge-chmode-d werden, siehe oben.

Ich hoffe mal es läuft. Bei mir gehts. :)

Das wars, stopf nun dein Webverzeichnis mit Zeug voll, mach den Server erreichbar etc. Da musste selber guggen, ich hab DynDNS vom Router "geschenkt" bekommen. (D-Link rockt :) )

Viel Spass damit. PHP und all den anderen Mist musst du selbst gucken...ich brauch zum Beispiel KEIN SQL mehr...Darum habe ich diesen Krempel auch nicht "explizit" mit-installiert.

Viel Spass beim Ausprobieren.

Freitag, 16. November 2018

Raspi Music Server Tutorial

Die Intention hierbei war, dass ich von jedem Gerät aus Musik auf der [einen] Stereoanlage abspielen kann.

Es besteht aus mehreren "Teilen":

+ Musikserver Mopidy
+ Frontend RompR
+ Mein File-Upload-Frontend.

+ Eventuell dann noch ein paar Scripts um die Dateisystemscans zu automatisieren und...so...

First things first:

System

Wir installieren erstmal das Standard Raspian auf dem Raspi:
Hier herunterladen: https://www.raspberrypi.org/downloads/raspbian/
(Es braucht nur die Lite-Version, ohne Desktop)

...und mit Etcher auf die MicroSD-Karte gebrannt:
https://www.balena.io/etcher/

So, nun stopfen wir die microSD in den Raspi und schalten den mal an (inkl. Bildschirm und Tastatur).

Login: pi
Password: raspberry (Deutsche Tastatur: raspberrz)

Erstmal richten wir die Maschine richtig ein:

sudo raspi-config

Dort dann erstmal das WLAN einrichten und eventuell SSH aktivieren. Desweiteren ändern wir das Passwort.

SSH kann man unter "Interfacing Options" einrichten.

Unter "Advanced Options" wird dann noch die Option "Expand Filesystem" ausgewählt.

Danach rebooten wir mal:

sudo reboot

Webserver

Dann machen wir ein update und installieren erstmal Apache. Die Verzeichnisse von Apache benutzen wir dann auch für die Musik.

sudo apt-get update
sudo apt-get upgrade

sudo apt-get install apache2 php

mit "ifconfig" findet man die aktuelle IP heraus. Damit mal testen...Webseite sollte auftauchen.

Dateisystem-Interface

Nun laden wir mein Filesystem-Frontend in das Apache-Webverzeichnis.

Dazu brauchen wir git:

sudo apt-get install git

cd /var/www/html
sudo git clone https://github.com/ben0bi/ben0biUploader.git

Unter [IP]/ben0biUploader ist dieser dann zu finden. Du kannst das Verzeichnis auch umbenennen.
Wir müssen hier noch einiges einstellen:

Öffne die Konfigurationsdatei mit einem Editor:

sudo nano ben0biUploader/index.php

Unkommentiere dort die zwei Zeilen unter dem SHOW-Kommentar. Diese musst du später wieder ein-kommentieren. Damit siehst du auf der Webseite den SHA1-String des Passwortes, welches du eingibst. Speichere diesen String und schreibe ihn in

ben0biUploader/config/pageconfig.json

hinein. Schreibe dort auch den richtigen Pfad unter "REAL_UPLOAD_PATH" hinein.

Dieser Pfad muss nun noch dem www-data user zugehörig gemacht werden:

sudo chown www-data:www-data /var/www/html/ben0biUploader/FILESYS

Bei nano kannst du mit Ctrl-O speichern und mit Ctrl-X beenden.

Nun solltest du mit deinem Passwort reinkommen. Kommentiere die zwei Zeilen in index.php wieder ein. Du solltest eine Datei "empty.empty" sehen. Diese dient dazu, das Verzeichnis für git "sichtbar" zu machen. Mit dieser kannst du testen, ob alles geht (rename, delete). Erstellte neue Verzeichnisse kannst du auch wieder löschen.

Nun müssen wir höchstwahrscheinlich noch ein paar PHP-Variablen ändern:

Mache in /var/www/html eine Datei phpinfo.php und schreibe folgendes hinein:

<?php
phpinfo();
?>

Wenn du diese nun im Browser aufrufst, siehst du die PHP-Variablen deines Systems.

[IP]/phpinfo.php

Die Zahl bei upload_max_filesize ist vieeel zu tief. :)
Und zusätzlich müssen wir noch post_max_size verändern. Diese Zahl sollte ein bisschen höher als die upload_max_filesize sein.

Dazu öffnen wir das php-Konfigurationsfile:
In der PhpInfo steht ganz oben auch, wo das Konfigurationsfile zu finden ist. WARNUNG: Das System selbst gibt einen falschen Pfad an mit "php --ini". Die Datei in der phpinfo ist richtig.

Darin suchen wir mit CTRL-W nach den obigen Werten und schreiben was grösseres rein:
upload_max_filesize = 120M
post_max_size = 128M

Wieder speichern mit CTRL-O und Apache neu starten:

sudo apache2ctl restart

Mopidy Musik Server

Ich halte mich hier an folgende Artikel:
https://docs.mopidy.com/en/latest/installation/raspberrypi/#how-to-for-raspbian
http://blog.scphillips.com/posts/2013/01/sound-configuration-on-raspberry-pi-with-alsa/

Ok, erstmal schalten wir den Sound auf den Audio-Jack anstatt auf HDMI. Später wird er dann noch auf die externe USB-Soundkarte geschaltet, doch erstmal den Jack:

sudo raspi-config

Hier findest du unter "Advanced Options" einen Eintrag "Audio". Wähle dort "Force 3.5mm headphone jack".

Unter "Memory Split" geben wir noch eine kleinere Zahl ein (RAM für die Graphik), damit die Musik mehr RAM hat. 16 sollte reichen, vielleicht geht es sogar mit 8.

Reboote nun die Maschine.

Mit "alsamixer" kannst du die Systemlautstärke erhöhen.

Um die Lautstäke bei jedem boot einzurichten, schreiben wir folgendes in die Datei
/etc/rc.local, und zwar VOR "exit 0"

amixer set PCM -- 100%

Mopidy installieren:
wget -q -O - https://apt.mopidy.com/mopidy.gpg | sudo apt-key add -
sudo wget -q -O /etc/apt/sources.list.d/mopidy.list https://apt.mopidy.com/stretch.list

sudo apt-get update
sudo apt-get install mopidy
Nun müssen wir noch ein paar Variablen einstellen. Erstmal einfach Mopidy starten:

mopidy

Dies startet nicht nur den Server sondern legt auch die wichtigen Dateien an, welche wir noch konfigurieren müssen. Zumindest das Verzeichnis muss gesetzt werden. Also erst mal CTRL-C, um den Server zu unterbrechen, dann:

nano ~/.config/mopidy/mopidy.conf

Bzw. /etc/mopidy/mopidy.conf

Dort suchen wir die Einträge [local] und [file](?) und kommentieren das Wichtige aus:
enabled=true
media_dir = PFAD ZU DEINEM MUSIKVERZEICHNIS*


* der Pfad sollte derselbe sein, welcher für die Dateioperationen oben benutzt wird.
Also hier zum Beispiel: /var/www/html/ben0biUploader/FILESYS

Schliesslich noch für RompR weiter unten:

[mpd]
connection_timeout = 120

Nun richten wir mopidy ein, dass es beim booten startet:

sudo systemctl enable mopidy

Um den aktuellen status zu sehen, benutze:

sudo systemctl status mopidy

Andere wichtige Kommandos:
sudo systemctl start mopidy
sudo systemctl stop mopidy
sudo systemctl restart mopidy



Und vor allem:
sudo mopidyctl local scan


RompR Frontend

RompR ist das Web-Frontend für Mopidy.
https://fatg3erman.github.io/RompR/
https://fatg3erman.github.io/RompR/Installation-on-Linux-Alternative-Method

Für RompR braucht es mysql und anderes, also installieren wir das:

sudo apt-get install mysql-server mysql-client php-mysql php-curl php-gd php-json php-xml php-mbstring imagemagick

Um die datenbank besser zu administrieren installieren wir evt. noch Phpmyadmin:
sudo apt-get install phpmyadmin

Im Browser sollte nun phpmyadmin aufrufbar sein:
[IP]/phpmyadmin

Falls du nicht rein kommst, musst du noch(mal) phpmyadmin konfigurieren:

sudo dpkg-reconfigure phpmyadmin

Danach laden wir das release in das home directory:
wget https://github.com/fatg3erman/RompR/releases/download/1.23/rompr-1.23.zip

...und entzippen es:

unzip rompr-1.23.zip

Und machen schliesslich im Web-Verzeichnis einen Link darauf:

sudo ln -s /PATH/TO/ROMPR /var/www/html/rompr

und machen noch ein paar andere Sachen:

cd [rompr]
mkdir prefs
mkdir albumart
sudo chown www-data prefs
sudo chown www-data albumart

Aktiviere nun noch ein paar Apache-Module:

sudo a2enmod expires
sudo a2enmod headers
sudo a2enmod deflate
sudo a2enmod php7.0

Alles andere entnimmst du bitte dem zweiten Link oben. Da muss noch das Inet konfiguriert werden und MySql und Zeug und Sachen...

Externe USB-Soundkarte

Zu guter Letzt bauen wir noch eine externe USB-Soundkarte ein.
Der Raspi-Sound ist nämlich nicht wirklich brauchbar.

https://raspberry.tips/raspberrypi-tutorials/raspberry-pi-usb-soundkarte-unter-raspbian-einrichten

[Weiteres folgt, computer arbeitet...)

Montag, 27. November 2017

Netzkaffeekasse


Es gibt ja diese Sparschweine mit eingebautem Münzzähler. Mein Ziel war es, so ein Ding im Internet verfügbar zu haben. Und es soll Fotos machen von den edlen Spendern und räuberischen Dieben. :)

Dieser Artikel hat drei grössere Kapitel:
1. Die Hardware.
2. Installation der Software
3. Funktionsweise der Software.
Übersichtlicherweise sollte man erst den RasPi vorbereiten (2.) bevor alles zusammengebaut wird.
Zur Info. Also wenn dich nur das Proggen interessiert, gleich nach zu unterst scrollen. ;)

Was braucht man:

1x Sparschwein mit elektronischem Münzzähler
1x Raspberry Pi v3 (mit WLAN) mit Raspian oder so + Strom.
1x Flachband-Kabel für den Pi (Flachstecker zu Female)
1x RasPi Kamera mit Kabel
1x Platine (oder Karton ;) ) und ein paar Pins und Widerstände (hier: 600 Ohm) zum drauf löten.
1x schatzige Truhe, wenn möglich Schatztruhe. :)
ein paar Kabel und Lüsterklemmen.

Lötkram und Dremel wären auch von Vorteil.

Zur Konfiguration brauchst du natürlich noch einen Bildschirm und eine Tastatur.

Die Software von mir findet sich auf diesem Repository:
https://github.com/ben0bi/Netzkaffeekasse

Die Installation wird weiter unten erklärt.

Die Hardware

Bitte richte dir dann erst den RasPi ein, bevor du alles zusammen baust. ;)
(Siehe unten.)

Ich habe mir also mehrere Sparschweine mit elektronischem Münzzähler im Interdiscount gekauft, um dies zu realisieren. (Du brauchst nur eines.) Also etwas in der Art hier, mit Schweizer-Zählwerk:

Dieses habe ich komplett auseinander genommen. Die Elektronik-Platine kannst du wegschmeissen, die brauchen wir nicht. Wir brauchen nur den Zähler selbst. Dabei kam raus, dass der "Zähler" nur eine kleine Platte mit Kontakten ist, auf welcher eine kleine Stange bewegt wird um den Kontakt zu geben. Die Stange wird von der Münze zur Seite gedrückt. Diese Platine wurde über ein Flachbandkabel mit der Elektronik-Platine verbunden. Also einfach das Flachband von der Elektronik-Platine ab- und an die eigene dranlöten. Total einfach, analog und ohne Probleme zu "verbasteln".

Den Münzschlitz oben habe ich aus dem Plastikdeckel herausgedremelt und in die Kiste eingebaut. Das Zählwerk selbst kann man nun einfach darunter anschrauben.

Ich habe das Flachband zu den Kontakten von der Elektronik weg- und an meine eigene Platine gelötet. Dort kommen die Kontakte (von der einen Seite) als Stift heraus und werden noch mit einem Widerstand jeweils zu GND geleitet. Die andere Seite wird an 3.3v gelegt und braucht kein GND. Bei mir hat die Strom-Seite drei (3) Kontakte auf dem Flachband. Desweiteren kommen noch vier weitere Kontakte dazu (jeweils zwei zusammen), welche den Türöffnungsmechanismus überwachen. Auch diese brauchen wir als Stift, und auch diese müssen jeweils noch mit einen Widerstand mit GND verbunden werden. Mehr braucht es auf "unserer" Platine jedoch nicht.

Nun wird das ganze per Flachband an ein Raspberry Pi (RasPi) Version 3 angeschlossen. Hierbei bitte darauf achten, dass 3.3v und GND richtig belegt sind. Die anderen (GPIO-Inputs) kann man dann in der Software anpassen.

Zusammengesetzt sieht die Elektronik dann etwa so aus:

Ich bin gerade zu faul, das noch mal auseinander zu nehmen. Da werden wirklich nur die Leitungen an das RasPi weiter gegeben, mehr ist da nicht ausser den Widerständen für GND jeweils.

Die grünen und roten Kabel kommen vom Türkontrollmechanismus. Dieser besteht einfach aus Kontakten, welche Strom führen, wenn die Tür zu ist.

Ein RasPi V3 brauchen wir, damit wir über WLAN Zugriff auf das (im Inneren der Kasse versteckte) Computerchen zu bekommen, ohne dass jemand einfach das Kabel durchschneiden könnte. Später wird eventuell noch eine Notfallbatterie eingebaut, damit man auch nicht einfach den Strom ausstecken kann.

Schliesslich habe ich den Münzzähler angeschraubt:

...und die Platine daneben angeklebt. Den Raspi habe ich mit einer Schraube befestigt:

Hier musste ich darauf achten, dass der Kamera-Port möglichst nah am "Türschlitz" ist. Schliesslich konnte ich einfach das Kamerakabel dazwischen durch schieben:


Zu der Kamera gab es noch eine Halterung. Diese kann man mit einem Cinch-Stecker verbinden.
Dazu habe ich aus einer beliebigen Stereoanlage alles ausgebaut, bis ich die Cinch-Stecker herausdremeln konnte:

Cinch-Stecker unten rechts...

...einfach so richtig brutal heraus gedremelt.
Achtung, das hat ziemlich gestunken und könnte giftig sein. Ich war im Keller und musste ein bisschen raus danach...

Hier solltest du einfach darauf achten, dass du das Ding auch irgendwie befestigen kannst. Bei mir hat es zwei Löcher für die Schrauben.

Schliesslich habe ich das Loch in die Truhe gedremelt. Es ist ein ganz klein bisschen breiter als gewünscht, damit das Stromkabel (und evt. HDMI) noch durch passt. Die Kabel muss man vor der Installation durchschieben, danach geht es nicht mehr.


Nachdem die Kamera befestigt wurde, ist die Hardware soweit fertig.



Die Software

Auf dem Pi brauchen wir nun folgendes:

0. Python (Version 3) und die RPi.GPIO und picamera-Bibliotheken.
Für RPi.GPIO gibt es folgende Befehle:
sudo apt-get install python{,3}-pip
sudo pip3 install RPi.GPIO


und für picamera:
sudo apt-get install python3-picamera

(Ich hoffe das ist richtig, ansonsten steht es noch im Sourcecode.)

1. Den Apache Webserver mit PHP5
sudo apt-get install apache2 php5

1.1 Das Web-Verzeichnis sollte /var/www/html sein oder in der Software unten
umgestellt werden.

2. Git brauchen wir, um die Software herunter zu laden:
sudo apt-get install git

3.  Screen brauchen wir, damit das Ganze im Hintergrund laufen kann:
sudo apt-get install screen

4. In /home/pi/Documents laden wir die Sofware herunter:
git clone https://github.com/ben0bi/Netzkaffeekasse.git

5. Nun wird die Software installiert:
cd /home/pi/Documents/Netzkaffeekasse
sudo ./install.sh

Damit werden eigentlich nur ein paar Dateien an die richtige Stelle kopiert.

Falls du Probleme mit den Berechtigungen der Dateien/Ordner hast, kannst du folgendes tun:
sudo chmod 777 dateiname gibt dateiname alle Rechte.
sudo chmod +x dateiname macht dateiname ausführbar.

6. Schliesslich stellen wir ein, dass das Ganze beim booten gestartet wird:
sudo nano /etc/rc.local

Und dort drin dann:

cd /home/pi/Documents/Netzkaffeekasse
sudo ./startbackground.sh


Diese Datei nun mit Ctrl-O speichern und mit Ctrl-X wieder in die Konsole zurück gehen. In der Software (RasPython/kassenkontroller.py) solltest du nun noch überprüfen, ob alle Pins richtig gelegt wurden und eventuell die Nummern anpassen bei den fX, rX und kontrollerX-Variablen.

frGND ist nicht GND sondern der Kontakt welcher im Ruhezustand gegeben wird (also wenn keine Münze im Schlitz ist)!

7. Nun müsstest du noch mit der Raspi-Config das WLAN einstellen.
sudo raspi-config
..und dort dann im Menü herumwuseln.

Mit ifconfig bekommst du die IP-Adresse deines RasPi heraus. Bitte stelle diese fest ein, denn mit dynamischer IP müsstest du jedesmal im Router nachgucken, da ja schliesslich am Ende kein Bildschirm mehr direkt am RasPi hängt*.

Nun sollte es laufen. Über die IP-Adresse sollte man nun eine Webseite sehen, welche das Total, Log und neueste Foto ausgibt.

*Autoboot mit Bildschirm


Um den Leuten auch ein bisschen Zucker zu geben, habe ich auch einen Bildschirm angehängt.

Damit der RasPi in den Desktop bootet, muss man in der raspi-config die Bootoption einstellen auf:
Boot into desktop with autologin.

Wenn du RetroPie benutzt, musst du das über retropie-setup machen, da er sonst zwar in den Desktop bootet, danach aber gleich die Emulationstation startet.

Hier findest du Informationen dazu, wie man Chromium direkt starten kann. Für die Netzkaffeekasse muss er natürlich auf localhost zeigen:

Damit der Bildschirm nicht nach einer Weile aus geht, habe ich xscreensaver installiert und dort dann alles ausgeschaltet:
sudo apt-get install xscreensaver

Damit sollte nun wirklich alles wie auf dem Foto oben funktionieren.

Funktionsweise der Software

Mit install.sh werden die start.sh, startbackground.sh und stop.sh ins Root-Verzeichnis (der Software) kopiert sowie die Ordner ALERT_IMAGES und EINWURF_IMAGES erstellt. Die Dateien von RasPython/html werden nach /var/www/html kopiert und dort noch der Ordner IMAGES erstellt.

stop.sh ist nur für den Zugriff auf den Screen, welcher mit startbackground.sh erstellt wird, konzipiert.
Beenden kann man die Software jeweils mit Ctrl-C.

Der Hauptbestandteil ist natürlich das Python-Script RasPython/kassenkontroller.py. Dieses macht ein Foto bei jedem Einwurf einer Münze sowie wenn man den Deckel öffnet. Dazu werden auch noch verschiedene *.nkk-Dateien angelegt.

TOTAL.nkk: Hier ist das aktuelle Total der Münzen in der Truhe angegeben.
LOG.nkk: Hier wird fein säuberlich jede Aktion hineingeschrieben.
ACTUALTEXT.nkk: Das ist der Text, der beim aktuellen Bild auf der Webseite angezeigt wird.
ACTUALTIMESTAMP.nkk: Dieser Zeitstempel wird benutzt, um das Bild auf der Webseite vom Server neu zu laden (anstatt vom Cache).

Jedes Bild wird entweder im Ordner EINWURF_IMAGES oder im Ordner ALERT_IMAGES abgelegt. Das jeweils neueste Bild wird auch noch in das /var/www/html/IMAGES-Verzeichnis kopiert als "latest.jpg" und dort von der Webseite geladen.

Das Script ist auf Schweizer Münzen ausgelegt, das heisst, die 50-Rappen Münze ist kleiner als die 10-Rappen Münze. Deshalb wird diese als 0.07 angegeben und später (weiter oben) wieder in 0.5 umgewandelt. Hier gilt nämlich, dass jeweils die grössere Nummer genommen wird wenn mehrere Kontakte gegeben werden.

Hier ist als Beispiel der Ablauf der Kontakte auf der Platine, wenn man ein 20 Rappen Stück einwirft:

GND -> 0.05 -> 0.07 -> 0.1 -> 0.2 -> 0.1 -> 0.07 -> 0.05 -> GND: Ah, es ist ein 20Rappen Stück.

Bei 0.07 wäre es ein 50Rappen Stück. Alle anderen Werte kann man direkt übernehmen.

Ich hoffe dieses Projekt hat dir gefallen und danke für die Aufmerksamkeit.

Dienstag, 6. Juni 2017

RetroPie Screen Orientation

Deutsch 

(click here for the english version.)

Um auf dem RetroPie-System die Bildschirm-Orientation zu ändern, muss man einfach in /boot/config.txt die Variable display_rotate hinzufügen oder ändern.

Aufgrund meiner speziellen Konfiguration habe ich die Kompassrichtungen gewählt, wobei ich bei Nord im Norden sitze und gegen Süden schaue.

Wenn der Bildschirm vor dir steht ist Nord die normale Orientation, Süd ist um 180°, Ost um 90° nach links und West um 90° nach rechts gedreht.

Da ich den Bildschirm nach oben spiegle, braucht es manchmal eine vertikale Spiegelung anstatt einer Drehung. Hier gebe ich euch nun die Zahlen dafür (horizontal spiegeln weiss ich grad nicht mehr, brauchts aber auch nicht wirklich). Für die Spiegelung kann man einfach den Orientation-Wert mit dem Spiegelungs-Wert binär ODER-verknüpfen:

0 = Nord
1 = Ost
2 = Süd
3 = West
0x20000 = Nord vertikal gespiegelt.
0x20001 = Ost vertikal gespiegelt.
0x20002 = Süd vertikal gespiegelt.
0x20003 = West vertikal gespiegelt.

Um ganz schnell die Orientation zu ändern, habe ich mir einfach für jeden Wert eine config.txt und ein .sh-Script geschrieben und die .sh-Scripts dann in ein Menu von EmulationStatin kopiert, welches .sh-Scripts "versteht".

Hier ein Beispiel:
/home/pi/orientation/Config_East_Flipped.txt

...

display_rotate = 0x20001


/home/pi/RetroPie/MyMenu/Orientation_East_Flipped.sh

#!/bin/bash
sudo cp /home/pi/orientation/Config_East_Flipped.txt /boot/config.txt
sudo shutdown -r now


Nach dem Kopieren wird einfach der RasPi neu gestarted und gut ist.

Viel Spass damit!