Skip to content

Commit 12ca482

Browse files
author
Sebastian
committed
release 3.0
1 parent fcc5066 commit 12ca482

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

64 files changed

+3087
-14748
lines changed

README.md

Lines changed: 31 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,41 @@
11
# RealTime OpenControl (RTOC)
22

3-
| [![Documentation Status](https://readthedocs.org/projects/realtimeopencontrol/badge/?version=latest)](https://realtimeopencontrol.readthedocs.io/en/latest/) | [![Builds 2.1.8v](https://img.shields.io/badge/Builds%20version-1.6-brightgreen.svg?style=flat)](https://github.com/Haschtl/RealTimeOpenControl/releases) | [![PyPI pyversions](https://img.shields.io/pypi/pyversions/ansicolortags.svg)](https://pypi.python.org/pypi/RTOC/) | [![PyPI version fury.io](https://badge.fury.io/py/ansicolortags.svg)](https://pypi.python.org/pypi/RTOC/) | [![PyPI license](https://img.shields.io/pypi/l/ansicolortags.svg)](https://pypi.python.org/pypi/RTOC/) | [![GitHub release](https://img.shields.io/github/release/Naereen/StrapDown.js.svg)](https://github.com/Haschtl/RealTimeOpenControl/releases/) | [![Github all releases](https://img.shields.io/github/downloads/Naereen/StrapDown.js/total.svg)](https://github.com/Haschtl/RealTimeOpenControl/releases/) |
3+
| [![Documentation Status](https://readthedocs.org/projects/realtimeopencontrol/badge/?version=latest)](https://realtimeopencontrol.readthedocs.io/en/latest/) | [![Builds 3.0v](https://img.shields.io/badge/Builds%20version-1.6-brightgreen.svg?style=flat)](https://github.com/Haschtl/RealTimeOpenControl/releases) | [![PyPI pyversions](https://img.shields.io/pypi/pyversions/ansicolortags.svg)](https://pypi.python.org/pypi/RTOC/) | [![PyPI version fury.io](https://badge.fury.io/py/ansicolortags.svg)](https://pypi.python.org/pypi/RTOC/) | [![PyPI license](https://img.shields.io/pypi/l/ansicolortags.svg)](https://pypi.python.org/pypi/RTOC/) | [![GitHub release](https://img.shields.io/github/release/Naereen/StrapDown.js.svg)](https://github.com/Haschtl/RealTimeOpenControl/releases/) | [![Github all releases](https://img.shields.io/github/downloads/Naereen/StrapDown.js/total.svg)](https://github.com/Haschtl/RealTimeOpenControl/releases/) |
44

55

6-
### Version 2.1.8
6+
### Version 3.0
77
![Usecase](screenshots/RTOC-schematik.png)
88
[Documentation](https://realtimeopencontrol.readthedocs.io/en/latest/)
99

10+
11+
12+
> ## New in version 3.0
13+
>
14+
> - Introducing the [Android App](https://play.google.com/store/apps/details?id=io.RTOC.RTOCRemote&hl=en) with full RTOC remote control
15+
> - Websocket-API
16+
> - TCP is deprecated and removed from GUI. Use websockets instead.
17+
> - New Plugin Functions:
18+
> - self.warning(), self.info(), self.error(), self.debug() # Log available in the Android-App
19+
> - Persistent Variables: Variables are stored in a file and automatically loaded and saved
20+
> - Doc-Strings for functions and Plugin-class are displayed in Android-App. Doc-Strings for Parameters need to be defined seperate: self.\_\_doc_PARAMETER\_\_
21+
> - Webserver has been removed, because the Android App provides a better interface and could also run as a WebApp on any device. But I only published the App, If you need a WebApp, contact me.
22+
> - Several bugfixes
23+
1024
RealTime OpenControl is a simple way for real-time data recording, visualization and editing.
1125

1226
RTOC is made for communication with different devices (IoT) in a network or local sensors or devices providing data. It collects Data from any source and provides easy and intuitive user interaction. The simplest way is, to run RTOC with the user-frontend. But it can also run a HTML-Server providing plots and events. This is the best way to view the data, if RTOC is running on screen-less devices, like a Raspberry Pi. And in any other case, you can get full access and control of RTOC with a simple Telegram-Bot all over the world, without many configurations. This bot is also capable of sending messages or warnings, if events are triggered. Read more about Events later on.
1327

1428
There are different ways to access data on an RTOC-Server:
1529

30+
- **NEW**: With WebApp / [Android App](https://play.google.com/store/apps/details?id=io.RTOC.RTOCRemote&hl=en)
1631
- From GUI (PyQT5) (full access)
17-
- From another RTOC-Server with TCP (partial access)
32+
- From another RTOC-Server with Websockets (partial access)
1833
- From any device with a Telegram-Bot (full access)
19-
- From any device with an HTML-website (only viewable)
2034
- From any device with PostgreSQL-Database (only access to data, no controlling of RTOC)
2135

2236
### Possible applications
2337

38+
- Endlessly customizable home automation
2439
- General long time data recording and automation due to postgreSQL integration
2540
- Central measurement data recording of laboratory instruments with PC connection (e.g. power supply unit, multimeter, sensors, microcontroller)
2641
- Central recording of measurement data from Internet devices (e.g. mobile weather stations, drones, smartphones)
@@ -57,7 +72,7 @@ Python plugins are integrated into RTOC and can be used to
5772
- send data as stream(=append) or plot(=replace) to RTOC
5873
- send events
5974

60-
Plugins can **not** access all measurements. This can be done with a TCP connection to RTOC.
75+
Plugins can **not** access all measurements. This can be done with a websocket connection to RTOC.
6176

6277
[Example-Plugins here.](https://realtimeopencontrol.readthedocs.io/en/latest/PLUGINS.html)
6378

@@ -80,7 +95,7 @@ You can get more plugins from the [RTOC-plugin-repository](https://github.com/Ha
8095

8196
In some cases you don't want to run the GUI (e.g. raspberry). Then you can still configure RTOC in a terminal: `python3 -m RTOC.RTLogger -c`
8297

83-
If you just want to run the TCP-Server after configuration, you can do this with `python3 -m RTOC.RTLogger`. The best way, to run this code on embedded devices, is, to setup a systemd-service for automated startup. But you can also run/stop RTOC in background with 'python3 -m RTOC.RTLogger -s start/stop'.
98+
If you just want to run the Websocket-Server after configuration, you can do this with `python3 -m RTOC.RTLogger`. The best way, to run this code on embedded devices, is, to setup a systemd-service for automated startup. But you can also run/stop RTOC in background with 'python3 -m RTOC.RTLogger -s start/stop'.
8499

85100
If you want to start the HTML server on port 8050, you need to run it with 'python3 -m RTOC.RTLogger -w'.
86101

@@ -93,23 +108,27 @@ If you want to start the HTML server on port 8050, you need to run it with 'pyth
93108

94109

95110

96-
### Simple local TCP-Datastream
111+
### Simple local Websocket-Server
97112

98-
TCP clients can establish a connection to the RTOC server on the same computer or in the network (check firewall settings). With the necessary port shares on the router and dynamic DNS, the RTOC server can also be accessed from the Internet.
113+
Websocket clients can establish a connection to the RTOC server on the same computer or in the network (check firewall settings). With the necessary port shares on the router and dynamic DNS, the RTOC server can also be accessed from the Internet.
99114

100-
TCP communication takes place with JSONs, which allows communication in all programming languages and also, for example, with an ESP8266/ESP32 microcontroller. This connection can also be end-to-end-encrypted with AES.
115+
Websocket communication-protocoll is in JSON format, which allows communication in all programming languages and also, for example, with an ESP8266/ESP32 microcontroller. The communication can also be end-to-end-encrypted with AES. In this case, you need to implement the right encryption yourself.
101116

102-
The client can
117+
A client can
103118

104119
- send data as stream(=append) or plot(=replace) to RTOC
105120
- send events
106121
- access all measurement data and events of the RTOC-server
107122
- access all RTOC-server functions
108123
- access all RTOC-server plugin functions and parameters
124+
- subscribe to signals
125+
126+
The server will
109127

110-
The connection between RTOC server and client can be encrypted end-to-end (DES) with a password.
128+
- send events to the clients
129+
- send subscribed signals to clients
111130

112-
[Example for TCP here.](https://realtimeopencontrol.readthedocs.io/en/latest/TCP.html)
131+
[Example for Websockets here.](https://realtimeopencontrol.readthedocs.io/en/latest/Websocket.html)
113132

114133
### Include Telegram-messanger
115134

RTOC.egg-info/PKG-INFO

Lines changed: 32 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,49 @@
11
Metadata-Version: 2.1
22
Name: RTOC
3-
Version: 2.1.8
3+
Version: 3.0
44
Summary: RealTime OpenControl
55
Home-page: https://github.com/Haschtl/RealTimeOpenControl
66
Author: Sebastian Keller
77
Author-email: sebastiankeller@online.de
88
License: GNU
99
Description: # RealTime OpenControl (RTOC)
1010

11-
| [![Documentation Status](https://readthedocs.org/projects/realtimeopencontrol/badge/?version=latest)](https://realtimeopencontrol.readthedocs.io/en/latest/) | [![Builds 2.1.8v](https://img.shields.io/badge/Builds%20version-1.6-brightgreen.svg?style=flat)](https://github.com/Haschtl/RealTimeOpenControl/releases) | [![PyPI pyversions](https://img.shields.io/pypi/pyversions/ansicolortags.svg)](https://pypi.python.org/pypi/RTOC/) | [![PyPI version fury.io](https://badge.fury.io/py/ansicolortags.svg)](https://pypi.python.org/pypi/RTOC/) | [![PyPI license](https://img.shields.io/pypi/l/ansicolortags.svg)](https://pypi.python.org/pypi/RTOC/) | [![GitHub release](https://img.shields.io/github/release/Naereen/StrapDown.js.svg)](https://github.com/Haschtl/RealTimeOpenControl/releases/) | [![Github all releases](https://img.shields.io/github/downloads/Naereen/StrapDown.js/total.svg)](https://github.com/Haschtl/RealTimeOpenControl/releases/) |
11+
| [![Documentation Status](https://readthedocs.org/projects/realtimeopencontrol/badge/?version=latest)](https://realtimeopencontrol.readthedocs.io/en/latest/) | [![Builds 3.0v](https://img.shields.io/badge/Builds%20version-1.6-brightgreen.svg?style=flat)](https://github.com/Haschtl/RealTimeOpenControl/releases) | [![PyPI pyversions](https://img.shields.io/pypi/pyversions/ansicolortags.svg)](https://pypi.python.org/pypi/RTOC/) | [![PyPI version fury.io](https://badge.fury.io/py/ansicolortags.svg)](https://pypi.python.org/pypi/RTOC/) | [![PyPI license](https://img.shields.io/pypi/l/ansicolortags.svg)](https://pypi.python.org/pypi/RTOC/) | [![GitHub release](https://img.shields.io/github/release/Naereen/StrapDown.js.svg)](https://github.com/Haschtl/RealTimeOpenControl/releases/) | [![Github all releases](https://img.shields.io/github/downloads/Naereen/StrapDown.js/total.svg)](https://github.com/Haschtl/RealTimeOpenControl/releases/) |
1212

1313

14-
### Version 2.1.8
14+
### Version 3.0
1515
![Usecase](screenshots/RTOC-schematik.png)
1616
[Documentation](https://realtimeopencontrol.readthedocs.io/en/latest/)
1717

18+
19+
20+
> ## New in version 3.0
21+
>
22+
> - Introducing the [Android App](https://play.google.com/store/apps/details?id=io.RTOC.RTOCRemote&hl=en) with full RTOC remote control
23+
> - Websocket-API
24+
> - TCP is deprecated and removed from GUI. Use websockets instead.
25+
> - New Plugin Functions:
26+
> - self.warning(), self.info(), self.error(), self.debug() # Log available in the Android-App
27+
> - Persistent Variables: Variables are stored in a file and automatically loaded and saved
28+
> - Doc-Strings for functions and Plugin-class are displayed in Android-App. Doc-Strings for Parameters need to be defined seperate: self.\_\_doc_PARAMETER\_\_
29+
> - Webserver has been removed, because the Android App provides a better interface and could also run as a WebApp on any device. But I only published the App, If you need a WebApp, contact me.
30+
> - Several bugfixes
31+
1832
RealTime OpenControl is a simple way for real-time data recording, visualization and editing.
1933

2034
RTOC is made for communication with different devices (IoT) in a network or local sensors or devices providing data. It collects Data from any source and provides easy and intuitive user interaction. The simplest way is, to run RTOC with the user-frontend. But it can also run a HTML-Server providing plots and events. This is the best way to view the data, if RTOC is running on screen-less devices, like a Raspberry Pi. And in any other case, you can get full access and control of RTOC with a simple Telegram-Bot all over the world, without many configurations. This bot is also capable of sending messages or warnings, if events are triggered. Read more about Events later on.
2135

2236
There are different ways to access data on an RTOC-Server:
2337

38+
- **NEW**: With WebApp / [Android App](https://play.google.com/store/apps/details?id=io.RTOC.RTOCRemote&hl=en)
2439
- From GUI (PyQT5) (full access)
25-
- From another RTOC-Server with TCP (partial access)
40+
- From another RTOC-Server with Websockets (partial access)
2641
- From any device with a Telegram-Bot (full access)
27-
- From any device with an HTML-website (only viewable)
2842
- From any device with PostgreSQL-Database (only access to data, no controlling of RTOC)
2943

3044
### Possible applications
3145

46+
- Endlessly customizable home automation
3247
- General long time data recording and automation due to postgreSQL integration
3348
- Central measurement data recording of laboratory instruments with PC connection (e.g. power supply unit, multimeter, sensors, microcontroller)
3449
- Central recording of measurement data from Internet devices (e.g. mobile weather stations, drones, smartphones)
@@ -65,7 +80,7 @@ Description: # RealTime OpenControl (RTOC)
6580
- send data as stream(=append) or plot(=replace) to RTOC
6681
- send events
6782

68-
Plugins can **not** access all measurements. This can be done with a TCP connection to RTOC.
83+
Plugins can **not** access all measurements. This can be done with a websocket connection to RTOC.
6984

7085
[Example-Plugins here.](https://realtimeopencontrol.readthedocs.io/en/latest/PLUGINS.html)
7186

@@ -88,7 +103,7 @@ Description: # RealTime OpenControl (RTOC)
88103

89104
In some cases you don't want to run the GUI (e.g. raspberry). Then you can still configure RTOC in a terminal: `python3 -m RTOC.RTLogger -c`
90105

91-
If you just want to run the TCP-Server after configuration, you can do this with `python3 -m RTOC.RTLogger`. The best way, to run this code on embedded devices, is, to setup a systemd-service for automated startup. But you can also run/stop RTOC in background with 'python3 -m RTOC.RTLogger -s start/stop'.
106+
If you just want to run the Websocket-Server after configuration, you can do this with `python3 -m RTOC.RTLogger`. The best way, to run this code on embedded devices, is, to setup a systemd-service for automated startup. But you can also run/stop RTOC in background with 'python3 -m RTOC.RTLogger -s start/stop'.
92107

93108
If you want to start the HTML server on port 8050, you need to run it with 'python3 -m RTOC.RTLogger -w'.
94109

@@ -101,23 +116,27 @@ Description: # RealTime OpenControl (RTOC)
101116

102117

103118

104-
### Simple local TCP-Datastream
119+
### Simple local Websocket-Server
105120

106-
TCP clients can establish a connection to the RTOC server on the same computer or in the network (check firewall settings). With the necessary port shares on the router and dynamic DNS, the RTOC server can also be accessed from the Internet.
121+
Websocket clients can establish a connection to the RTOC server on the same computer or in the network (check firewall settings). With the necessary port shares on the router and dynamic DNS, the RTOC server can also be accessed from the Internet.
107122

108-
TCP communication takes place with JSONs, which allows communication in all programming languages and also, for example, with an ESP8266/ESP32 microcontroller. This connection can also be end-to-end-encrypted with AES.
123+
Websocket communication-protocoll is in JSON format, which allows communication in all programming languages and also, for example, with an ESP8266/ESP32 microcontroller. The communication can also be end-to-end-encrypted with AES. In this case, you need to implement the right encryption yourself.
109124

110-
The client can
125+
A client can
111126

112127
- send data as stream(=append) or plot(=replace) to RTOC
113128
- send events
114129
- access all measurement data and events of the RTOC-server
115130
- access all RTOC-server functions
116131
- access all RTOC-server plugin functions and parameters
132+
- subscribe to signals
133+
134+
The server will
117135

118-
The connection between RTOC server and client can be encrypted end-to-end (DES) with a password.
136+
- send events to the clients
137+
- send subscribed signals to clients
119138

120-
[Example for TCP here.](https://realtimeopencontrol.readthedocs.io/en/latest/TCP.html)
139+
[Example for Websockets here.](https://realtimeopencontrol.readthedocs.io/en/latest/Websocket.html)
121140

122141
### Include Telegram-messanger
123142

@@ -160,6 +179,5 @@ Classifier: Topic :: Software Development :: User Interfaces
160179
Requires-Python: >=3
161180
Description-Content-Type: text/markdown
162181
Provides-Extra: GUI
163-
Provides-Extra: Webserver
164182
Provides-Extra: Telegram
165183
Provides-Extra: ALL

RTOC.egg-info/SOURCES.txt

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,32 +7,36 @@ RTOC/RTOC.py
77
RTOC/Template.py
88
RTOC/__init__.py
99
RTOC/__main__.py
10-
RTOC/jsonsocket.py
10+
RTOC/index.html
1111
RTOC/requirenments.txt
1212
RTOC.egg-info/PKG-INFO
1313
RTOC.egg-info/SOURCES.txt
1414
RTOC.egg-info/dependency_links.txt
1515
RTOC.egg-info/entry_points.txt
1616
RTOC.egg-info/requires.txt
1717
RTOC.egg-info/top_level.txt
18+
RTOC/.vscode/settings.json
1819
RTOC/RTLogger/Console.py
1920
RTOC/RTLogger/Daemon.py
2021
RTOC/RTLogger/DeviceFunctions.py
2122
RTOC/RTLogger/EventActionFunctions.py
2223
RTOC/RTLogger/NetworkFunctions.py
2324
RTOC/RTLogger/RTLogger.py
24-
RTOC/RTLogger/RTOC_Web.py
25-
RTOC/RTLogger/RTOC_Web_standalone.py
2625
RTOC/RTLogger/RTRemote.py
26+
RTOC/RTLogger/RTWebsocket.py
27+
RTOC/RTLogger/RTWebsocketClient.py
28+
RTOC/RTLogger/RTWebsocketServer.py
2729
RTOC/RTLogger/RT_data.py
2830
RTOC/RTLogger/ScriptFunctions.py
2931
RTOC/RTLogger/__init__.py
3032
RTOC/RTLogger/__main__.py
3133
RTOC/RTLogger/importCode.py
34+
RTOC/RTLogger/jsonsocket.py
3235
RTOC/RTLogger/loggerlib.py
3336
RTOC/RTLogger/requirenments.txt
3437
RTOC/RTLogger/scriptLibrary.py
3538
RTOC/RTLogger/telegramBot.py
39+
RTOC/RTLogger/websocket_server.py
3640
RTOC/RTLogger/__pycache__/Console.cpython-36.pyc
3741
RTOC/RTLogger/__pycache__/Daemon.cpython-36.pyc
3842
RTOC/RTLogger/__pycache__/DeviceFunctions.cpython-36.pyc
@@ -43,6 +47,10 @@ RTOC/RTLogger/__pycache__/RTLogger.cpython-36.pyc
4347
RTOC/RTLogger/__pycache__/RTOC_Web.cpython-36.pyc
4448
RTOC/RTLogger/__pycache__/RTOC_Web_standalone.cpython-36.pyc
4549
RTOC/RTLogger/__pycache__/RTRemote.cpython-36.pyc
50+
RTOC/RTLogger/__pycache__/RTRemote_Websocket.cpython-36.pyc
51+
RTOC/RTLogger/__pycache__/RTWebsocket.cpython-36.pyc
52+
RTOC/RTLogger/__pycache__/RTWebsocketClient.cpython-36.pyc
53+
RTOC/RTLogger/__pycache__/RTWebsocketServer.cpython-36.pyc
4654
RTOC/RTLogger/__pycache__/RT_data.cpython-36.pyc
4755
RTOC/RTLogger/__pycache__/RT_database.cpython-36.pyc
4856
RTOC/RTLogger/__pycache__/RT_datalocal.cpython-36.pyc
@@ -54,6 +62,7 @@ RTOC/RTLogger/__pycache__/jsonsocket.cpython-36.pyc
5462
RTOC/RTLogger/__pycache__/loggerlib.cpython-36.pyc
5563
RTOC/RTLogger/__pycache__/scriptLibrary.cpython-36.pyc
5664
RTOC/RTLogger/__pycache__/telegramBot.cpython-36.pyc
65+
RTOC/RTLogger/__pycache__/websocket_server.cpython-36.pyc
5766
RTOC/RTLogger/plugins/Generator.py
5867
RTOC/RTLogger/plugins/test.py
5968
RTOC/RTLogger/plugins/Funktionsgenerator/gen_function.ui
@@ -221,6 +230,7 @@ RTOC/__pycache__/Template.cpython-36.pyc
221230
RTOC/__pycache__/__init__.cpython-36.pyc
222231
RTOC/__pycache__/__main__.cpython-36.pyc
223232
RTOC/__pycache__/jsonsocket.cpython-36.pyc
233+
RTOC/__pycache__/test.cpython-36.pyc
224234
RTOC/data/favicon.ico
225235
RTOC/data/icon.ico
226236
RTOC/data/icon.png

RTOC.egg-info/requires.txt

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ python-nmap
44
whaaaaat
55
prompt_toolkit
66
pycryptodomex
7+
websocket_client
78

89
[ALL]
910
pyqt5
@@ -14,11 +15,6 @@ pandas
1415
scipy
1516
ezodf
1617
xlsxwriter
17-
dash
18-
gevent
19-
dash_daq
20-
plotly
21-
flask
2218
matplotlib
2319
python-telegram-bot
2420
dash_table
@@ -41,12 +37,3 @@ xlsxwriter
4137
[Telegram]
4238
matplotlib
4339
python-telegram-bot
44-
45-
[Webserver]
46-
dash
47-
gevent
48-
dash_daq
49-
dash_table
50-
plotly
51-
flask
52-
psycopg2

RTOC/.vscode/settings.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"python.pythonPath": "python3"
3+
}

0 commit comments

Comments
 (0)