Sim800L 组件
组件/集线器
Section titled “组件/集线器”SIM800L 组件提供拨号、接听电话、发送/接收短信以及发送/接收 USSD 代码的功能。设备必须通过支持接收和发送线路的 UART 总线 连接。UART 总线必须配置为与模块相同的速度,默认为 9600bps。所需的连接线是 +VCC、GND、RX 和 TX。
WARNING
如果您使用 Logger,请确保不要为 TX 和 RX 使用相同的引脚,或者使用 baud_rate: 0 选项禁用 UART 日志记录。
NOTE
此模块需要 3.8V 到 4.2V 之间的电源,能够处理高达 2 安培的电流峰值,它无法通过 ESP 的 3.3V 电源供电。但是,您可以直接连接 TX 和 RX 线路,无需任何电平转换器。
# 示例配置项sim800l: on_sms_received: - logger.log: format: "从 %s 收到 '%s'" args: [ 'message.c_str()', 'sender.c_str()' ]-
uart_id (可选, ID): 手动指定 UART 集线器的 ID。
-
id (可选, ID): 手动指定用于代码生成的 ID。
-
on_sms_received (可选, 自动化): 收到短信时执行的操作。请参阅
on_sms_received触发器。 -
on_incoming_call (可选, 自动化): 收到来电时执行的操作。请参阅
on_incoming_call触发器。 -
on_call_connected (可选, 自动化): 通话连接时执行的操作,无论是拨出的电话被接受还是接听来电。
-
on_call_disconnected (可选, 自动化): 通话断开时执行的操作。
sensor: - platform: sim800l rssi: name: "Sim800L RSSI"-
rssi (可选): 报告的接收信号强度指示 (RSSI),单位为 dBm。
- 所有来自 传感器 的选项。
binary_sensor: - platform: sim800l registered: name: "Sim800L 已注册"-
registered (可选): 指示 SIM800L 是否已成功注册到蜂窝网络。
- 所有来自 二值传感器 的选项。
on_sms_received 触发器
Section titled “on_sms_received 触发器”使用此配置选项,您可以在收到短信时编写复杂的自动化。要使用消息内容,请使用 lambda 模板,消息内容和发送者电话号码在该 lambda 中分别通过名为 message 和 sender 的变量可用。
on_sms_received: - lambda: |- id(sms_sender).publish_state(sender); id(sms_message).publish_state(message);on_incoming_call 触发器
Section titled “on_incoming_call 触发器”每当 SIM800L 发送 RING / 来电显示消息时,此自动化就会触发,此消息每次通话会发送多次,据推测每次电话”响铃”时都会发送。自动化提供一个 caller_id 字符串参数,其中包含接收到的信息。电话既不会被接听也不会被拒绝。
on_incoming_call: - logger.log: format: "来自 '%s' 的来电" args: ["caller_id.c_str()"] - lambda: |- id(caller_id_text_sensor).publish_state(caller_id); - sim800l.disconnect - homeassistant.event: event: esphome.incoming_call_event data: payload: !lambda 'return id(caller_id_text_sensor).state;'on_ussd_received 触发器
Section titled “on_ussd_received 触发器”使用此配置选项,您可以在收到网络的 USSD 代码时编写复杂的自动化。
on_ussd_received:sim800l.send_sms 操作
Section titled “sim800l.send_sms 操作”在自动化中使用此操作向电话收件人发送短信。
on_...: then: - sim800l.send_sms: recipient: '+15551234567' message: 你好
# 使用模板: - sim800l.send_sms: recipient: !lambda |- if (id(reed_switch).state) return "+15551234567"; else return "15551234568"; message: !lambda |- return id(reed_switch).state ? "门现在打开" : "嘿,门刚刚关闭";-
recipient (必需, 字符串, 可模板化): 消息收件人号码。
-
message (必需, 字符串, 可模板化): 消息内容。
-
id (可选, ID): 如果您有多个组件,手动指定 SIM800L 的 ID。
sim800l.dial 操作
Section titled “sim800l.dial 操作”在自动化中使用此操作拨打电话收件人。
on_...: then: - sim800l.dial: recipient: '+15551234567'sim800l.connect 操作
Section titled “sim800l.connect 操作”接听来电。
on_...: then: - sim800l.connectsim800l.disconnect 操作
Section titled “sim800l.disconnect 操作”断开通话,无论是拨出的还是接听的。
on_...: then: - sim800l.disconnectsim800l.send_ussd 操作
Section titled “sim800l.send_ussd 操作”向网络发送 USSD 代码。
on_...: then: - sim800l.send_ussdHome Assistant 入门指南
Section titled “Home Assistant 入门指南”以下代码将帮助您完成配置,在 Home Assistant 上更新接收到的消息,并设置一个服务,以便您可以使用 SIM800L 发送消息和拨打电话。
api: actions: - action: send_sms variables: recipient: string message: string then: - sim800l.send_sms: recipient: !lambda 'return recipient;' message: !lambda 'return message;' - action: dial variables: recipient: string then: - sim800l.dial: recipient: !lambda 'return recipient;' - action: connect then: - sim800l.connect - action: disconnect then: - sim800l.disconnect - action: send_ussd variables: ussdCode: string then: - sim800l.send_ussd: ussd: !lambda 'return ussdCode;'
text_sensor: - platform: template id: sms_sender name: "短信发送者" - platform: template id: sms_message name: "短信内容" - platform: template id: caller_id_text_sensor name: "来电号码" - platform: template id: ussd_message name: "USSD 代码"
uart: baud_rate: 9600 tx_pin: TX rx_pin: RX
sim800l: on_sms_received: - lambda: |- id(sms_sender).publish_state(sender); id(sms_message).publish_state(message); on_incoming_call: - lambda: |- id(caller_id_text_sensor).publish_state(caller_id); on_call_connected: - logger.log: format: 通话已连接 on_call_disconnected: - logger.log: format: 通话已断开 on_ussd_received: - lambda: |- id(ussd_message).publish_state(ussd);现在您最新收到的短信和发送者号码将通过文本传感器显示。
要从 Home Assistant 触发自动化,您可以使用以下代码调用服务:
automation: # ... action: - action: esphome.livingroom_send_sms data: recipient: "+15551234567" message: "你好世界!" - action: esphome.livingroom_dial data: recipient: "+15551234567"从授权发送者接收继电器管理命令:
sim800l: on_sms_received: - lambda: |- if ( (id(sms_sender).state == "+79991234567") && ( (id(sms_message).state == "relay_1_on") || (id(sms_message).state == "Relay_1_on") ) ) { id(relay_1).turn_on(); }switch: - platform: gpio id: relay_1 pin: GPIOXX