树莓派远程开关机/Raspberry远程GPIO关机PC/Raspi获取局域网IP

简介

还在为每次打开树莓派,获取IP地址而感到烦恼?
需要通过树莓派远程控制家里PC的开关机?
没有现成支持远程控制树莓派的快速框架?

芜湖!通过以下步骤即可解决上述问题!

本文介绍将涵盖两个项目:
【Project 1】:local-raspi-remote-switch** (Django)**
室友:起床打Go了!
懒狗一样的俺:先在床上打开浏览器启动电脑😅,换个姿势打开向日葵启动Steam。继续躺床上等待室友匹配...
该项目基于Python3+Django实现。通过访问WEB页面,控制树莓派的GPIO开关PC。对按钮进行了一定限制,避免频繁触碰物理开关。但早起的项目依然存在不足,只能通过同一局域网进行控制。

【Project 2】:rpswitch** (.NET)**
场景1)
挖槽?!树莓派SSH又连不上了?显示器也没有?路由器管理页面多少年不上了,密码早不知道多少了?扫描IP?那又得等一杯茶的功夫...

场景2)
室友:...(今晚打Go咩)
懒狗一样的俺:下课打Go先一步,在打饭的时候已经开好了😅
室友:挖槽,这么快的嘛...

为避免获取IP尴尬的情况,结合之前的开关机需求,进而推出P2。
该项目基于.NET5+Blazor+Signalr(服务端:Server),Python+Signalr(客户端:Client)。依旧是通过WEB端进行管理,但相比于P1做出了以下几点改善。

  • 美化交互界面
  • 支持公网远程管理
  • 支持IP信息的获取
  • 增加功能可扩展(俺瞎编的😅

环境配置

物理环境

PC x1
Raspberry x1
继电器 x1(淘宝几块钱一个,当然还要记得买杜邦线啊)
(继电器布线
image.png
(树莓派连接继电器
image.png
(继电器连接主板
image.png
(连接之后长这样
image.png

软件环境

Raspi+Ubuntu(感觉还不太严谨,就这么凑合先吧)
Python3.*

部署

Project1local-raspi-remote-switch

1、配置Service启动项

// 1.PCSwitch.service 放置 /etc/systemd/system 下(树莓派下俺的文件名是:Pcon)
sudo mv ./PCSwitch.service /etc/systemd/system

// 2.WorkingDirectory=修改为你项目的所在路径
sudo vim /etc/systemd/system/PCSwitch.service

// 3.启动服务
sudo service PCSwitch start

image.png

2、打开浏览器,输入树莓派的IP:服务端口。(即可看到如下页面

image.png

Project2rpswitch

服务端

dotnet 环境部署(不想看的等俺后面再补齐)
启动服务

// 在所在项目路径下执行
dotnet rpswitch.dll --urls https://*:5001

image.png
打开浏览器,输入URL:端口(即可看到如下页面
image.png

客户端

安装Python依赖

# Python包依赖 (俺太懒了,你们自己想办法把依赖打上吧。pip3 install ....
import logging
from os import getuid
import ifcfg
import json
import time
import psutil
import datetime
import uptime
import uuid
from signalrcore.hub_connection_builder import HubConnectionBuilder
import localMethod

# 树莓派GPIO模块
import RPi.GPIO as GPIO

配置Service启动项

// 1.rpswitch.service 放置 /etc/systemd/system 下
sudo mv ./rpswitch.service /etc/systemd/system

// 2.WorkingDirectory=修改为你项目的所在路径
sudo vim /etc/systemd/system/rpswitch.service

// 3.启动服务
sudo systemctl enable rpswitch
sudo service rpswitch start

(可以看到服务已经启动了!
image.png
(客户端跟服务端连接的样子

image.png

后续

这篇Blog经历过很多次延期,陆续应该有一年时间😅
目前只预设了三个远程控制的功能
TODO:

  • 访问权限控制,添加后台管理登录认证
  • 优化代码(远程执行使用异步、日志输出规范化、...
  • ......😅
posted @   随想扇贝  阅读(1144)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示