案例五 温湿度+LED
案例五 温湿度+LED
--init.lua
print("set up wifi mode")
wifi.setmode(wifi.STATION)
wifi.sta.config("SSID","PASSWORD")
--here SSID and PassWord should be modified according your wireless router
wifi.sta.connect()
tmr.alarm(1, 1000, 1, function()if wifi.sta.getip()== nil thenprint("IP unavaiable, Waiting...")elsetmr.stop(1)print("IP:"..wifi.sta.getip())dofile("runtime.lua") end
end)dofile("config.lua")
dofile("Dht.lua")
dofile("SendData.lua")bLive=0gpio.mode(config.LEDPin,gpio.OUTPUT)
cu = net.createConnection(net.TCP)
cu:connect(config.port, config.host)cu:on("receive", function(cu, c) print(c)r = cjson.decode(c)--如果存活标记为1,置为0if r.M=="isOL" thenbLive=0 endtmr.alarm(1, 10000, 1, function()print("start send data")--读取湿度 Humi,Temp=ReadDHT(config.DHTPin) --发送数据sendToBigiot(cu,Humi,Temp)--checkin和心跳dofile("checkIn.lua")--执行命令dofile("sayCommand.lua")end)
end)--modify DEVICEID1 INPUTID APIKEY DEVICEID2
config={
host = host or "www.bigiot.net",
port = port or 8181,
DEVICEID = "",
UID="",
TempID="",
HumiID="",
APIKEY = "",
DHTPin= 1,
LEDPin= 4
}function ReadDHT(pin)dhstatus, temp, humi, temp_dec, humi_dec = dht.read11(pin)print(dhstatus)if dhstatus == dht.OK then print(string.format("DHT Temperature:%d.%03d;Humidity:%d.%03d\r\n",math.floor(temp),temp_dec,math.floor(humi),humi_dec))--转换实际温度realTemp=math.floor(temp)--转换实际湿度realhumi=math.floor(humi)return realhumi,realTempelseif status == dht.ERROR_CHECKSUM thenprint( "DHT Checksum error." )elseif status == dht.ERROR_TIMEOUT thenprint( "DHT timed out." )end
endfunction sendToBigiot(cu,humi,temp)print(humi)print(temp)if humi==nil then humi=0endif temp==nil thentemp=0end--上报湿度local v = {[config.TempID]=string.format("%.2f", math.floor(temp)),[config.HumiID]=string.format("%.3f",math.floor(humi))} ok3, s3 = pcall(cjson.encode, {M="update",ID=config.DEVICEID,V=v})print("send data:"..s3)cu:send( s3.."\n")
end--收到连接正常,发送checkin
if r.M == "WELCOME TO BIGIOT" thenok, s = pcall(cjson.encode, {M="checkin",ID=config.DEVICEID,K=config.APIKEY})if ok thenprint(s)elseprint("failed to encode!")endcu:send( s.."\n" )bLive=0--定时心跳,防止掉线tmr.alarm(2, 40000, 1, function()--如果标记为1,表示未收到上次的心跳返回,重启if bLive==3 thennode.restart()endok, ticket = pcall(cjson.encode, {M="isOL",ID="D"..config.DEVICEID})print(ticket)cu:send(ticket.."\n" )--发送后将标记置为1bLive=bLive+1 end)
end--如果是say代表命令
if r.M == "say" then local commander=r.C if commander == "play" then gpio.write(config.LED, gpio.HIGH) ok, played = pcall(cjson.encode, {M="say",ID=config.UID,C="LED turn on!"})cu:send( played.."\n" )elseif commander == "stop" then gpio.write(config.LED, gpio.LOW)ok, stoped = pcall(cjson.encode, {M="say",ID=config.UID,C="LED turn off!"})cu:send( stoped.."\n" ) end
end
转载于:https://my.oschina.net/u/2367008/blog/761932
案例五 温湿度+LED相关推荐
- 2021年大数据Flink(三十八):Table与SQL 案例五 FlinkSQL整合Hive
目录 案例五 FlinkSQL整合Hive 介绍 集成Hive的基本方式 准备工作 1.添加hadoop_classpath 2.下载jar并上传至flink/lib目录 3.修改hive配置 4.启 ...
- linux oracle em使用,案例:五步解决linux操作系统Oracle EM乱码的问题
天萃荷净 用户生产环境Linux系统Oracle数据库配置OEM使用时出现乱码情况 如果想以中文显示,则需要修改一些配置文件. 包括三个目录: $ORACLE_HOME/jdk/jre/lib $OR ...
- 【机器学习】多项式回归案例五:正则惩罚解决过拟合(Ridge回归和Lasso回归)
正则惩罚解决过拟合(Ridge回归和Lasso回归) 案例五: 正则惩罚解决过拟合(Ridge回归和Lasso回归) 3.2.1 模块加载与数据读入 3.2.2 特征工程 3.2.3 模型搭建与应用 ...
- PLC实验五(LED数码管显示控制)
PLC实验五(LED数码管显示控制)
- 不同cpu服务器虚拟迁移,案例五:虚拟机迁移报错CPU不兼容
[vSphere故障案例] 案例五:虚拟机迁移报错CPU不兼容 相同品牌不同型号服务器ESXi主机之间的虚拟机迁移时,报错:"主机的CPU在CPUID级别0x1寄存器ecx出的要求不兼容.& ...
- 【Drools规则引擎】基础入门案例五(Kie-Server+WorkBench)
[Drools规则引擎]基础入门案例五(Kie-Server+WorkBench) 介绍 搭建WorkBench 搭建Kie-Server 使用WorkBench 访问登入 客户端测试 介绍 java ...
- 无盘服务器游戏盘尺寸,网吧无盘游戏服务器 案例五
成都DIY组装网吧服务器 游戏服务器 可带120-150台电脑 DIY服务器超微 X10SRL-F 10*SATA3方案五 此配置适用于无盘网吧游戏服务器,在这里,我给客户简单介绍一下方案五的配置.此 ...
- Redis(案例五:Set数据)
案例实战需求之大数据下的用户画像标签去重 介绍 用户画像 英文为User Profile,是根据用户基本属性.社会属性.行为属性.心理属性等真实信息⽽抽象出的⼀个标签化的.虚拟的⽤户模型." ...
- awk处理之案例五:awk匹配字段2包含字段1的文本
编译环境 本系列文章所提供的算法均在以下环境下编译通过. [脚本编译环境]Federa 8,linux 2.6.35.6-45.fc14.i686 [处理器] Intel(R) Core(TM)2 Q ...
最新文章
- ASP.NET重用代码技术 - 代码绑定技术
- R语言ggplot2可视化分组的重叠图实战:grouped overlay plot
- 粗略的看下两款Linux下的性能分析工具
- v-if 和 v-else-if 和 v-else 的使用
- 七十五、React环境搭建,目录文件分析和JSX
- 转载:React Fiber架构(浅显易懂)
- java数据段 静态区_linux进程的堆栈空间_代码段(指令,只读)、数据段(静态变量,全局变量)、堆栈段(局部变量)、栈【转】...
- LeetCode 783二叉搜索树节点最小距离-简单
- 如何使用json开发web_如何通过使用JSON Web令牌简化应用程序的身份验证
- 卸载frontpage服务器扩展_免费0撸一月腾讯云服务器
- git--常用小命令
- 读取网络抓包文件data得到参数
- 简书留言频率限制机制
- 红米1s 一键root测试
- axi_ddr_top
- 傻傻分不清桃花,杏花,樱花,梨花,李花,海棠花?
- 车联网百家谈 | 从生物演化角度看自动驾驶发展路径
- mysql冗余_如何合理使用数据库冗余字段的方法
- 网络攻防技术-Lab5-shellcode编写实验(SEED Labs – Shellcode Development Lab)
- Android中图片圆形设置三种方法介绍