模拟简单的iOT工作流

没有实际接触过iOT的流程,应该实际使用比这个接口返回要复杂,只是演示~希望能参与实际的接口接入,而不是只展示个假数据。

启动RabbitQ

使用的是3.8.5 启动命令
RabbitMQ Service - start
RabbitMQ Command Prompt
rabbitmqctl start_app
rabbitmq -plugins enable rabbitmq_management
rabbitmq-plugins enable rabbitmq_web_mqtt
rabbitmq-plugins enable rabbitmq_mqtt
访问 http://localhost:15672

账号:guest 密码:guest

查看命令:rabbitmq-plugins list

1883端口已开

MQTT模拟收发

模拟IoT设备发送

javascript 复制代码
import mqtt from 'mqtt'
const options = {
    username:"guest",
    password:"guest"
}

var client = mqtt.connect("mqtt://localhost:1883", options);

function sendTemperature() {
    // 生成一个0到40之间的随机温度值
    const temperature = Math.floor(Math.random() * 40);
    const now = new Date();
    const hours = now.getHours();
    const minutes = now.getMinutes();
    const seconds = now.getSeconds();
    const ioTdata = `Time:${hours}:${minutes}:${seconds},temperature:${temperature}`
    console.log(`Sending iOTData: ${ioTdata}`);    
    client.publish('sensor/temperature', ioTdata);
  }

// 连接成功  
client.on('connect', function () {
    console.log('Connected');
    setInterval(sendTemperature, 1000);
});

// 连接失败  
client.on('error', function (err) {
    console.log('Connection error: ', err);
});

模拟存储设备接收

javascript 复制代码
import mqtt from 'mqtt'
import * as fs from 'fs'

const options = {
    username:"guest",
    password:"guest"
}


var client = mqtt.connect("mqtt://localhost:1883", options);

// 连接成功  
client.on('connect', function () {
    console.log('Connected');
    // 订阅主题  
    client.subscribe('sensor/temperature', function (err) {
        if (!err) {
            console.log('Subscribed');
        }
    });

});

// 接收消息  
client.on('message', function (topic, message) {
    // message is Buffer  
    console.log(message.toString());
    recordTemperature(message)
    //client.end(); // 接收完消息后断开连接  
});

// 连接失败  
client.on('error', function (err) {
    console.log('Connection error: ', err);
});

// 连接关闭  
// client.on('close', function () {
//     console.log('Connection closed');
// });

function recordTemperature(data){
    fs.appendFile("./record.txt",data+"\n",(err)=>{
        if (err) {
            console.error(err);
            return;
          }
    })
}

后端起服务读取本地信息

javascript 复制代码
import express from 'express'
import * as fs from 'fs'
import cors from 'cors'

const app = express();
const port = 5000;

app.use(cors());

app.get('/v1/iotdataDemo', (req, res) => {
    let data="";
    try {
        data = fs.readFileSync('./record.txt', 'utf8');        
    } catch (err) {
        console.error(err);
    }    
    if(data.length === 0) return;
    res.json({ iotData: data.split("\n") });
});


app.listen(port, () => {
    console.log(`Server running on http://localhost:${port}`);
});

前端eChart展示

相关推荐
QXWZ_IA4 小时前
【深度】打破IoT“米级”魔咒:当RTK SDK遇上具身智能与工业互联,厘米级定位如何重塑边缘计算?
物联网·自动驾驶·嵌入式开发·rtk·北斗导航
国产化创客7 小时前
ESP32-S3+INMP441+MAX98357 本地 WAV 录音播放方案详解
物联网·开源·音视频·智能家居·智能硬件
智购科技自动贩卖机8 小时前
自动售货机硬件主控方案选型实战:单片机、树莓派、ESP32怎么选?
人工智能·单片机·嵌入式硬件·物联网·网络协议·yolo·架构
LHX sir8 小时前
HubPort vs Node-RED:同样是可视化编排,有什么不同
物联网·node-red·协议自动化
悟天特斯9 小时前
智慧楼宇AI节能优化实战:从规则控制到深度学习预测的能效跃升
人工智能·深度学习·物联网
LHX sir9 小时前
医疗设备外设多、协议杂?HubPort 让出厂设备自带 AI
人工智能·物联网·医疗设备·设备智能化
LHX sir10 小时前
MCP 协议是什么?HubPort 如何让设备被 AI 智能体调用
人工智能·物联网·ai智能体·mcp
新鲜势力呀10 小时前
ESP8266 物联网实战:PHP 后端 + Web 服务器实现 LED 远程控制(超详细入门教程)
前端·物联网·php
数字新视界10 小时前
U位资产管理系统实现IT资产数字化智能管理
物联网·数据中心·动环监控·微模块机房·模块化机房
小岐AI观20 小时前
智赋岐黄适合养生馆吗?
大数据·人工智能·物联网