Skip to content

Commit 1714232

Browse files
author
Sebastian
committed
release 2.0
1 parent bae552d commit 1714232

Some content is hidden

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

59 files changed

+8146
-43761
lines changed

README.md

Lines changed: 20 additions & 98 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# RealTime OpenControl (RTOC)
22

3-
| [![Documentation Status](https://readthedocs.org/projects/realtimeopencontrol/badge/?version=latest)](https://realtimeopencontrol.readthedocs.io/en/latest/) | [![Builds v1.6](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 v2.0](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

66
### Version 2.0
@@ -37,35 +37,6 @@ Every plugin can send measurements and events to the RTOC-Server.
3737

3838
A measurement represents the collected data. Events occur in certain conditions (for example if a measured value is higher than a limit value) and can trigger actions, which will be performed after the event. Also these events can be used to trigger PushNotifications in Telegram.
3939

40-
41-
42-
### GUI
43-
44-
![Übersicht](screenshots/overview.png)
45-
46-
You can run the GUI with "python3 -m RTOC"
47-
48-
The GUI offers a lot of tools:
49-
50-
- Enable/disable devices
51-
- Access to optional device-GUIs
52-
- View and edit measurements in a lot of different ways
53-
- View, filter and delete events
54-
- Edit global events and actions
55-
- Download devices from RTOC-repository
56-
- Write and execute python-scripts, which can interact with the devices.
57-
- Connect to a remote RTOC-Server and view/delete measurements and events and access devices of remote RTOC-Server
58-
59-
60-
61-
### No GUI
62-
63-
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`
64-
65-
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'.
66-
67-
If you want to start the HTML server on port 8050, you need to run it with 'python3 -m RTOC.RTLogger -w'.
68-
6940
## Getting Started
7041

7142
RTOC is written in Python 3. Tested on Windows and Linux.
@@ -79,6 +50,16 @@ RTOC can be installed and used in different ways:
7950

8051
[Click here for a complete setup-tutorial](https://realtimeopencontrol.readthedocs.io/en/latest/)
8152

53+
### Write simple Python-Plugin
54+
55+
Python plugins are integrated into RTOC and can be used to
56+
57+
- send data as stream(=append) or plot(=replace) to RTOC
58+
- send events
59+
60+
Plugins can **not** access all measurements. This can be done with a TCP connection to RTOC.
61+
62+
[Example-Plugins here.](https://realtimeopencontrol.readthedocs.io/en/latest/PLUGINS.html)
8263

8364
### Documentation
8465
[Read the Wiki for full documentation](https://realtimeopencontrol.readthedocs.io/en/latest/)
@@ -95,36 +76,22 @@ You can get more plugins from the [RTOC-plugin-repository](https://github.com/Ha
9576
- ...
9677

9778

98-
### First GUI-Run
79+
### No GUI
9980

100-
The graphical user interface of RTOC offers a wealth of functions for data display and processing.
81+
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`
10182

102-
- measuring tools
103-
- Customize and save plot styles
104-
- Save and load session
105-
- Create multiple plots
106-
- Run in the background
107-
- Import and export data
108-
- Scripts:
109-
- Multi-Tab Script Editor
110-
- The user can interact with the signals and plugins during runtime:
111-
- Execute plugin functions or set plugin parameters
112-
- Edit signals, create new signals, crop, overlay, ...
113-
- Scaling, shifting of signals
114-
- Run multiple scripts in parallel
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'.
11584

116-
[Complete GUI-tutorial here.](https://realtimeopencontrol.readthedocs.io/en/latest/GUI.html)
85+
If you want to start the HTML server on port 8050, you need to run it with 'python3 -m RTOC.RTLogger -w'.
11786

118-
### Write simple Python-Plugin
11987

120-
Python plugins are integrated into RTOC and can be used to
88+
### GUI
12189

122-
- send data as stream(=append) or plot(=replace) to RTOC
123-
- send events
90+
![Übersicht](screenshots/overview.png)
91+
92+
[Complete GUI-tutorial here.](https://realtimeopencontrol.readthedocs.io/en/latest/GUI.html)
12493

125-
Plugins can **not** access all measurements. This can be done with a TCP connection to RTOC.
12694

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

12996
### Simple local TCP-Datastream
13097

@@ -148,44 +115,6 @@ The connection between RTOC server and client can be encrypted end-to-end (DES)
148115

149116
[Tutorial for Telegram here.](https://realtimeopencontrol.readthedocs.io/en/latest/TELEGRAM.html)
150117

151-
## Screenshots
152-
153-
#### MultiWindow
154-
155-
![multiWindow](screenshots/multiWindow.png)
156-
157-
#### Crosshair-tool
158-
159-
![multiWindow](screenshots/crosshair.png)
160-
161-
#### Cutting-tool
162-
163-
![multiWindow](screenshots/cut.png)
164-
165-
#### Rectangle-measure-tool
166-
167-
![multiWindow](screenshots/rect.png)
168-
169-
#### Plotstyle-window
170-
171-
![multiWindow](screenshots/plotStyleEdit.png)
172-
173-
#### Plot-View-Dropdown
174-
175-
![multiWindow](screenshots/plotView.png)
176-
177-
#### Signal
178-
179-
![multiWindow](screenshots/signalWidget.png)
180-
181-
#### Plot
182-
183-
![multiWindow](screenshots/plotWidget.png)
184-
185-
#### Scripts
186-
187-
![multiWindow](screenshots/scriptWidget.png)
188-
189118
## Built With
190119

191120
* [cx_freeze](https://anthony-tuininga.github.io/cx_Freeze/)
@@ -210,11 +139,4 @@ This project is licensed under the **GNU General Public License v3.0** - see th
210139

211140

212141
# Coffee
213-
Feel free to buy me some coffee with milk
214-
215-
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">
216-
<input type="hidden" name="cmd" value="_s-xclick" />
217-
<input type="hidden" name="hosted_button_id" value="Y5894CRYB4L36" />
218-
<input type="image" src="https://www.paypalobjects.com/en_US/DK/i/btn/btn_donateCC_LG.gif" border="0" name="submit" title="PayPal - The safer, easier way to pay online!" alt="Donate with PayPal button" />
219-
<img alt="" border="0" src="https://www.paypal.com/en_DE/i/scr/pixel.gif" width="1" height="1" />
220-
</form>
142+
[Feel free to buy me some coffee with milk](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=V3JGL7BM8WGQY&source=url)

RTOC.egg-info/PKG-INFO

Lines changed: 137 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,153 @@
11
Metadata-Version: 2.1
22
Name: RTOC
3-
Version: 2.0b0
3+
Version: 2.0.1
44
Summary: RealTime OpenControl
55
Home-page: https://github.com/Haschtl/RealTimeOpenControl
66
Author: Sebastian Keller
77
Author-email: [email protected]
88
License: GNU
9-
Description: RealTime OpenControl enables simple real-time data recording, visualization and editing. The recording can be done with a local Python scripts or via TCP locally/from the network. Visualization and editing is available locally, in the network (TCP and HTML) and via Telegram on the smartphone.
9+
Description: # RealTime OpenControl (RTOC)
1010

11-
In addition to data recording, events can also be recorded. These can, for example, trigger a telegram message.
11+
| [![Documentation Status](https://readthedocs.org/projects/realtimeopencontrol/badge/?version=latest)](https://realtimeopencontrol.readthedocs.io/en/latest/) | [![Builds v2.0](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

13-
Possible applications:
1413

14+
### Version 2.0
15+
![Usecase](screenshots/RTOC-schematik.png)
16+
[Documentation](https://realtimeopencontrol.readthedocs.io/en/latest/)
17+
18+
RealTime OpenControl is a simple way for real-time data recording, visualization and editing.
19+
20+
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.
21+
22+
There are different ways to access data on an RTOC-Server:
23+
24+
- From GUI (PyQT5) (full access)
25+
- From another RTOC-Server with TCP (partial access)
26+
- From any device with a Telegram-Bot (full access)
27+
- From any device with an HTML-website (only viewable)
28+
- From any device with PostgreSQL-Database (only access to data, no controlling of RTOC)
29+
30+
### Possible applications
31+
32+
- General long time data recording and automation due to postgreSQL integration
1533
- Central measurement data recording of laboratory instruments with PC connection (e.g. power supply unit, multimeter, sensors, microcontroller)
1634
- Central recording of measurement data from Internet devices (e.g. mobile weather stations, drones, smartphones)
1735
- Remote monitoring and control of processes and devices with PC and Smartphone (Telegram) (e.g. 3D printing, heating, Custom-SmartHome)
1836
- Controlling between several devices (e.g.: power regulation of a power supply unit on the temperature sensor of a multimeter)
1937
- Decentralized data recording (e.g. on Raspberry) and access via network connection (smart projects)
38+
- Fun projects like controlling a LED with Telegram
39+
40+
### Recording data and events
41+
42+
Basis for a RTOC-Server are plugins, which collect data in any way and provide their functions and parameters. These plugins are represented by simple python-plugins, which can be downloaded from the [RTOC-plugin-repository](https://github.com/Haschtl/rtoc-plugins) for specific devices. You can also write your own plugins for it. If you want to publish your plugin in my repository, just send me a message.
43+
44+
Every plugin can send measurements and events to the RTOC-Server.
45+
46+
A measurement represents the collected data. Events occur in certain conditions (for example if a measured value is higher than a limit value) and can trigger actions, which will be performed after the event. Also these events can be used to trigger PushNotifications in Telegram.
47+
48+
## Getting Started
49+
50+
RTOC is written in Python 3. Tested on Windows and Linux.
51+
52+
Python3 (and pip3) need to be installed on the System. But you can also download the Stand-Alone-Builts for Windows and Linux below.
53+
RTOC can be installed and used in different ways:
54+
- Installation and use with PostgreSQL-Server (recommended for embedded)
55+
- Installation without PostgreSQL-Database (recommended for simple-usage)
56+
- Installation with builds (Linux/Windows)
57+
- Installation from source
58+
59+
[Click here for a complete setup-tutorial](https://realtimeopencontrol.readthedocs.io/en/latest/)
60+
61+
### Write simple Python-Plugin
62+
63+
Python plugins are integrated into RTOC and can be used to
64+
65+
- send data as stream(=append) or plot(=replace) to RTOC
66+
- send events
67+
68+
Plugins can **not** access all measurements. This can be done with a TCP connection to RTOC.
69+
70+
[Example-Plugins here.](https://realtimeopencontrol.readthedocs.io/en/latest/PLUGINS.html)
71+
72+
### Documentation
73+
[Read the Wiki for full documentation](https://realtimeopencontrol.readthedocs.io/en/latest/)
74+
75+
### Default/Example Plugins:
76+
77+
- function generator: generates sine, square, sawtooth, random, AC, DC
78+
79+
You can get more plugins from the [RTOC-plugin-repository](https://github.com/Haschtl/rtoc-plugins). Simply follow the steps described in the [documentation](https://realtimeopencontrol.readthedocs.io/en/latest/PLUGINS.html#plugin-repository):
80+
- System: For recording many system variables (CPU, Memory, Network,...)
81+
- Octoprint: Recording of 3D printers
82+
- DPS5020: power supply unit recording and control (possibly also DPS5005, ...)
83+
- HoldPeak VC820: Multimeter Measurement Recording (also other VC820)
84+
- ...
85+
86+
87+
### No GUI
88+
89+
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`
90+
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'.
92+
93+
If you want to start the HTML server on port 8050, you need to run it with 'python3 -m RTOC.RTLogger -w'.
94+
95+
96+
### GUI
97+
98+
![Übersicht](screenshots/overview.png)
99+
100+
[Complete GUI-tutorial here.](https://realtimeopencontrol.readthedocs.io/en/latest/GUI.html)
101+
102+
103+
104+
### Simple local TCP-Datastream
105+
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.
107+
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.
109+
110+
The client can
111+
112+
- send data as stream(=append) or plot(=replace) to RTOC
113+
- send events
114+
- access all measurement data and events of the RTOC-server
115+
- access all RTOC-server functions
116+
- access all RTOC-server plugin functions and parameters
117+
118+
The connection between RTOC server and client can be encrypted end-to-end (DES) with a password.
119+
120+
[Example for TCP here.](https://realtimeopencontrol.readthedocs.io/en/latest/TCP.html)
121+
122+
### Include Telegram-messanger
123+
124+
[Tutorial for Telegram here.](https://realtimeopencontrol.readthedocs.io/en/latest/TELEGRAM.html)
125+
126+
## Built With
127+
128+
* [cx_freeze](https://anthony-tuininga.github.io/cx_Freeze/)
129+
130+
## External libraries and scripts
131+
132+
- [Jsonsocket from mdebbar](https://github.com/mdebbar/jsonsocket)
133+
- [Taurus PyQtGraph](https://github.com/taurus-org/taurus_pyqtgraph.git)
134+
- [ImportCode script from avtivestate.com](http://code.activestate.com/recipes/82234-importing-a-dynamically-generated-module/)
135+
- [VC820Py from adnidor (for HoldPeak_VC820 plugin)](https://github.com/adnidor/vc820py)
136+
- [PyQt5 CSV-Editor](https://python-forum.io/Thread-Read-Write-CSV-Qt5)
137+
138+
All icons used in this software (including plugins) are kindly provided by [Icons8](www.icons8.com)
139+
140+
## Contributing
141+
142+
Please read [CONTRIBUTING.md](https://gist.github.com/PurpleBooth/b24679402957c63ec426) for details on my code of conduct, and the process for submitting pull requests to me.
143+
144+
## License
145+
146+
This project is licensed under the **GNU General Public License v3.0** - see the [LICENSE](LICENSE) file for details
147+
148+
149+
# Coffee
150+
[Feel free to buy me some coffee with milk](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=V3JGL7BM8WGQY&source=url)
20151

21152
Platform: UNKNOWN
22153
Classifier: Programming Language :: Python :: 3
@@ -27,7 +158,8 @@ Classifier: Operating System :: OS Independent
27158
Classifier: Topic :: Scientific/Engineering :: Visualization
28159
Classifier: Topic :: Software Development :: User Interfaces
29160
Requires-Python: >=3
161+
Description-Content-Type: text/markdown
30162
Provides-Extra: ALL
31-
Provides-Extra: GUI
32163
Provides-Extra: Telegram
33164
Provides-Extra: Webserver
165+
Provides-Extra: GUI

0 commit comments

Comments
 (0)