SMS notifications via GSM-modem
The sms
integration allows having a local execution SMS notification via Gammu
This integration provides the following platforms:
- Notify
Configuration
To add the SMS notifications via GSM-modem integration to your Home Assistant instance, use this My button:
Manual configuration steps
If the above My button doesn’t work, you can also perform the following steps manually:
-
Browse to your Home Assistant instance.
-
In the bottom right corner, select the
Add Integration button. -
From the list, select SMS notifications via GSM-modem.
-
Follow the instructions on screen to complete the setup.
Notifications
An SMS message can be sent by calling the notify.sms
. It will send the message to all phone numbers specified in the target
parameter.
To use notifications, please see the getting started with automation page.
Send message
actions:
- action: notify.sms
data:
message: "This is a message for you!"
target: "+5068081-8181"
Sending SMS using GSM alphabet
Some devices (receiving or sending) do not support Unicode (the default encoding). For these you can disable Unicode:
actions:
- action: notify.sms
data:
message: "This is a message for you in ANSI"
target: "+5068081-8181"
data:
unicode: False
Getting SMS messages
You can also receive SMS messages that are sent to the SIM card number in your device.
Every time there is a message received, event: sms.incoming_sms
is fired with date, phone number and text message.
Sample automation that forward all SMS to user1
:
Define a sensor in configuration.yaml to protect user phone number
template:
- sensor:
- name: "User1 Phone Number"
state: !secret user1_phone_number
Define a script in scripts.yaml to use the sensor
notify_sms_user1:
alias: "Notify via SMS to User1"
fields:
message:
description: "The message content"
example: "The light is on!"
sequence:
- action: notify.sms
data:
message: "{{ message }}"
target: "{{ states('sensor.user1_phone_number') }}"
icon: mdi:chat-alert
Putting it all together in automations.yaml
- alias: "Forward SMS"
triggers:
- trigger: event
event_type: sms.incoming_sms
actions:
- action: script.notify_sms_user1
data:
message: |
From: {{trigger.event.data.phone}}
{{trigger.event.data.text}}
Required hardware
You will need a USB GSM stick modem or device like SIM800L v2 connected via USB UART.
List of modems known to work
-
SIM800C HAT form factor
Make sure to enable_uart=1
on yourconfig.txt
boot file. - SIM800C
-
Huawei E3372
( Note: E3372h-153 and E3372h-510 need to be unlocked this guide , The Huawei E3372h-320 won’t work at all, since it is locked down too much) -
Huawei E3531
(note: Devices with firmware versions 22.XX need to be unlocked using this guide) - Huawei E3272
- ZTE K3565-Z
- Lenovo F5521gw (mPCI-E)
List of modems known to NOT work
- Huawei E3372h-320
List of modems that may work
Search in the Gammu database
Huawei/ZTE modems (and similar) devices - NOT applicable for users of Home Assistant OS, Container or Supervised.
For some unknown reason, the rule that converts these modems from storage devices into serial devices may not run automatically. To work around this problem, follow the procedure below to change the modem mode and (optionally) create udev
rule on a configuration USB stick for the device to switch to serial mode persistently.
- Install the
usb_modeswitch
software to switch the modem operational mode (for Debian/Ubuntu distros):
sudo apt update && sudo apt install usb-modeswitch -y
- Run
lsusb
, its output should be similar to this:
bus 000 device 001: ID 1FFF:342a
bus 001 device 005: ID 12d1:15ca <-------- Huawei is usually 12d1
bus 000 device 002: ID 2354:5352
bus 000 device 002: ID 1232:15ca
Identify the brand for your GSM modem, copy the brand_Id
and product_id
(In this case brand_id = 12d1
and product_Id = 15ca
)
- Try disabling virtual cd-rom and change work mode to “only modem”:
sudo /sbin/usb_modeswitch -X -v 12d1 -p 15ca
Re-plug the device. After this the modem correct should work without the following ‘udev’ rule.
- (Optional) Configure the udev rule to persist the correct modem configuration even after disconnecting it:
Set this content in file udev\10-gsm-modem.rules
in the configuration USBbrand_Id
and product_id
for the numbers reported by lsusb
)
ACTION=="add" \
, ATTRS{idVendor}=="brand_Id" \
, ATTRS{idProduct}=="product_Id" \
, RUN+="/sbin/usb_modeswitch -X -v brand_Id -p product_Id"
Here is a sample configuration file:
ACTION=="add" \
, ATTRS{idVendor}=="12d1" \
, ATTRS{idProduct}=="15ca" \
, RUN+="/sbin/usb_modeswitch -X -v 12d1 -p 15ca"
Re-plug the USB stick, reboot the device, run lsusb
again.
The resulting product id now should be different and the brand id should be the same.
And ls -l /dev/*USB*
should now report your device.
Note: if you have multiple USB devices, USB number order can change on boot. For this reason, it’s preferable to use your device ID and look in /dev/serial/by-id/*
. For example, /dev/serial/by-id/usb-HUAWEI_MOBILE_HUAWEI_MOBILE-if00-port0
.
If the device is still not recognized, remove the parameter -X from the usb_modeswitch command and reboot again.