Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
opcua-asyncio
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Nikola Balog
opcua-asyncio
Commits
ea4034d1
Commit
ea4034d1
authored
Jun 13, 2016
by
zerox1212
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Update history examples
Cleanup examples and add an example for historizing a data value
parent
459f8ed9
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
58 additions
and
7 deletions
+58
-7
examples/server-datavalue-history.py
examples/server-datavalue-history.py
+47
-0
examples/server-events-history.py
examples/server-events-history.py
+11
-7
No files found.
examples/server-datavalue-history.py
0 → 100644
View file @
ea4034d1
import
sys
sys
.
path
.
insert
(
0
,
".."
)
import
time
import
math
from
opcua
import
ua
,
Server
from
opcua.server.history_sql
import
HistorySQLite
if
__name__
==
"__main__"
:
# setup our server
server
=
Server
()
server
.
set_endpoint
(
"opc.tcp://0.0.0.0:4840/freeopcua/server/"
)
# setup our own namespace, not really necessary but should as spec
uri
=
"http://examples.freeopcua.github.io"
idx
=
server
.
register_namespace
(
uri
)
# get Objects node, this is where we should put our custom stuff
objects
=
server
.
get_objects_node
()
# populating our address space
myobj
=
objects
.
add_object
(
idx
,
"MyObject"
)
myvar
=
myobj
.
add_variable
(
idx
,
"MyVariable"
,
ua
.
Variant
(
0
,
ua
.
VariantType
.
Double
))
myvar
.
set_writable
()
# Set MyVariable to be writable by clients
# Configure server to use sqlite as history database (default is a simple in memory dict)
server
.
iserver
.
history_manager
.
set_storage
(
HistorySQLite
(
"my_datavalue_history.sql"
))
# starting!
server
.
start
()
# enable data change history for this particular node, must be called after start since it uses subscription
server
.
iserver
.
enable_history_data_change
(
myvar
,
period
=
None
,
count
=
100
)
try
:
count
=
0
while
True
:
time
.
sleep
(
1
)
count
+=
0.1
myvar
.
set_value
(
math
.
sin
(
count
))
finally
:
# close connection, remove subscriptions, etc
server
.
stop
()
examples/server-events-history.py
View file @
ea4034d1
import
sys
sys
.
path
.
insert
(
0
,
".."
)
import
time
import
logging
from
datetime
import
datetime
from
opcua
import
ua
,
Server
from
opcua.server.history_sql
import
HistorySQLite
...
...
@@ -23,8 +22,6 @@ if __name__ == "__main__":
# populating our address space
myobj
=
objects
.
add_object
(
idx
,
"MyObject"
)
myvar
=
myobj
.
add_variable
(
idx
,
"MyVariable"
,
ua
.
Variant
(
0
,
ua
.
VariantType
.
Double
))
myvar
.
set_writable
()
# Set MyVariable to be writable by clients
# Creating a custom event: Approach 1
# The custom event object automatically will have members from its parent (BaseEventType)
...
...
@@ -35,15 +32,18 @@ if __name__ == "__main__":
etype2
=
server
.
create_custom_event_type
(
2
,
'MySecondEvent'
,
ua
.
ObjectIds
.
BaseEventType
,
[(
'MyOtherProperty'
,
ua
.
VariantType
.
Float
)])
# get an event generator for the myobj node which generates custom events
myevgen
=
server
.
get_event_generator
(
etype
,
myobj
)
myevgen
.
event
.
Severity
=
500
myevgen
.
event
.
MyStringProperty
=
ua
.
Variant
(
"hello world"
)
myevgen
.
event
.
MyNumericProperty
=
ua
.
Variant
(
-
456
)
# get another event generator for the myobj node which generates different custom events
myevgen2
=
server
.
get_event_generator
(
etype2
,
myobj
)
myevgen2
.
event
.
Severity
=
123
myevgen2
.
event
.
MyOtherProperty
=
ua
.
Variant
(
1.337
)
# get an event generator for the server node which generates BaseEventType
serverevgen
=
server
.
get_event_generator
()
serverevgen
.
event
.
Severity
=
111
...
...
@@ -53,10 +53,10 @@ if __name__ == "__main__":
# starting!
server
.
start
()
# enable history for myobj events
# enable history for myobj events
; must be called after start since it uses subscription
server
.
iserver
.
enable_history_event
(
myobj
,
period
=
None
)
# enable history for server events
# enable history for server events
; must be called after start since it uses subscription
server_node
=
server
.
get_node
(
ua
.
ObjectIds
.
Server
)
server
.
iserver
.
enable_history_event
(
server_node
,
period
=
None
)
...
...
@@ -65,11 +65,15 @@ if __name__ == "__main__":
while
True
:
time
.
sleep
(
1
)
count
+=
0.1
# generate events for subscribed clients and history
myevgen
.
trigger
(
message
=
"This is MyFirstEvent "
+
str
(
count
))
myevgen2
.
trigger
(
message
=
"This is MySecondEvent "
+
str
(
count
))
serverevgen
.
trigger
(
message
=
"Server Event Message"
)
res
=
server_node
.
read_event_history
(
None
,
None
,
0
)
# read event history from sql
end_time
=
datetime
.
utcnow
()
server_event_history
=
server_node
.
read_event_history
(
None
,
end_time
,
0
)
finally
:
# close connection, remove subscriptions, etc
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment