-Exécuter UDP reçu le fichier python au démarrage ・ Installez Apache sur la tarte aux framboises ・ Activez SQLite -Créer un fichier php. Rendez-le visible dans le navigateur
Je viens d'apprendre le php, donc je prévois de faire quelque chose d'horriblement simple.
home/pi/ └SQLiteHTMLShow/ ├UDP_SQLite.py └ db/ └data.db
Créez un fichier python qui reçoit UDP et enregistre les données dans SQLite.
python UDP_SQLite.py
# -*- coding: utf-8 -*-
import socket #Transmission UDP
import struct #Pour la conversion de chaîne nombre → octet
from contextlib import closing #Pour avec
import sqlite3
import time
import datetime
import sys
UDP_IP = "" #C'est bien comme ça
UDP_PORT = 1234 #Recevoir le numéro de port
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) #Génération de socket
sock.bind((UDP_IP, UDP_PORT)) #Enregistrer la prise
#Spécifiez la base de données
dbname = '/home/pi/SQLiteHTMLShow/db/data.db'
with closing(sock): #Fermer automatiquement le socket lorsque le programme se termine
while True: #boucle infinie
try:
data, addr = sock.recvfrom(1024) #Recevoir
#print ( data ) #Afficher la chaîne d'octets telle quelle
#print(addr[0]) #Affichage de l'adresse IP
#print(addr[1]) #Affichage du port source
#Le nom de la table dans la base de données
ESP32 =addr[0].split('.')
print('dbtable = ' + 'ip' + str(ESP32[2] + ESP32[3]))#Adresse IP 192.Utilisez 168 ou moins comme nom de table
dbtable = 'ip' + str(ESP32[2] + ESP32[3])
#Connectez-vous à SQLite
conn = sqlite3.connect(dbname)
c = conn.cursor()
#Vérifiez s'il existe une table dans SQLite
checkdb = conn.execute("SELECT * FROM sqlite_master WHERE type='table' and name='%s'" % dbtable)
#S'il n'y a pas de table, créez-en une nouvelle
if checkdb.fetchone() == None:
create_table = '''create table ''' + dbtable + '''(id integer primary key autoincrement, time text,
ip text, port integer, temp text, humi text)'''
print(create_table)
c.execute(create_table)#Courir
conn.commit()
#Enregistrez la température, l'humidité et les horodatages.
sql = 'insert into ' + dbtable + '(time,ip,port,temp,humi) values (?,?,?,?,?)'
todaydetail = datetime.datetime.today()
time = todaydetail.strftime("%Y/%m/%d %H:%M:%S")
ip = addr[0]
port=addr[1]
print(str(data))
#Décomposer les chaînes de numéro de périphérique, de température et d'humidité envoyées ensemble
val=str(data).replace('b','').replace("'",'').split(',')
print(float(val[0]),float(val[1]))
data= (time,ip,port,float(val[0]),float(val[1]))
c.execute(sql, data)
conn.commit()
#Déconnecter
conn.close()
except:
print(sys.exc_info())
Avec cela, l'adresse IP spécifiée dans ESP32 devient le nom de la table tel quel et est enregistrée dans SQLite.
Si les adresses IP d'ESP32 sont définies individuellement, un tableau séparé sera créé.
Je pense que lorsque je l'utilise pour le travail, il occupera largement l'adresse IP de l'entreprise, je n'utiliserai donc qu'une seule adresse IP.