From 5935064606f1d526e68a50ccf5ceeb505ed37893 Mon Sep 17 00:00:00 2001 From: David Senoner Date: Wed, 11 Jun 2025 20:33:05 +0200 Subject: [PATCH] scheme for saving sensor data --- src/lib/server/db/schema.js | 21 ++++++++++++++++++++- src/routes/(app)/[slug]/+page.server.ts | 1 + src/routes/mqtt/+server.js | 2 ++ 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/lib/server/db/schema.js b/src/lib/server/db/schema.js index 7da6a0a..0ae02ed 100644 --- a/src/lib/server/db/schema.js +++ b/src/lib/server/db/schema.js @@ -1,4 +1,4 @@ -import { integer, json, pgTable, text, timestamp } from "drizzle-orm/pg-core"; +import { integer, json, pgTable, real, text, timestamp, uuid } from "drizzle-orm/pg-core"; export const users = pgTable("users", { id: text().primaryKey(), @@ -18,9 +18,28 @@ export const sessions = pgTable("sessions", { export const floors = pgTable("floors", { floor: integer().primaryKey(), url: text().notNull(), + image: text(), }); export const plans = pgTable("plans", { floor: integer().primaryKey(), plan: json().notNull(), }); + +export const sensors = pgTable("sensors", { + id: text().primaryKey(), + user: text() + .references(() => users.id) + .notNull(), +}); + +export const sensorData = pgTable("sensor_data", { + uuid: uuid().primaryKey(), + sensor: text("sensor") + .references(() => sensors.id) + .notNull(), + temperature: real().notNull(), + humidity: real().notNull(), + pressure: real().notNull(), + altitude: real().notNull(), +}); diff --git a/src/routes/(app)/[slug]/+page.server.ts b/src/routes/(app)/[slug]/+page.server.ts index a39184a..4488322 100644 --- a/src/routes/(app)/[slug]/+page.server.ts +++ b/src/routes/(app)/[slug]/+page.server.ts @@ -2,6 +2,7 @@ import { db } from "$lib/server/db"; import * as table from "$lib/server/db/schema"; import { eq } from "drizzle-orm"; import type { PageServerLoad } from "./$types"; +import { connect } from "mqtt"; export const load: PageServerLoad = async ({ params }) => { { diff --git a/src/routes/mqtt/+server.js b/src/routes/mqtt/+server.js index d69fcd3..a834279 100644 --- a/src/routes/mqtt/+server.js +++ b/src/routes/mqtt/+server.js @@ -6,6 +6,7 @@ import { writable } from "svelte/store"; // In a real application, you might want to store more data or // use a more robust way to manage messages, but for a basic example, this works. const latestMessage = writable("No message yet"); +const devices = writable([]); let client = null; @@ -36,6 +37,7 @@ function connectMqtt() { const payload = message.toString(); console.log(`Received message from topic "${topic}": ${payload}`); latestMessage.set(payload); // Update the Svelte store + console.log(topic.split("/")[1]); }); client.on("error", (err) => {