模拟简单的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展示

相关推荐
Zevalin爱灰灰44 分钟前
零基础入门学用物联网(ESP8266) 第一部分 基础知识篇(五)
单片机·物联网·嵌入式·esp8266
Web3_Daisy2 小时前
Token 分红机制详解:实现逻辑、激励结构与风险分析
大数据·人工智能·物联网·web3·区块链
BY组态2 小时前
从零开始:Ricon组态系统快速入门指南
运维·物联网·web组态·组态
次旅行的库3 小时前
MQTT学习笔记
数据库·笔记·物联网·学习
瑶光守护者4 小时前
【卫星通信】IoT-NTN卫星通信全球战略报告:市场动态、技术前沿与运营商生态(2025-2030)
物联网·卫星通信
Zevalin爱灰灰4 小时前
零基础入门学用物联网(ESP8266) 第一部分 基础知识篇(四)
物联网·嵌入式·esp8266
智链RFID17 小时前
从需求到落地:企业RFID系统选择的智慧之道
物联网·rfid·数字化转型·企业信息化·仓储管理
RFID科技的魅力18 小时前
零门槛上手!CP300R触屏RFID打印机操作体验与打印效果实测
大数据·物联网·rfid
三佛科技-1873661339721 小时前
FT838NB1-RT原边反馈5级能效电源控制器5V1A芯片电路图及管脚定义
单片机·嵌入式硬件·物联网
物联通信量讯说1 天前
企业级物联网卡服务商怎么选?——主流服务商类型对比与选型框架
物联网·信息与通信·iot·物联网卡·企业级物联网服务商