利用阿里云ECS运行Python脚本监测汽车车窗车门状态

简介: 利用阿里云CES运行脚本监测汽车车窗车门状态

1、购买阿里云服务器

https://www.aliyun.com/product/ecs

2、安装宝塔

yum install -ywget && wget-O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh ed099927

3、编写脚本

①导入包

importrequestsimportjsonimportosimporttimeimportsmtplibfromemail.mime.textimportMIMETextfromemail.utilsimportformataddr

②请求登录接口

deflogin():
try:
url="######"payload=json.dumps({
"username": username,
"password": password        })
headers= {
'Host': 'api.xchanger.cn',
'Cookie': '###########',
'accept': 'application/json;responseformat=3',
'content-type': 'application/json',
'x-app-id': '##',
'user-agent': 'BackgroundShortcutRunner/1092.8.7 CFNetwork/1220.1 Darwin/20.3.0',
'accept-language': 'zh-cn'        }
response=requests.request("POST", url, headers=headers, data=payload,verify=False)
print(response.json())
accessToken=response.json()['data']['accessToken']
userId=response.json()['data']['userId']
withopen(r'login.txt', "w+") asf1:
f1.write(accessToken)
withopen(r'userId.txt', "w+") asf2:
f2.write(userId)
returnaccessTokenexceptExceptionasDamnMistake:
print(DamnMistake)
mail("登录错误",str(DamnMistake))

③请求车辆状态接口

defstatus(sessionToken):
ifos.path.exists(r'userId.txt'):
withopen(r'userId.txt', "r") asf:
userId=f.read()
else:
userId="#####"url="#####"+vin+"#####"+userIdpayload= {}
headers= {
'Host': 'api.xchanger.cn',
'Cookie': '#######',
'accept': 'application/json;responseformat=3',
'ecarx-net-platform': 'tsp',
'user-agent': '#########)',
'authorization': sessionToken,
'accept-language': 'zh-cn'    }
response=requests.request("GET", url, headers=headers, data=payload,verify=False)
try:
#数据更新日期updateTime=response.json()['data']['vehicleStatus']['updateTime']
updateTime=time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(response.json()['data']['vehicleStatus']['updateTime']/1000))
#左前车窗(2是关闭)winStatusDriver=response.json()['data']['vehicleStatus']['additionalVehicleStatus']['climateStatus']['winStatusDriver']
#右前车窗(2是关闭)winStatusPassenger=response.json()['data']['vehicleStatus']['additionalVehicleStatus']['climateStatus']['winStatusPassenger']
#左后车窗(2是关闭)winStatusDriverRear=response.json()['data']['vehicleStatus']['additionalVehicleStatus']['climateStatus']['winStatusDriverRear']
#右后车窗(2是关闭)winStatusPassengerRear=response.json()['data']['vehicleStatus']['additionalVehicleStatus']['climateStatus']['winStatusPassengerRear']
#冷却液是否正常(ture是正常)engineCoolantTemperatureValidity=response.json()['data']['vehicleStatus']['additionalVehicleStatus']['runningStatus']['engineCoolantTemperatureValidity']
#后尾箱是否开启(1开启,0没有开启)trunkOpenStatus=response.json()['data']['vehicleStatus']['additionalVehicleStatus']['drivingSafetyStatus']['trunkOpenStatus']
#引擎盖是否开启(1开启,0没有开启)engineHoodOpenStatus=response.json()['data']['vehicleStatus']['additionalVehicleStatus']['drivingSafetyStatus']['engineHoodOpenStatus']
#左前门打开状态(0是关闭)doorOpenStatusDriver=response.json()['data']['vehicleStatus']['additionalVehicleStatus']['drivingSafetyStatus']['doorOpenStatusDriver']
#右前门打开状态(0是关闭)doorOpenStatusPassenger=response.json()['data']['vehicleStatus']['additionalVehicleStatus']['drivingSafetyStatus']['doorOpenStatusPassenger']
#左后门打开状态(0是关闭)doorOpenStatusDriverRear=response.json()['data']['vehicleStatus']['additionalVehicleStatus']['drivingSafetyStatus']['doorOpenStatusDriverRear']
#右后门打开状态(0是关闭)doorOpenStatusPassengerRear=response.json()['data']['vehicleStatus']['additionalVehicleStatus']['drivingSafetyStatus']['doorOpenStatusPassengerRear']
#左前门门锁状态(1是已上锁)doorLockStatusDriver=response.json()['data']['vehicleStatus']['additionalVehicleStatus']['drivingSafetyStatus']['doorLockStatusDriver']
#左后门门锁状态(1是已上锁)doorLockStatusDriverRear=response.json()['data']['vehicleStatus']['additionalVehicleStatus']['drivingSafetyStatus']['doorLockStatusDriverRear']
#右前门门锁状态(1是已上锁)doorLockStatusPassenger=response.json()['data']['vehicleStatus']['additionalVehicleStatus']['drivingSafetyStatus']['doorLockStatusPassenger']
#右后门门锁状态(1是已上锁)doorLockStatusPassengerRear=response.json()['data']['vehicleStatus']['additionalVehicleStatus']['drivingSafetyStatus']['doorLockStatusPassengerRear']
#车辆报警是否开启(1为已开启)vehicleAlarm=response.json()['data']['vehicleStatus']['additionalVehicleStatus']['drivingSafetyStatus']['vehicleAlarm']
#电瓶电压voltage=response.json()['data']['vehicleStatus']['additionalVehicleStatus']['maintenanceStatus']['mainBatteryStatus']['voltage']
#发动机状态(engine_off为关闭,engine_running为开启)engineStatus=response.json()['data']['vehicleStatus']['basicVehicleStatus']['engineStatus']
carStatus_dict= {
"数据更新时间": updateTime,
"左前车窗": winStatusDriver,
"右前车窗": winStatusPassenger,
"左后车窗": winStatusDriverRear,
"右后车窗": winStatusPassengerRear,
"后尾箱是否开启": trunkOpenStatus,
"引擎盖是否开启": engineHoodOpenStatus,
"左前门打开状态": doorOpenStatusDriver,
"右前门打开状态": doorOpenStatusPassenger,
"左后门打开状态": doorOpenStatusDriverRear,
"右后门打开状态": doorOpenStatusPassengerRear,
"左前门门锁状态": doorLockStatusDriver,
"左后门门锁状态": doorLockStatusDriverRear,
"右前门门锁状态": doorLockStatusPassenger,
"右后门门锁状态": doorLockStatusPassengerRear,
"车辆报警是否开启": vehicleAlarm,
"电瓶电压": voltage,
"发动机状态": engineStatus        }
withopen(r'carStatus_dict.txt', "w+") asf:
f.write(str(carStatus_dict))
returncarStatus_dictexceptExceptionasDamnMistake:
print(DamnMistake)
mail("获取各项数据错误",str(DamnMistake))


⑤发送邮件

defmail(msgTitle, result_json):
my_sender='####@qq.com'# 发件人邮箱账号my_pass='####'# 发件人邮箱密码my_user='#####@qq.com'# 收件人邮箱账号try:
msg=MIMEText(json.dumps(result_json, sort_keys=True, indent=4, separators=(',', ':'), ensure_ascii=False),
'plain', 'utf-8')
msg['From'] =formataddr(["###", my_sender])  # 括号里的对应发件人邮箱昵称、发件人邮箱账号msg['To'] =formataddr(["FK", my_user])  # 括号里的对应收件人邮箱昵称、收件人邮箱账号msg['Subject'] =msgTitle# 邮件的主题server=smtplib.SMTP_SSL("smtp.qq.com", 465)  # 发件人邮箱中的SMTP服务器,端口是25server.login(my_sender, my_pass)  # 括号中对应的是发件人邮箱账号、邮箱密码server.sendmail(my_sender, my_user, msg.as_string())  # 括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件server.quit()  # 关闭连接exceptExceptionasfuckError:  # 如果 try 中的语句没有执行,则会执行下面的print('发送邮件报错了,报错内容为:\n')
print(fuckError)

⑥主程序

defmain():
sessionToken=update_token()
carStatus_dict=status(sessionToken)
print(carStatus_dict)
car_Alarm=[]
ifcarStatus_dict['发动机状态'] =="engine_off":
ifcarStatus_dict['左前车窗'] !="2":
car_Alarm.append("左前车窗未关闭")
ifcarStatus_dict['右前车窗'] !="2":
car_Alarm.append("右前车窗未关闭")
ifcarStatus_dict['左后车窗'] !="2":
car_Alarm.append("左后车窗未关闭")
ifcarStatus_dict['右后车窗'] !="2":
car_Alarm.append("右后车窗未关闭")
ifcarStatus_dict['后尾箱是否开启'] =="1":
car_Alarm.append("后尾箱未关闭")
ifcarStatus_dict['左前门门锁状态'] !="1":
car_Alarm.append("左前门未锁")
ifcarStatus_dict['左后门门锁状态'] !="1":
car_Alarm.append("左后门未锁")
ifcarStatus_dict['右前门门锁状态'] !="1":
car_Alarm.append("右前门未锁")
ifcarStatus_dict['右后门门锁状态'] !="1":
car_Alarm.append("右后门未锁")
ifcarStatus_dict['左前门打开状态'] =="1":
car_Alarm.append("左前门未关闭")
ifcarStatus_dict['左后门打开状态'] =="1":
car_Alarm.append("左后门未关闭")
ifcarStatus_dict['右前门打开状态'] =="1":
car_Alarm.append("右前门未关闭")
ifcarStatus_dict['右后门打开状态'] =="1":
car_Alarm.append("右后门未关闭")
print(car_Alarm)
else:
passiflen(car_Alarm)>0:
car_Alarm.append("数据更新时间:"+carStatus_dict['数据更新时间'])
withopen(r'car_Alarm.txt', "w+") asf1:
f1.write(str(car_Alarm))
mail("车辆报警!!!!!!", car_Alarm)


4、上传脚本

①打开宝塔

②点击“文件”

③上传

image.png

5、开启定时任务

①打开宝塔

②点击“计划任务”

image.png

6、结束

image.png

image.png































相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
16天前
|
存储 人工智能 弹性计算
阿里云弹性计算(ECS)提供强大的AI工作负载平台,支持灵活的资源配置与高性能计算,适用于AI训练与推理
阿里云弹性计算(ECS)提供强大的AI工作负载平台,支持灵活的资源配置与高性能计算,适用于AI训练与推理。通过合理优化资源分配、利用自动伸缩及高效数据管理,ECS能显著提升AI系统的性能与效率,降低运营成本,助力科研与企业用户在AI领域取得突破。
35 6
|
16天前
|
弹性计算 监控 容灾
阿里云ECS提供强大的云上灾备解决方案,通过高可用基础设施、多样的数据备份方式及异地灾备服务,帮助企业实现业务的持续稳定运行
在数字化时代,企业对信息技术的依赖加深,确保业务连续性至关重要。阿里云ECS提供强大的云上灾备解决方案,通过高可用基础设施、多样的数据备份方式及异地灾备服务,帮助企业实现业务的持续稳定运行。无论是小型企业还是大型企业,都能从中受益,确保在面对各种风险时保持业务稳定。
34 4
|
21天前
|
人工智能 弹性计算 编解码
阿里云GPU云服务器性能、应用场景及收费标准和活动价格参考
GPU云服务器作为阿里云提供的一种高性能计算服务,通过结合GPU与CPU的计算能力,为用户在人工智能、高性能计算等领域提供了强大的支持。其具备覆盖范围广、超强计算能力、网络性能出色等优势,且计费方式灵活多样,能够满足不同用户的需求。目前用户购买阿里云gpu云服务器gn5 规格族(P100-16G)、gn6i 规格族(T4-16G)、gn6v 规格族(V100-16G)有优惠,本文为大家详细介绍阿里云gpu云服务器的相关性能及收费标准与最新活动价格情况,以供参考和选择。
|
26天前
|
机器学习/深度学习 人工智能 弹性计算
什么是阿里云GPU云服务器?GPU服务器优势、使用和租赁费用整理
阿里云GPU云服务器提供强大的GPU算力,适用于深度学习、科学计算、图形可视化和视频处理等多种场景。作为亚太领先的云服务提供商,阿里云的GPU云服务器具备灵活的资源配置、高安全性和易用性,支持多种计费模式,帮助企业高效应对计算密集型任务。
|
1月前
|
缓存 监控 Linux
Python 实时获取Linux服务器信息
Python 实时获取Linux服务器信息
|
28天前
|
自然语言处理 编译器 应用服务中间件
PHP在服务器上的运行过程
PHP在服务器上的运行过程
38 7
|
28天前
|
存储 分布式计算 固态存储
阿里云2核16G、4核32G、8核64G配置云服务器租用收费标准与活动价格参考
2核16G、8核64G、4核32G配置的云服务器处理器与内存比为1:8,这种配比的云服务器一般适用于数据分析与挖掘,Hadoop、Spark集群和数据库,缓存等内存密集型场景,因此,多为企业级用户选择。目前2核16G配置按量收费最低收费标准为0.54元/小时,按月租用标准收费标准为260.44元/1个月。4核32G配置的阿里云服务器按量收费标准最低为1.08元/小时,按月租用标准收费标准为520.88元/1个月。8核64G配置的阿里云服务器按量收费标准最低为2.17元/小时,按月租用标准收费标准为1041.77元/1个月。本文介绍这些配置的最新租用收费标准与活动价格情况,以供参考。
|
26天前
|
机器学习/深度学习 人工智能 弹性计算
阿里云GPU服务器全解析_GPU价格收费标准_GPU优势和使用说明
阿里云GPU云服务器提供强大的GPU算力,适用于深度学习、科学计算、图形可视化和视频处理等场景。作为亚太领先的云服务商,阿里云GPU云服务器具备高灵活性、易用性、容灾备份、安全性和成本效益,支持多种实例规格,满足不同业务需求。
179 2
|
1月前
|
弹性计算
阿里云2核16G服务器多少钱一年?亲测价格查询1个月和1小时收费标准
阿里云2核16G服务器提供多种ECS实例规格,内存型r8i实例1年6折优惠价为1901元,按月收费334.19元,按小时收费0.696221元。更多规格及详细报价请访问阿里云ECS页面。
67 9
|
1月前
|
监控 Ubuntu Linux
使用VSCode通过SSH远程登录阿里云Linux服务器异常崩溃
通过 VSCode 的 Remote - SSH 插件远程连接阿里云 Ubuntu 22 服务器时,会因高 CPU 使用率导致连接断开。经排查发现,VSCode 连接根目录 ".." 时会频繁调用"rg"(ripgrep)进行文件搜索,导致 CPU 负载过高。解决方法是将连接目录改为"root"(或其他具体的路径),避免不必要的文件检索,从而恢复正常连接。