From ef9a79df9eb82be9c4a233d2ef542f26f1402364 Mon Sep 17 00:00:00 2001 From: flems Date: Thu, 25 Jun 2026 09:38:26 +0700 Subject: [PATCH] Fix: Convert boolean relay values to integer for MySQL database - Fixed relay status saving issue where all relays showed 0 in database - Added explicit boolean to integer conversion (true->1, false->0) - Applied to relay1, relay2, relay3, relay4 columns - MySQL BOOLEAN columns are stored as TINYINT(1) requiring numeric values --- backend/database.js | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/backend/database.js b/backend/database.js index c093a7a..8d97bf6 100644 --- a/backend/database.js +++ b/backend/database.js @@ -147,6 +147,12 @@ async function insertSensorData(data) { mysqlTimestamp = date.toISOString().slice(0, 19).replace('T', ' '); } + // Convert boolean to integer (1 or 0) for MySQL + const relay1 = data.relay1 ? 1 : 0; + const relay2 = data.relay2 ? 1 : 0; + const relay3 = data.relay3 ? 1 : 0; + const relay4 = data.relay4 ? 1 : 0; + const [result] = await pool.query( `INSERT INTO sensor_data (suhu, berat, target, relay1, relay2, relay3, relay4, status, timestamp) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`, @@ -154,10 +160,10 @@ async function insertSensorData(data) { data.suhu || 0, data.berat || 0, data.target || 0, - data.relay1 || false, - data.relay2 || false, - data.relay3 || false, - data.relay4 || false, + relay1, + relay2, + relay3, + relay4, data.status || 'DISCONNECTED', mysqlTimestamp ]