Je voulais créer un mécanisme pour stocker les données Raspberry Pi dans MySQL et les vérifier sur le Web. Pour ceux qui souhaitent mettre en place un serveur sur VPS et échanger des données.
Abréviation de Google Cloud Platform, un service de cloud computing fourni par Google.
https://cloud.google.com/?hl=ja
Découvrez ici comment démarrer GCP
https://cloud.google.com/gcp/getting-started/?hl=ja
--Installez Ubuntu (aucune version spécifiée) à partir du Microsoft Store ――Il semble que la dernière version sera automatiquement mise à jour.
/ home / [nom d'utilisateur créé] /
--Powershell est / mnt / c / Users / [nom d'utilisateur] /
/ mnt / c / Users / [nom d'utilisateur] /
avec la commande cd et commencez à travailler--Création d'un projet GCP
https://cloud.google.com/free/docs/gcp-free-tier?hl=ja
scp ~/.ssh/[Clé publique] [Nom d'utilisateur]@[IP du serveur de destination du transfert]:~/.ssh/
--Installez apache2
sudo apt-get update
sudo apt-get install apache2 -y
curl http://[IP externe]
#Activation
sudo ufw enable
#TCP que vous utilisez/Examinez le port UDP
sudo ufw status
#Également possible avec nmap
sudo nmap -sTU localhost
#Port de sortie (règle d'enregistrement)
sudo ufw allow [Numéro de port que vous souhaitez autoriser]
#Supprimer la règle
sudo ufw status numbered
sudo ufw delete [number]
#Annulation
sudo ufw disable
sudo apt install mysql-server mysql-client
#Confirmation du démarrage du service
sudo service mysql status
#Initialisation MySQL
sudo mysql_secure_installation
#Connectez-vous au serveur MySQL depuis la console
sudo mysql -u root -p
--Confirmation des informations utilisateur MySQL, etc.
#Affichage de l'état
mysql> status
#Affichage de la liste des bases de données
mysql> show database;
#Affichage de la liste des utilisateurs
mysql> select user, host from mysql.user;
#Confirmation de l'autorité utilisateur spécifique (ex)Utilisateur: root,Nom d'hôte: localhost)
mysql> show grants for 'root'@'localhost';
#Fin
mysql> exit
https://www.yokoweb.net/2018/05/13/ubuntu-18_04-server-mysql/
sudo mysql
#Créer une base de données
mysql> create database [db_name]
mysql> show databases;
#Déplacer la base de données
mysql> use [db_name]
#Créer une table (pas besoin d'une seule couche)
mysql> create table [tbl_name]( id int(11) NOT NULL AUTO_INCREMENT,
-> ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
-> temp float NOT NULL,
-> PRIMARY KEY(id)) ENGINE=MyISAM
#Vérification
mysql> show tables from [db_name];
mysql> show columns from [tbl_name];
+-------+-----------+------+-----+-------------------+-----------------------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-----------+------+-----+-------------------+-----------------------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| ts | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
| temp | float | NO | | NULL | |
+-------+-----------+------+-----+-------------------+-----------------------------+
3 rows in set
http://zetcode.com/databases/mysqltutorial/storageengines/
#S'il ne s'agit pas de la dernière version, c'est OK (la dernière est ver7).3, dans le cas d'apt ver7.2)
sudo apt install php
/ var / www / html /
<?php phpinfo(); ?>
<?php
try{
//Créer un objet de classe PDO
$pdo = new PDO('mysql:host=localhost;dbname=[db_name];charset=utf8', '[Nom d'utilisateur]', '[mot de passe]', array(PDO::ATTR_EMULATE_PREPARES => false));
}catch(PDOException $e){
exit('La connexion à la base de données a échoué.'.$e->getMessage());
}
//Traitement DB
switch ($_SERVER['REQUEST_METHOD']) {
case 'GET':
$st = $pdo->query("select * from [nom de la table]");
echo json_encode($st->fetchAll(PDO::FETCH_ASSOC));
break;
case 'POST':
$data = json_decode(file_get_contents('php://input'), true);
$st = $pdo->prepare("insert into [nom de la table](ts,temp)values(:datetime,:temp)");
$st->execute($data);
header('Content-Type: application/json');
echo json_encode("end");
break;
}
?>
# coding: utf-8
import requests
import json
from datetime import datetime
def main():
url = 'http://[IP externe]/[nom du programme].php'
#Processus d'acquisition de la température
...
temp = #valeur
data = {'datetime':datetime.now().strftime("%Y/%m/%d %H:%M:%S"),'temp':temp}
#Encoder les données au format JSON
print(json.dumps(data))
#Envoyer une requête POST au format JSON(Contenu parce que je veux une réponse de style json-spécification de type)
response = requests.post(url, json.dumps(data), headers={'Content-type': 'application/json'}) #Si renvoyé correctement, la réponse sera renseignée
print(response.json())
pass
if __name__ == '__main__':
main()
Je veux faire bon usage des données des capteurs et me connecter au cloud ...
Recommended Posts