π©π» IoT (Embedded)/Raspberry Pi
raspberry pi broker μμ pub μμ λ°μ κ°μ sub λ‘ sqlite μ μ μ₯νκΈ°
μ§μ§μνμΉ΄
2023. 12. 12. 14:15
728x90
λ°μν
π§π python paho-mqtt μ¬μ©νκΈ°
sudo apt-get install python3-pip
pip3 install paho-mqtt
λ§μ½. μμ κ΄λ ¨λ μ€λ₯κ° λμ¨λ€λ©΄
sudo rm /usr/lib/python3.11/EXTERNALLY-MANAGED
μ΄κ±Έλ‘ ν΄κ²°!
λ€μ paho-mqtt μ€μΉνλ©΄ λλ€
π§π pubμμ λ°μ κ°μ sqlite3μ μ μ₯νκΈ°
# main.c
import paho.mqtt.client as mqtt
import sqlite3
from time import time
MQTT_HOST = '192.168.0.154'
MQTT_PORT = 1883
MQTT_CLIENT_ID = 'sqlClient'
MQTT_USER = 'YOUR MQTT USER'
MQTT_PASSWORD = 'YOUR MQTT USER PASSWORD'
TOPIC = 'sensor/#'
DATABASE_FILE = 'mqtt.db'
def on_connect(mqtt_client, user_data, flags, conn_result):
mqtt_client.subscribe(TOPIC)
def on_message(mqtt_client, user_data, message):
payload = message.payload.decode('utf-8')
db_conn = user_data['db_conn']
sql = 'INSERT INTO sensors_data (topic, payload, created_at) VALUES (?, ?, ?)'
cursor = db_conn.cursor()
cursor.execute(sql, (message.topic, payload, int(time())))
db_conn.commit()
cursor.close()
def main():
db_conn = sqlite3.connect(DATABASE_FILE)
sql = """
CREATE TABLE IF NOT EXISTS sensors_data (
id INTEGER PRIMARY KEY AUTOINCREMENT,
topic TEXT NOT NULL,
payload TEXT NOT NULL,
created_at INTEGER NOT NULL
)
"""
cursor = db_conn.cursor()
cursor.execute(sql)
cursor.close()
mqtt_client = mqtt.Client(MQTT_CLIENT_ID)
# mqtt_client.username_pw_set(MQTT_USER, MQTT_PASSWORD)
mqtt_client.user_data_set({'db_conn': db_conn})
mqtt_client.on_connect = on_connect
mqtt_client.on_message = on_message
mqtt_client.connect(MQTT_HOST, MQTT_PORT)
mqtt_client.loop_forever()
main()
sqlite3 mqtt.db
// database μν νμΈ
.database
// ν
μ΄λΈ νμΈ
.tables
728x90
λ°μν