Ich wollte einen Mechanismus erstellen, um Raspberry Pi-Daten in MySQL zu speichern und im Web zu überprüfen. Für diejenigen, die einen Server auf VPS einrichten und Daten austauschen möchten.
Abkürzung für Google Cloud Platform, einen von Google bereitgestellten Cloud-Computing-Dienst.
https://cloud.google.com/?hl=ja
Hier erfahren Sie, wie Sie GCP starten
https://cloud.google.com/gcp/getting-started/?hl=ja
--Installieren Sie Ubuntu (keine Version angegeben) aus dem Microsoft Store ――Es scheint, dass die neueste Version automatisch aktualisiert wird.
/ home / [erstellter Benutzername] /
--Powershell ist / mnt / c / Users / [Benutzername] /
/ mnt / c / Users / [Benutzername] /
und beginnen Sie zu arbeiten--Erstellen eines GCP-Projekts
https://cloud.google.com/free/docs/gcp-free-tier?hl=ja
scp ~/.ssh/[Öffentlicher Schlüssel] [Nutzername]@[IP des Übertragungszielservers]:~/.ssh/
--Installieren Sie apache2
sudo apt-get update
sudo apt-get install apache2 -y
curl http://[Externe IP]
--Firefall-Einstellungen (ufw Installation und Einstellungen)
#Aktivierung
sudo ufw enable
#TCP, das Sie verwenden/Untersuchen Sie den UDP-Port
sudo ufw status
#Auch mit nmap möglich
sudo nmap -sTU localhost
#Port freigeben (Registerregel)
sudo ufw allow [Portnummer, die Sie zulassen möchten]
#Regel löschen
sudo ufw status numbered
sudo ufw delete [number]
#Invalidierung
sudo ufw disable
sudo apt install mysql-server mysql-client
#Bestätigung des Servicestarts
sudo service mysql status
#MySQL-Initialisierung
sudo mysql_secure_installation
#Stellen Sie über die Konsole eine Verbindung zum MySQL-Server her
sudo mysql -u root -p
#Statusanzeige
mysql> status
#Datenbanklistenanzeige
mysql> show database;
#Benutzerlistenanzeige
mysql> select user, host from mysql.user;
#Bestätigung einer bestimmten Benutzerberechtigung (z)Benutzer: root,Hostname: localhost)
mysql> show grants for 'root'@'localhost';
#Ende
mysql> exit
https://www.yokoweb.net/2018/05/13/ubuntu-18_04-server-mysql/
sudo mysql
#Datenbank erstellen
mysql> create database [db_name]
mysql> show databases;
#Datenbank verschieben
mysql> use [db_name]
#Erstellen einer Tabelle (kein einziger Anstrich erforderlich)
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
#Bestätigung
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/
#Wenn es sich nicht um die neueste Version handelt, ist dies in Ordnung (die neueste Version ist Version 7)..3, im Fall von apt ver7.2)
sudo apt install php
/ var / www / html /
<?php phpinfo(); ?>
<?php
try{
//Erstellen Sie ein Objekt der PDO-Klasse
$pdo = new PDO('mysql:host=localhost;dbname=[db_name];charset=utf8', '[Nutzername]', '[Passwort]', array(PDO::ATTR_EMULATE_PREPARES => false));
}catch(PDOException $e){
exit('Datenbankverbindung fehlgeschlagen.'.$e->getMessage());
}
//DB-Verarbeitung
switch ($_SERVER['REQUEST_METHOD']) {
case 'GET':
$st = $pdo->query("select * from [Tabellenname]");
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 [Tabellenname](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://[Externe IP]/[Programmname].php'
#Temperaturerfassungsprozess
...
temp = #Wert
data = {'datetime':datetime.now().strftime("%Y/%m/%d %H:%M:%S"),'temp':temp}
#Codieren Sie Daten im JSON-Format
print(json.dumps(data))
#Senden Sie eine POST-Anfrage im JSON-Format(Inhalt, weil ich eine Antwort im Json-Stil möchte-Typenspezifikation)
response = requests.post(url, json.dumps(data), headers={'Content-type': 'application/json'}) #Bei korrekter Rückgabe wird die Antwort ausgefüllt
print(response.json())
pass
if __name__ == '__main__':
main()
Ich möchte Sensordaten gut nutzen und mich mit der Cloud verbinden ...