什么是物联网

一句话定义

将普通设备连接上局域网,形成一个整个网络,实现与人的交互。

使用我们熟悉的互联网来理解物联网

互联网的应用基本上只有大前端和后端两块,而在物联网里,后端增加了固件升级、时序数据、长连接等。底部增加了设备端,设备和后端进行通过 https、websocket(MQTT)进行通信,设备端内置 WIFI、蓝牙等通信模组,与后端进行通信,设备计算环境是对各个模组进行控制和数据处理,在上面的示例中就是树莓派。传感器数据采集是对环境中的数据进行处理。

物联网的四层模型如何解释

物联网的四层模型分为:感知 && 设备层、网络层、平台层、应用层。其中每一层的功能如下:

前端怎么玩物联网

1. 用 Node 写物联网代码的几种方式

用 Node 调用 C 或 C++ 模块

Node 中使用应用二进制接口(Application Binary Interface )来实现与 C 和 C ++ 的通信的,特指应用去访问编译好的二进制程序,是 Node 与 C、C+ + 通信的桥梁。而在 ABI 上层,是使用 Native Addon 进行加载二进制的文件,让二进制文件的内容可以通过 require 的方式导入,因为他会在暴露出 module.exports 或 exports 对象。类似于如下所示:

// greet.node 是编译好的二进制文件
const addon = require('./build/Release/greet.node')

而在 C++ 代码中,实现如下:

#include <napi.h>
#include <string>
#include "greeting.h"

/**
 Napi 全称为:Node-API C++ 包装类,负责将 C ++ 的方法包装成一个 node 可以访问的方法,
 可以理解成 Napi 就是 Native Addon 的实现
**/
// 定义一个返回类型为 Napi String 的 greetHello 函数
Napi::String greetHello(const Napi::CallbackInfo& info) {
    Napi::Env env = info.Env();
    std::string user = (std::string) info[0].ToString();
    std::string result = helloUser(user);
    return Napi::String::New(env, result);
}

// 设置类似于 exports = {key:value}的模块导出
Napi::Object Init(Napi::Env env, Napi::Object exports) {
    exports.Set(
        Napi::String::New(env, "greetHello"), // key
        Napi::Function::New(env, greetHello)  // value
        );

    return exports;
}

// 导出
NODE_API_MODULE(greet, Init)