{"id":21744558,"url":"https://github.com/indeemasoftware/qsimplescada","last_synced_at":"2025-04-07T07:15:29.856Z","repository":{"id":39886350,"uuid":"133371806","full_name":"IndeemaSoftware/QSimpleScada","owner":"IndeemaSoftware","description":"Qt based simple SCADA framework, with dashboard, static and dynamic components","archived":false,"fork":false,"pushed_at":"2020-09-03T09:48:58.000Z","size":4154,"stargazers_count":314,"open_issues_count":1,"forks_count":106,"subscribers_count":32,"default_branch":"master","last_synced_at":"2025-03-31T06:04:41.282Z","etag":null,"topics":["configurator","cpp","dashboard","dashboard-application","dashboard-templates","dashboard-widget","dashboards","industrial","industry-4","iot","iot-framework","iot-platform","qpm","qt","qt-gui","qt5","scada","scada-framework"],"latest_commit_sha":null,"homepage":"https://indeema.com","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/IndeemaSoftware.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-05-14T14:16:09.000Z","updated_at":"2025-03-30T14:20:25.000Z","dependencies_parsed_at":"2022-07-25T01:47:56.841Z","dependency_job_id":null,"html_url":"https://github.com/IndeemaSoftware/QSimpleScada","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IndeemaSoftware%2FQSimpleScada","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IndeemaSoftware%2FQSimpleScada/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IndeemaSoftware%2FQSimpleScada/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IndeemaSoftware%2FQSimpleScada/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/IndeemaSoftware","download_url":"https://codeload.github.com/IndeemaSoftware/QSimpleScada/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247608153,"owners_count":20965952,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["configurator","cpp","dashboard","dashboard-application","dashboard-templates","dashboard-widget","dashboards","industrial","industry-4","iot","iot-framework","iot-platform","qpm","qt","qt-gui","qt5","scada","scada-framework"],"created_at":"2024-11-26T07:11:55.575Z","updated_at":"2025-04-07T07:15:29.825Z","avatar_url":"https://github.com/IndeemaSoftware.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"  \u003cimg src=\"https://i.imgur.com/VDz3b4Y.png\" /\u003e\n\n# QSimpleScada\nQt/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.\n\nLibrary 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. \n\n\u003cp\u003e\n    \u003ca href=\"https://github.com/IndeemaSoftware/QSimpleScada/blob/master/LICENSE.md\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/License-MIT-yellow.svg\" /\u003e \u003c/a\u003e\n   \u003cimg src=\"https://img.shields.io/badge/keywords-qpm%2C%20Qt%2C%20C%2B%2B%2C%20library%2C%20SCADA-green\" /\u003e\n   \u003cimg src=\"https://img.shields.io/badge/qt-%3E%3D5.8-blue\" /\u003e\n\u003c/p\u003e\n\n## Installing \n### Minimum requirements\nQt 5.8\n### Using qpm:\nTo install via qpm, run:\n```\nqpm install com.indeema.qsimplescada\n```\nAnd add:\n```\n include (../vendor/vendor.pri)\n ```\nTo *.pro file of your project. \n\nAs a bonus, try out our preset of widgets:\n```\nqpm install com.indeema.eeiot\n```\n### From GitHub:\nTo clone the repo, go to:\nhttps://github.com/IndeemaSoftware/QSimpleScada\nTo also add preconfigured widgets, clone:\nhttps://github.com/IndeemaSoftware/EEIoT\n\nAnd add:\n```include($$PWD/com/indeema/QSimpleScada/com_indeema_QSimpleScada.pri)\ninclude($$PWD/com/indeema/eeiot/com_indeema_eeiot.pri)\n```\nTo the* *.pro* file. You'll receive QSimpleScadaLib folder with compiled Windows or MacOS libs.\n\n### Using binary release:\nhttps://github.com/IndeemaSoftware/QSimpleScada/releases\n\n## Structure\n\nOne QScadaController can keep many devices with unique IP addresses. IP address is a unique id for each device.\nEach 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.\n\n## Sample of usage\n\nYou can check examples of QSimpleScada use at https://github.com/IndeemaSoftware/QSimpleScadaSample\n#### How the dynamic components look in the sample\n\u003cimg src=\"https://github.com/IndeemaSoftware/QSimpleScada/blob/Assets/qsimplescada.gif\" width=\"430\" /\u003e \u003cimg src=\"https://github.com/IndeemaSoftware/QSimpleScada/blob/Assets/QSimpleScada%20builder.gif\" width=\"400\" /\u003e\n\n\n# Using QSimpleScada\n\n1. Create your device:\n\n```cpp\n   QScadaDeviceInfo *lDeviceInfo = new QScadaDeviceInfo();\n   lDeviceInfo-\u003esetName(\"Test Device\");\n   lDeviceInfo-\u003esetIp(QHostAddress(\"127.0.0.1\"));\n```\n\n2.  Init your board controller. Your boardcontroller object is the main contact spot.\n```cpp\n   QScadaBoardController *mController = new QScadaBoardController();   \n   mController-\u003eappendDevice(lDeviceInfo);\n```\n3. Init your board. Board ids are iterators. So if you will create one more board for this device, its id will be 1.\n```cpp\n   mController-\u003einitBoardForDeviceIp(\"127.0.0.1\");\n```\n\n* To handle events, you can connect to signals:\n```cpp\nsignals:\n    void objectDoubleClicked(QScadaObject*);\n```\n* You can get pointers to specific board by calling methods:\n```cpp\n    QList\u003cQScadaBoard*\u003e getBoardList();\n    QList\u003cQScadaBoard*\u003e getBoardListForDeviceIp(QString);\n```\n\n* And you can create new object by calling method of QScadaBoard object:\n```cpp\n    QScadaObject *initNewObject(QScadaObjectInfo *);\n    void createNewObject(QScadaObjectInfo *);\n\n    void createQMLObject(int id, QString path);\n    void createQMLObject(QString path);\n```\n\n4. Define the editable or static type for your controller:\n```cpp\n    mController-\u003esetEditingMode(true);\n```\n\n5. Include your controller widget to you central widget:\n```cpp\n   QGridLayout *mainLayout = new QGridLayout(ui-\u003ecentralWidget);\n   mainLayout-\u003eaddWidget(mController);\n```\n\nNow your board controller is initialized. Next steps are setting up the widget resources.\nWe’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](https://github.com/IndeemaSoftware/QSimpleScada/wiki/How-to-create-QML-Widgets)\n\n**To use a widget collection**:\nCall the function with QML resources url to let the controller know the location of QML widgets:\n```cpp\n    QMLConfig::instance.appendQMLPath(:/com/indeema/eeiot/EEIoT/);\n```\nPath ```:/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.\n\nYou can use our simple editor to create your first dashboard https://github.com/IndeemaSoftware/QSimpleScadaSample \n\nThen set up QScadaBoardController in your app without any devices and boards and call:\n```cpp\n    mController-\u003eopenProject(QString \u003cfile\u003e)\n```\n\nwhere \u003cfile\u003e is a full path to your project file (*.irp)\n\nFor example:\n```cpp\n    mController-\u003eopenProject(QString \u003cfile\u003e)\n```\n\n## Set up flexible connection, streaming, and visualization of widget data\n\n```cpp\nmController-\u003eupdateValue(deviceIp, boardId, Id, value);\n```\nWhere:\n* __deviceIp__ - QString, the IP address of the monitored device (for example, \"192.168.1.1\");\n* __boardId__ - integer, unique ID of a dashboard (since 1 device may contain several dashboards);\n* __Id__ - integer, unique ID of a widget;\n* __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.\n\n\n## Support\n* If you have suggestions, feedback, or encounter any issues, write to [Stackoverflow](https://stackoverflow.com/), [Qt forum](https://forum.qt.io) with **QSimpleScada** tag, or contact us at support@indeema.com. \n* If you find a bug, create an [issue](https://github.com/IndeemaSoftware/QSimpleScada/issues). \n* To learn more about our [IoT expertise](https://indeema.com/services/iot), visit https://indeema.com, follow our news at [@IndeemaSoftware](https://twitter.com/IndeemaSoftware) or subscribe to our [blog](https://indeema.com/blog).\n\n## License\n[MIT license](https://github.com/IndeemaSoftware/QSimpleScada/blob/master/LICENSE)\nCopyright 2019 © [Indeema Software](https://indeema.com).\n#### Developed by Volodymyr Shevchyk\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Findeemasoftware%2Fqsimplescada","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Findeemasoftware%2Fqsimplescada","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Findeemasoftware%2Fqsimplescada/lists"}