用python控制继电器实现设备硬重启

1.用python控制继电器输出高低电平模拟按键按下-松开
2.判断设备是否重启成功(这一步的核心理念我个人觉得就是跟设备进行通讯。可以ping 设备ip,通了说明开机了;可以是建个文件夹什么的)
重难点就是用python 实现用 cmd发送指令

import os
def send_cmd(path,cmd):
	os.chdir(path)#在path处打开cmd 类似于 cd path
	result = os.system("cmd")#cmd是发送的指令,如 ping、ls等
	return result #result=0说明命令执行成功,result=1说明命令执行失败
if __name__ == "__main__":
	path = "D:\\test"
	ip = "www.baidu.com"
	cmd = "ping -c 1 -w 1 %s"%ip # 实现pingIP地址的功能,-c1指发送报文一次,-w1指等待1秒
    result = send_cmd(path,cmd)
    if(result == 1):
    	print("ping 不通 ip")

放一个我的脚本
1.继电器用的是一个免驱动的有自带可执行文件直接发指令啥的
2.利用ping指令实现判断设备是否开关机成功

import time
import sys
import os

def Open_USBRelay(path):
	os.chdir(path)
	result = os.system(".\CommandApp_USBRelay S2OD2 open 01")#控制继电器打开
	return result
def Close_USBRelay(path):
	os.chdir(path)
	result = os.system(".\CommandApp_USBRelay S2OD2 close 01")#控制继电器关闭
	return result
def zero_one(sleepTime,path):
	#path 是可执行文件CommandApp_USBRelay所处的位置
	#sleepTime是继电器on_off的时间,相当于按键按下的总时间
	j=Open_USBRelay(path)
	if j == 1:
		print("open error")
		return 
	time.sleep(sleepTime)
	k = Close_USBRelay(path)
	if k== 1:
		print("close error")
		return 
def ping_ip(path,ip):
	os.chdir(path)
	# 实现pingIP地址的功能,-c1指发送报文一次,-w1指等待1秒
	result = os.system("ping -c 1 -w 1 %s"%ip)
	# print("ping ip result:",result)
	return result
        
if __name__ == "__main__":
	path = "D:\\test-learning\\继电器\\【010810】USBRelay外部使用开发库\\USBRelay外部使用开发库\\TestApp"
	ip = "www.baidu.com"
	#ip = "192.168.1.103"
    # execute only if run as a script
	for i in range(120):
		print("第",i+1,"次")
		zero_one(0.5,path)#短按开机
		time.sleep(4)#等待设备自动重连指定wifi
		result = ping_ip(path,ip)
		if(result == 1):
			print("ip 无法ping通,设备没有开机")
		zero_one(1.5,path)#长按关机
		time.sleep(1)
		result = ping_ip(path,ip)
		if(result == 0):
			print("ip ping通,设备没有关机")
		time.sleep(1)

你可能感兴趣的:(用python控制继电器实现设备硬重启)