Ich habe gerade PHP gelernt, also plane ich, etwas schrecklich Einfaches zu machen.
home/pi/ └SQLiteHTMLShow/ ├UDP_SQLite.py └ db/ └data.db
Erstellen Sie eine Python-Datei, die UDP empfängt und Daten in SQLite registriert.
python UDP_SQLite.py
# -*- coding: utf-8 -*-
import socket #UDP-Übertragung
import struct #Für die Konvertierung von Zahlen → Byte-Strings
from contextlib import closing #Für mit
import sqlite3
import time
import datetime
import sys
UDP_IP = "" #So ist es gut
UDP_PORT = 1234 #Portnummer empfangen
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) #Steckdosengenerierung
sock.bind((UDP_IP, UDP_PORT)) #Registrieren Sie die Steckdose
#Datenbank angeben
dbname = '/home/pi/SQLiteHTMLShow/db/data.db'
with closing(sock): #Socket beim Beenden des Programms automatisch schließen
while True: #Endlosschleife
try:
data, addr = sock.recvfrom(1024) #Erhalten
#print ( data ) #Zeigen Sie die Byte-Zeichenfolge so an, wie sie ist
#print(addr[0]) #Anzeige der IP-Adresse
#print(addr[1]) #Anzeige des Quellports
#Der Name der Tabelle in der Datenbank
ESP32 =addr[0].split('.')
print('dbtable = ' + 'ip' + str(ESP32[2] + ESP32[3]))#IP-Adresse 192.Verwenden Sie 168 oder weniger als Tabellennamen
dbtable = 'ip' + str(ESP32[2] + ESP32[3])
#Stellen Sie eine Verbindung zu SQLite her
conn = sqlite3.connect(dbname)
c = conn.cursor()
#Überprüfen Sie, ob in SQLite eine Tabelle vorhanden ist
checkdb = conn.execute("SELECT * FROM sqlite_master WHERE type='table' and name='%s'" % dbtable)
#Wenn keine Tabelle vorhanden ist, erstellen Sie eine neue
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)#Lauf
conn.commit()
#Speichern Sie Temperatur, Luftfeuchtigkeit und Zeitstempel.
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))
#Zerlegen Sie die Zeichenfolgen für Gerätenummer, Temperatur und Luftfeuchtigkeit, die zusammen gesendet werden
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()
#Trennen
conn.close()
except:
print(sys.exc_info())
Damit wird die in ESP32 angegebene IP-Adresse so wie sie ist und in SQLite registriert.
Wenn die IP-Adressen von ESP32 einzeln festgelegt werden, wird eine separate Tabelle erstellt.
Ich denke, wenn ich es für die Arbeit benutze, wird es die IP-Adresse des Unternehmens weitestgehend belegen, daher werde ich nur eine IP-Adresse verwenden.