树莓派+4G模块接收短信实时转发到邮箱

概述

在该文档中,将使用树莓派(linux)、4G模块等设备,即时将SIM卡收到的短信转发到个人邮箱。

由于手机仅支持单卡,副卡需要及时接受短信。曾用旧手机加绿芽app的方案,通过绿芽微信公众号接收短信内容。但该方案需要经常给手机充电等其他缺点舍弃,所以整理4G模块的方案。

所需程序

  • gammu-smsd:用你的设备接收和发送信息 (gammu-smsd官方文档)
  • mutt::邮箱用户代理客户端
  • msmtp:邮箱传输代理客户端

所需设备

  • 树莓派 x 1 (我的是4B2g版本)
  • 4G模块minipcie转USB转接板 (25¥)
  • 4G天线 x 1 (2.5¥)
  • IPEX转SMA连接线 x 1 (2¥)
  • 4G模块 x 1 (推荐咸鱼买移远EC20,50¥)
参考图片依次如下
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
成品展示图

在这里插入图片描述

Step0 设备组装

  1. 将4G模块插入USB转接板
  2. 将SIM卡插入USB转接板
  3. 连接IPEX转SMA连接线和天线
  4. 将组装好的天线插入4G模块,可以用绝缘胶布固定以下
  5. 将USB转接板插入树莓派

Step1 安装系统

推荐使用ubuntu,以下是详细安装教程。

树莓派无外设安装ubuntu

Step2 调试gammu-smsd

2.1 安装命令

apt-get -y install gammu-smsd

2.2 修改service配置

安装时启动服务可能存在如下报错,因为默认service配置中ExecStart属性使用的环境变量不存在导致的。
在这里插入图片描述
打开服务配置文件

vim /usr/lib/systemd/system/gammu-smsd.service

ExecStart属性改为:

ExecStart=/usr/bin/gammu-smsd --config /etc/gammu-smsdrc --pid=/var/run/gammu-smsd.pid --daemon

最后执行同步命令systemctl daemon-reload

2.4 检查USB设备中是否存在4G模块

通过lsusb命令查看输出是否有上网模块对应的设备,比如移远是Quectel Wireless Solutions开头.

root@ubuntu:# lsusb
Bus 001 Device 003: ID 2c7c:0125 Quectel Wireless Solutions Co., Ltd. EC25 LTE modem
Bus 001 Device 002: ID 2109:3431 VIA Labs, Inc. Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

2.5 获取4G模块USB转串口终端

通过ls /dev/ttyUSB*命令输出终端列表,选择最大的 /dev/ttyUSB3 进行后续配置。

root@ubuntu:# ls /dev/ttyUSB*
/dev/ttyUSB0  /dev/ttyUSB1  /dev/ttyUSB2  /dev/ttyUSB3

*PS: 这块我不太了解,所以我对比了插上一块4G模块和不插的输出,不插的情况输出是空的,插入一块输出如上代码块。通常选择最大的。

2.6 修改gammu配置

打开配置文件

vim /etc/gammu-smsdrc

port填写2.3中获取的USB转串口终端,connection修改为at19200,然后重启systemctl restart gammu-smsd

# Configuration file for Gammu SMS Daemon
# Gammu library configuration, see gammurc(5)
[gammu]
# Please configure this!
port = /dev/ttyUSB3
connection = at19200
# Debugging
#logformat = textall

# SMSD configuration, see gammu-smsdrc(5)
[smsd]
service = files
logfile = syslog
# Increase for debugging information
debuglevel = 0

# Paths where messages are stored
inboxpath = /var/spool/gammu/inbox/
outboxpath = /var/spool/gammu/outbox/
sentsmspath = /var/spool/gammu/sent/
errorsmspath = /var/spool/gammu/error/

2.7 测试发送接收短信

向自己发送短信(也可以用手机发送)

gammu-smsd-inject TEXT 130XXXXXXXX -unicode -text "测试内容"
root@ubuntu:/home/ubuntu# gammu-smsd-inject TEXT 130XXXXXXXX -unicode -text "测试内容"
gammu-smsd-inject[10528]: Warning: No PIN code in /etc/gammu-smsdrc file
gammu-smsd-inject[10528]: Created outbox message OUTC20230109_060858_00_130XXXXXXXX_sms0.smsbackup
Written message with ID /var/spool/gammu/outbox/OUTC20230109_060858_00_130XXXXXXXX_sms0.smsbackup

PS命令详解

等待一会进入短信接收目录/var/spool/gammu/inbox/,每条短信是以文件形式存储的,写入新的文件表示接收成功(如果使用gammu-smsd-inject命令发送,等待的时间会久一些,因为它需要扫描outbox中的文件)

root@ubuntu:~# cd /var/spool/gammu/inbox
root@ubuntu:/var/spool/gammu/inbox# ls
IN20230109_140917_00_+86130XXXXXXXX_00.txt
root@ubuntu:/var/spool/gammu/inbox# more IN20230109_140917_00_+8613XXXXXXXX_00.txt 
测试内容
root@ubuntu:/var/spool/gammu/inbox# 

Step3 安装邮箱客户端

linux使用MSMTP和Mutt从命令行发送电子邮件

Step4 配置自动转发脚本

4.1 添加脚本

将文本保存到/var/spool/gammu目录

vim /var/spool/gammu/mailscrip.sh

写入以下内容并保存

for i in `seq $SMS_MESSAGES` ; do
        if [ $i -eq 1 ]; then
                phone="$SMS_1_NUMBER"
        fi
        tmp="$(eval echo '$'SMS_${i}_TEXT)"
        text="$text$tmp"
done
echo "$text" |mutt -s "发件人 $phone" zsan@qq.com lisi@mail.com

修改脚本权限

chmod +777 /var/spool/gammu/mailscrip.sh

4.2 将脚本挂载到gammu-smsd

打开gammu-smsd配置

vim /etc/gammu-smsdrc

如下添加RunOnReceive属性,值是脚本的路径。保存后重启服务。(如果不想在树莓派上保存短信可以把service属性改为null

# Configuration file for Gammu SMS Daemon
# Gammu library configuration, see gammurc(5)
[gammu]
# Please configure this!
port = /dev/ttyUSB3
connection = at19200
# Debugging
#logformat = textall

# SMSD configuration, see gammu-smsdrc(5)
[smsd]
service = files
logfile = syslog
RunOnReceive = /var/spool/gammu/mailscript.sh
# Increase for debugging information
debuglevel = 0

# Paths where messages are stored
inboxpath = /var/spool/gammu/inbox/
outboxpath = /var/spool/gammu/outbox/
sentsmspath = /var/spool/gammu/sent/
errorsmspath = /var/spool/gammu/error/

Step5 测试效果

使用手机发送测试短信,15秒左右后去邮箱查看,已收到如下内容,如此既大功告成。(测试时使用手机发送,转发时间会比较准确)
在这里插入图片描述

树莓派可以通过4G模块将图像数据传输到电脑。具体实现步骤如下: 1. 连接4G模块:将4G模块通过USB接口连接到树莓派上; 2. 安装4G模块驱动:在树莓派上安装4G模块所需要的驱动程序,在命令行中输入以下命令: ``` sudo apt-get install usb-modeswitch ``` 3. 设置4G模块接入网络:使用ppp拨号方式连接4G模块接入网络。在命令行中输入以下命令: ``` sudo apt-get install ppp sudo nano /etc/ppp/peers/provider ``` 在provider文件中输入以下内容,将用户名和密码替换为实际的拨号用户名和密码: ``` /dev/ttyUSB0 115200 # Replace USERNAME with your 3G/4G ISP provided username # Replace PASSWORD with your 3G/4G ISP provided password connect "/usr/sbin/chat -v -f /etc/chatscripts/gprs -T internet" noipdefault defaultroute replacedefaultroute usepeerdns ``` 4. 进行图像传输:在树莓派上编写程序,使用4G模块传输图像数据。可以使用TCP/IP或UDP协议将图像数据传输到电脑上,命令如下: ``` raspivid -t 0 -w 640 -h 480 -fps 25 -b 2000000 -o - | nc <IP address> <port> ``` 其中,raspivid命令用于获取图像数据,nc命令用于将图像数据通过网络传输到电脑上。需要将<IP address>和<port>替换为电脑的IP地址和端口号。 在电脑上,可以使用nc命令接收树莓派传输过来的图像数据,命令如下: ``` nc -l -p <port> | mplayer -fps 200 -demuxer h264es - ``` 其中,nc命令用于接收树莓派传输过来的图像数据,mplayer命令用于对接收到的图像数据进行解码和播放。需要将<port>替换为电脑和树莓派约定的端口号。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值