案例五 温湿度+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相关推荐

  1. 2021年大数据Flink(三十八):​​​​​​​Table与SQL ​​​​​​案例五 FlinkSQL整合Hive

    目录 案例五 FlinkSQL整合Hive 介绍 集成Hive的基本方式 准备工作 1.添加hadoop_classpath 2.下载jar并上传至flink/lib目录 3.修改hive配置 4.启 ...

  2. linux oracle em使用,案例:五步解决linux操作系统Oracle EM乱码的问题

    天萃荷净 用户生产环境Linux系统Oracle数据库配置OEM使用时出现乱码情况 如果想以中文显示,则需要修改一些配置文件. 包括三个目录: $ORACLE_HOME/jdk/jre/lib $OR ...

  3. 【机器学习】多项式回归案例五:正则惩罚解决过拟合(Ridge回归和Lasso回归)

    正则惩罚解决过拟合(Ridge回归和Lasso回归) 案例五: 正则惩罚解决过拟合(Ridge回归和Lasso回归) 3.2.1 模块加载与数据读入 3.2.2 特征工程 3.2.3 模型搭建与应用 ...

  4. PLC实验五(LED数码管显示控制)

    PLC实验五(LED数码管显示控制)

  5. 不同cpu服务器虚拟迁移,案例五:虚拟机迁移报错CPU不兼容

    [vSphere故障案例] 案例五:虚拟机迁移报错CPU不兼容 相同品牌不同型号服务器ESXi主机之间的虚拟机迁移时,报错:"主机的CPU在CPUID级别0x1寄存器ecx出的要求不兼容.& ...

  6. 【Drools规则引擎】基础入门案例五(Kie-Server+WorkBench)

    [Drools规则引擎]基础入门案例五(Kie-Server+WorkBench) 介绍 搭建WorkBench 搭建Kie-Server 使用WorkBench 访问登入 客户端测试 介绍 java ...

  7. 无盘服务器游戏盘尺寸,网吧无盘游戏服务器 案例五

    成都DIY组装网吧服务器 游戏服务器 可带120-150台电脑 DIY服务器超微 X10SRL-F 10*SATA3方案五 此配置适用于无盘网吧游戏服务器,在这里,我给客户简单介绍一下方案五的配置.此 ...

  8. Redis(案例五:Set数据)

    案例实战需求之大数据下的用户画像标签去重 介绍 用户画像 英文为User Profile,是根据用户基本属性.社会属性.行为属性.心理属性等真实信息⽽抽象出的⼀个标签化的.虚拟的⽤户模型." ...

  9. awk处理之案例五:awk匹配字段2包含字段1的文本

    编译环境 本系列文章所提供的算法均在以下环境下编译通过. [脚本编译环境]Federa 8,linux 2.6.35.6-45.fc14.i686 [处理器] Intel(R) Core(TM)2 Q ...

最新文章

  1. ASP.NET重用代码技术 - 代码绑定技术
  2. R语言ggplot2可视化分组的重叠图实战:grouped overlay plot
  3. 粗略的看下两款Linux下的性能分析工具
  4. v-if 和 v-else-if 和 v-else 的使用
  5. 七十五、React环境搭建,目录文件分析和JSX
  6. 转载:React Fiber架构(浅显易懂)
  7. java数据段 静态区_linux进程的堆栈空间_代码段(指令,只读)、数据段(静态变量,全局变量)、堆栈段(局部变量)、栈【转】...
  8. LeetCode 783二叉搜索树节点最小距离-简单
  9. 如何使用json开发web_如何通过使用JSON Web令牌简化应用程序的身份验证
  10. 卸载frontpage服务器扩展_免费0撸一月腾讯云服务器
  11. git--常用小命令
  12. 读取网络抓包文件data得到参数
  13. 简书留言频率限制机制
  14. 红米1s 一键root测试
  15. axi_ddr_top
  16. 傻傻分不清桃花,杏花,樱花,梨花,李花,海棠花?
  17. 车联网百家谈 | 从生物演化角度看自动驾驶发展路径
  18. mysql冗余_如何合理使用数据库冗余字段的方法
  19. 网络攻防技术-Lab5-shellcode编写实验(SEED Labs – Shellcode Development Lab)
  20. Android中图片圆形设置三种方法介绍

热门文章

  1. 一文读读懂SVM推导全过程
  2. 《惢客创业日记》2019.02.11(周一) 终于和咸鱼见面了
  3. 三菱FX5U通讯控制台达VFD-S系列案例程序
  4. 全景丨0基础学习VR全景制作,平台篇第19章:热点功能-文本
  5. linux怎样重启网卡,linux系统重启网卡的方法步骤详解
  6. upload video
  7. clover引导修改默认启动
  8. 【钉钉-场景化能力包】CRM系统促进广告平台高效获客
  9. MediaPipe人体姿态、手指关键点检测
  10. n+=1和n=n+1的区别