[JAVA] Stellen Sie die Sensorinformationen von Raspberry Pi grafisch dar und bereiten Sie eine Umgebung vor, die mit einem Webbrowser überprüft werden kann

Einführung

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.

Diesmal verwendete Umgebungs- / Softwareversion

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

Hinweis

Raspbian Installation und Konfiguration

Installation

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.

Aufbau

Systemmodernisierung

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

Raspberry Pi Konfigurationseinstellungen

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.

Ändern Sie das Root-Passwort

sudo passwd root

Feste IP-Adresse

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 Installation

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.

Pi4J offizielle Website

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

Samba Installation und Konfiguration (optional)

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.

samba.PNG

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

Tomcat installieren und konfigurieren

Installation

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 ~

Aufbau

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" />

Einstellungen für den automatischen Start

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

Installation und Konfiguration von MySQL

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

Installieren von MySQL Connector / J.

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

Installieren Sie JFreeChart

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

Andere

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

Schließlich

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.

3.PNG

Dies wird im folgenden Artikel vorgestellt.

Zeichnen Sie die Sensorinformationen von Raspberry Pi in Java und überprüfen Sie sie mit einem Webbrowser

Recommended Posts

Stellen Sie die Sensorinformationen von Raspberry Pi grafisch dar und bereiten Sie eine Umgebung vor, die mit einem Webbrowser überprüft werden kann
Stellen Sie die Sensorinformationen von Raspberry Pi in Java grafisch dar und überprüfen Sie sie mit einem Webbrowser
Erstellt eine Umgebung, in der Kotlin mit Docker mit CLI kompiliert und mit Java ausgeführt werden kann
Erstellen Sie mit Raspberry Pi und Docker Compose im Handumdrehen ein NAS mit DLNA-Funktion
Eine Geschichte, die mit der Einführung von Web Apple Pay zu kämpfen hatte
Bereiten Sie eine Scraping-Umgebung mit Docker und Java vor
Bereiten Sie die CentOS 8-Umgebung mit Sakura VPS vor
Bereiten Sie die Umgebung für Java11 und JavaFx mit Ubuntu 18.4 vor
Versuchen Sie, die Fernbedienung der Mitsubishi-Klimaanlage mit Raspberry Pi zu scannen, zu analysieren und zu übertragen
Ein Programm (Java), das die Summe von ungeraden und geraden Zahlen in einem Array ausgibt
Ein Kratzen des vergangenen Wetters, das auf der Website der Meteorologischen Agentur zu sehen ist
Ich habe ein Rätsel ausprobiert, das nur von den unteren 10% der schlechten Ingenieure gelöst werden kann
Erstellen Sie ein Seitensteuerelement, das mit RecyclerView verwendet werden kann
Vier Reihen mit Schwerkraft, die auf der Konsole gespielt werden können
Socket-Kommunikation mit einem Webbrowser über Java und JavaScript ②
Socket-Kommunikation mit einem Webbrowser über Java und JavaScript ①