智慧水务项目(六)PyScada学习一,初步建立项目并测试

news2024/9/22 21:28:49

一、说明

Pyscada是scada的python实现,需要学习一下,以备不时之需,目前我的想法是用他来模拟opc数据,毕竟我准备做的项目需要系统与scada通过opc进行通信,正好做一个简单的scada系统

是一个开源的SCADA(Supervisory Control and Data Acquisition)系统,它利用Python语言的强大功能,为工业自动化和数据采集提供了一个灵活、可扩展且易于使用的解决方案。该项目旨在简化SCADA系统的开发,使开发者能够快速构建自己的监控和控制应用。

网上资料不多,但是介绍还是有很多的,大家可以了解一下

二、建立项目

目前windows 10下面安装的python 3.11.9,后续我们将在ubuntu上部署一遍

1、建虚拟环境

# 进入工作目录
cd D:\jkp\work
# 建立项目目录(也可以不建)
mkdir pyscada_prj
cd pyscada_prj
# 没有安装virtualenv的,安装下
pip install virtualenv
pip install virtualenvwrapper

#建立虚拟环境
python -m venv ./.env
#激活进入虚拟环境
cd .env/Scripts/
activate

2、安装django

pip install django==4.2

3、创建项目 

查看pyscada源码,我们参考下图的两个文件来建立项目,将.zip拷贝到项目目录中去

注意前面和后面都要参考test.sh里的过程来建立

# 建项目
django-admin startproject PyScadaServer  --template project_template_with_plugins.zip
# log目录
cd PyScadaServer/
mkdir log

4、利用vscode 打开项目,选择编译器

5、创建requirements.txt文件 

Django==4.2
#mysqlclient
channels
channels-redis
#Pyscada
#PyScada-Modbus
#PyScada-Onewire
# PyScada-Phant
#PyScada-VISA
#PyScada-SMBus
#PyScada-SystemStat
#pyscada-opcua

6、配置settings.py

邮箱配置

# 配置email
# settings.py
 
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.qq.com'  # QQ邮箱的SMTP服务器地址
EMAIL_PORT = 587  # QQ邮箱的SMTP服务器端口号,通常是465或587
EMAIL_HOST_USER = 'your-qq-email@qq.com'  # 你的QQ邮箱
EMAIL_HOST_PASSWORD = 'your-email-password'  # 你的QQ邮箱密码(授权码)
EMAIL_USE_TLS = True  # 使用TLS安全连接
# EMAIL_USE_SSL = True  # 如果端口是465,则取消注释这行
 
# 如果你希望在邮件中看到你的邮箱地址而不是服务器的地址,可以设置以下配置
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER

# 确保将your-qq-email@qq.com替换为你的QQ邮箱地址,将your-email-password替换为你的QQ邮箱授权码。

# 授权码获取方式:

# 登录到你的QQ邮箱网页版。

# 进入“设置” -> “账户”。

# 下滑到“POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务”部分。

# 开启“SMTP服务”,并获取授权码。

# 配置完成后,你可以使用Django的send_mail函数来发送邮件

# 例子

from django.core.mail import send_mail
 
send_mail(
    'Subject here',
    'Here is the message.',
    'your-qq-email@qq.com',
    ['recipient@example.com'],
    fail_silently=False,
)


# 确保在实际部署时,不要将邮箱密码或授权码硬编码在代码中,而是使用环境变量或者安全的配置文件来管理敏感信息

redis配置


if importlib.util.find_spec('channels') is not None:
    INSTALLED_APPS += [
        'channels',
    ]
    # 2986a11b50b2.c.methodot.com:31261七天有效期
    CHANNEL_LAYERS = {
        'default': {
            'BACKEND': 'channels_redis.core.RedisChannelLayer',
            'CONFIG': {
                "hosts": [('2986a11b50b2.c.methodot.com', 31261)],
            },
        },
    }

 mysql配置

DATABASES = {
    #     'default': {
    #         'ENGINE': 'django.db.backends.sqlite3',
    #         'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    #     }
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'victor',
        'USER': 'victor',
        'PASSWORD': '自己的密码',
        'HOST': 'mysql.sqlpub.com',
        'PORT': '3306',
    }
}

INSTALLED_APPS添加

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'pyscada',
    'pyscada.core',
    'pyscada.hmi',
    'pyscada.export',
    'pyscada.modbus',
    'pyscada.systemstat',
    'pyscada.phant',
    'pyscada.smbus',
    'pyscada.onewire',
    'pyscada.visa',
    'pyscada.opcua',
]

 三、安装插件

本来想直接从pip安装pipy上面的,结果应该是版本问题,才0.80,安装新版测试出错了,我们只有自己编译了

贴张目录结构图,都是git下载的,最后一个时我们建的项目,其它都是插件,.env是虚拟环境,说明目前是在windows 10环境下

每个插件安装过程中出现下列错误(有几个插件有这个错误),直接注释掉,# from pyscada import core

ImportError: cannot import name 'core' from 'pyscada' (D:\jkp\work\pyscada_prj\PyScada-Phant\pyscada\__init__.py)

1、安装PyScada

进入目录,大概就是下面的样子,注意最后的点(.)要加喔

(.env) D:\jkp\work\pyscada_prj\PyScada-main>pip install .

2、PyScada-Modbus

 (.env) D:\jkp\work\pyscada_prj\PyScada-Modbus>pip install .

3、PyScada-Onewire

 (.env) D:\jkp\work\pyscada_prj\PyScada-Onewire>pip install .

4、PyScada-OPCUA

 (.env) D:\jkp\work\pyscada_prj\PyScada-OPCUA>pip install .

5、PyScada-Phant

 (.env) D:\jkp\work\pyscada_prj\PyScada-Phant>pip install .

6、PyScada-SMBus

 (.env) D:\jkp\work\pyscada_prj\PyScada-SMBus>pip install .

7、PyScada-SystemStat

 (.env) D:\jkp\work\pyscada_prj\PyScada-SystemStat>pip install .

8、PyScada-VISA

 (.env) D:\jkp\work\pyscada_prj\PyScada-VISA>pip install .

四、运行项目

# 安装库
pip install -r requirements.txt
# 迁移
python manage.py migrate
# 收集静态数据,staic目录下
python manage.py collectstatic
# 初始化数据
python manage.py loaddata color
python manage.py loaddata units
python manage.py pyscada_daemon init
# 创建超级用户
python manage.py createsuperuser --username admin --email pyscada@pyscada.org
#修改密码
python manage.py changepassword admin
# 运行
python manage.py runserver --insecure

测试地址:

Site administration | Django site adminicon-default.png?t=N7T8http://127.0.0.1:8000/pyscada_admin/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2043177.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

记录|C#主界面设计【Web风格】

目录 前言一、页面效果二、布局设计2.1 左边菜单栏搭建框架Step1. panelMenu :Step2. panelLogoStep3. button模板Step4. 复制buttonStep5. 微调Button 2.2 界面颜色变换Step1. ThemeColor类Step2. From1.csStep3. 更换按钮点击颜色效果 2.3 按钮点击事件2.4 顶部ti…

十、Linux二进制安装ClickHouse集群(含rpm安装)

目录 十、Linux二进制安装ClickHouse集群(含rpm安装,单机版使用rpm,集群使用tar包安装方式)1 部署前服务器配置(集群的话三台都要配置)1.2 配置hosts文件1.3 打开文件数限制1.4 取消 SELINUX1.5 禁用透明大页 2 下载所需文件2.1 t…

24/8/14算法笔记 复习_支持向量机svc

支持向量机(Support Vector Machine, SVM)是一种强大的监督学习模型,用于分类、回归甚至异常检测。它基于统计学习理论,特别关注找到数据的最佳分隔超平面。 import numpy as np import matplotlib.pyplot as pltfrom sklearn.sv…

vue3 antdv a-datepicker 修改datepicker 的panel宽度,初始弹出一些正常,但再次弹出,宽度就再次变小的解决

1、展示页面的框架结构: 2、然后,我们上二张图对比一下: 图1-1 需要的效果图: 图1-2 对比一下图1-1与图1-2,我们就会发现图1-1中的农历,换行显示了,第二张是有效的。 3、我们修改样式&#x…

秋招突击——8/15——知识补充——垃圾回收机制

文章目录 引言正文指针引用可达性分析算法垃圾回收算法标记清除算法标记整理算法复制分代收集 垃圾收集器Serial收集器ParNew并行收集器Parallel Scavenge吞吐量优先收集器Serial Old老年代收集器Parallel old收集器CMS收集器G1收集器(Garbage First垃圾优先&#x…

关于堆的介绍

1.堆的概念及结构 如果有一个关键码的集合,把它的所有元素按完全二叉树的顺序存储方式存储在一个一维数组中,并满足:且则称为小堆(或大堆)。将根节点最大的堆叫做最大堆或者大根堆,根节点最小的堆叫做最小…

【Linux】:进程控制(创建、终止、等待、替换)

目录 1.进程创建 2.进程终止(退出) 2.1 什么是进程终止 2.2 进程退出的场景(原因) 2.3 进程退出码 2.4 错误码errno 2.5 进程常见的退出方法 正常终止 从main函数返回 调用库函数exit 系统接口_exit 3.进程等待 3.1 …

【Linux】简易线程池项目

线程池是一个可以巩固一些线程相关接口 && 加强理解的一个小项目。 注意:这里的线程池使用的线程并不是Linux原生接口,而是经过封装的,具体请看线程封装,为什么不使用原生接口? 因为原生接口一旦进行pthread…

2024最新easyrecovery 14中文破解版图文教程

使用EasyRecovery易恢复进行数据恢复非常简单。首先,用户需要选择需要恢复的数据类型,如文档、图片、视频等。然后,软件会对选定的存储设备进行全面扫描,以寻找可恢复的数据。在扫描过程中,用户可以预览部分已找到的文…

成化瓷器“制字衣横少越刀”--还有例外

孙瀛洲先生关于成化款瓷器的名言非常经典,但是,凡事总有以外。 图1,本人收藏成化斗彩鸡缸杯底款,制字的衣横越过双勾刀。 下面是两件台北故宫成化瓷器底款,制字下面的衣横也是越过刀了。 所以,凡事总有例外…

mysql5.7安装

1.创建一个software文件 2.先下载mysql的repo源 wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm 3安装源包 rpm -ivh mysql-community-release-el7-5.noarch.rpm 可能会报错 改成命令 rpm -ivh mysql-community-release-el7-5.noarch.rpm --nodeps…

优化图像处理:从旋转与缩放到水印添加

1. 旋转与缩放的仿射变换 在 OpenCV 中,cv2.getRotationMatrix2D() 函数可以生成旋转矩阵,该矩阵用于对图像进行旋转和缩放变换。旋转矩阵的主要参数是: Center:旋转中心点的坐标 (x, y)。 Angle:旋转角度&#xff0…

数据结构与算法--图的应用

文章目录 回顾提要连通图生成树最小生成树构造最小生成树的算法普里姆(Prim)算法克鲁斯卡尔(Kruskal)算法 最短路径狄杰斯特拉 (Dijkstra) 算法当前最短路径的更新拓扑排序拓扑排序方法拓扑排序示例总结 回顾 图的遍历方法: 深度优先遍历 (DFS):从任意…

在centos7安装mysql

1.卸载旧环境 ps axj | grep mysql ps axj | grep mariabd 如果是这样就什么都不需要做。 如果不是 2.检查并卸载系统安装包 //检查安装包 rpm -qa | grep mysql//卸载安装包 rpm -qa | grep mysql | xargs yum -y remove 3.安装官方yum源 先查看系统的版本 比如我是7.9版…

力扣高频SQL 50题(基础版)第四十题之1164. 指定日期的产品价格

文章目录 力扣高频SQL 50题(基础版)第四十题1164. 指定日期的产品价格题目说明实现过程准备数据实现方式结果截图总结FIRST_VALUE()函数LAST_VALUE()函数NTH_VALUE()函数 LAST_VALUE()函数NTH_VALUE()函数 力扣高频SQL 50题(基础版&#xff0…

YJ0043定制版抖音电商卷抢购系统带回收商城抖音电商优惠卷投资理财系统

系统是基于逍遥商城二开的系统,pc手机端都新增了邀请码验证 手机端重新定制的UI,前端产品不至于抖音卷也可以自行更改其他产品 用户前端下单,后台订单可以直接回收,后台支持设置默认邀请码和抢卷时间限制

动手学深度学习(pytorch)学习记录10-从零开始实现softmax回归[学习记录]

注:本代码在jupyter notebook上运行 封面图片来源 导包 import torch from IPython import display import torchvision from torchvision import transforms from torch.utils import data设置加载数据的线程数 def get_dataloader_workers(): ""&qu…

《学会 SpringBoot 系列 · spring.factories 详解》

📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗 🌻 CSDN入驻不久,希望大家多多支持,后续会继续提升文章质量,绝不滥竽充数…

机器人阻抗控制之设计方法

机器人阻抗控制的设计方法主要围绕调整机器人与环境之间的动态关系,使其等效为由弹簧-阻尼-质量组成的二阶系统。这一控制策略不是直接控制机器人的运动或其与外界的接触力,而是控制这二者之间的动态关系。以下是机器人阻抗控制设计方法的详细阐述&#…

Centos7系统上安装docker

centos7安装docker 安装之前,一定查看是否安装docker,如果有,卸载老版本 我是虚拟机装的Centos7,linux 3.10 内核,docker官方说至少3.8以上,建议3.10以上(ubuntu下要linux内核3.8以上&#xff…