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

发布于:2024-08-19 ⋅ 阅读:(132) ⋅ 点赞:(0)

一、说明

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/