0

0

php控制继电器开关怎么做_php发送指令控制继电器通断【操作】

雪夜

雪夜

发布时间:2025-12-31 22:33:02

|

680人浏览过

|

来源于php中文网

原创

推荐树莓派+libgpiod+Python脚本+PHP调用组合:PHP通过exec调用带argparse的Python脚本控制继电器,www-data需加入gpio组;须防重复点击(文件锁/Redis)、区分高低电平触发,并优先考虑USB隔离继电器提升稳定性。

php控制继电器开关怎么做_php发送指令控制继电器通断【操作】

继电器模块怎么接 PHP 能控制的硬件接口

PHP 本身不能直接操作 GPIO 或串口,必须通过中间层转发指令。常见路径是:PHP → shell 命令 → Python/C/Node.js 脚本 → GPIO/USB/UART。绕过这层直接用 exec("gpio write 0 1") 会失败,因为大多数 Linux 系统默认禁用 PHP 的系统调用权限,且 gpio 命令(如 wiringPi)已停止维护,新内核(5.10+)基本不兼容。

推荐组合:树莓派 + libgpiod(官方支持) + Python 控制脚本 + PHP 调用。确保用户组有权限访问 /dev/gpiochip0,否则 Permission denied 错误必然出现。

  • www-data 用户加入 gpio 组:
    sudo usermod -a -G gpio www-data
  • 重启 web 服务:
    sudo systemctl restart apache2
    (或 php-fpm
  • 不用 root 运行 PHP,避免安全风险;也不要用 sudo 在 PHP 中提权执行命令

Python 脚本怎么安全接收 PHP 指令并操作继电器

PHP 不能传参给交互式程序,所以 Python 脚本必须是「一次性执行、参数驱动、无输入等待」的模式。比如用 argparse 解析 on/off 和引脚号,再调用 libgpiod API 控制输出电平。

注意:继电器模块分「高电平触发」和「低电平触发」,接线错误会导致「PHP 发 on 却断电」。务必先用万用表测模块 IN 引脚电压变化,再写逻辑。

立即学习PHP免费学习笔记(深入)”;

  • 示例脚本 /var/www/html/relay.py
#!/usr/bin/env python3
import argparse
import gpiod

CHIP = 'gpiochip0' LINE_OFFSET = 17 # 对应物理引脚 11 / BCM 17

parser = argparse.ArgumentParser() parser.add_argument('action', choices=['on', 'off']) args = parser.parse_args()

chip = gpiod.Chip(CHIP) line = chip.get_line(LINE_OFFSET) line.request(consumer='relay', type=gpiod.LINE_REQ_DIR_OUT)

if args.action == 'on': line.set_value(1) # 高电平导通(若模块为高触发) else: line.set_value(0)

  • PHP 中调用:
    $result = exec('/usr/bin/python3 /var/www/html/relay.py on 2>&1', $output, $return_code);
  • 检查 $return_code 是否为 0,非零说明 Python 报错(如引脚被占用、权限不足)

PHP 页面怎么防止重复点击或恶意请求

继电器不是 Web 表单,一次误点可能让设备反复通断,烧坏触点。不能只靠前端 disabled 按钮——F5 刷新或 curl 直接请求照样生效。

文心快码
文心快码

文心快码(Comate)是百度推出的一款AI辅助编程工具

下载

必须加服务端防重机制:用文件锁或 Redis 记录「最近一次操作时间」,间隔小于 1 秒的请求直接拒绝。别用 session,因为 CLI 调用 Python 不走 session 生命周期。

  • 简单文件锁示例(PHP):
$lock_file = '/tmp/relay.lock';
if (file_exists($lock_file) && (time() - filemtime($lock_file)) < 1) {
    die('操作太频繁,请稍后再试');
}
file_put_contents($lock_file, '');
// 执行 exec(...) 后记得 unlink($lock_file)
  • 更可靠的做法是用 sem_acquire() 配合系统信号量,但需启用 sysvsem 扩展
  • 不要在 HTML 里暴露 relay.py?cmd=on 这类 GET 接口,防止爬虫或浏览器预加载触发意外动作

为什么用 USB 转 TTL 继电器模块反而更稳

GPIO 直连对电气噪声敏感,尤其电机、电磁阀共电源时,容易导致树莓派复位或 Python 脚本报 OSError: Cannot get line info。USB 继电器(如 CH340 芯片方案)自带隔离,PHP 可直接用 echo -ne '\xA0\x01\x01\xA2' > /dev/ttyUSB0 发送十六进制指令,稳定性远高于 GPIO。

但要注意:不同品牌协议不通用。得先用 screen /dev/ttyUSB0 9600 手动发指令测通断,确认协议格式(比如有些是 \x50\x00\x01\x51 开,\x50\x00\x00\x50 关),再硬编码到 PHP 中。

  • PHP 写串口示例(需安装 php-serial 扩展):
$serial = new PhpSerial();
$serial->deviceSet("/dev/ttyUSB0");
$serial->confBaudRate(9600);
$serial->confParity("none");
$serial->confCharacterLength(8);
$serial->confStopBits(1);
$serial->confFlowControl("none");
$serial->deviceOpen();
$serial->sendMessage("\xA0\x01\x01\xA2"); // 开
$serial->deviceClose();

这种方案调试期麻烦,但上线后几乎不掉线。GPIO 方案省线材,却总在半夜因电压波动失效——这点常被忽略。

相关专题

更多
python开发工具
python开发工具

php中文网为大家提供各种python开发工具,好的开发工具,可帮助开发者攻克编程学习中的基础障碍,理解每一行源代码在程序执行时在计算机中的过程。php中文网还为大家带来python相关课程以及相关文章等内容,供大家免费下载使用。

715

2023.06.15

python打包成可执行文件
python打包成可执行文件

本专题为大家带来python打包成可执行文件相关的文章,大家可以免费的下载体验。

625

2023.07.20

python能做什么
python能做什么

python能做的有:可用于开发基于控制台的应用程序、多媒体部分开发、用于开发基于Web的应用程序、使用python处理数据、系统编程等等。本专题为大家提供python相关的各种文章、以及下载和课程。

739

2023.07.25

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

617

2023.07.31

python教程
python教程

Python已成为一门网红语言,即使是在非编程开发者当中,也掀起了一股学习的热潮。本专题为大家带来python教程的相关文章,大家可以免费体验学习。

1235

2023.08.03

python环境变量的配置
python环境变量的配置

Python是一种流行的编程语言,被广泛用于软件开发、数据分析和科学计算等领域。在安装Python之后,我们需要配置环境变量,以便在任何位置都能够访问Python的可执行文件。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

547

2023.08.04

python eval
python eval

eval函数是Python中一个非常强大的函数,它可以将字符串作为Python代码进行执行,实现动态编程的效果。然而,由于其潜在的安全风险和性能问题,需要谨慎使用。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

575

2023.08.04

scratch和python区别
scratch和python区别

scratch和python的区别:1、scratch是一种专为初学者设计的图形化编程语言,python是一种文本编程语言;2、scratch使用的是基于积木的编程语法,python采用更加传统的文本编程语法等等。本专题为大家提供scratch和python相关的文章、下载、课程内容,供大家免费下载体验。

699

2023.08.11

php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

7

2025.12.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 8.1万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 6.9万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号