效果
插在樹莓派上的手機卡收到短信后,自動通過互聯網轉發到企業微信的app中。解決多卡用戶沒有足夠手機的問題。
硬件配置
Raspberry Pi 4B 4GB內存版本
手機卡模塊:移遠通信EC20CEHCLG-MINIPCIE-CB
卡槽:mini PCIE轉USB卡槽
中國聯通4G手機卡(NanoSIM)+NanoSim轉Mini SIM卡套
樹莓派初始化
寫入操作系統
-
從樹莓派官網下載官方的image寫入工具Raspberry Pi Imager
-
插入tf卡,用imager寫入ubuntu Server 20LTS 64位
網絡配置
有線
插網線,從路由器找ip即可。
無線
-
先連接有線或使用micro hdmi連接顯示器,然后使用默認信息登陸,
初始賬戶密碼均為ubuntu
-
開啟無線
sudo nano /etc/netplan/50-cloud-init.yaml
network: ethernets: eth0: optional: true dhcp4: true version: 2 # 增加以下配置 # 注意縮進,除了password,都是四格縮進 wifis: wlan0: optional: true dhcp4: true access-points: # ssid "wifi_ssid": password: "password"
static dhcp
路由器設置mac地址ip靜態映射
系統配置
-
配置sshd,允許root用密碼登陸:
/etc/ssh/sshd_config
加入PermitRootLogin yes
-
設置root的密碼
sudo passwd root
,並分發存儲公鑰ssh-copy-id root@ip
-
可選:換apt源
-
設置系統時區:
sudo timedatectl set-timezone Asia/Shanghai
-
更新系統:
sudo apt update && sudo apt upgrade
溫度監測
apt install libraspberrypi-bin
vcgencmd measure_temp
安全關機
不要直接拔電源,先關機后再拔電源
sudo shutdown -h now
或 sudo halt
部署gammu
apt install gammu
ls /dev/ttyUSB*
# /dev/ttyUSB0 /dev/ttyUSB1 /dev/ttyUSB2 /dev/ttyUSB3
# 依次嘗試,直到返回識別成功的結果
gammu-config
gammu --identify
#/dev/ttyUSB2
# 發送短信,驗證配置無誤
echo "a test sms from ec20" | sudo gammu sendsms TEXT 目標手機號
部署gammu-smsd
-
安裝
apt install gammu-smsd
,安裝完后默認的systemd配置有問題 -
覆蓋默認的systemd配置
/lib/systemd/system/gammu-smsd.service
[Unit] Description=SMS daemon for Gammu Documentation=man:gammu-smsd(1) After=mysql.service postgresql.service network-online.target [Service] EnvironmentFile=-/etc/sysconfig/gammu-smsd # Run daemon as root user ExecStartPre=/bin/sleep 30 ExecStart=/usr/bin/gammu-smsd --pid=/var/run/gammu-smsd.pid --daemon # Run daemon as non-root user (set user/group in /etc/sysconfig/gammu-smsd) #ExecStart=/usr/bin/gammu-smsd --user=${GAMMU_USER} --group=${GAMMU_GROUP} --pid=/var/run/gammu-smsd.pid --daemon ExecReload=/bin/kill -HUP $MAINPID ExecStopPost=/bin/rm -f /var/run/gammu-smsd.pid Type=forking PIDFile=/var/run/gammu-smsd.pid [Install] WantedBy=multi-user.target
-
覆蓋gammu-smsd的配置
/etc/gammu-smsdrc
,注意修改4g短信模塊的端口配置# Configuration file for Gammu SMS Daemon # Gammu library configuration, see gammurc(5) [gammu] # 注意這里要和上面gammu測試通過的配置一致 port = /dev/ttyUSB3 connection = at19200 # Debugging #logformat = textall # SMSD configuration, see gammu-smsdrc(5) [smsd] service = files #logfile = syslog RunOnReceive = /usr/bin/python3 /home/ubuntu/gammu/smsForward.py logfile = /home/ubuntu/gammu/smsd.log # Increase for debugging information debuglevel = 2 # Paths where messages are stored inboxpath = /home/ubuntu/gammu/inbox/ outboxpath = /home/ubuntu/gammu/outbox/ sentsmspath = /home/ubuntu/gammu/sent/ errorsmspath = /home/ubuntu/gammu/error/
-
創建目錄,將短信轉發相關腳本放置到配置文件里的位置
mkdir -p /home/ubuntu/gammu/inbox /home/ubuntu/gammu/outbox /home/ubuntu/gammu/sent /home/ubuntu/gammu/error
# /home/ubuntu/gammu/smsForward.py
# /home/ubuntu/gammu/pushToWechat.py # 修改企業微信的id
-
啟動gammu-smsd:
systemctl start gammu-smsd
-
驗證無誤后,設置自啟:
systemctl enable gammu-smsd
手機卡配置
來電轉移配置(聯通)
需要接電話:轉移至另一個手機號**62*轉移號碼#
不需要接電話,告訴別人這個號不再用了:**62*13800000000#
轉移到一個空號,這樣別人打來電話會提示號碼是空號而不是關機
用62開頭的轉移碼把卡插回手機里還能正常接電話,只有關機不可達時才會轉移。如果需要無條件轉移,把62換成21即可。本方法僅在聯通手機號測試過。
取消所有來電轉移:##002#
todo
未來考慮基於c/s架構用go實現一套雲邊短信管理app。
- client端跑一個daemon在樹莓派上,負責短信上傳、樹莓派狀態上報、接受雲端發送短信的命令
- Server端跑在中心k8s中,對接所有邊緣樹莓派;為前端portal提供接口展示數據
- 需要格外注意數據安全問題