Adafruit IO 使用

/ 0评 / 0

Adafruit IO类似于一个IOT平台,这个IOT平台解决了一些已知的麻烦,就先说说传统的IOT的平台面临的问题.

虽然Adafruit IO解决了上述问题,但是就是太贵了...(不过免费账号也是一样用的)

我这里搞到了一个Plus账号来玩玩.(大家凭本事忽悠去吧)

整个Adafruit IO是三大核心模块组成.

Feeds就是我们需要提交的数据源,比如DockerPi获取的温度数据,Dashboard就是仪表板,用来展示数据,Trigger就是触发器,用来当条件发生进行操作的.

先创建一个叫temperature的Feeds.

然后在树莓派直接用Python就可以.(记得替换ADAFRUIT_IO_KEY和ADAFRUIT_IO_USERNAME,这两个参数在右上角AIO Key处获取,如果你是IO Plus用户,延迟可以改成1秒.)

from Adafruit_IO import Client, RequestError, Feed
import time
import smbus

ADAFRUIT_IO_KEY = 'aio_xxxxxxxxxxxxxxxxxxxxxx'
ADAFRUIT_IO_USERNAME = 'fcboyd'

DEVICE_BUS = 1
DEVICE_ADDR = 0x17
TEMP_REG = 0x01

# 创建SensorHub板子的对象
bus = smbus.SMBus(DEVICE_BUS)
# 创建执行实体并关联Feeds
aio = Client(ADAFRUIT_IO_USERNAME, ADAFRUIT_IO_KEY)
aio_temperature = aio.feeds('temperature')

while True:        
    aio.send_data(aio_temperature.key, bus.read_byte_data(DEVICE_ADDR, TEMP_REG))
    time.sleep(2)

接着看图表就有数据了.(我对着传感器呼气,抖动还是挺大的.)

新建一个Dashboard就能看到个空白面板.

点右上角的加号发现很多方块可以选.

还可以进行一些微调.

防止好了的效果.

再同样方法新建一个Feeds,就叫做light吧.

新建一个Light的开关.然后调整下Layout,让整体看起来舒服点.

这个时候这个Feed就受到开关控制了.

程序改成这样,就可以多个继电器控制了~

from Adafruit_IO import Client, RequestError, Feed
import smbus
import time

ADAFRUIT_IO_KEY = 'aio_xxxxxxxxxxxxxxxxxxxxxx'
ADAFRUIT_IO_USERNAME = 'fcboyd'

DEVICE_BUS = 1
DEVICE_ADDR_SENSORHUB = 0x17
DEVICE_ADDR_RELAY = 0x10
TEMP_REG = 0x01

# 创建SensorHub板子的对象
bus = smbus.SMBus(DEVICE_BUS)
# 创建执行实体并关联Feeds
aio = Client(ADAFRUIT_IO_USERNAME, ADAFRUIT_IO_KEY)
aio_temperature = aio.feeds('temperature')
aio_light = aio.feeds('light')

while True:        
    aio.send_data(aio_temperature.key, bus.read_byte_data(DEVICE_ADDR_SENSORHUB, TEMP_REG))

    if aio.receive(aio_light.key).value == 'OFF':
        bus.write_byte_data(DEVICE_ADDR_RELAY, 1, 0x00)
    else:
        bus.write_byte_data(DEVICE_ADDR_RELAY, 1, 0xFF)

    time.sleep(2)

另外Dashboard是可以有公开属性的,这样所有人都可以看到你的Dashboard了,分享给朋友不错的.

最后一个功能是触发功能,比如我设置,当温度大于30度时候给我发个邮件...

然后我拿热风枪吹了一下,立马就很高了.

也可以设置定时触发,每30分钟,告诉我一下温度.

如果是WebHook触发,就需要自己写Web程序解包JSON数据了~


Dashboard有一个细节设计,上面这个蓝条,蓝色代表设备在线,灰色就是离线了,后来观察到的,还挺有意思的.