"Introduction à Raspberry Pi en Java" de Rick Telecom est l'un des rares (ou seuls?) Livres d'introduction basés sur Java sur Raspberry Pi. Vers la fin de ce livre, je vais vous montrer comment enregistrer en continu les informations du capteur de température connecté au Raspberry Pi dans la base de données et les afficher sous forme de graphique sur le navigateur Web d'autres PC et smartphones.
Pour ce faire, nous utilisons MySQL comme SGBDR, MySQL Connecter / J comme interface avec Java, Tomcat comme serveur Web et JFreeChart comme outil graphique. Cependant, la date de publication de ce livre était décembre 2016 et maintenant, même si vous essayez d'installer ou de configurer ces packages comme décrit dans le livre, diverses choses inattendues se produiront.
J'ai donc fait des recherches et construit l'environnement que vise ce livre.
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
Cette fois, j'ai installé à partir de NOOBS. J'ai téléchargé Raspbian à partir de TÉLÉCHARGEMENTS sur le [site officiel] de Raspberry Pi (https://www.raspberrypi.org/), mais c'était si lent que j'ai utilisé le site miroir suivant (cela a encore pris environ 2 heures). Cette fois, j'ai utilisé la v2.7.0 publiée le 14 mars 2018.
http://ftp.jaist.ac.jp/pub/raspberrypi/NOOBS/images/
Extrayez le fichier téléchargé (NOOBS_v2_7_0 .zip), copiez tous les fichiers créés sur la carte microSD formatée telle quelle, insérez-la dans la fente pour carte du Raspberry Pi et démarrez l'installation. Si nécessaire, cliquez sur l'icône Réseaux Wifi sur l'écran initial de NOOBS et définissez le LAN sans fil.
Tous les travaux ultérieurs sont effectués par l'utilisateur pi.
Une fois l'installation terminée et Raspbian démarré, entrez la commande suivante à partir de LXTerminal pour actualiser votre système.
sudo apt-get update
sudo apt-get upgrade
Cliquez sur l'icône de menu en haut à gauche de l'écran GUI-sélectionnez "Préférences" - "Configuration Raspberry Pi" pour afficher le panneau de configuration Raspberry Pi. Cette fois, j'ai défini ce qui suit.
Catégorie | Élément de réglage: valeur de réglage |
---|---|
System | Mot de passe: facultatif Underscan:Disable |
Interface | SSH:Enable SPI:Enable I2C:Enable |
Localisation - Locale | Country:US (United States) |
Localisation - Timezone | Area:Japan |
Localisation - Keyboard | Country:Japan Variante: le clavier que vous utilisez |
Localisation - WiFi Country | Country:JP Japan |
Lorsque vous appuyez sur le bouton OK, il vous sera demandé de redémarrer le système, mais ici, ne redémarrez pas et continuez à définir les paramètres suivants.
sudo passwd root
Modifiez /etc/dhcpcd.conf.
sudo nano /etc/dhcpcd.conf
Ajoutez ce qui suit à ce fichier (spécifiez l'adresse IP, etc. en fonction de votre environnement).
interface wlan0 #Eth0 pour LAN filaire
static ip_address=192.168.1.100/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1
Ceci termine les paramètres Raspbian. Redémarrez maintenant le système une fois.
sudo reboot
Pi4J est un package pour contrôler GPIO à partir de Java. Entrez la commande suivante pour obtenir et exécuter le script d'installation.
curl -s get.pi4j.com | sudo bash
Les fichiers de classe de package sont copiés dans / opt / pi4j / lib. Le site officiel de Pi4J contient des documents et des échantillons.
Après avoir terminé les paramètres jusqu'à présent, il devrait être possible de contrôler les composants électroniques et les capteurs connectés à GPIO à l'aide de Java, mais à partir d'aujourd'hui (avril 2018), Wiring Pi, qui est la base du contrôle de GPIO. Ne prend pas en charge le dernier firmware (noyau), donc lorsque j'exécute le programme, il se termine avec le message d'erreur suivant.
Unable to determine hardware version. I see: Hardware : BCM2835
Par conséquent, pour que le programme fonctionne normalement, rétrogradez le micrologiciel avec la commande suivante (un redémarrage est nécessaire).
sudo rpi-update 52241088c1da59a359110d39c1875cda56496764
(Article de référence) Remarques lorsqu'une erreur se produit dans WiringPi
Bien que cela ne soit pas obligatoire, il est utile d'installer Samba afin que les fichiers du Raspberry Pi puissent être partagés avec d'autres PC.
sudo apt-get update
sudo apt-get install samba
Modifiez /etc/samba/smb.conf.
sudo nano /etc/samba/smb.conf
À la fin de ce fichier, ajoutez par exemple: Dans cet exemple, le nom de partage est pi et les fichiers sous / home / pi sont lus et écrits en tant qu'utilisateur pi.
[pi]
path = /home/pi
read only = No
guest ok = Yes
force user = pi
Après avoir enregistré le fichier ci-dessus, redémarrez le service.
sudo service smbd restart
Assurez-vous que le Raspberry Pi est reconnu par l'Explorateur Windows, etc., et que le répertoire défini est visible en tant que dossier.
Si vous ne trouvez pas le Raspberry Pi, essayez de spécifier le nom d'hôte et le nom de partage directement dans la partie adresse de l'Explorateur, comme indiqué ci-dessous.
\\RASPBERRYPI\pi
(Article de référence) Installation, configuration et connexion à Samba
Téléchargez le package Tomcat depuis le Site officiel. Cliquez sur le lien Tomcat 9.0 sous Télécharger sur le côté gauche de la page d'accueil, puis cliquez sur tar.gz dans Binary Distributins Core pour télécharger le fichier du package.
Extrayez le fichier téléchargé (apache-tomcat-9.0.6.tar.gz) avec la commande suivante.
tar xzvf apache-tomcat-9.0.6.tar.gz
Déplacez le fichier apache-tomcat-9.0.6 décompressé, avec le répertoire, directement sous le répertoire personnel de pi.
mv apache-tomcat-9.0.6 ~
Configurez l'utilisateur pour accéder à l'écran de gestion de Tomcat. L'écran d'administration est accessible depuis l'écran d'accueil de Tomcat (voir ci-dessous pour savoir comment accéder à l'écran d'accueil), mais cela ne signifie pas que vous ne pouvez pas du tout utiliser Tomcat.
Enregistrez l'utilisateur pour les fichiers suivants.
nano ~/apache-tomcat-9.0.6/conf/tomcat-users.xml
Ajoutez ce qui suit dans la balise \ <tomcat-users >. Spécifiez le contenu que vous souhaitez définir respectivement pour le nom d'utilisateur et le mot de passe.
<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<user username="pi" password="raspberry" roles="manager-gui,admin-gui"/>
Par défaut, l'écran d'administration n'est accessible que localement. Si vous souhaitez accéder aux écrans État du serveur et Gestionnaire d'applications Web Tomcat à partir d'autres ordinateurs parmi les écrans de gestion, modifiez le fichier de paramètres suivant.
nano ~/apache-tomcat-9.0.6/webapps/manager/META-INF/context.xml
Dans allow dans la balise \ <Valve >, entrez l'adresse IP pour autoriser l'accès en termes canoniques.
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
Par exemple, si vous souhaitez accéder à partir de l'adresse IP 192.168.1.xxx, remplacez la partie expression régulière comme suit. 192 \ .168 \ .1 \. \ D +
est ajouté avec | (ou).
allow="127\.\d+\.\d+\.\d+|192\.168\.1\.\d+|::1|0:0:0:0:0:0:0:1"
Pour l'écran de gestion de Tomcat Virtual Host Manager, modifiez les fichiers suivants de la même manière.
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" />
Configurez Tomcat pour qu'il démarre automatiquement lorsque vous démarrez Raspberry Pi. Auparavant, il était démarré avec init.d, mais la version actuelle de Raspbian recommande d'utiliser systemd.
Créez un nouveau fichier d'unité /etc/systemd/system/tomcat.service pour Tomcat.
sudo nano /etc/systemd/system/tomcat.service
Décrivez le contenu suivant de ce fichier. Si vous voulez que l'utilisateur d'exécution soit autre chose que pi, remplacez les spécifications Utilisateur et Groupe dans la section [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
Après avoir créé le fichier, définissez le propriétaire et les droits d'accès du fichier (je pense que c'est le cas même si vous ne le modifiez pas).
sudo chown root:root /etc/systemd/system/tomcat.service
sudo chmod 644 /etc/systemd/system/tomcat.service
Utilisez les commandes suivantes pour démarrer / arrêter les services et définir le démarrage automatique en tant que démon. Puisque l'autorité racine est requise sauf pour la commande de confirmation, ajoutez sudo au début et exécutez-le.
une fonction | commander |
---|---|
Confirmation du statut d'inscription | systemctl daemon-reload systemctl list-unit-files --type=service |
Commencez | systemctl start tomcat.service |
Arrêtez | systemctl stop tomcat.service |
Redémarrer | systemctl restart tomcat.service |
Vérifiez l'état | systemctl status tomcat.service |
Spécification de démarrage automatique Demon | systemctl enable tomcat.service |
Annulation automatique du démarrage démon | systemctl disaable tomcat.service |
Vérifiez le journal | journalctl -u tomcat.service |
Après avoir confirmé qu'il a été correctement enregistré, démarrez le service.
sudo systemctl daemon-reload
systemctl list-unit-files --type=service
sudo systemctl start tomcat.service
Après avoir lancé le service, spécifiez l'URL suivante et vérifiez que la page d'accueil Tomcat s'affiche depuis votre navigateur Web.
http://[adresse IP ou localhost]:8080/
![tomcat.PNG](https://qiita-image-store.s3.amazonaws.com/0/242156/9391a8ec-f1b1-90a9-01f9-9bc414758ecd.png)
Lorsque la page d'accueil s'affiche correctement, activez le démarrage automatique avec la commande suivante.
sudo systemctl enable tomcat.service
systemctl list-unit-files --type=service ・ ・ ・ Confirmer activé avec cette commande
(Article de référence) Installer Tomcat 8 sur CentOS 7 et définir le démarrage automatique
Installez MySQL, l'un des systèmes de base de données relationnelle, avec la commande suivante.
sudo apt-get install mysql-server
Auparavant, les utilisateurs généraux tels que pi pouvaient accéder à MySQL en spécifiant un mot de passe avec la commande mysql -u root -p
, mais la méthode d'authentification a changé et l'utilisateur root enregistré pour la première fois avec MySQL est le système d'exploitation. C'est une méthode d'authentification liée au compte.
Étant donné que la connexion utilisant TCP comme MySQL Connecter / J que nous allons introduire cette fois doit être une authentification par mot de passe, nous enregistrerons ici l'utilisateur pi dans MySQL par authentification par mot de passe.
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
Vous pouvez saisir des parties en minuscules écrites en majuscules. Spécifiez le mot de passe en insérant "User to register '@' localhost '" après USER dans l'instruction CREATE et "'" après IDENTIFIED BY. En outre, les instructions GRANT et FLUSH accordent à l'utilisateur pi des autorisations sur toutes les bases de données.
Enfin, redémarrez le service MySQL.
sudo service mysql restart
Accédez à MySQL avec la commande suivante. Si vous êtes connecté en tant qu'utilisateur pi, vous pouvez omettre "-u pi". Il vous sera demandé un mot de passe, alors spécifiez le mot de passe que vous avez défini ci-dessus.
mysql -u pi -p
Les articles suivants seront utiles pour les instructions SQL fréquemment utilisées.
(Article de référence) Commande Mysql
Il s'agit du package requis pour accéder à MySQL depuis Java. Cliquez sur Télécharger l'archive TAR compressée à partir du lien ci-dessous.
https://dev.mysql.com/downloads/connector/j/
Vous serez invité à vous connecter, mais vous pouvez également télécharger en sélectionnant «Non merci, lancez simplement mon téléchargement».
Extrayez le fichier téléchargé (mysql-connector-java-5.1.46.tar.gz) avec la commande suivante.
tar zxvf mysql-connector-java-5.1.46.tar.gz
Copiez le fichier mysql-connector-java-5.1.46-bin.jar des fichiers extraits dans le répertoire lib de Tomcat (ou dans un répertoire de votre CLASSPATH).
cd mysql-connector-java-5.1.46
mv mysql-connector-java-5.1.46-bin.jar ~/apache-tomcat-9.0.6/lib
JFreeChart est un package qui vous permet de créer une grande variété de graphiques à partir de Java. Suivez le lien ci-dessous vers la page de téléchargement de SourceForge et cliquez sur le bouton Télécharger la dernière version.
http://www.jfree.org/jfreechart/download.html
Extrayez le fichier téléchargé (jfreechart-1.0.19.zip) avec la commande suivante.
unzip jfreechart-1.0.19.zip
Copiez le fichier jar extrait sous lib dans le répertoire lib de Tomcat (ou dans un répertoire de votre CLASSPATH). Une chose à noter ici est que pour les fichiers jar extraits, ** ne copiez pas uniquement le fichier servlet.jar **. Si vous mettez ce fichier dans votre CLASSPATH, Tomcat ne fonctionnera pas correctement.
cd jfreechart-1.0.19/lib
rm servlet.jar
mv *.jar ~/apache-tomcat-9.0.6/lib
Définissez CLASSPATH pour pouvoir accéder aux packages que vous avez installés jusqu'à présent par programme.
nano ~/.profile
À la fin de ce fichier, ajoutez ce qui suit: Si vous avez divers packages dans d'autres répertoires, ajoutez-les à votre CLASSPATH comme il convient.
CATALINA_HOME="/home/pi/apache-tomcat-9.0.6"
export CLASSPATH=$CLASSPATH:.:/opt/pi4j/lib/*:$CATALINA_HOME/lib/*
Appliquez les paramètres avec la commande suivante.
source ~/.profile
Un ordinateur pour environ 5 000 yens? Il est difficile de sous-estimer le Raspberry Pi qu'il peut avoir une telle fonction comme d'habitude!
Sur la base de l'environnement construit cette fois, j'ai créé un programme capable de connecter les capteurs de température, d'humidité et de pression et d'afficher le graphique ci-dessous à partir d'un navigateur Web.
Ceci est présenté dans l'article suivant.
Recommended Posts