Rick Telecoms "Einführung in Raspberry Pi in Java" ist eines der wenigen (oder einzigen?) Java-basierten Einführungsbücher zu Raspberry Pi. Gegen Ende dieses Buches werde ich Ihnen zeigen, wie Sie die Informationen des an den Raspberry Pi angeschlossenen Temperatursensors kontinuierlich in der Datenbank aufzeichnen und als Grafik im Webbrowser anderer PCs und Smartphones anzeigen.
Um dies zu erreichen, verwenden wir MySQL als RDBMS, MySQL Connecter / J als Schnittstelle zu Java, Tomcat als Webserver und JFreeChart als Grafiktool. Das Veröffentlichungsdatum dieses Buches war jedoch Dezember 2016. Selbst wenn Sie jetzt versuchen, diese Pakete wie im Buch beschrieben zu installieren oder zu konfigurieren, treten verschiedene unerwartete Ereignisse auf.
Also habe ich einige Nachforschungen angestellt und die Umgebung geschaffen, auf die dieses Buch abzielt.
Raspberry Pi 3 Model B Raspbian v2.7.0 Java 1.8.0_65 Pi4J 1.1 Samba 4.5.12 Tomcat 9.0.6 MySQL 15.1 Distrib 10.1.23 MySQL Connecter/J 5.1.46 JFreeChart 1.0.19
Diesmal habe ich von NOOBS installiert. Ich habe Raspbian von DOWNLOADS auf Raspberry Pis Official Site heruntergeladen, aber es war so langsam, dass ich die folgende Spiegelseite verwendet habe (es dauerte immer noch ungefähr 2 Stunden). Diesmal habe ich v2.7.0 verwendet, das am 14. März 2018 veröffentlicht wurde.
http://ftp.jaist.ac.jp/pub/raspberrypi/NOOBS/images/
Extrahieren Sie die heruntergeladene Datei (NOOBS_v2_7_0 .zip), kopieren Sie alle erstellten Dateien auf die formatierte microSD-Karte, legen Sie sie in den Kartensteckplatz des Raspberry Pi ein und starten Sie die Installation. Klicken Sie bei Bedarf auf dem Startbildschirm von NOOBS auf das Symbol für WLAN-Netzwerke und stellen Sie das WLAN ein.
Aktualisieren Sie das System nach Abschluss der Installation und dem Start von Raspbian, indem Sie den folgenden Befehl von LXTerminal aus eingeben.
sudo apt-get update
sudo apt-get upgrade
Klicken Sie auf das Menüsymbol oben links im GUI-Bildschirm und wählen Sie "Einstellungen" - "Raspberry Pi-Konfiguration", um das Bedienfeld "Raspberry Pi-Konfiguration" anzuzeigen. Diesmal habe ich folgendes eingestellt.
Kategorie | Einstellungselement: Einstellwert |
---|---|
System | Passwort: Optional Underscan:Disable |
Interface | SSH:Enable SPI:Enable I2C:Enable |
Localisation - Locale | Country:US (United States) |
Localisation - Timezone | Area:Japan |
Localisation - Keyboard | Country:Japan Variante: Die Tastatur, die Sie verwenden |
Localisation - WiFi Country | Country:JP Japan |
Wenn Sie auf die Schaltfläche OK klicken, werden Sie aufgefordert, das System neu zu starten. Starten Sie hier jedoch nicht neu und fahren Sie mit den folgenden Einstellungen fort.
sudo passwd root
Bearbeiten Sie /etc/dhcpcd.conf.
sudo nano /etc/dhcpcd.conf
Fügen Sie dieser Datei Folgendes hinzu (geben Sie die IP-Adresse usw. entsprechend Ihrer Umgebung an).
interface wlan0 #Eth0 für kabelgebundenes LAN
static ip_address=192.168.1.100/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1
Damit sind die Raspbian-Einstellungen abgeschlossen. Starten Sie das System jetzt einmal neu.
sudo reboot
Pi4J ist ein Paket zur Steuerung von GPIO von Java aus. Geben Sie den folgenden Befehl ein, um das Installationsskript abzurufen und auszuführen.
curl -s get.pi4j.com | sudo bash
Die Paketklassendateien werden nach / opt / pi4j / lib kopiert. Die offizielle Website von Pi4J enthält Dokumente und Muster.
Nach Abschluss der Einstellungen bis zu diesem Punkt sollte es möglich sein, die mit GPIO verbundenen elektronischen Komponenten und Sensoren über Java zu steuern. Ab heute (April 2018) ist Wiring Pi die Grundlage für die Steuerung von GPIO. Unterstützt nicht die neueste Firmware (Kernel). Wenn ich das Programm ausführe, wird es mit der folgenden Fehlermeldung beendet.
Unable to determine hardware version. I see: Hardware : BCM2835
Damit das Programm normal funktioniert, führen Sie daher ein Downgrade der Firmware mit dem folgenden Befehl durch (ein Neustart ist erforderlich).
sudo rpi-update 52241088c1da59a359110d39c1875cda56496764
(Referenzartikel) Hinweise, wenn ein Fehler in WiringPi auftritt
Obwohl nicht erforderlich, ist es nützlich, Samba installiert zu haben, damit Dateien auf dem Raspberry Pi mit anderen PCs geteilt werden können.
sudo apt-get update
sudo apt-get install samba
Bearbeiten Sie /etc/samba/smb.conf.
sudo nano /etc/samba/smb.conf
Fügen Sie am Ende dieser Datei beispielsweise Folgendes hinzu: In diesem Beispiel lautet der Freigabename pi und die Dateien unter / home / pi werden als pi-Benutzer gelesen und geschrieben.
[pi]
path = /home/pi
read only = No
guest ok = Yes
force user = pi
Starten Sie den Dienst nach dem Speichern der obigen Datei neu.
sudo service smbd restart
Stellen Sie sicher, dass der Raspberry Pi vom Windows Explorer usw. erkannt wird und dass das festgelegte Verzeichnis als Ordner sichtbar ist.
Wenn Sie den Raspberry Pi nicht finden können, geben Sie den Hostnamen und den Freigabenamen direkt im Adressteil des Explorers an, wie unten gezeigt.
\\RASPBERRYPI\pi
(Referenzartikel) Installieren, Konfigurieren und Herstellen einer Verbindung zu Samba
Laden Sie das Tomcat-Paket von der offiziellen Website herunter. Klicken Sie links auf der Startseite unter Download auf den Link Tomcat 9.0 und dann im Binary Distributins Core auf tar.gz, um die Paketdatei herunterzuladen.
Extrahieren Sie die heruntergeladene Datei (apache-tomcat-9.0.6.tar.gz) mit dem folgenden Befehl.
tar xzvf apache-tomcat-9.0.6.tar.gz
Verschieben Sie den entpackten Apache-Tomcat-9.0.6 zusammen mit dem Verzeichnis direkt unter das Home-Verzeichnis von pi.
mv apache-tomcat-9.0.6 ~
Stellen Sie den Benutzer so ein, dass er auf den Verwaltungsbildschirm von Tomcat zugreift. Auf den Administratorbildschirm kann über den Tomcat-Begrüßungsbildschirm zugegriffen werden (siehe unten für den Zugriff auf den Begrüßungsbildschirm). Dies bedeutet jedoch nicht, dass Sie Tomcat überhaupt nicht verwenden können.
Registrieren Sie den Benutzer für die folgenden Dateien.
nano ~/apache-tomcat-9.0.6/conf/tomcat-users.xml
Fügen Sie Folgendes in das Tag << tomcat-users > ein. Geben Sie den Inhalt an, den Sie für den Benutzernamen bzw. das Kennwort festlegen möchten.
<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<user username="pi" password="raspberry" roles="manager-gui,admin-gui"/>
Standardmäßig kann nur lokal auf den Administratorbildschirm zugegriffen werden. Wenn Sie von anderen PCs in den Verwaltungsbildschirmen auf die Bildschirme Serverstatus und Tomcat Web Application Manager zugreifen möchten, bearbeiten Sie die folgende Einstellungsdatei.
nano ~/apache-tomcat-9.0.6/webapps/manager/META-INF/context.xml
Geben Sie in allow im Tag << Valve > die IP-Adresse ein, um den Zugriff in regulären Ausdrücken zu ermöglichen.
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
Wenn Sie beispielsweise von der IP-Adresse 192.168.1.xxx aus zugreifen möchten, ersetzen Sie den Teil des regulären Ausdrucks wie folgt. 192 \ .168 \ .1 \. \ D +
wird mit | (oder) hinzugefügt.
allow="127\.\d+\.\d+\.\d+|192\.168\.1\.\d+|::1|0:0:0:0:0:0:0:1"
Bearbeiten Sie für den Verwaltungsbildschirm von Tomcat Virtual Host Manager die folgenden Dateien auf die gleiche Weise.
nano ~/apache-tomcat-9.0.6/webapps/host-manager/META-INF/context.xml
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|192\.168\.1\.\d+|::1|0:0:0:0:0:0:0:1" />
Stellen Sie Tomcat so ein, dass es automatisch startet, wenn Sie Raspberry Pi starten. Früher wurde es mit init.d gestartet, aber die aktuelle Version von Raspbian empfiehlt die Verwendung von systemd.
Erstellen Sie eine neue Einheitendatei /etc/systemd/system/tomcat.service für Tomcat.
sudo nano /etc/systemd/system/tomcat.service
Beschreiben Sie den folgenden Inhalt dieser Datei. Wenn Sie möchten, dass der Ausführungsbenutzer etwas anderes als pi ist, ersetzen Sie die Benutzer- und Gruppenspezifikationen im Abschnitt [Service].
[Unit]
Description=Apache Tomcat 9
After=syslog.target network.target
ConditionPathExists=/home/pi/apache-tomcat-9.0.6/bin/
[Service]
User=pi
Group=pi
Type=oneshot
Restart=no
PIDFile=/home/pi/apache-tomcat-9.0.6/tomcat.pid
RemainAfterExit=yes
ExecStart=/home/pi/apache-tomcat-9.0.6/bin/startup.sh
ExecStop=/home/pi/apache-tomcat-9.0.6/bin/shutdown.sh
ExecReload=/home/pi/apache-tomcat-9.0.6/bin/shutdown.sh;/home/pi/apache-tomcat-9.0.6/bin/startup.sh
[Install]
WantedBy=multi-user.target
Legen Sie nach dem Erstellen der Datei den Eigentümer und die Zugriffsrechte für die Datei fest (ich denke, dass dies auch dann der Fall ist, wenn Sie es nicht ändern).
sudo chown root:root /etc/systemd/system/tomcat.service
sudo chmod 644 /etc/systemd/system/tomcat.service
Verwenden Sie die folgenden Befehle, um Dienste zu starten / stoppen und den automatischen Start als Dämon festzulegen. Da die Root-Berechtigung mit Ausnahme des Bestätigungsbefehls erforderlich ist, fügen Sie am Anfang sudo hinzu und führen Sie es aus.
Funktion | Befehl |
---|---|
Bestätigung des Registrierungsstatus | systemctl daemon-reload systemctl list-unit-files --type=service |
Anlaufen | systemctl start tomcat.service |
Halt | systemctl stop tomcat.service |
Starten Sie neu | systemctl restart tomcat.service |
Überprüfen Sie den Status | systemctl status tomcat.service |
Spezifikation für den automatischen Start des Dämons | systemctl enable tomcat.service |
Automatische Startstornierung für Dämonen | systemctl disaable tomcat.service |
Überprüfen Sie das Protokoll | journalctl -u tomcat.service |
Starten Sie den Dienst, nachdem Sie bestätigt haben, dass er korrekt registriert wurde.
sudo systemctl daemon-reload
systemctl list-unit-files --type=service
sudo systemctl start tomcat.service
Geben Sie nach dem Starten des Dienstes die folgende URL an und stellen Sie sicher, dass die Tomcat-Begrüßungsseite in Ihrem Webbrowser angezeigt wird.
http://[IP-Adresse oder localhost]:8080/
![tomcat.PNG](https://qiita-image-store.s3.amazonaws.com/0/242156/9391a8ec-f1b1-90a9-01f9-9bc414758ecd.png)
Wenn die Begrüßungsseite korrekt angezeigt wird, aktivieren Sie den automatischen Start mit dem folgenden Befehl.
sudo systemctl enable tomcat.service
systemctl list-unit-files --type=service ・ ・ ・ Bestätigen Sie mit diesem Befehl aktiviert
(Referenzartikel) Installieren Sie Tomcat 8 unter CentOS 7 und stellen Sie den automatischen Start ein
Installieren Sie MySQL, eines der relationalen Datenbanksysteme, mit dem folgenden Befehl.
sudo apt-get install mysql-server
Bisher konnten allgemeine Benutzer wie pi auf MySQL zugreifen, indem sie ein Kennwort mit dem Befehl mysql -u root -p
angaben. Die Authentifizierungsmethode hat sich jedoch geändert, und der zuerst bei MySQL registrierte Root-Benutzer ist das Betriebssystem. Es ist eine Authentifizierungsmethode, die mit dem Konto verknüpft ist.
Da die Verbindung mit TCP wie MySQL Connecter / J, die wir dieses Mal einführen werden, eine Kennwortauthentifizierung sein muss, registrieren wir hier den Benutzer pi in MySQL durch Kennwortauthentifizierung.
sudo mysql -u root
mysql> USE mysql;
mysql> CREATE USER 'pi'@'localhost' IDENTIFIED BY 'raspberry';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'pi'@'localhost';
mysql> FLUSH PRIVILEGES;
mysql> exit
Sie können Kleinbuchstaben eingeben, die in Großbuchstaben geschrieben sind. Geben Sie das Kennwort an, indem Sie "Benutzer zum Registrieren von '@' localhost '" nach USER in die Anweisung CREATE und "'" nach IDENTIFIED BY einfügen. Darüber hinaus erteilen die Anweisungen GRANT und FLUSH den pi-Benutzerberechtigungen für alle Datenbanken.
Starten Sie abschließend den MySQL-Dienst neu.
sudo service mysql restart
Greifen Sie mit dem folgenden Befehl auf MySQL zu. Wenn Sie als pi-Benutzer angemeldet sind, können Sie das "-u pi" weglassen. Sie werden nach einem Passwort gefragt. Geben Sie daher das oben festgelegte Passwort an.
mysql -u pi -p
Die folgenden Artikel sind hilfreich für häufig verwendete SQL-Anweisungen.
(Referenzartikel) MySQL-Befehl
Dies ist das Paket, das für den Zugriff auf MySQL von Java aus erforderlich ist. Klicken Sie unter dem folgenden Link auf Komprimiertes TAR-Archiv herunterladen.
https://dev.mysql.com/downloads/connector/j/
Sie werden aufgefordert, sich anzumelden. Sie können jedoch auch herunterladen, indem Sie "Nein, danke, starten Sie einfach meinen Download" auswählen. Am Ende der Seite.
Extrahieren Sie die heruntergeladene Datei (mysql-connector-java-5.1.46.tar.gz) mit dem folgenden Befehl.
tar zxvf mysql-connector-java-5.1.46.tar.gz
Kopieren Sie die Datei mysql-connector-java-5.1.46-bin.jar aus den extrahierten Dateien in das lib-Verzeichnis von Tomcat (oder in ein Verzeichnis in Ihrem CLASSPATH).
cd mysql-connector-java-5.1.46
mv mysql-connector-java-5.1.46-bin.jar ~/apache-tomcat-9.0.6/lib
JFreeChart ist ein Paket, mit dem Sie eine Vielzahl von Diagrammen aus Java erstellen können. Folgen Sie dem Link unten zur SourceForge-Download-Seite und klicken Sie auf die Schaltfläche Neueste Version herunterladen.
http://www.jfree.org/jfreechart/download.html
Extrahieren Sie die heruntergeladene Datei (jfreechart-1.0.19.zip) mit dem folgenden Befehl.
unzip jfreechart-1.0.19.zip
Kopieren Sie die unter lib extrahierte JAR-Datei in das lib-Verzeichnis von Tomcat (oder in ein Verzeichnis in Ihrem CLASSPATH). Hierbei ist zu beachten, dass von den extrahierten JAR-Dateien ** nicht nur die Datei servlet.jar ** kopiert wird. Wenn Sie diese Datei in Ihren CLASSPATH einfügen, funktioniert Tomcat nicht ordnungsgemäß.
cd jfreechart-1.0.19/lib
rm servlet.jar
mv *.jar ~/apache-tomcat-9.0.6/lib
Stellen Sie den KLASSENPFAD so ein, dass Sie programmgesteuert auf die bisher installierten Pakete zugreifen können.
nano ~/.profile
Fügen Sie am Ende dieser Datei Folgendes hinzu: Wenn Sie verschiedene Pakete in anderen Verzeichnissen haben, fügen Sie diese entsprechend Ihrem CLASSPATH hinzu.
CATALINA_HOME="/home/pi/apache-tomcat-9.0.6"
export CLASSPATH=$CLASSPATH:.:/opt/pi4j/lib/*:$CATALINA_HOME/lib/*
Wenden Sie die Einstellungen mit dem folgenden Befehl an.
source ~/.profile
Ein Computer für etwa 5.000 Yen? Es ist schwer zu unterschätzen, dass der Raspberry Pi eine solche Funktion wie gewohnt haben kann!
Basierend auf der diesmal erstellten Umgebung habe ich ein Programm erstellt, das die Temperatur-, Feuchtigkeits- und Drucksensoren tatsächlich verbinden und die folgende Grafik über einen Webbrowser anzeigen kann.
Dies wird im folgenden Artikel vorgestellt.
Recommended Posts