Linux网关配置杂项

对于IoT,我的观点一向是:速度是决胜关键。所以凡是接口一律标准化,减少定制工作量。IoT网关和边缘计算也是如此,可以将原有的私有协议、行业标准直接对接到IT通用标准。

物理层标准化

把ZWave/Zigbee/LoRaWAN/Sigfox/CAN等都封装成USB Dongle/mPCIe Card就好了。和3G/4G/WiFi/BLE采用同样方式接入,很难么?

设备测USB现在已经非常成熟了,有STM32/NXP等厂家提供参考设计,难度大大降低。只是网关测需要解决驱动、自动检测、后台服务。

设备驱动和自动检测

在没有使用专用驱动之前,采用libusb实现“无驱驱动”。通过VID/PID检测,也可以通过固件初始化应答来检测是否是正确的设备。

相对来说,自动检测的难度稍大一些。有以下几种方式:

  1. glib/udev (pyudev)
  2. HAL/DBus (dbus)
  3. pyinotify 文件系统监控模块
  4. 轮询 /dev/ttyUSBx/dev/ttyACMx 设备文件
  5. 轮询 /var/log/messages 系统文件
  6. 轮询 /dev/tty*,使用 pyserial 模块

以上方式仅限于Linux,Windows下需要使用ctypes方式来访问win32api。

后台运行和开机自动运行

在Linux中,可以使用nohup实现后台运行,最新的systemd还是有些许限制。

将nohup脚本放置到/etc/rc.local即可以实现开机自动运行。

总结

当Linux主机运行后,会有一个Dongle Monitor监控程序开始后台运行,当检测到有USB Dongle插入后,可以调用Gateway Daemon实现私有网络到云计算服务器的对接转发。同样道理,当检测到USB Dongle拔出,可以暂停Gateway Daemon的运行。甚至可以实现多路转发。

Dongle Monitor和Gateway Daemon之间可以通过zeroMQ/socket/redis进行通讯。DM/GD可以使用Docker进行封装。

你可能感兴趣的:(Linux网关配置杂项)