IOT:use raspberrPi and headlessRPC make a Token light
从零开始,做一个基于TrustNote区块链的台灯
一、介绍一下原理
TrustNote收款钱包+物联网电灯=Token电灯
TrustNote收款钱包=HeadlessRPC+树莓派+pythonSDK
物联网电灯=树莓派+继电器+灯泡

灯泡用树莓派控制,树莓派可以通过编程来输出GPIO,令某个GPIO针脚输出高电平或低电平,该针脚连接继电器,继电器接入高电平可以使220v电流流通,即实现开关闭合点亮电灯。继电器输入低电平,则220v开关断开,电灯关闭。
使用 TrustNoteHeadlessRPC作为核心,运行在树莓派上,使得这个电灯的本质变成了一个钱包。它可以知道自己被转入多少钱。
当用户使用TTT钱包向电灯付款的时候,电灯可以查询到付款金额,并根据付款金额点亮电灯相应的时间。
当用户使用TTT钱包向电灯付款的时候,电灯可以查询到付款金额,并根据付款金额点亮电灯相应的时间。
二、具体的制作方法:
首先得有个可用高电平控制的灯,我们用酸奶罐来做一个。

在酸奶罐底部,用电钻配合陶瓷钻头打一个小洞,大概在8mm左右,能让电源线和3根导线穿过即可。

这样的孔大小刚刚好。
我们还需要一个灯泡,如下图所示。

有了灯,还得有控制灯开关的电路。这里直接使用一块继电器。

有了继电器,就可以用高电平控制灯的点亮与熄灭了。现在把灯和继电器塞进酸奶罐里。

这是组装好的样子:

接下来,需要一块树莓派来控制刚才做的灯。

这块树莓派里面跑了基于ubuntu的rasbian系统,里面可以运行headlessRPC和pythonSDK。
首先安装headlessRPC:
git clone https://github.com/TrustNoteDevelopers/RPC.git
cd RPC
npm install
接下来,输入命令npm run init,遇到需要输入的地方可以一路回车。
npm run init
然后,启动rpc服务
npm run rpc
服务起来以后,需要安装pythonSDK并启动。
git clone https://github.com/TrustNoteDevelopers/python-sdk.git
python web.py
我们输入树莓派的ip地址,后面跟上参数,新建一个钱包的收款地址:
192.168.1.1/api/address/new

上面那个地址D4XDT6IDR5OPVDG7CPGL4JQBGZFRFMUE,就是树莓派钱包的地址,也就是给灯充值的地址。当然,你需要生成你自己的地址,否则钱就转到我的灯上面,概不退回。
下面,我们编写python代码:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import RPi.GPIO as GPIO
import time
import requests
import json
GPIO.setmode(GPIO.BOARD)
#GPIO.setmode(GPIO.BCM)
pin=12
GPIO.setup(pin,GPIO.OUT)
#GPIO.output(pin,GPIO.HIGH)
#GPIO.output(pin,GPIO.LOW)
min=-1
while(True):
r=requests.get("http://127.0.0.1/api/balance/D4XDT6IDR5OPVDG7CPGL4JQBGZFRFMUE")
#print r.text
j=json.loads(r.text)
amount=j['result']['objBalance']['kPI5sZc1e7vG/nik67qDP4N8sjAnnhYRsUTUB/YvsTY=']
print "{0}:{1}".format(min,amount)
if min==-1:
min=amount
else:
if amount>min :
GPIO.output(pin,GPIO.HIGH)
min=amount
time.sleep(10)
else:
GPIO.output(pin,GPIO.LOW)
time.sleep(2)
其中,kPI5sZc1e7vG/nik67qDP4N8sjAnnhYRsUTUB/YvsTY= 是自定义资产的唯一id,因为本示例虽然是用TTT钱包去转账,但转的并不是TTT,而是自定义资产。关于自定义资产的创建,可以去http://itoken.top 平台快速创建自定义资产,创建成功后,会返回资产id。
其中 GPIO.output(pin,GPIO.HIGH) 就是让树莓派的GPIO输出一个高电平,从而让继电器点亮电灯。
下面是整体效果:

最后是演示DEMO:

源代码位于:https://github.com/TrustNoteDevelopers/samples/blob/master/iot/light.py
三、现实意义:
灯仅仅作为演示,意味着TrustNote可以方便接入物联网领域。
任何一个设备,都可以成为TrustNote钱包,这意味着世间的一切物体都可以用于转账。
假如这个灯泡不是灯泡,而是一个电视,这意味着,你可以给电视支付一笔费用,以使用电视的某种服务,如观看30分钟的电影等。
假如这个灯泡不是灯泡,而是一个冰箱。你甚至转账给冰箱,就会有快递人员送货上门给你新鲜的鸡蛋。
最后,大家想要模仿时一定要注意安全,必须有电工基础,毕竟电灯是110~220v的,不是安全电压。
Updated over 6 years ago