All Projects → IndeemaSoftware → QSimpleScada

IndeemaSoftware / QSimpleScada

Licence: MIT License
Qt based simple SCADA framework, with dashboard, static and dynamic components

Programming Languages

C++
36643 projects - #6 most used programming language
QMake
1090 projects

Projects that are alternatives of or similar to QSimpleScada

QDashBoard
Sample dashboard developed with QML. Login, plots and several screens.
Stars: ✭ 34 (-77.63%)
Mutual labels:  qt5, dashboard-widget, dashboards, industrial, dashboard-templates
eva3
Industrial/Enterprise and home IoT automation platform
Stars: ✭ 27 (-82.24%)
Mutual labels:  iot-platform, industrial, iot-framework, industry-4
Smashing
The exceptionally handsome dashboard framework in Ruby and Coffeescript.
Stars: ✭ 2,765 (+1719.08%)
Mutual labels:  dashboard-widget, dashboards, dashboard-application
JKQtExtras
a collection of different Qt4 & Qt5 widgets, I developed over the years
Stars: ✭ 34 (-77.63%)
Mutual labels:  qt5, qt-gui
tailwind-dashboard-template
Mosaic Lite is a free admin dashboard template built on top of Tailwind CSS and fully coded in React. Made by
Stars: ✭ 1,662 (+993.42%)
Mutual labels:  dashboards, dashboard-templates
SilentServer
Silent is very lightweight, high quality - low latency voice chat for gaming. The server runs on Windows and Linux.
Stars: ✭ 52 (-65.79%)
Mutual labels:  qt5, qt-gui
MQTTnet
MQTTnet is a high performance .NET library for MQTT based communication. It provides a MQTT client and a MQTT server (broker). The implementation is based on the documentation from http://mqtt.org/.
Stars: ✭ 3,309 (+2076.97%)
Mutual labels:  iot-platform, iot-framework
PiHueEntertainment
An application that can handle the Hue Entertainment Areas on a Raspberry Pi
Stars: ✭ 28 (-81.58%)
Mutual labels:  qt5, qt-gui
headunit-gui
GUI developement repo for my Headunit App
Stars: ✭ 17 (-88.82%)
Mutual labels:  qt5, qt-gui
AeonNodeEditor
No description or website provided.
Stars: ✭ 22 (-85.53%)
Mutual labels:  iot-platform, iot-framework
AppImageUpdater
AppImage Updater for Humans built with QML/C++ with Qt5 ❤️.
Stars: ✭ 31 (-79.61%)
Mutual labels:  qt5, qt-gui
vscp
VSCP (Very Simple Control Protocol) IoT/m2m framework
Stars: ✭ 47 (-69.08%)
Mutual labels:  iot-platform, iot-framework
nymea
The nymea IoT server repository.
Stars: ✭ 89 (-41.45%)
Mutual labels:  qt5, iot-platform
Neon.HomeControl
Home Automation System, similar to HomeAssistant but made with .net core and ❤️
Stars: ✭ 46 (-69.74%)
Mutual labels:  iot-platform, iot-framework
Mqttnet
MQTTnet is a high performance .NET library for MQTT based communication. It provides a MQTT client and a MQTT server (broker). The implementation is based on the documentation from http://mqtt.org/.
Stars: ✭ 2,486 (+1535.53%)
Mutual labels:  iot-platform, iot-framework
laravel-startkit
Laravel Admin Dashboard, Admin Template with Frontend Template, for scalable Laravel projects. It is to save your time when You start with new scalable Laravel projects with many features Bootstrap, cooreui, infyom admin Generator, roles and permissions, translatable models, spatie media and much more
Stars: ✭ 55 (-63.82%)
Mutual labels:  dashboard-templates, dashboard-application
Neon
Similar to 🏡 HomeAssistant and OpenHAB, but made with .net core and ❤️ in Florence, Italy
Stars: ✭ 32 (-78.95%)
Mutual labels:  iot-platform, iot-framework
kotori
A flexible data historian based on InfluxDB, Grafana, MQTT and more. Free, open, simple.
Stars: ✭ 73 (-51.97%)
Mutual labels:  iot-platform, scada
StressThing
a software testing platform to perform stress test on web of things
Stars: ✭ 12 (-92.11%)
Mutual labels:  iot-platform, iot-framework
Industrial-Security-Auditing-Framework
ISAF aims to be a framework that provides the necessary tools for the correct security audit of industrial environments. This repo is a mirror of https://gitlab.com/d0ubl3g/industrial-security-auditing-framework.
Stars: ✭ 43 (-71.71%)
Mutual labels:  industrial, scada

QSimpleScada

Qt/C++ based simple SCADA library for your IoT projects. We created QSimpleScada to speed up and simplify visualising any data, so we (and you) can concentrate on developing automation algorithms that rock. It completely handles connection to and editing of widgets. Using QSimpleScada, you can easily create a visualization of IoT data with static and dynamic components. After you are satisfied with the layout, save the generated .xml file and use it in your project.

Library is created with Qt/C++ and basic widget is based on C++. There is interface for QML, so you can independently create individual widgets on QML (as when creating classic QML UIs) and upload them to your app on a go.

Installing

Minimum requirements

Qt 5.8

Using qpm:

To install via qpm, run:

qpm install com.indeema.qsimplescada

And add:

 include (../vendor/vendor.pri)

To *.pro file of your project.

As a bonus, try out our preset of widgets:

qpm install com.indeema.eeiot

From GitHub:

To clone the repo, go to: https://github.com/IndeemaSoftware/QSimpleScada To also add preconfigured widgets, clone: https://github.com/IndeemaSoftware/EEIoT

And add:

include($$PWD/com/indeema/eeiot/com_indeema_eeiot.pri)

To the* .pro file. You'll receive QSimpleScadaLib folder with compiled Windows or MacOS libs.

Using binary release:

https://github.com/IndeemaSoftware/QSimpleScada/releases

Structure

One QScadaController can keep many devices with unique IP addresses. IP address is a unique id for each device. Each device can have several dashboards with unique ids. On each board, you can set up many widgets. You can save the architecture to a* .irp file.

Sample of usage

You can check examples of QSimpleScada use at https://github.com/IndeemaSoftware/QSimpleScadaSample

How the dynamic components look in the sample

Using QSimpleScada

  1. Create your device:
   QScadaDeviceInfo *lDeviceInfo = new QScadaDeviceInfo();
   lDeviceInfo->setName("Test Device");
   lDeviceInfo->setIp(QHostAddress("127.0.0.1"));
  1. Init your board controller. Your boardcontroller object is the main contact spot.
   QScadaBoardController *mController = new QScadaBoardController();   
   mController->appendDevice(lDeviceInfo);
  1. Init your board. Board ids are iterators. So if you will create one more board for this device, its id will be 1.
   mController->initBoardForDeviceIp("127.0.0.1");
  • To handle events, you can connect to signals:
signals:
    void objectDoubleClicked(QScadaObject*);
  • You can get pointers to specific board by calling methods:
    QList<QScadaBoard*> getBoardList();
    QList<QScadaBoard*> getBoardListForDeviceIp(QString);
  • And you can create new object by calling method of QScadaBoard object:
    QScadaObject *initNewObject(QScadaObjectInfo *);
    void createNewObject(QScadaObjectInfo *);

    void createQMLObject(int id, QString path);
    void createQMLObject(QString path);
  1. Define the editable or static type for your controller:
    mController->setEditingMode(true);
  1. Include your controller widget to you central widget:
   QGridLayout *mainLayout = new QGridLayout(ui->centralWidget);
   mainLayout->addWidget(mController);

Now your board controller is initialized. Next steps are setting up the widget resources. We’ve also developed a EEIoT library with a set of preconfigured widgets. You can download it at https://github.com/IndeemaSoftware/EEIoT and try it out as a start. Read wiki page to know the rules on how to create qml widgets that can be used by QSimpleScada

To use a widget collection: Call the function with QML resources url to let the controller know the location of QML widgets:

    QMLConfig::instance.appendQMLPath(:/com/indeema/eeiot/EEIoT/);

Path :/com/indeema/eeiot/EEIoT/ is added by default, so you don't need to add it manually. If you call appendQMLPath with different path to EEIoT, it will replace the default path. Also you can add your own custom widgets.

You can use our simple editor to create your first dashboard https://github.com/IndeemaSoftware/QSimpleScadaSample

Then set up QScadaBoardController in your app without any devices and boards and call:

    mController->openProject(QString <file>)

where is a full path to your project file (*.irp)

For example:

    mController->openProject(QString <file>)

Set up flexible connection, streaming, and visualization of widget data

mController->updateValue(deviceIp, boardId, Id, value);

Where:

  • deviceIp - QString, the IP address of the monitored device (for example, "192.168.1.1");
  • boardId - integer, unique ID of a dashboard (since 1 device may contain several dashboards);
  • Id - integer, unique ID of a widget;
  • value - QVariant, the value you're monitoring on a widget. Its type is undefined (QVariant), so that you can flexibly stream any data when builing different widgets on a board.

Support

License

MIT license Copyright 2019 © Indeema Software.

Developed by Volodymyr Shevchyk

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].