// SPDX-License-Identifier: LGPL-3.0-or-later /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Copyright (C) 2013 - 2024, nymea GmbH * Copyright (C) 2024 - 2025, chargebyte austria GmbH * * This file is part of libnymea-app. * * libnymea-app is free software: you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public License * as published by the Free Software Foundation, either version 3 * of the License, or (at your option) any later version. * * libnymea-app is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with libnymea-app. If not, see . * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ #ifndef LIBNYMEAAPPCORE_H #define LIBNYMEAAPPCORE_H #include "engine.h" #include "connection/nymeahosts.h" #include "connection/nymeahost.h" #include "models/nymeahostsfiltermodel.h" #include "connection/discovery/nymeadiscovery.h" #include "vendorsproxy.h" #include "thingclassesproxy.h" #include "thingsproxy.h" #include "pluginsproxy.h" #include "thingdiscovery.h" #include "interfacesmodel.h" #include "rulemanager.h" #include "models/rulesfiltermodel.h" #include "types/ruleactions.h" #include "types/ruleaction.h" #include "types/ruleactionparams.h" #include "types/ruleactionparam.h" #include "types/eventdescriptors.h" #include "types/eventdescriptor.h" #include "types/timedescriptor.h" #include "types/timeeventitems.h" #include "types/timeeventitem.h" #include "types/repeatingoption.h" #include "types/calendaritems.h" #include "types/calendaritem.h" #include "types/rule.h" #include "types/interfaces.h" #include "types/interface.h" #include "types/statedescriptor.h" #include "types/stateevaluator.h" #include "types/stateevaluators.h" #include "types/browseritems.h" #include "types/browseritem.h" #include "models/logsmodel.h" #include "models/logsmodelng.h" #include "models/barseriesadapter.h" #include "models/xyseriesadapter.h" #include "models/boolseriesadapter.h" #include "models/newlogsmodel.h" #include "models/interfacesproxy.h" #include "configuration/nymeaconfiguration.h" #include "configuration/serverconfiguration.h" #include "configuration/serverconfigurations.h" #include "configuration/mqttpolicy.h" #include "configuration/mqttpolicies.h" #include "wifisetup/bluetoothdeviceinfos.h" #include "wifisetup/bluetoothdiscovery.h" #include "wifisetup/btwifisetup.h" #include "types/wirelessaccesspoint.h" #include "types/wirelessaccesspoints.h" #include "models/wirelessaccesspointsproxy.h" #include "tagsmanager.h" #include "models/tagsproxymodel.h" #include "models/taglistmodel.h" #include "types/tag.h" #include "ruletemplates/ruletemplates.h" #include "ruletemplates/ruletemplate.h" #include "ruletemplates/eventdescriptortemplate.h" #include "ruletemplates/timedescriptortemplate.h" #include "ruletemplates/calendaritemtemplate.h" #include "ruletemplates/timeeventitemtemplate.h" #include "ruletemplates/stateevaluatortemplate.h" #include "ruletemplates/statedescriptortemplate.h" #include "ruletemplates/ruleactiontemplate.h" #include "ruletemplates/ruleactionparamtemplate.h" #include "models/thingmodel.h" #include "models/sortfilterproxymodel.h" #include "system/systemcontroller.h" #include "types/package.h" #include "types/packages.h" #include "types/repository.h" #include "types/repositories.h" #include "models/packagesfiltermodel.h" #include "configuration/networkmanager.h" #include "types/networkdevices.h" #include "types/networkdevice.h" #include "scriptsyntaxhighlighter.h" #include "scriptmanager.h" #include "scripting/codecompletion.h" #include "scripting/completionmodel.h" #include "scripting/scriptautosaver.h" #include "types/script.h" #include "types/scripts.h" #include "types/types.h" #include "models/scriptsproxymodel.h" #include "usermanager.h" #include "types/tokeninfos.h" #include "types/tokeninfo.h" #include "types/userinfo.h" #include "thinggroup.h" #include "types/statetypesproxy.h" #include "types/ioconnection.h" #include "types/ioconnections.h" #include "types/ioconnectionwatcher.h" #include "zigbee/zigbeemanager.h" #include "zigbee/zigbeeadapter.h" #include "zigbee/zigbeeadapters.h" #include "zigbee/zigbeeadaptersproxy.h" #include "zigbee/zigbeenetwork.h" #include "zigbee/zigbeenetworks.h" #include "zigbee/zigbeenodes.h" #include "zigbee/zigbeenodesproxy.h" #include "applogcontroller.h" #include "tagwatcher.h" #include "appdata.h" #include "modbus/modbusrtumanager.h" #include "modbus/modbusrtumasters.h" #include "types/serialportsproxy.h" #include "energy/energymanager.h" #include "energy/energylogs.h" #include "energy/powerbalancelogs.h" #include "energy/thingpowerlogs.h" #include "pluginconfigmanager.h" #include "zwave/zwavemanager.h" #include "zwave/zwavenetwork.h" #include "zwave/zwavenode.h" #include "serverdebug/serverdebugmanager.h" #include "serverdebug/serverloggingcategory.h" #include "serverdebug/serverloggingcategories.h" #include namespace Nymea { namespace Core { static QObject* interfacesModel_provider(QQmlEngine *engine, QJSEngine *scriptEngine) { Q_UNUSED(engine) Q_UNUSED(scriptEngine) return new Interfaces(); } static QObject* typesProvider(QQmlEngine *engine, QJSEngine *scriptEngine) { Q_UNUSED(engine) Q_UNUSED(scriptEngine) return Types::instance(); } void registerQmlTypes() { const char uri[] = "Nymea"; qmlRegisterType(uri, 1, 0, "Engine"); qmlRegisterSingletonType("Nymea", 1, 0, "AppLogController", AppLogController::appLogControllerProvider); qmlRegisterType("Nymea", 1, 0, "LogMessages"); qmlRegisterUncreatableType(uri, 1, 0, "ThingManager", "Can't create this in QML. Get it from the Engine."); qmlRegisterUncreatableType(uri, 1, 0, "JsonRpcClient", "Can't create this in QML. Get it from the Engine."); qmlRegisterUncreatableType(uri, 1, 0, "NymeaConnection", "Can't create this in QML. Get it from the Engine."); // libnymea-common qmlRegisterSingletonType(uri, 1, 0, "Types", typesProvider); qmlRegisterUncreatableType(uri, 1, 0, "ParamType", "Can't create this in QML. Get it from the ParamTypes."); qmlRegisterUncreatableType(uri, 1, 0, "ParamTypes", "Can't create this in QML. Get it from the ThingClass."); qmlRegisterUncreatableType(uri, 1, 0, "EventType", "Can't create this in QML. Get it from the EventTypes."); qmlRegisterUncreatableType(uri, 1, 0, "EventTypes", "Can't create this in QML. Get it from the ThingClass."); qmlRegisterUncreatableType(uri, 1, 0, "StateType", "Can't create this in QML. Get it from the StateTypes."); qmlRegisterUncreatableType(uri, 1, 0, "StateTypes", "Can't create this in QML. Get it from the ThingClass."); qmlRegisterUncreatableType(uri, 1, 0, "ActionType", "Can't create this in QML. Get it from the ActionTypes."); qmlRegisterUncreatableType(uri, 1, 0, "ActionTypes", "Can't create this in QML. Get it from the ThingClass."); qmlRegisterType(uri, 1, 0, "StateTypesProxy"); qmlRegisterUncreatableType(uri, 1, 0, "State", "Can't create this in QML. Get it from the States."); qmlRegisterUncreatableType(uri, 1, 0, "States", "Can't create this in QML. Get it from the Thing."); qmlRegisterUncreatableType(uri, 1, 0, "BrowserItems", "Can't create this in QML. Get it from ThingManager."); qmlRegisterUncreatableType(uri, 1, 0, "BrowserItem", "Can't create this in QML. Get it from BrowserItems."); qmlRegisterUncreatableType(uri, 1, 0, "Vendor", "Can't create this in QML. Get it from the Vendors."); qmlRegisterUncreatableType(uri, 1, 0, "Vendors", "Can't create this in QML. Get it from the ThingManager."); qmlRegisterType(uri, 1, 0, "VendorsProxy"); qmlRegisterUncreatableType(uri, 1, 0, "Thing", "Can't create this in QML. Get it from the Things."); qmlRegisterUncreatableType(uri, 1, 0, "Things", "Can't create this in QML. Get it from the ThingManager."); qmlRegisterType(uri, 1, 0, "ThingsProxy"); qmlRegisterType(uri, 1, 0, "InterfacesModel"); qmlRegisterType(uri, 1, 0, "InterfacesSortModel"); qmlRegisterUncreatableType(uri, 1, 0, "ThingClass", "Can't create this in QML. Get it from the ThingClasses."); qmlRegisterUncreatableType(uri, 1, 0, "ThingClasses", "Can't create this in QML. Get it from the ThingManager."); qmlRegisterType(uri, 1, 0, "ThingClassesProxy"); qmlRegisterType(uri, 1, 0, "ThingDiscovery"); qmlRegisterType(uri, 1, 0, "ThingDiscoveryProxy"); qmlRegisterUncreatableType(uri, 1, 0, "ThingDescriptor", "Get it from ThingDiscovery"); qmlRegisterType(uri, 1, 0, "ThingModel"); qmlRegisterUncreatableType(uri, 1, 0, "RuleManager", "Get it from the Engine"); qmlRegisterUncreatableType(uri, 1, 0, "Rules", "Get it from RuleManager"); qmlRegisterUncreatableType(uri, 1, 0, "Rule", "Get it from Rules"); qmlRegisterUncreatableType(uri, 1, 0, "RuleActions", "Get them from the rule"); qmlRegisterUncreatableType(uri, 1, 0, "RuleAction", "Get it from RuleActions"); qmlRegisterUncreatableType(uri, 1, 0, "RuleActionParams", "Get it from RuleActions"); qmlRegisterUncreatableType(uri, 1, 0, "RuleActionParam", "Get it from RuleActionParams"); qmlRegisterType(uri, 1, 0, "RulesFilterModel"); qmlRegisterUncreatableType(uri, 1, 0, "EventDescriptors", "Get them from rules"); qmlRegisterUncreatableType(uri, 1, 0, "EventDescriptor", "Get them from rules"); qmlRegisterUncreatableType(uri, 1, 0, "ParamTypes", "Uncreatable"); qmlRegisterUncreatableType(uri, 1, 0, "ParamType", "Uncreatable"); qmlRegisterType(uri, 1, 0, "Param"); qmlRegisterUncreatableType(uri, 1, 0, "ParamDescriptor", "Uncreatable"); qmlRegisterUncreatableType(uri, 1, 0, "ParamDescriptors", "Uncreatable"); qmlRegisterUncreatableType(uri, 1, 0, "StateDescriptor", "Uncreatable"); qmlRegisterUncreatableType(uri, 1, 0, "StateEvaluator", "Uncreatable"); qmlRegisterUncreatableType(uri, 1, 0, "StateEvaluators", "Uncreatable"); qmlRegisterUncreatableType(uri, 1, 0, "TimeDescriptor", "Uncreatable"); qmlRegisterUncreatableType(uri, 1, 0, "TimeEventItems", "Uncreatable"); qmlRegisterUncreatableType(uri, 1, 0, "TimeEventItem", "Uncreatable"); qmlRegisterUncreatableType(uri, 1, 0, "RepeatingOption", "Uncreatable"); qmlRegisterUncreatableType(uri, 1, 0, "CalendarItems", "Uncreatable"); qmlRegisterUncreatableType(uri, 1, 0, "CalendarItem", "Uncreatable"); qmlRegisterUncreatableType(uri, 1, 0, "Interface", "Uncreatable"); qmlRegisterSingletonType(uri, 1, 0, "Interfaces", interfacesModel_provider); qmlRegisterType(uri, 1, 0, "InterfacesProxy"); qmlRegisterUncreatableType(uri, 1, 0, "ThingGroup", "Uncreatable"); qmlRegisterUncreatableType(uri, 1, 0, "Plugin", "Can't create this in QML. Get it from the Plugins."); qmlRegisterUncreatableType(uri, 1, 0, "Plugins", "Can't create this in QML. Get it from the ThingManager."); qmlRegisterType(uri, 1, 0, "PluginsProxy"); qmlRegisterType(uri, 1, 0, "PluginConfigManager"); qmlRegisterUncreatableType(uri, 1, 0, "NymeaConfiguration", "Get it from Engine"); qmlRegisterUncreatableType(uri, 1, 0, "ServerConfiguration", "Get it from NymeaConfiguration"); qmlRegisterUncreatableType(uri, 1, 0, "ServerConfigurations", "Get it from NymeaConfiguration"); qmlRegisterUncreatableType(uri, 1, 0, "WebServerConfiguration", "Get it from NymeaConfiguration"); qmlRegisterUncreatableType(uri, 1, 0, "WebServerConfigurations", "Get it from NymeaConfiguration"); qmlRegisterUncreatableType(uri, 1, 0, "TunnelProxyServerConfiguration", "Get it from NymeaConfiguration"); qmlRegisterUncreatableType(uri, 1, 0, "TunnelProxyServerConfigurations", "Get it from NymeaConfiguration"); qmlRegisterUncreatableType(uri, 1, 0, "MqttPolicy", "Get it from NymeaConfiguration"); qmlRegisterUncreatableType(uri, 1, 0, "MqttPolicies", "Get it from NymeaConfiguration"); qmlRegisterType(uri, 1, 0, "NymeaDiscovery"); qmlRegisterUncreatableType(uri, 1, 0, "NymeaHosts", "Get it from NymeaDiscovery"); qmlRegisterType(uri, 1, 0, "NymeaHostsFilterModel"); qmlRegisterUncreatableType(uri, 1, 0, "NymeaHost", "Get it from NymeaHosts"); qmlRegisterUncreatableType(uri, 1, 0, "Connection", "Get it from NymeaHost"); qmlRegisterType(uri, 1, 0, "LogsModel"); qmlRegisterType(uri, 1, 0, "LogsModelNg"); qmlRegisterUncreatableType(uri, 1, 0, "LogEntry", "Get them from LogsModel"); qmlRegisterType(uri, 1, 0, "BarSeriesAdapter"); qmlRegisterType(uri, 1, 0, "XYSeriesAdapter"); qmlRegisterType(uri, 1, 0, "BoolSeriesAdapter"); qmlRegisterType(uri, 1, 0, "NewLogsModel"); qmlRegisterUncreatableType(uri, 1, 0, "NewLogEntry", "Get them from NewLogsModel"); qmlRegisterUncreatableType(uri, 1, 0, "TagsManager", "Get it from Engine"); qmlRegisterUncreatableType(uri, 1, 0, "Tags", "Get it from TagsManager"); qmlRegisterUncreatableType(uri, 1, 0, "Tag", "Get it from Tags"); qmlRegisterType(uri, 1, 0, "TagsProxyModel"); qmlRegisterType(uri, 1, 0, "TagListModel"); qmlRegisterType(uri, 1, 0, "TagListProxyModel"); qmlRegisterType(uri, 1, 0, "TagWatcher"); qmlRegisterType(uri, 1, 0, "BtWiFiSetup"); qmlRegisterType(uri, 1, 0, "BluetoothDiscovery"); qmlRegisterUncreatableType(uri, 1, 0, "BluetoothDeviceInfo", "Can't create this in QML. Get it from the DeviceInfos."); qmlRegisterUncreatableType(uri, 1, 0, "BluetoothDeviceInfos", "Can't create this in QML. Get it from the BluetoothDiscovery."); qmlRegisterType(uri, 1, 0, "BluetoothDeviceInfosProxy"); qmlRegisterUncreatableType(uri, 1, 0, "WirelessAccessPoint", "Can't create this in QML. Get it from the WirelessAccessPoints."); qmlRegisterUncreatableType(uri, 1, 0, "WirelessAccessPoints", "Can't create this in QML. Get it from the Engine instance."); qmlRegisterType(uri, 1, 0, "WirelessAccessPointsProxy"); qmlRegisterType(uri, 1, 0, "RuleTemplates"); qmlRegisterType(uri, 1, 0, "RuleTemplatesFilterModel"); qmlRegisterUncreatableType(uri, 1, 0, "RuleTemplate", "Get them from RuleTemplates"); qmlRegisterUncreatableType(uri, 1, 0, "EventDescriptorTemplates", "Get it from RuleTemplate"); qmlRegisterUncreatableType(uri, 1, 0, "EventDescriptorTemplate", "Get it from EventDescriptorTemplates"); qmlRegisterUncreatableType(uri, 1, 0, "TimeDescriptorTemplate", "Get it from RuleTemplate"); qmlRegisterUncreatableType(uri, 1, 0, "CalendarItemTemplates", "Get it from TimeDescriptorTemplate"); qmlRegisterUncreatableType(uri, 1, 0, "CalendarItemTemplate", "Get it from CalendarItemTemplates"); qmlRegisterUncreatableType(uri, 1, 0, "TimeEventItemTemplates", "Get it from TimeDescriptorTemplate"); qmlRegisterUncreatableType(uri, 1, 0, "TimeEventItemTemplate", "Get it from TimeEventItemTemplates"); qmlRegisterUncreatableType(uri, 1, 0, "StateEvaluatorTemplate", "Get it from RuleTemplate"); qmlRegisterUncreatableType(uri, 1, 0, "StateDescriptorTemplate", "Get it from StateEvaluatorTemplate"); qmlRegisterUncreatableType(uri, 1, 0, "RuleActionTemplates", "Get it from RuleTemplate"); qmlRegisterUncreatableType(uri, 1, 0, "RuleActionTemplate", "Get it from RuleActionTemplates"); qmlRegisterUncreatableType(uri, 1, 0, "RuleActionParamTemplates", "Get it from RuleActionTemplate"); qmlRegisterUncreatableType(uri, 1, 0, "RuleActionParamTemplate", "Get it from RuleActionParamTemplates"); qmlRegisterUncreatableType(uri, 1, 0, "SystemController", "Get it from Engine"); qmlRegisterUncreatableType(uri, 1, 0, "Packages", "Get it from SystemController"); qmlRegisterUncreatableType(uri, 1, 0, "Package", "Get it from Packages"); qmlRegisterUncreatableType(uri, 1, 0, "Repositories", "Get it from SystemController"); qmlRegisterUncreatableType(uri, 1, 0, "Repository", "Get it from Repositories"); qmlRegisterType(uri, 1, 0, "PackagesFilterModel"); qmlRegisterType(uri, 1, 0, "ZigbeeManager"); qmlRegisterUncreatableType(uri, 1, 0, "ZigbeeAdapter", "Get it from the ZigbeeAdapters"); qmlRegisterUncreatableType(uri, 1, 0, "ZigbeeAdapters", "Get it from ZigbeeManager"); qmlRegisterType(uri, 1, 0, "ZigbeeAdaptersProxy"); qmlRegisterUncreatableType(uri, 1, 0, "ZigbeeNetwork", "Get it from the ZigbeeManager"); qmlRegisterUncreatableType(uri, 1, 0, "ZigbeeNetworks", "Get it from the ZigbeeManager"); qmlRegisterUncreatableType(uri, 1, 0, "ZigbeeNode", "Get it from the ZigbeeNodes"); qmlRegisterUncreatableType(uri, 1, 0, "ZigbeeNodes", "Get it from the ZigbeeNetwork"); qmlRegisterUncreatableType(uri, 1, 0, "ZigbeeNodeNeighbor", "Get it from the ZigbeeNode"); qmlRegisterUncreatableType(uri, 1, 0, "ZigbeeNodeRoute", "Get it from the ZigbeeNode"); qmlRegisterUncreatableType(uri, 1, 0, "ZigbeeNodeBinding", "Get it from the ZigbeeNode"); qmlRegisterUncreatableType(uri, 1, 0, "ZigbeeNodeEndpoint", "Get it from the ZigbeeNode"); qmlRegisterUncreatableType(uri, 1, 0, "ZigbeeCluster", "Get it from the ZigbeeNode"); qmlRegisterType(uri, 1, 0, "ZigbeeNodesProxy"); qmlRegisterType(uri, 1, 0, "ZWaveManager"); qmlRegisterUncreatableType(uri, 1, 0, "ZWaveNetworks", "Get it from ZWaveManager"); qmlRegisterUncreatableType(uri, 1, 0, "ZWaveNetwork", "Get it from ZWaveNetworks"); qmlRegisterUncreatableType(uri, 1, 0, "ZWaveNodes", "Get it from ZWaveNetwork"); qmlRegisterUncreatableType(uri, 1, 0, "ZWaveNode", "Get it from ZWaveNodes"); qmlRegisterType(uri, 1, 0, "ZWaveNodesProxy"); qmlRegisterType(uri, 1, 0, "ModbusRtuManager"); qmlRegisterUncreatableType(uri, 1, 0, "ModbusRtuMaster", "Get it from the ModbusRtuMasters"); qmlRegisterUncreatableType(uri, 1, 0, "ModbusRtuMasters", "Get it from the ModbusRtuManager"); qmlRegisterUncreatableType(uri, 1, 0, "SerialPort", "Get it from the SerialPorts"); qmlRegisterUncreatableType(uri, 1, 0, "SerialPorts", "Get it from the apropriate manager object."); qmlRegisterType(uri, 1, 0, "SerialPortsProxy"); qmlRegisterType(uri, 1, 0, "NetworkManager"); qmlRegisterUncreatableType(uri, 1, 0, "NetworkDevices", "Get it from NetworkManager"); qmlRegisterUncreatableType(uri, 1, 0, "WiredNetworkDevices", "Get it from NetworkManager"); qmlRegisterUncreatableType(uri, 1, 0, "WirelessNetworkDevices", "Get it from NetworkManager"); qmlRegisterUncreatableType(uri, 1, 0, "NetworkDevice", "Get it from NetworkDevices"); qmlRegisterUncreatableType(uri, 1, 0, "WiredNetworkDevice", "Get it from NetworkDevices"); qmlRegisterUncreatableType(uri, 1, 0, "WirelessNetworkDevice", "Get it from NetworkDevices"); qmlRegisterType(uri, 1, 0, "ServerDebugManager"); qmlRegisterUncreatableType(uri, 1, 0, "ServerLoggingCategory", "Get it from ServerDebugManager"); qmlRegisterUncreatableType(uri, 1, 0, "ServerLoggingCategories", "Get it from ServerDebugManager"); qmlRegisterUncreatableType(uri, 1, 0, "ScriptManager", "Get it from Engine"); qmlRegisterUncreatableType(uri, 1, 0, "Scripts", "Getit from ScriptManager"); qmlRegisterUncreatableType