This README is available in ENGLISH here.
RealTime OpenControl ermöglicht die einfache Echtzeit-Datenaufzeichnung, -darstellung und Bearbeitung. Die Aufzeichnung kann mit lokale Python-Skripten oder über TCP lokal oder aus dem Netzwerk erfolgen. Darstellung und Bearbeitung ist lokal, im Netzwerk (TCP und HTML) und über Telegram am Smartphone verfügbar.
Neben Datenaufzeichnung können auch Events/Ergeignisse aufgezeichnet werden. Diese können z.B. eine Telegram-Mitteilung auslösen.
Mögliche Einsatzbereiche:
- Zentrale Messdatenaufzeichnung von Laborgeräten mit PC-Anbindung (z.B. Netzteil, Multimeter, Sensoren, Microcontroller)
- Zentrale Messdatenaufzeichnung von Internetgeräten (z.B. mobilen Wetterstationen, Drohnen, Smartphones)
- Remote-Überwachung und Steuerung von Prozessen und Geräten mit PC und Smartphone (Telegram) (z.B. 3D-Druck, Heizung, Custom-SmartHome)
- Steuerung und Regelung zwischen mehreren Geräten (z.B.: Leistungsregelung eines Netzteils auf Temperatursensor eines Multimeters)
- Dezentrale Datenaufzeichnung (z.B auf Raspberry) und Zugriff über Netzwerkverbindung (Smarte Projekte)
RTOC ist geschrieben in Python 3. Getestet unter Windows und Linux.
Python 3 (und pip3) muss dazu auf dem Rechner installiert sein.
RTOC ist verfügbar im Python-Paketmanager PIP:
pip3 install RTOC
Jetzt kann RTOC gestartet werden
// Für lokale RTOC-Instanz mit GUI
python3 -m RTOC
// Für lokale RTOC-Instanz ohne GUI (nur TCP-Server, [HTTP-Server, Telegram-Bot])
python3 -m RTOC -s
// Für remote RTOC-Instanz mit GUI
python3 -m RTOC -r <ADRESSE>
Nach dem ersten Start erzeugt RTOC ein Verzeichnis für Benutzerplugins, temporäre Nutzerdaten und Einstellungen.
user@rtoc-server:~$ ls Documents/RTOC
config.json // Einstellungsdatei für RTOC
devices/ // Verzeichnis für Nutzerplugins
plotStyles.json // Angepasste Plotstile werden gespeichert
Lade die aktuellen Release-Builds für Windows (bald auch Linux) hier herunter.
Entpacke die .zip-Datei in ein Verzeichnis. RTOC wird mit Doppelklick auf "RTOC.exe" gestartet. Alternativ über die Kommandozeile
// Für lokale RTOC-Instanz mit GUI
./RTOC
// Für lokale RTOC-Instanz ohne GUI (nur TCP-Server, [HTTP-Server, Telegram-Bot])
./RTOC -s
// Für remote RTOC-Instanz mit GUI
./RTOC -r <ADRESSE>
Nach dem ersten Start erzeugt RTOC ein Verzeichnis für Benutzerplugins, temporäre Nutzerdaten und Einstellungen.
user@rtoc-server:~$ ls Documents/RTOC
config.json // Einstellungsdatei für RTOC
devices/ // Verzeichnis für Nutzerplugins
plotStyles.json // Angepasste Plotstile werden gespeichert
Um RTOC zu benutzen müssen folgende Abhängigkeiten vorhanden sein
pip3 install numpy pyqt5 pyqtgraph markdown2 xslxwriter scipy
Folgende Pakete sollten ebenfalls installiert werden
pip3 install python-telegram-bot matplotlib requests python-nmap bokeh pycryptdomex
You can use different stylesheets if you want. Just install one of these with pip: 'QDarkStyle', 'qtmodern', 'qdarkgraystyle'.
Dann kann die RTOC-Repository geklont werden mit
git clone git@git.kellerbase.de:haschtl/kellerlogger
Nun kann RTOC gestartet werden:
cd kellerlogger
// Für lokale RTOC-Instanz mit GUI
python3 RTOC
// Für lokale RTOC-Instanz ohne GUI (nur TCP-Server, [HTTP-Server, Telegram-Bot])
python3 RTOC -s
// Für remote RTOC-Instanz mit GUI
python3 RTOC -r <ADRESSE>
Nach dem ersten Start erzeugt RTOC ein Verzeichnis für Benutzerplugins, temporäre Nutzerdaten und Einstellungen.
user@rtoc-server:~$ ls Documents/RTOC
config.json // Einstellungsdatei für RTOC
devices/ // Verzeichnis für Nutzerplugins
plotStyles.json // Angepasste Plotstile werden gespeichert
- Funktionsgenerator: Erzeugt Sinus, Square, Sawtooth, Random, AC, DC
- NetWoRTOC: Steuerung und Datenaustausch zwischen mehreren RTOC's im Netzwerk
Weitere Plugins gibt es in der RTOC-Plugin-Repository:
- System: Zur Aufzeichnung vieler Systemvariablen (CPU, Memory, Network,...)
- Octoprint: Aufzeichnung für 3D-Drucker
- DPS5020: Netzgerät-Aufzeichnung und Steuerung (evtl. auch DPS5005, ...)
- HoldPeak VC820: Multimeter Messaufzeichnung (wahrsch. auch andere VC820)
- ...
Die graphische Oberfläche von RTOC bietet eine Fülle an Funktionen zur Datendarstellung und Bearbeitung.
- Messwerkzeuge
- Plotstile anpassen und speichern
- Session speichern und laden
- Mehrere Plots erzeugen
- Im Hintergrund laufen
- Daten importieren und exportieren
- Skripte:
- Multi-Tab Skript-Editor
- Der Nutzer kann während der Laufzeit mit den Signalen und Plugins interagieren:
- Pluginfunktionen ausführen oder Pluginparameter setzen
- Signale bearbeiten, neue Signale erzeugen, zuschneiden, überlagern, ...
- Skalieren, verschieben von Signalen
- Mehrere Skripte parallel laufen lassen
Vollständige Anleitung zur GUI hier.
Python-Plugins werden in RTOC integriert und können
- Daten als Stream(=append) oder Plot(=replace) an RTOC senden
- Events senden
Aber nicht auf Messdaten zugreifen. Hierzu muss das Plugin per TCP auf RTOC zugreifen.
TCP-Clients können am selben Rechner oder im Netzwerk (Firewall-Einstellungen prüfen) eine Verbindung zum RTOC-Server herstellen. Mit den nötigen Port-Freigaben am Router und dynamischer DNS kann auf den RTOC-Server auch aus dem Internet zugegriffen werden.
Die TCP-Kommunikation findet mit JSONs statt. Dadurch lässt sich die Kommunikation in allen Programmiersprachen und auch z.B. mit einem ESP8266/ESP32-Microcontroller realisieren. Der Client kann
- Daten als Stream(=append) oder Plot(=replace) an RTOC senden
- Events senden
- Auf alle Messdaten und Events des RTOC-Servers zugreifen
- Auf RTOC-Server-Funktionen zugreifen
- Auf RTOC-Server-Pluginfunktionen und -parameter zugreifen
Die Verbindung zwischen RTOC-Server und Client kann mit einem Passwort Ende-zu-Ende verschlüsstelt werden (AES).
- Jsonsocket von mdebbar
- Taurus PyQtGraph
- ImportCode Script von avtivestate.com
- VC820Py von adnidor (für das HoldPeak_VC820 Plugin)
Alle Icons, die in dieser Software (inklusive Plugins) benutzt werden, werden freundlicherweise zur Verfügung gestellt von [Icons8](
Please read CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests to us.
This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details