低价网站建设制作设计公司,网站关联页面如何做,做交互的设计网站,网站建设需要的准备TIA V20版本#xff1a;添加用户
添加角色#xff0c;并充分授权#xff0c;尤其是GraphQL的读写权限。 通过SIMATIC Runtime Manager启动wincc unifi工程。 打开浏览器#xff0c;访问本地的https://localhost/graphql/#xff0c;运行正常如图#xff1a;
连接外…TIA V20版本添加用户
添加角色并充分授权尤其是GraphQL的读写权限。 通过SIMATIC Runtime Manager启动wincc unifi工程。 打开浏览器访问本地的https://localhost/graphql/运行正常如图
连接外网打开https://studio.apollographql.com/sandbox/explorer工具在线调试GraphQL接口 打开查询指令窗口
第一步请求login获取token:
mutation{
login(username:wincc,password:Wincc12345){
token
user{
fullName
id
}
error{
code
description
}
}
} 获取token后面需要添加到headers里Authorization Bearer e68814f546ed1360cb533ed7ecf77ae0。 如图所示 第二步查询获取变量值Tag_2是变量名称。
query Query{
tagValues(names:[Tag_2]){
name
value{
value
timestamp
quality{
quality
subStatus
}
}
error{
code
description
}
}
} 第三步写入一个值0
mutation exampleTagValueWrite {
writeTagValues(input:[
{
name:Tag_2,
value: 0
}
], quality:{quality: GOOD_NON_CASCADE}){
name
error{
code
description
}
}
} 第四步订阅一个变量
subscription subscription{
tagValues(names:[Tag_2]){
value{
value
timestamp
quality{
quality
limit
subStatus
}
}
error{
description
}
}
}
} GraphQL通过python客户端读取和写入变量:
from gql import gql, Client
from gql.transport.requests import RequestsHTTPTransporturl http://localhost:4000/graphql
USERNAME wincc
PASSWORD Wincc12345
TAG_NAME Tag_2
transport RequestsHTTPTransport(urlurl,verifyFalse, retries3)
client Client(transporttransport, fetch_schema_from_transportTrue)query
mutation{
login(username:%s,password:%s){
token
user{
fullName
id
}
error{
code
description
}
}
}
variable_values {Authorization: Bearer 2d263aa90155e66bb24f7a4604153ee7} # 如果有变量的话
result client.execute(gql(query % (USERNAME, PASSWORD)), variable_valuesvariable_values)
token result[login][token]
headers{Authorization: Bearer token}
transport RequestsHTTPTransport(urlurl,headersheaders,verifyFalse, retries3)
client Client(transporttransport, fetch_schema_from_transportTrue)query
mutation exampleTagValueWrite {
writeTagValues(input:[
{
name:%s,
value: 0
}
], quality:{quality: GOOD_NON_CASCADE}){
name
error{
code
description
}
}
}result client.execute(gql(query))
print(result)
query
query Query{
tagValues(names:[%s]){
name
value{
value
timestamp
quality{
quality
subStatus
}
}
error{
code
description
}
}
}result client.execute(gql(query % (TAG_NAME)))
print(result)
GraphQL通过python客户端订阅变量:
import asyncio
from gql import Client, gql
from gql.transport.websockets import WebsocketsTransport
from websockets.exceptions import ConnectionClosedGRAPHQL_WS_URL wss://localhost:4000/graphql
TAG_NAME Tag_2
AUTH_TOKEN 1a64a7289995f7da6a9baa0cd5eb93dbheaders {Authorization: Bearer AUTH_TOKEN}subscription gql(subscription {tagValues(names: [%s]) {namevalue {value}notificationReason}}% TAG_NAME)async def main():transport WebsocketsTransport(GRAPHQL_WS_URL, init_payloadheaders)counter 0try:# Using async with on the client will start a connection on the transport# and provide a session variable to execute queries on this connectionasync with Client(transporttransport,fetch_schema_from_transportTrue,) as session:async for result in session.subscribe(subscription):print(result)counter 1if counter 1000:print (Closing connection from the client) breakexcept ConnectionClosed:print (Connection closed by the server)asyncio.run(main())
注意python依赖库安装pip install gql。