IOT:use raspberrPi and headlessRPC make a Token light

从零开始,做一个基于TrustNote区块链的台灯

一、介绍一下原理

TrustNote收款钱包+物联网电灯=Token电灯
TrustNote收款钱包=HeadlessRPC+树莓派+pythonSDK
物联网电灯=树莓派+继电器+灯泡

973

灯泡用树莓派控制,树莓派可以通过编程来输出GPIO,令某个GPIO针脚输出高电平或低电平,该针脚连接继电器,继电器接入高电平可以使220v电流流通,即实现开关闭合点亮电灯。继电器输入低电平,则220v开关断开,电灯关闭。

使用 TrustNoteHeadlessRPC作为核心,运行在树莓派上,使得这个电灯的本质变成了一个钱包。它可以知道自己被转入多少钱。

当用户使用TTT钱包向电灯付款的时候,电灯可以查询到付款金额,并根据付款金额点亮电灯相应的时间。

当用户使用TTT钱包向电灯付款的时候,电灯可以查询到付款金额,并根据付款金额点亮电灯相应的时间。

二、具体的制作方法:

首先得有个可用高电平控制的灯,我们用酸奶罐来做一个。

1334

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

1334

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

1080

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

1080

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

560

这是组装好的样子:

1080

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

1080

这块树莓派里面跑了基于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

769

上面那个地址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输出一个高电平,从而让继电器点亮电灯。

下面是整体效果:

1080

最后是演示DEMO:

948

源代码位于:https://github.com/TrustNoteDevelopers/samples/blob/master/iot/light.py

三、现实意义:

灯仅仅作为演示,意味着TrustNote可以方便接入物联网领域。

任何一个设备,都可以成为TrustNote钱包,这意味着世间的一切物体都可以用于转账。

假如这个灯泡不是灯泡,而是一个电视,这意味着,你可以给电视支付一笔费用,以使用电视的某种服务,如观看30分钟的电影等。

假如这个灯泡不是灯泡,而是一个冰箱。你甚至转账给冰箱,就会有快递人员送货上门给你新鲜的鸡蛋。

最后,大家想要模仿时一定要注意安全,必须有电工基础,毕竟电灯是110~220v的,不是安全电压。