首页
归档
分类
标签
更多
留言板
说说
关于
Search
1
饥荒联机版控制台代码大全
1,025 阅读
2
编译安装带 Brotli 压缩的 Nginx
930 阅读
3
Obsidian多端快速同步插件
901 阅读
4
树莓派+EC20模块实现连接蜂窝网和短信收发
888 阅读
5
EC20通过gammu接收短信再转发优化
865 阅读
软件
CSS
Python
MySql
Java
typecho自定义
Vue
学习笔记
Linux
Shell脚本
Nginx
树莓派
邮件
拍照
热点
ec20
云盘
系统烧录
好玩
饥荒
硬件
工具
笔记
随心记
登录
Search
标签搜索
树莓派
Linux
Java
CSS
饥荒
小妙招
个人热点
nextcloud
云盘
DHT11
学习笔记
树莓派拍照
Nginx
MySql
ESP
娱乐
ec20模块
文件共享
git
图床
Mango
累计撰写
51
篇文章
累计收到
7
条评论
首页
栏目
软件
CSS
Python
MySql
Java
typecho自定义
Vue
学习笔记
Linux
Shell脚本
Nginx
树莓派
邮件
拍照
热点
ec20
云盘
系统烧录
好玩
饥荒
硬件
工具
笔记
随心记
页面
归档
分类
标签
留言板
说说
关于
搜索到
14
篇与
的结果
2024-10-09
树莓派安装AIC8800d80驱动
环境信息系统版本:6.6.51+rpt-rpi-v8 #1 SMP PREEMPT Debian 1:6.6.51-1+rpt2 (2024-10-01) aarch64 GNU/LinuxUSB WIFI设备:TL-XDN7000H设备芯片:aic8800d80查看设备连接状态lsusb如果在usb设备列表中看到类似ID a69c:5721 aicsemi AIC Wlan的输出,是将设备识别为了存储模式,需要将存储模式修改为wlan模式切换模式(非必须)使用命令sudo usb_modeswitch -KQ -v a69c -p 5721将存储模式修改为wlan模式命令模式需要在每次启动都需要输入,比较麻烦,可以使用udev来管理设备sudo vim /etc/udev/rules.d/70-usb-modeswitch.rules粘贴以下内容ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="a69c", ATTR{idProduct}=="5721", RUN+="/usr/sbin/usb_modeswitch -v a69c -p 5721 -K"重新加载规则sudo udevadm control --reload-rules sudo udevadm trigger安装驱动我的TP-Link官方驱动在arm架构中安装失败,很可能是因为我的内核版本比较高,导致很多库不支持。这里找到了绿联的AIC8800D80驱动,和我使用的TL-XDN7000H芯片一致驱动下载地址:{% link 绿联,驱动下载,绿联WiFi6 USB无线网卡AIC8800D80驱动,https://www.lulian.cn/download/135.html %}驱动下载链接:绿联WiFi6 USB无线网卡AIC8800D80驱动文件中有详细安装教程,这里不再赘述我这里直接安装了里面的aic8800d80fdrvpackage_2024_0606.deb文件成功驱动TL-XDN7000H
2024年10月09日
677 阅读
0 评论
0 点赞
2024-07-23
EC20通过gammu接收短信再转发优化
前引在接收到短信之后会将内容较大的短信内容拆分到不同文件中保存,在之前的自动转发脚本转发短信文本内容不全解决最近在阅读gammu官方文档的时候发现官方有个Processing message text in Python 的示例:Following script (if used as RunOnReceive handler) written in Python will concatenate all text from received message:#!/usr/bin/env python import os numparts = int(os.environ["DECODED_PARTS"]) text = "" # Are there any decoded parts? if numparts == 0: text = os.environ["SMS_1_TEXT"] # Get all text parts else: for i in range(1, numparts + 1): varname = "DECODED_%d_TEXT" % i if varname in os.environ: text = text + os.environ[varname] # Do something with the text print("Number {} have sent text: {}".format(os.environ["SMS_1_NUMBER"], text))这个python脚本能将在不同文件中的短信内容拼接,刚好能够实现我们的需求,将这个python代码转写为shell代码,和之前的短信转发代码组合后的新代码:#!/bin/bash numparts=${DECODED_PARTS} text="" if [ "$numparts" -eq 0 ]; then text=${SMS_1_TEXT} else for i in $(seq 1 $numparts); do varname="DECODED_${i}_TEXT" if [ ! -z "${!varname}" ]; then text="${text}${!varname}" fi done fi echo "${text}" |mutt -s "树莓派转发${SMS_1_NUMBER}短信" mstzf@foxmail.com就能够完美实现短信转发功能gammu官网链接:{% link RunOnReceive,Gammu,https://docs.gammu.org/smsd/run.html#index-7 %}ec20模块使用:{% link 树莓派+EC20模块实现连接蜂窝网和短信收发,TeohZY,https://blog.teohzy.com/post/raspi-ec20/index.html %}
2024年07月23日
865 阅读
0 评论
0 点赞
2024-04-08
树莓派+EC20模块实现连接蜂窝网和短信收发
软硬件树莓派ec20wvdialgammuSIM卡EC20模块概述EC20-CE是移远通信最近推出的LTE Cat 4无线通信模块,采用LTE 3GPP Release 11 技术,支持最大下行速率 150 Mbps和最大上行速率50 Mbps;同时在封装上兼容移远通信多网络制式LTE EC21系列、EC25系列和EG25-G 模块,实现了3G网络与4G网络之间的无缝切换。EC20-CE采用镭雕工艺,镭雕工艺具有外观更漂亮、金属质感强、散热更好、信息不容易被抹除、更能适应自动化需求等优点。EC20-CE内置多星座高精度定位GNSS(GPS/GLONASS/BDS/Galileo/QZSS)接收机;在简化产品设计的同时,还大大提升了定位速度及精度。EC20-CE内置丰富的网络协议,集成多个工业标准接口,并支持多种驱动和软件功能(适用于Windows 7/8/8.1/10/11、Linux、Android等操作系统下的USB驱动等),极大地拓展了EC20-CE在M2M领域的应用范围,如CPE、路由器、数据卡、平板电脑、车载、智能安全以及工业级PDA等。产品特性更多详情可到官网查看{%link LTE EC20-CE,QUECTEL,https://www.quectel.com.cn/product/lte-ec20-ce %}产品手册 Quectel_Product_Brochure_CN_V7.8)查看设备是否挂载成功使用命令sudo ls /dev |grep ttyUSB挂载成功会有如图输出要是没有看到设备则检查设备是否稳定插入、更换USB口或者重启设备之后再重新使用命令查看拨号上网wvdial安装wvdial是一个方便使用的PPP拨号模块,它能调用调制调节器,并通过PPP上网,无需像手动拨号一样配置繁琐的文件sudo apt update sudo apt install wvdial配置修改配置文件sudo vim /etc/wvdial.conf可以继续使用 [Dialer Defaults]也可以重新根据自己需要添加,我这里为了没有多余手机卡,也为了方便输入命令,就直接使用电信/移动SIM卡使用以下配置[Dialer Defaults] Init1 = ATZ Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 Modem Type = Analog Modem Modem = /dev/ttyUSB3 Baud = 115200 New PPPD = yes ISDN = 0 Phone = *99# Username = card Password = card联通卡使用以下配置[Dialer Defaults] Init1 = ATZ Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 Init3 = at+cgdcont=1,"ip","uninet" Modem Type = Analog Modem Modem = /dev/ttyUSB3 Baud = 115200 New PPPD = yes ISDN = 0 Phone = *99# Password = card Username = card配置来源于 Quectel EC20 在 Linux 上的使用在配置文件中大部分都不需要自己调整,只有Modem和Baud需要根据自己设备情况进行调整Modem:根据情况选择合适的设备我的这个ttyUSB2和ttyUSB3都能正常使用Baud:根据情况选择合适的波特率,对于ec20来说9600-115200都可以启动wvdialsudo wvdial查看网络设备ifconfig可以看到多了ppp0和wwan0两个设备正常情况还无法访问网络,因为默认路由在其他网络设备中,需要重新配置路由配置路由查看路由sudo route配置路由的方式有很多种,我这里的方法比较简单粗暴,需要具体配置的可自己查找方法sudo route add default dev ppp0该命令会在路由表中添加一条新的默认路由在每次重启后都会刷新路由,可以将命令加到/etc/rc.local中,每次开机都执行添加方法sudo vim /etc/rc.local在exit 0前添加su - root -c `route add default dev ppp0`通过systemctl来管理wvdial开机自启wvdial的方法有很多种,并不一定要使用systemctl最简单的就是和添加路由一样,在/etc/rc.local中添加启动命令sudo vim /etc/rc.local # 添加 wvdial &编写控制wvdial启动和检测wvdial运行脚本新建sh脚本文件,可以放到你想存放的地方我这里在root用户下/root/shell中sudo mkdir /root/shell && cd shell # 名字可以任起 sudo vim onwvdial.shwvdial控制脚本内容#!/bin/bash DEVICE_NAME="/dev/ttyUSB3" # 和wvdial配置设备一致 LOG_FILE="/var/log/wvdial_on.log" # 日志文件存储位置 PROCESS_NAME=(wvdial pppd) # 需检查占用软件 # 定义函数检查进程是否占用设备 check_device_usage() { local process_name=$1 local device=$2 local pids=$(pgrep -f "$process_name") if [ -z "$pids" ]; then return fi for pid in $pids; do echo "pid:$pid" local device_count=$(lsof -p "$pid" 2>/dev/null | grep -e "$device" | wc -l) if [ "$device_count" -gt 0 ]; then echo "占用设备:$device" kill $pid fi done return } function check_wvdial() { if pgrep -x "wvdial" >/dev/null; then return 0 # wvdial 进程在运行 else return 1 # wvdial 进程未运行 fi } for process in $PROCESS_NAME; do echo "进程名: $process" check_device_usage $process $DEVICE_NAME done wvdial >> "$LOG_FILE" 2>&1 & route add default dev ppp0 while true;do if ! check_wvdial;then echo "$(date +"%Y-%m-%d %H:%M:%S") - wvdial 进程未运行,正在重新启动..." >> "$LOG_FILE" wvdial >> "$LOG_FILE" 2>&1 & fi sleep 120 done该脚本包含功能:停止wvdial启动前所需设备的占用启动wvdial添加ppp0默认路由每120秒检测wvdial是否运行记录启动、错误日志设置可执行权限sudo chmod u+x /root/shell/onwvdial.sh编写systemctl控制文件sudo vim /etc/systemd/system/wvdial_on.service配置文件内容如下:[Unit] Description=Safe Start Wvadil After=dev-ttyUSB3.device Requires=dev-ttyUSB3.device [Service] User=root Group=root ExecStart=/root/shell/onwvdial.sh # 路径根据自己配置修改 [Install] WantedBy=multi-user.target 启动服务systemctl daemon-reload systemctl start wvdial_on.service systemctl enable wvdial_on.service设置自启动后就不需要在/etc/rc.local中添加修改路由和启动wvdial命令了配置防火墙如果在ec20模块连接4G网络后还需要使用wifi则需要配置防火墙,不需要则不用配置sudo iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE sudo iptables -A FORWARD -i ppp0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT sudo iptables -A FORWARD -i wlan0 -o ppp0 -j ACCEPT 将防火墙规则写入文件 sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"顺序执行命令即可收发短信安装软件gammusudo apt install gammu gammu-smsd配置gammu使用命令sudo gammu-config配置可参考我的或者直接修改/root/.gammurc,效果是一样的如果没有/root/.gammurc文件就使用命令[gammu] port = /dev/ttyUSB2 model = connection = at19200 synchronizetime = yes logfile = logformat = nothing use_locking = no gammuloc =修改 /etc/gammu-smsdrc[gammu] # Please configure this! port = /dev/ttyUSB2 connection = at19200 # Debugging #logformat = textall # SMSD configuration, see gammu-smsdrc(5) [smsd] service = files logfile = syslog RunOnReceive = /root/msmtp/sh/send-smsd.sh # 发送邮件脚本 # Increase for debugging information debug = yes #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/编辑收到短信后自动发送邮件脚本树莓派配置邮件这里不再赘述,可以自行搜索,或者参考我之前的一篇博客{% link 树莓派开机自动发送邮件,TeohZY,https://blog.teohzy.com/posts/smpxjfsyj/ %}编辑脚本vim /root/msmtp/sh/send-smsd.sh文件路径根据自己需要修改#!/bin/bash for i in `seq $SMS_MESSAGES` ; do if [ $i -eq 1 ]; then phone="$SMS_1_NUMBER" fi tmp="$(eval echo '$'SMS_${i}_TEXT)" message="$text$tmp" done echo "$message" |mutt -s "树莓派短信转发" xxx@163.com重启gammusystemctl restart gammu-smsd.service短信测试向目标号码发送短信后邮箱能收到短信通过终端向其他号码发送短信gammu-smsd-inject TEXT 目标号码 -text '短信内容' -unicode如果收到短信说明配置成功短信发送失败踩坑查看端口占用sudo lsof /dev/ttyUSB2如果有其他进程和gammu-sms占用设备,可以使用kill命令结束非必须进程设备波特率和wvdial重复检查wvdial配置和gammu配置,如果wvdial已经使用了ttyUSB3和波特率115200则gammu配置中就不要再使用相同设备和波特率,可以使用ttyUSB2和波特率at19200ModemManager占用设备查看设备后发现有进程ModemMnana在使用设备,可以停用ModemManager需要考虑实际使用情况来判断,在确认ModemManager确实不是必要软件后再进行操作sudo systemctl disable ModemManager.service sudo systemctl stop ModemManager.service
2024年04月08日
888 阅读
0 评论
0 点赞
2024-02-17
树莓派访客拍照C语言版
前引不知道因为什么原因Picamera2包调用摄像头拍照,在一个程序中达到一定次数之后就会导致系统的内存泄漏,除了重启软件没有什么好的方法来解决,但作为一个监控性质的软件,经常发生这种错误还是比较无法接受的事情。因此决定看看能不能直接使用C语言来完成监控人员到访和录像这一系列动作代码代码部分十分简单#include <pigpio.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <sys/wait.h> #include <time.h> int pinNumber = 18; int getVideo(){ time_t timep; struct tm *p; char filePath[28]; time (&timep); p=gmtime(&timep); int hour = 8+p->tm_hour; sprintf(filePath,"%s%d%02d%02d%02d%02d%02d%s","/Disk/MyCloud/Stream/Safe/",1900+p->tm_year,1+p->tm_mon,p->tm_mday,(hour>=24)?(hour-24):hour,p->tm_min,p->tm_sec,".mp4"); char command[1000]; sprintf(command,"%s%s%s%s", "libcamera-vid -t 5000 --width 1280 --height 720 --codec libav -o ",filePath," && sudo chown www-data ",filePath); return system(command); } int main() { int value = 0; if (gpioInitialise() < 0) { printf("pigpio initialization failed\n"); return 1; } gpioSetMode(pinNumber, PI_INPUT); while(1){ value = gpioRead(pinNumber); if(value==1){ getVideo(); } time_sleep(1.0); } gpioTerminate(); return 0; }由于在之前 使用的GPIO库wiringPi.h已经暂停维护,在新版的树莓派系统中不在默认安装,这里使用了pigpio.h库如果没有安装sudo apt update sudo apt install pigpio编译gcc monitor.c -o monitor -lpigpio -lrt -lpthread引脚编号默认为BCM编号主要拍照代码system(command)实际是为了调用系统的libcamera-vid即 sprintf(command,"%s%s%s%s", "libcamera-vid -t 5000 --codec libav -o ",filePath," && sudo chown www-data ",filePath);这部分代码为录一个5秒的视频并保存到filePath目录下,同时修改视频权限方便给Nextcloud修改查看人体红外代码 int value = 0; if (gpioInitialise() < 0) { printf("pigpio initialization failed\n"); return 1; } gpioSetMode(pinNumber, PI_INPUT); while(1){ value = gpioRead(pinNumber); if(value==1){ getVideo(); } time_sleep(1.0); } gpioTerminate();当有人到访时输出高电平,检测到高电平时触发录像
2024年02月17日
587 阅读
0 评论
0 点赞
2023-11-12
树莓派开启个人热点(二)解决网速慢问题
前言为了在方便树莓派联网的同时让其他设备也能上网,就有了将树莓派作为软路由的想法,经过在网上各种搜索后不断折腾,最终也实现了这一目的。有同样需求的可参照下文{% link 树莓派开启个人热点,Mstzf,https://blog.teohzy.com/post/startAP/index.html %}一番配置下来确实成功开启了个人热点,但是网速和稳定性一直不是很理想问题原因hostapd配置文件网络协议没有设置正确hostapd v2.9 和 树莓派4B都已经可以支持WIFI5,而我之前的配置还在使用上个世纪的iee802.11a协议解决办法修改以下hostapd配置文件即可# vim /etc/hostapd/hostapd.conf将原配置文件删除,替换为新的interface=wlan0 driver=nl80211 ssid=AP-Pi4 hw_mode=a channel=0 ieee80211n=1 ieee80211ac=1 ieee80211ax=1 ieee80211d=1 ieee80211h=1 country_code=CN auth_algs=1 wpa=2 wpa_passphrase=123456789 wpa_key_mgmt=WPA-PSK WPA-PSK-SHA256 rsn_pairwise=CCMP macaddr_acl=0 wmm_enabled=1 wmm_ac_bk_cwmin=4 wmm_ac_bk_cwmax=10 wmm_ac_bk_aifs=7 wmm_ac_bk_txop_limit=0 wmm_ac_bk_acm=0 wmm_ac_be_aifs=3 wmm_ac_be_cwmin=4 wmm_ac_be_cwmax=10 wmm_ac_be_txop_limit=0 wmm_ac_be_acm=0 wmm_ac_vi_aifs=2 wmm_ac_vi_cwmin=3 wmm_ac_vi_cwmax=4 wmm_ac_vi_txop_limit=94 wmm_ac_vi_acm=0 wmm_ac_vo_aifs=2 wmm_ac_vo_cwmin=2 wmm_ac_vo_cwmax=3 wmm_ac_vo_txop_limit=47 wmm_ac_vo_acm=0 he_su_beamformer=1 he_su_beamformee=1 he_mu_beamformer=1 he_bss_color=5 he_default_pe_duration=0 he_basic_mcs_nss_set=2 he_oper_centr_freq_seg0_idx=0 require_ht=1 he_su_beamformee=1 he_su_beamformer=1 he_bss_color=3 he_twt_required=1 vht_capab=[SHORT-GI-80][RX-STBC1][TX-STBC][SU-BEAMFORMER][SU-BEAMFORMEE]重启hostapd# sudo systemctl start hostapd
2023年11月12日
687 阅读
0 评论
0 点赞
2023-10-31
远程访问本地搭建的NextCloud(反向代理网页)
前言在没有公网IP的情况下,很难从其他网络环境中直接访问到部署在本地的web服务,这时候就需要通过内网穿透的方式来实现。而对于内网穿透,有着很多的实现方式,最为常见的就是通过云服务器搭建和使用别人提供的服务自建内网穿透服务需要有自己的云服务器服务端和客户端都需要下载frp,下载地址 => Releases · fatedier/frp (github.com)服务端配置编辑frps.ini文件[common] # frp监听的端口,默认是7000,可以改成其他的 bind_port = 7000 # 授权码,需要与客户端一致,请改为更复杂的 token = aaaaaa # frp管理后台端口,请按自己需求更改 dashboard_port = 7500 # frp管理后台用户名和密码,请改成自己的 dashboard_user = Mango dashboard_pwd = 12345678 enable_prometheus = true # http 端口可更改 vhost_http_port = 8090 # https 端口可更改 vhost_https_port= 8081 #vhost_https_port = 8080 # frp日志配置 路径根据自己需求更改 log_file = /root/frp/.frps.log log_level = error log_max_days = 3配置systemd守护进程便于管理vim /etc/systemd/system/frps.service输入以下内容并保存[Unit] Description=fraps service After=network.target syslog.target Wants=network.target [Service] Type=simple #启动服务的命令(此处写你的frps的实际安装目录) ExecStart=/root/frp/frps -c /root/frp/frps.ini [Install] WantedBy=multi-user.target启动frps并设置开机自启systemctl daemon-reload systemctl start frps systemctl enable frps配置nginx如果没有nginx先安装apt update apt install nginx编辑配置文件vim /etc/nginx/sites-enabled/nextcloud # 也可以不新建nextcloud文件,直接配置默认文件 vim /etc/nginx/sites-enabled/defaultnginx代理frps配置文件参考可配置SSL开启httpsserver{ listen 80; listen 443 ssl; #对应你的域名 server_name xxx.xxx.cn; # https 域名证书相关配置 # ssl证书存储路径,根据个人存储路径设置,我的被存在了 /etc/nginx/ssl/ 文件夹下面 ssl_certificate /etc/nginx/ssl/xxx.mstzf.cn.pem; ssl_certificate_key /etc/nginx/ssl/xxx.mstzf.cn.key; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; ssl_prefer_server_ciphers on; location / { proxy_pass http://127.0.0.1:8090; # 映射的frp服务端frps.ini的 vhost_http_port端口 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_max_temp_file_size 0; proxy_redirect off; proxy_read_timeout 240s; client_max_body_size 0; } } }重启nginx服务systemctl restart nginx客户端配置编辑frpc.ini文件[common] # 远程服务器地址 # 替换为自己的域名 server_addr = 0.0.0.0 # 远程服务器监听端口 # 和服务端 bind_port 相同 server_port = 7000 # 连接密钥 # 必须和服务端配置相同 token = aaaaaa # 配置日志文件 # 日志级别:trace, debug, info, warn, error # 日志保存路径根据需求修改 log_file = /home/zh/frp/log/.log log_level = error log_max_days = 3 # 客户端管理配置 admin_addr = 127.0.0.1 admin_port = 7500 admin_user = Mango admin_pwd = 12345678 # 代理端口配置 模板 # [内容随意 如ssh] # type = 连接类型 如 tcp # local_ip = 127.0.0.1 # local_port = 22 本地需要代理的端口 # remote_port = 2222 将本地22端口代理为远程的2222端口 # 该配置下,可用远程 ip 的 2222 端口访问到本地的 22 端口服务 [ssh] type = tcp local_ip = 127.0.0.1 local_port = 22 remote_port = 2222 [rdp] type=tcp local_ip = 127.0.0.1 local_port=3389 remote_port=3389 [nx] type=tcp local_ip=127.0.0.1 local_port=4000 remote_port=4000 [web] type = http local_ip = 127.0.0.1 local_port = 80 #subdomain = root # 绑定的域名 和nginx配置下的 server_name 相同 custom_domains = xxx.mstzf.cn为frpc配置systemd守护进程便于管理编辑文件vim /etc/systemd/system/frpc.service输入以下内容[Unit] Description=Frp Client Service After=network.target [Service] Type=simple User=root Restart=on-failure RestartSec=5s # 根据frp所在位置设置 ExecStart=/home/zh/frp/frpc -c /home/zh/frp/frpc.ini LimitNOFILE=1048576 [Install] WantedBy=multi-user.target启动frpc并配置开机自启systemctl daemon-reload systemctl start frpc systemctl enable frpc使用第三方服务我个人使用的是Sakura Frp,有能够满足基本需求的免费套餐,vip套餐也很划算,已经能够满足我的基本需求{% link SakuraFrp,SakuraFrp,https://www.natfrp.com/ %}注册账号完善个人信息如果有建站需求想要使用国内站点,需要完成实名认证和有备案域名,否则只能使用国外的站点来搭建在客户端安装frp软件这一部分官网中已经介绍得十分的详细,这里只有几个关键命令,具体可到官网查看{% link frpc 基本使用指南,SakuraFrp 帮助文档,https://doc.natfrp.com/frpc/usage.html %}确认系统架构uname -m获取软件链接{% link 软件下载,SakuraFrp,https://www.natfrp.com/tunnel/download %}安装cd /usr/local/bin wget -O frpc <下载地址> chmod 755 frpc配置守护进程(systemd)具体操作可去指导文档查看{% link Systemd配置frpc服务,SakuraFrp帮助文档,https://doc.natfrp.com/frpc/service/systemd.html %}添加工作目录mkdir -p /usr/local/etc/natfrp编辑配置文件vim /etc/systemd/system/frpc@.service输入配置内容[Unit] Description=SakuraFrp Service After=network.target [Service] Type=idle #DynamicUser=yes Restart=on-failure RestartSec=60s ExecStart=/usr/local/bin/frpc -f %i WorkingDirectory=/usr/local/etc/natfrp [Install] WantedBy=multi-user.target重载systemdsystemctl daemon-reload新建隧道对于远程访问网页的,需要选择可建站的节点;至于选择国内还是国外要先看自己的域名是否已经备过案,备案过的域名可以使用国内节点,国内节点在各方面都要优于国外。如果没有备案域名,就只能使用国外节点。端口根据本地网页端口配置在绑定域名和自动HTTPS中一定要输入自己需要使用的域名配置DSN解析复制节点域名,到域名服务商处配置DNS解析,将自己的域名CNAME到复制的节点域名上记录类型选择CNAME记录值选择选择节点所绑定域名配置SSL证书{% link 配置frpc使用的SSL证书,SakuraFrp帮助文档,https://doc.natfrp.com/frpc/ssl.html %}从服务商下载域名SSL证书选择Nginx,将证书重命名为 将其中 扩展名为pem的直接将扩展名修改为crt 并只保留域名和扩展名 即 如 nextcloud.mstzf.cn.key 的形式将证书移动到之前配置的工作目录中 /usr/local/etc/natfrp启动隧道systemctl <start|stop> <Unit名称> # <Unit名称> 即下图 -f 之后 红色框部分
2023年10月31日
445 阅读
0 评论
0 点赞
2023-08-06
树莓派访客抓拍视频版
前引由于在对移动的人体进行拍照的效果并不好,所以对抓拍图片版进行了升级,通过人体红外感应器在来访人员进入房间后录制视频,视频能比较好的看清来访人员起到看家的作用。拍照版{% link 树莓派64位系统实现对访客抓拍,Mstzf,https://mstzf.cn/posts/hc-rsAndcamera/index.html %}代码import RPi.GPIO as GPIO ##引入GPIO模块 import time from picamera2 import Picamera2, Preview from picamera2.encoders import H264Encoder from picamera2.outputs import FfmpegOutput def video(): now = time.strftime("%Y%m%d%H%M%S",time.localtime(time.time())) file_name="/Disk/MyCloud/Safe/"+now+".mp4" picam2 = Picamera2() video_config = picam2.create_video_configuration() picam2.configure(video_config) encoder = H264Encoder(10000000) output = FfmpegOutput(file_name) picam2.start_recording(encoder, output) time.sleep(5) picam2.stop_recording() picam2.close() HC_Pin = 18 GPIO.setmode(GPIO.BCM) GPIO.setup(HC_Pin, GPIO.IN) while True: if(GPIO.input(HC_Pin)): now = time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(time.time())) f = open('/home/zh/code/.log','a',encoding='utf-8') try: video() except: str=now+' 相机调用失败\n' f.writelines(str) finally: str=now+" 有人来访\n" f.writelines(str) f.close() time.sleep(1)
2023年08月06日
497 阅读
0 评论
0 点赞
2023-07-09
树莓派64位系统实现对访客抓拍
前引最近由于一些原因,一个人在外面租房住,老是担心会有人进到出租屋里面来(被害妄想症吧 (~ ̄▽ ̄)~),也刚好有些小模块可以实现对访客监控的功能,就做了这个环境树莓派4B人体红外传感器HC-RC501SCI摄像头(感光芯片OV5647)树莓派操作系统 aarch64摄像头安装连接摄像头系统启用摄像头运行命令sudo spari-config进入选择界面,Interface Options->Legacy Camera-><Yes>,设置完后会重启设备,这时候还无法正常使用摄像头配置系统编辑/boot/config.txt文件# 编辑/boot/config.txt sudo vim /boot/config.txt # 添加dtoverlay # 将其修改为自己芯片对于的值,添加在文件最后 # ov5647是我自己摄像头的感光芯片号,根据个人情况进行修改 gpu_mem=128 dtoverlay=ov5647配置好后重启系统输入命令libcamera-hello如果没有报错,说明配置成功python包安装由于64位版本的系统中已经无法使用raspistill来调用摄像头,Python包PiCamera也已经无法使用,所以之前32位的代码在这里已经无法使用;但好在已经推出了PiCamera2,可以在64位中使用。pip3 install numpy --upgrade pip3 install picamera2关于PiCamera2的更多相关内容可以看下面链接{% link picamera2,github,https://github.com/raspberrypi/picamera2 %}详细代码人体红外模块的数据脚可以根据自己需求选择树莓派GPIO口import RPi.GPIO as GPIO ##引入GPIO模块 import time from picamera2 import Picamera2, Preview def photograph(): picam2 = Picamera2() preview_config = picam2.create_preview_configuration(main={"size": (800, 600)}) picam2.configure(preview_config) picam2.start() now = time.strftime("%Y%m%d%H%M%S",time.localtime(time.time())) file_name="/Disk/MyCloud/Safe/"+now+".jpg" time.sleep(2) metadata = picam2.capture_file(file_name) picam2.close() HC_Pin = 18 GPIO.setmode(GPIO.BCM) GPIO.setup(HC_Pin, GPIO.IN) while True: if(GPIO.input(HC_Pin)): try: photograph() time.sleep(1) f = open('.log','a',encoding='utf-8'); now = time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(time.time())) except: str=now+'/t相机调用失败' f.write(str) finally: str=now+"/t有人来访" f.write(str) f.close() time.sleep(2)不太会Python,代码不规范或者错误的地方欢迎批评指正🤞
2023年07月09日
370 阅读
0 评论
0 点赞
2022-06-14
树莓派烧录系统不再折腾
把树莓派作为路由器之后,很长一段时间都没有再折腾树莓派上的东西。最近准备用树莓派做一个人脸识别的系统,就去树莓派官网 准备下载个新的系统,树莓派的官方烧录软件居然更新了。在之前的版本中,界面是英文的、而且只能对TF卡格式化和烧录系统,在没有桌面显示器的情况下安装新系统有很多地方要折腾,开启SSH,添加默认WiFi链接...在1.7版本中,界面已经可以支持中文,最主要的还是在系统烧录时可以配置wifi、用户名、是否开启SSH、语言...右下加的设置图片可以对烧录后的系统进行设置虽然烧录系统很简单,配置起来也可以直接在网上找到很多教程,但是谁能拒绝如此方便的配置过程呢
2022年06月14日
281 阅读
0 评论
0 点赞
2022-04-09
树莓派搭建文件共享系统(samba)
前引在不久之前,为了不让{% label 昂贵 red %}的树莓派不吃灰,尝试了一次将树莓派作为云盘服务器的文章{% link 搭建个人云盘,,https://www.mstzf.cn/posts/private_cloud_disk/ %}在试用了一段时间后,使用感受并不是很好。首先,nextcloud修改默认存储位置比较麻烦,云盘的主要目的就是要将资料存储在便于移动、扩展的U盘、硬盘上,而不是直接利用插入的TF卡或者是树莓派自身的内存空间内,这样不仅存储空间比较小而且对自身存储器也是一种损耗。其次,云盘以网页的方式发布 ,内网穿透比较麻烦。设备清单树莓派移动硬盘(U盘也可)网络环境挂载硬盘查看硬盘$sudo fdisk -l如果设备被识别成功,在执行命令后可以查看到类似如下的结果不同设备会有不同,类似/dev/hda, /dev/hdb, /dev/sda, /dev/sdb,这些不同的代号,而这些不同的代号又代表着什么?hda一般是指IDE接口的硬盘,hda指第一块硬盘,hdb指第二块硬盘,等等;sda一般是指SATA接口的硬盘,sda指第一块硬盘,sdb指第二块硬盘,等等。挂载硬盘{% tabs %}临时挂载非常简单,只需要一个mount 命令即可$ sudo mount [参数] [挂载对象(/dev/sda)] [挂载点(新建文件夹来挂载)] # 新建文件夹(挂载点) $ sudo mkdir Disk取消挂载$ sudo umount [挂载对象] [挂载点]对于mount的参数可以省略,如果又特殊需求可以通过百度来查找mount 参数所谓的永久挂载其实也就是开机自动挂载,开机自动挂载硬盘不需要在每次开机后都通过命令的方式去挂载硬盘,相对来说比较方便,但是这种方法挂载硬盘后如果没有插入硬盘可能会出现不能引导开机的问题,解决方法这里就不细说了,网上的教程还是比较丰富的。查看硬盘的UUID $ sudo blkid将获取的UUID复制下来,待会要用# 新建挂载点(在当前目录下) $ sudo mkdir Disk #编辑fstab加入硬盘信息 $ sudo vim /etc/fstab #在文件最后输入硬盘信息 UUID="刚刚复制的UUID" /home/pi/Disk ext4 defaults 0 1测试:# 重启树莓派 $ sudo reboot # 查看挂载情况 $ sudo df -l{% endtabs %}配置samba按照惯例安装软件之前先update和upgrade一波# 凑个字数 $ sudo apt update $ sudo apt upgrade # 安装samba sudo apt install samba samba-common-bin -y配置samba控制文件,指定共享的文件# 通过vim打开控制文件 $ sudo vim /etc/samba/smb.conf添加文件目录和控制信息,在最后面添加如下内容[NAS] comment = NAS Storage path = /home/pi/Disk/ browseable = yes read only = no writable = yes valid users = pi create mask = 0775 directory mask= 0775 guest ok = yes{% label path后面的文件路径根据自己的需要来修改,我的路径就是硬盘的挂载地址 blue %}如果不想共享home下的文件目录,可以找到文件中[home]的部分,将那部分全部注释掉重启samba服务$ sudo /etc/init.d/samba restart $ sudo systemctl restart samba $ sudo samba restart # 这三个都试试看吧,都是重启服务的命令,我只成功了最后那个添加默认用户到samba$ sudo smbpasswd -a pi # 输入密码确认即可本地连接共享测试之前将树莓派作为一个软路由来使用,现在电脑和手机都有连接着树莓派的WIFI,所以只需要直接访问树莓派的固定IP就能实现对树莓派共享文件的访问。开热点方法可以参考我之前写的这篇文章。{% flink %}class_name:class_desc:link_list:name: 树莓派开启个人热点link: https://www.mstzf.cn/02-09/startAP/avatar: https://pic.teohzy.com/blog/202202091916889.pngdescr:{% endflink %}Windows 测试访问共享文件在文件资源管理器中直接输入\\IP地址 即可访问共享文件还可以映射为本地驱动器,在Network右键->映射网络驱动器Android如果默认文件管理器可以访问网络存储的话就按照官方教程来使用,如过默认文件管理器不能访问,则要下载其他文件管理器我目前使用的是文件管理器(File Manager Plus)使用体验还是比较不错的内网穿透这里推荐一个很好用,还免费的内网穿透平台{% label (非广告) red %}。{% flink %}class_name:class_desc:link_list:name: SAKURA FRPlink: https://www.natfrp.com/avatar: https://nyat-static.globalslb.net/natfrp/index/bg2.jpgdescr: " "{% endflink %}如果需要远程访问到共享文件,就需要内网穿透,安装配置文档已经非常完善,可自行到官网查看安装配置方法。samba占用的是139端口,在创建隧道的时候端口选择139就行。{% label 如果选择了内网穿透了,一定要设置好密码和保护好隧道信息...不让很容易信息泄露 red %}
2022年04月09日
305 阅读
0 评论
0 点赞
1
2