IOT
2019-01-04
ESP8266
模拟输出 Analog output
analogWrite(pin, value)
在已有的引脚上使能软件PWM功能。PWM可以用在引脚0~16。调用analogWrite(pin, 0) 可以关闭引脚PWM。取值范围:0~ PWMRANGE,默认为1023。 PWM 范围可以使用analogWriteRange(new_range)语句来更改。
PWM 默认频率:1KHz。使用analogWriteFreq(new_frequency) 可以更改频率。
ESPEASY
定时触发hooks脚本
on WiFi#Connected do
timerSet,1,10
endon
On Rules#Timer=1 do
SendToHTTP malu.me,80,/iot?domain=iotd1&ip=%ip%
timerSet,1,100
endon
定时睡眠
要启用深度睡眠,我们需要将RST引脚连接到ESP8266上的GPIO 16,在NodeMCU上,GPIO 16表示为D0;在D1上,GPIO 16表示为D2。
如果没有连接,将无法自动唤醒!!!
On System#Boot do
timerSet,2,60
endon
On Rules#Timer=2 do //When Timer2 expires, do 启动60秒后,进入深度睡眠10秒,再启动,重复
deepsleep,10
endon
手动唤醒设备:RST拉至GND
擦除配置
在内存0x200000处写入空文件:
MQTT控制
controllers -> 编辑第一个 -> Protocol选择OpenHAB MQTT
发布主题,即为控制端 Controller Subscribe: /%sysname%/#
比如发布一个主题:/test01/GPIO/2 Payload:0 ,给GPIO2低电平
接收主题,即为信号返回 Controller Publish: /%sysname%/%tskname%/%valname%
比如根据上面接收地址为:/test01/esp01/Switch
esp01为:devices -> task name为esp01
Switch为:其Values的name
esp_wifi_repeater
官网:https://github.com/martin-ger/esp_wifi_repeater
注意!!!每次配置最好save一下。
中继基本配置:
set ssid xxx
set password xxx
save
set automesh 1
// set am_threshold dB:设置“坏”连接的阈值(以dB为单位,默认为85,即-85 dB)
// set hw_reset GPIOno:选择GPIO引脚进行硬件恢复出厂设置(> 16禁用,默认)
show
show stats // 查看状态信息
save
reset
MQTT配置:
set mqtt_host xxx
set mqtt_port xxx
// 查看mqtt配置(会显示出MQTT Client Id等信息)
show mqtt
MQTT Client Id: ESPRouter_xxx
默认命令发布地址是:/WiFi/ESPRouter_xxx/command
接收命令(订阅)地址是:/WiFi/ESPRouter_xxx/system/response
接收所有节点和链接信息:/WiFi/ESPRouter_xxx/system/Topology
set mqtt_interval secs:设置路由器发布状态主题的时间间隔(默认值:15s,0禁用状态发布)
automesh最优路径网状树,根据rssi信号强度自动生成树状网络;
经测试,如果大量相同SSID的AP集中在某个位置,该算法会频繁切换网络,导致wifi不稳定,此时可以尝试减小am_threshold阈值,比如50。
安全配置:
lock xxx // 锁定修改
unlock xxx // 解锁修改
set config_port portno:设置控制台登录的端口号(默认为7777,0 禁用远程控制台配置)
set web_port portno:设置Web配置服务器的端口号(默认为80,0 禁用Web配置)
set config_access mode:控制允许控制台和Web配置访问的网络(0:无访问权限,1:仅内部,2:仅外部,3:两者(默认))
性能调优:
为提高吞吐率,可以把CPU频率调高:
set speed [80|160] :设置CPU时钟频率(默认为80 Mhz)
测量功耗:
循环中80Mhz 89 - 90mA
循环后空闲 33 - 34mA
循环中160Mhz 94.8 - 95mA
循环后空闲 34 - 35mA
Arduino
板载LED灯
引脚值:GPIO 13
ESP8266板载LED为:GPIO 2
全局常量:
#define LED_BUILTIN 13
高电平时点亮:
void setup() {
pinMode(13, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level)
}