#include #include #include #include

int main(int argc, char *argv[]) { QCoreApplication a(argc, argv);

QTcpServer server;
if (!server.listen(QHostAddress::Any, 1234)) {
    qDebug() << "Failed to start server:" << server.errorString();
    return 1;
}

qDebug() << "Server started";

while (true) {
    if (!server.waitForNewConnection(5000)) {
        qDebug() << "No client connected";
        continue;
    }

    QTcpSocket *clientSocket = server.nextPendingConnection();
    qDebug() << "Client connected";

    // 读取userid
    QByteArray block = clientSocket->readAll();
    QDataStream in(&block, QIODevice::ReadOnly);
    int userid;
    in >> userid;

    // 连接数据库
    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName("database.db");
    if (!db.open()) {
        qDebug() << "Failed to open database";
        return 1;
    }

    // 查询最新的设备状态和值
    QSqlQuery query;
    query.prepare("SELECT device_name, value FROM Status WHERE uid = :uid ORDER BY sid DESC LIMIT 1");
    query.bindValue(":uid", userid);
    if (!query.exec()) {
        qDebug() << "Failed to execute query:" << query.lastError().text();
        db.close();
        return 1;
    }

    if (query.next()) {
        QString deviceName = query.value(0).toString();
        QString value = query.value(1).toString();

        // 分析设备状态和值,生成建议
        QString suggestion;
        if (deviceName.isEmpty()) {
            suggestion = "设备名称为空";
        } else if (deviceName == "空调" && value.toInt() < 24) {
            suggestion = "空调温度过低,建议提高温度至26℃";
        } else if (deviceName == "加湿器" && (value.toInt() < 40 || value.toInt() > 70)) {
            suggestion = "加湿器湿度过高或过低,建议调整加湿器湿度";
        } else {
            suggestion = "无建议";
        }

        // 发送建议给客户端
        QByteArray response;
        QDataStream out(&response, QIODevice::WriteOnly);
        out << suggestion;
        clientSocket->write(response);
    } else {
        qDebug() << "No device status found";
    }

    clientSocket->disconnectFromHost();
    qDebug() << "Client disconnected";

    db.close();
}

return a.exec();

}

智能家居设备状态分析服务器

原文地址: http://www.cveoy.top/t/topic/fCb6 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录