Commit Graph

665 Commits (e8e66c9b7fdd70710e64e15ae7a6b2a7996b7a20)

Author SHA1 Message Date
Michael Zanetti 8aa91292fe more work 2020-10-15 22:34:06 +02:00
Michael Zanetti 85c9d93ccd Somoe type fixes 2020-10-15 22:34:06 +02:00
Michael Zanetti c7f957f201 some more python plugin work 2020-10-15 22:34:06 +02:00
Michael Zanetti 5d0751ae27 fix thread syncronisation 2020-10-15 22:34:06 +02:00
Michael Zanetti 3c47e59811 some more work 2020-10-15 22:34:06 +02:00
Michael Zanetti f97e5bf4d0 more work 2020-10-15 22:34:06 +02:00
Michael Zanetti 59c1c8e9f2 some more work 2020-10-15 22:34:06 +02:00
Michael Zanetti 68e9c82758 run a thread for each call 2020-10-15 22:34:06 +02:00
Michael Zanetti 125aee7153 Some more python plugin stuff 2020-10-15 22:34:06 +02:00
Michael Zanetti 13d10b8aa0 some more python plugin work 2020-10-15 22:34:06 +02:00
Michael Zanetti 31cf425b79 intermediate 2020-10-15 22:34:06 +02:00
Michael Zanetti a2e6d9e185 Add an event loop 2020-10-15 22:34:06 +02:00
Michael Zanetti 380e962bd1 some more work on python plugins 2020-10-15 22:34:06 +02:00
Michael Zanetti a21315efc5 some more hacking 2020-10-15 22:34:06 +02:00
Michael Zanetti d17b44c83d Initial attempt to support python plugins 2020-10-15 22:34:06 +02:00
Michael Zanetti 8fee1bb2e5 Fix duplicate connections on case of retrying 2020-10-15 22:33:36 +02:00
Michael Zanetti 6aaab68cdc Retry setup if it fails at startup (e.g. network isn't up yet or similar) 2020-10-15 22:33:36 +02:00
Michael Zanetti 79dd00cb57 Add support for interface based script events and actions 2020-10-02 13:18:27 +02:00
Michael Zanetti 2f17a86506 Fix the webserver for serving static files 2020-09-23 00:49:37 +02:00
Michael Zanetti f9cd2a99df Add caching information to client API
This allows JsonHandlers to set a hash for certain API calls.
Clients can use this information to load data for such a call
from a cache instead of calling the method over the network
just to get the same result as last time.
2020-09-15 13:53:19 +02:00
Michael Zanetti 4d480f7c3b Fix a potential crash in logging handlers 2020-09-09 19:19:42 +02:00
Jenkins nymea eb291a47d5 Merge PR #334: Silence the warning about not being able to translate plugins 2020-09-08 13:53:52 +02:00
Jenkins nymea 65de093c4a Merge PR #321: Make it build with Qt 5.14 and -Wno-deprecated 2020-09-08 13:53:50 +02:00
Michael Zanetti 81ac85dd55 Silence the warning about not being able to translate plugins 2020-09-08 12:06:16 +02:00
Michael Zanetti d529a27df1 fix mocks to properly deal with the new way of reconfiguring 2020-09-01 13:45:14 +02:00
Michael Zanetti 573a2c061a Don't call thingRemoved() on the plugin in case of reconfiguring
Reasoning:

a) Currently, the API behaves inconsistently. While reconfiguring
a "justAdd" thing, it did call thingRemoved, however, reconfiguring a thing
that uses pairing did not.

b) The old implementation did not consider childs. Reconfiguring a
justAdd thing which has childs was calling thingRemoved on the parent only
but not its childs.

c) If we'd fix this by calling thingRemoved() for all flows and childs
we'd end up in hells kitchen as we can't know about the new state of childs
after the reconfiguration, so we can't just automatically add all the childs
back ourselves, the plugin needs to do that. This in turn would mean that
childs would get new ids which then breaks rules and stuff.

So the conclusion has been to just re-run the setup and the plugin implementation
is in charge for then checking the existing childs and calling autoThingDisappeared()
as needed.

WARNING: This also implies that we need to fix some plugins which currently rely
on thingRemoved to be called for reconfiguration and might create duplicate
connections or similar now.
2020-09-01 13:45:14 +02:00
Jenkins nymea 70c9c7f495 Merge PR #323: Fix cleanig up tags that are not needed any more 2020-08-14 13:09:34 +02:00
Jenkins nymea c803a1e81b Merge PR #322: Fix update busy flag in GetUpdateStatus API call 2020-08-14 13:09:34 +02:00
Jenkins nymea 54d186b7f0 Merge PR #319: Fix missing name method override for json handlers 2020-08-14 13:09:34 +02:00
Jenkins nymea dc536db74e Merge PR #315: Use bindValue for composing query strings for the log DB 2020-08-14 13:09:34 +02:00
Jenkins nymea 768b6a877e Merge PR #314: Fix conversion of values 2020-08-14 13:09:34 +02:00
Jenkins nymea bd0072e48f Merge PR #307: Loggingcategories 2020-08-14 13:09:34 +02:00
Michael Zanetti 1066e768c9 Fix cleaning up of tags that are not needed any more 2020-08-13 17:40:08 +02:00
Simon Stürz dd16734ca7 Fix update busy flag in GetUpdateStatus API call 2020-08-07 08:01:30 +02:00
Michael Zanetti 61871a729f Make it build with Qt 5.14 and -Wno-deprecated 2020-07-31 15:00:16 +02:00
Michael Zanetti 399f406d10 fixes 2020-07-27 19:38:21 +02:00
Michael Zanetti 5002fad6d9 fix tests 2020-07-26 01:00:29 +02:00
Michael Zanetti 85146abca5 Fix type conversions of values
This fixes 5 issues in regard to types of values:

1) Default values for params in the metadata were not converted properly,
most visibly on integer values being loaded as double values.

2) Param values coming in from jsonrpc were not converted properly.

3) The plugin might set state values with invalid types or being out of range.

4) If, for some reason (e.g. earlier versions of nymea, or a plugin setting
its own params in code with a wrong type), there was a param value with a
wrong type in the system, we stored that wrong type and restored it on loading
of plugin params while instead it really should be converted to the specified
type in the ParamType.

5) If a plugin is not loaded for a configured thing, the old code would
not initialize the states properly but upon shutdown save those invalid
values to the cache.
2020-07-15 00:22:43 +02:00
Simon Stürz 1334bb5bc7 Fix missing name override for json handlers 2020-07-14 16:36:03 +02:00
Jenkins nymea c5b52da69d Merge PR #318: Fix time filter 2020-07-14 11:26:14 +02:00
Jenkins nymea 3aac5df9f9 Merge PR #306: Vaguely inform the plugin about the origin of actions. 2020-07-14 11:26:14 +02:00
Jenkins nymea c369bd15aa Merge PR #305: Allow emitting events from things directly 2020-07-14 11:26:14 +02:00
Jenkins nymea 7b60f05c64 Merge PR #299: Store state changes immediately when they change 2020-07-14 11:26:14 +02:00
Michael Zanetti 16f80aa24c Fix time filter 2020-07-14 11:23:05 +02:00
Michael Zanetti a4beed9aee Properly store stringlists 2020-07-10 23:15:05 +02:00
Michael Zanetti 98e5176393 Use bindValue for composing query strings for the log DB
Event/action param values might not be escaped properly otherwise
2020-07-05 12:29:38 +02:00
Michael Zanetti ca041bbd02 Convert recurring UPnP message to a debug print 2020-06-25 23:29:54 +02:00
Michael Zanetti 75afab7eaf Add nymea logging categories as opposed to just Qt ones 2020-06-17 14:32:35 +02:00
Michael Zanetti 021f2479d9 Vaguely inform the plugin about the origin of actions.
Fixes #277
2020-06-16 17:49:41 +02:00
Michael Zanetti f029184651 Allow emitting events from things directly 2020-06-16 16:16:23 +02:00
Jenkins nymea a01d5ea5b9 Merge PR #297: Fix UPnP discovery if wifi comes up late 2020-06-07 19:16:24 +02:00
Jenkins nymea 48fb5f7edb Merge PR #292: Check for cloud certificate file before trying to connect 2020-06-07 19:16:23 +02:00
Jenkins nymea 7337105073 Merge PR #291: Fix thing class translations 2020-06-07 19:16:23 +02:00
Jenkins nymea bf3a29b868 Merge PR #290: Add support for restarting nymea in the system api 2020-06-07 19:16:23 +02:00
Jenkins nymea 917c58d145 Merge PR #289: Add an I2C hardware resource 2020-06-07 19:16:23 +02:00
Jenkins nymea fecce90ba3 Merge PR #288: Improve networking API 2020-06-07 19:16:23 +02:00
Jenkins nymea 94152ebe78 Merge PR #287: Drop internal networkmanager and use libnymea-networkmanager instead 2020-06-07 19:16:23 +02:00
Jenkins nymea b1521c8207 Merge PR #286: Log DB schema 4 2020-06-07 19:16:23 +02:00
Jenkins nymea 3156264787 Merge PR #283: Reject duplicate ids in plugin json 2020-06-07 19:16:23 +02:00
Jenkins nymea 60eebfc289 Merge PR #282: Add support for generic IO connections 2020-06-07 19:16:23 +02:00
Michael Zanetti 82703de061 Fixes after testing/review 2020-06-07 19:15:39 +02:00
Michael Zanetti cf2ce0ca27 Store state changes immediately when they change 2020-05-29 18:51:51 +02:00
Michael Zanetti dbea7acbb2 Add an I2C hardware resource 2020-05-27 22:44:36 +02:00
Michael Zanetti 7eee989e12 Fix UPnP discovery if wifi comes up late 2020-05-27 00:08:08 +02:00
Michael Zanetti 2fa0730c90 Check for cloud certificate file before trying to connect 2020-05-13 19:07:22 +02:00
Michael Zanetti 322bcf56a6 Add support for inverting the connections 2020-05-09 19:14:02 +02:00
Michael Zanetti 4e509d75f8 Add tests, some fixes/improvements 2020-05-05 21:04:07 +02:00
Michael Zanetti 3fc4825c67 Improve networking api
Add support starting an AP and provide ip address info
2020-05-04 16:03:48 +02:00
Michael Zanetti 318a71725f Fix plugins translations 2020-05-04 13:39:20 +02:00
Michael Zanetti 688cde9c9c Fix translating thing classes 2020-05-04 12:45:45 +02:00
Michael Zanetti bb30a451b3 New DB schema version
* Store plaintext values in log db again
* Use msecs precision instead of secs
* rename column deviceId to thingId
2020-05-04 11:32:42 +02:00
Michael Zanetti 28624e264d Add support for restarting nymea in system api 2020-05-01 21:19:22 +02:00
Michael Zanetti 9f856f3ce9 Add support for generic IO connections 2020-05-01 14:43:23 +02:00
Michael Zanetti a859be9371 Fix introspect according to how the api behaved already 2020-04-23 15:39:15 +02:00
Michael Zanetti 58c4dcb6c9 Drop internal networkmanager and use libnymea-networkmanager instead 2020-04-23 15:08:02 +02:00
Michael Zanetti 1531a38297 Make the duplicate UUID check more strict 2020-04-08 13:57:31 +02:00
Michael Zanetti 46245a2a6b Add better messages when failing to load a plugin 2020-04-07 19:46:16 +02:00
Jenkins nymea deba851a08 Merge PR #281: Fix remving of things without plugin 2020-04-05 14:43:24 +02:00
Jenkins nymea 777dba7439 Merge PR #278: Fix initialization of ScriptState values on startup 2020-04-05 14:43:24 +02:00
Jenkins nymea 59bfd9ba83 Merge PR #275: Add a displayMessage for errors to browsing operations 2020-04-05 14:43:23 +02:00
Jenkins nymea e64d293d2b Merge PR #274: Allow removal of discovered child things 2020-04-05 14:43:23 +02:00
Jenkins nymea 7c3143a9ea Merge PR #273: Add better error reporting when a client fails to establish the encryption channel 2020-04-05 14:43:23 +02:00
Jenkins nymea a062ab44cf Merge PR #272: Fix param values getting lost in ScriptEvents 2020-04-05 14:43:23 +02:00
Michael Zanetti 6b0697182d Fix a crash when removing a thing without plugin 2020-04-05 14:41:12 +02:00
Michael Zanetti 944c0b8b5a Properly initialize ScriptState values 2020-04-05 11:54:32 +02:00
Michael Zanetti 045a3606a2 fix typo when refactoring 2020-04-05 11:52:09 +02:00
Michael Zanetti d362ce913e Add a displayMessage for errors to browsing operations 2020-03-25 00:22:34 +01:00
Michael Zanetti b01e8c8ee4 Fix deprecation warning for notifications 2020-03-24 15:22:24 +01:00
Michael Zanetti a53e714f25 Allow removing child things if they're not autocreated 2020-03-20 11:11:46 +01:00
Michael Zanetti e388d46bc6 Add better error reporting if SSL fails to establish a connection 2020-03-20 10:18:29 +01:00
Michael Zanetti 8f846434b9 Fix loading of pluginmetadata 2020-03-19 18:17:39 +01:00
Michael Zanetti d82054df5d Fix param values getting lost in ScriptEvents 2020-03-18 18:16:00 +01:00
Michael Zanetti 16e731e5e2 fix a bug in the device handler 2020-03-17 15:32:44 +01:00
Michael Zanetti 8fd3bf8a55 Update docs 2020-03-17 13:17:05 +01:00
Michael Zanetti a894d27a18 Update script api 2020-03-05 19:50:15 +01:00
Michael Zanetti 8208473302 bump api 2020-03-05 16:16:57 +01:00
Michael Zanetti 2fbbaeda97 More work 2020-03-03 16:54:55 +01:00
Michael Zanetti 3e425fc55b Rename devices to integrations/things 2020-03-02 13:40:26 +01:00
Jenkins nymea 6b4640d412 Merge PR #265: Keep devices without plugins in the system 2020-02-23 23:38:28 +01:00
Jenkins nymea c662657ce5 Merge PR #264: Fix ScriptAction qqmlparserstatus 2020-02-23 23:38:28 +01:00
Jenkins nymea 690031a77c Merge PR #263: Fix some issues reported by valgrind 2020-02-23 23:38:28 +01:00
Jenkins nymea 8165d7c9c5 Merge PR #257: Add more detailed setup status to API 2020-02-23 23:38:28 +01:00
Jenkins nymea bfb14fe4ae Merge PR #256: Cleanup Rule definition in introspection 2020-02-23 23:38:28 +01:00
Michael Zanetti db43d2ca6c rename file and add copyright header 2020-02-10 14:22:43 +01:00
Michael Zanetti ee30ece5c2 Delete devices before plugins when shuttting down 2020-02-10 13:00:24 +01:00
Michael Zanetti 68e9fe1ba1 Cache device classes and keep devices with missing plugins in the system 2020-02-10 00:53:28 +01:00
Michael Zanetti 6e4a0bc84b Add better device setup status details to api 2020-02-10 00:53:04 +01:00
Michael Zanetti c0d0e13b71 Fix ScriptAction qqmlparserstatus 2020-02-09 19:06:44 +01:00
Michael Zanetti b12e203572 Fix some smally memory leaks reported by valgrind 2020-02-09 15:54:23 +01:00
Michael Zanetti fb94178920 Move authentication to Users namespace 2020-02-08 01:30:11 +01:00
Michael Zanetti ec0aa802c5 Add more user management features 2020-02-07 00:33:00 +01:00
Jenkins nymea 845b9ab209 Merge PR #253: Update copyright 2020-01-29 21:44:34 +01:00
Jenkins nymea 401a42a78c Merge PR #252: Fix crash when removing a connected transport interface 2020-01-29 21:44:34 +01:00
Jenkins nymea 59f30ad9d3 Merge PR #250: Qt versions 2020-01-29 21:44:34 +01:00
Jenkins nymea b7ac4ec806 Merge PR #248: Disconnect all slots of nymea:core on shutdown 2020-01-29 21:44:34 +01:00
Jenkins nymea ace4c70fe4 Merge PR #247: Generate a version.h file 2020-01-29 21:44:34 +01:00
Jenkins nymea 1554c568eb Merge PR #245: Use a more unique nonce for the remote connection 2020-01-29 21:44:34 +01:00
Jenkins nymea 56b0570231 Merge PR #244: Subscribe to the entire device namespace in nymea:cloud MQTT 2020-01-29 21:44:34 +01:00
Jenkins nymea 8b992870a3 Merge PR #243: Update device names when changed by the plugin 2020-01-29 21:44:34 +01:00
Jenkins nymea 56517ce491 Merge PR #241: Improve log DB housekeeping performance 2020-01-29 21:44:34 +01:00
Jenkins nymea 85c29ab4b5 Merge PR #240: Update company name 2020-01-29 21:44:34 +01:00
Jenkins nymea 44a403f0e4 Merge PR #238: Add System Time API 2020-01-29 21:44:34 +01:00
Michael Zanetti 114c381e4d fix typo in docs 2020-01-29 21:40:47 +01:00
Michael Zanetti ba6219bfd6 Cleanup Rule definition in introspection
As per feedback from client development
2020-01-29 15:16:29 +01:00
Michael Zanetti 8f5536ba1a Update copyright 2020-01-23 20:07:26 +01:00
Jenkins nymea 495b3e1ab6 Merge PR #252: Fix crash when removing a connected transport interface 2020-01-22 23:47:15 +01:00
Jenkins nymea 02f63acb94 Merge PR #250: Qt versions 2020-01-22 23:47:15 +01:00
Jenkins nymea 5cbace14bf Merge PR #248: Disconnect all slots of nymea:core on shutdown 2020-01-22 23:47:15 +01:00
Jenkins nymea 27ca2f3174 Merge PR #247: Generate a version.h file 2020-01-22 23:47:15 +01:00
Jenkins nymea f82bc6949c Merge PR #245: Use a more unique nonce for the remote connection 2020-01-22 23:47:15 +01:00
Jenkins nymea ce4348143a Merge PR #244: Subscribe to the entire device namespace in nymea:cloud MQTT 2020-01-22 23:47:15 +01:00
Jenkins nymea 670bda1e28 Merge PR #243: Update device names when changed by the plugin 2020-01-22 23:47:15 +01:00
Jenkins nymea 2d08e7a028 Merge PR #241: Improve log DB housekeeping performance 2020-01-22 23:47:15 +01:00
Jenkins nymea 74be126d76 Merge PR #240: Update company name 2020-01-22 23:47:15 +01:00
Jenkins nymea e256ac034d Merge PR #238: Add System Time API 2020-01-22 23:47:14 +01:00
Michael Zanetti 07cf9e05ae Fix crash when removing a connected transport interface 2020-01-22 23:43:07 +01:00
Michael Zanetti f44b4906a5 Add Qt version info to API 2020-01-21 22:56:28 +01:00
Michael Zanetti de0395f115 Disconnect all slots of nymea:core on shutdown 2020-01-15 14:17:01 +01:00
Michael Zanetti a21dde0289 Generate a version.h file instead of passing it via DEFINES 2020-01-15 12:39:35 +01:00
Michael Zanetti 744f25312b Cleanup as code review suggests 2020-01-15 12:32:32 +01:00
Michael Zanetti 7d615293c5 Use a more unique nonce for the remote connection 2020-01-10 13:31:31 +01:00
Michael Zanetti 03c8e8d114 Improve log DB housekeeping performance
Getting row count on a db with approx 200000 entries on an RPi takes
about 500ms. To avoid this, this branch keeps better track of entries
in the DB and only queries DB count if we can't calculate it ourselves.
Trimming itself takes some 150ms. To reduce those calls it changes the
threshold of when to trim the DB from a fixed value of 100 to 1% of
maxDBSize.

Last but not least, getLogEntry() calls are now prioritized over
appendLogEntry() calls in order to stay responsive to client apps even
if the DB is overloaded with a huge job queue.

If the job queue grows to over 1000 jobs, logs of the same device/type
will be discared to avoid log flooding.
2020-01-05 23:46:51 +01:00
Michael Zanetti 7374652121 Subscribe to the entire device namespace in nymea:cloud NQTT
This allows the REST proxy to establish remote connections.
2020-01-05 20:37:13 +01:00
Michael Zanetti b3ebbc18c0 Update device names when changed by the plugin 2020-01-05 14:58:02 +01:00
Michael Zanetti 9c7694c133 Update company name 2019-12-27 00:29:58 +01:00
Michael Zanetti b2960f5f62 fix typo 2019-12-16 12:23:26 +01:00
Michael Zanetti b6a3a8e0bf fix typos in api doc 2019-12-16 11:35:38 +01:00
Michael Zanetti 4e70f0f5f8 build with older Qt 2019-12-16 11:16:26 +01:00
Michael Zanetti 9b07216768 Add system api to configure the system time
This gets rid of the locally kept time zone which caused issues
in plugins and the ScriptEngine.
2019-12-15 12:44:14 +01:00
Michael Zanetti 24cecf9d47 Add tests for the scriptengine 2019-12-10 18:49:28 +01:00
Michael Zanetti dd70129a4d Add ScriptAlarm 2019-12-10 00:22:49 +01:00
Michael Zanetti 9ecb2d0af4 Support params 2019-12-08 22:13:36 +01:00
Michael Zanetti 5ae3af6cbf Only install our filter once 2019-12-02 00:02:14 +01:00
Michael Zanetti 22bacf09e1 fix build 2019-12-01 01:14:26 +01:00
Michael Zanetti 5a36c2347f fix logging system to cope with the qml output redirection 2019-12-01 00:08:57 +01:00
Michael Zanetti bffdf9cb88 add copyright headers 2019-12-01 00:08:57 +01:00
Michael Zanetti ebf4d83286 Make it build with Qt 5.5 2019-12-01 00:08:57 +01:00
Michael Zanetti 9a52345700 fix notifications 2019-12-01 00:08:57 +01:00
Michael Zanetti 53a79c52d6 fixes 2019-12-01 00:08:57 +01:00
Michael Zanetti 3c274b04ab More work on scripting 2019-12-01 00:08:57 +01:00
Michael Zanetti 3a9a0a0abc Add scripts api namespace 2019-12-01 00:08:57 +01:00
Michael Zanetti 6ab6f8a80b tune script types a bit 2019-12-01 00:08:57 +01:00
Michael Zanetti d4081195d4 Some more work on the script engine 2019-12-01 00:07:35 +01:00
Michael Zanetti 0f75be0fa4 Require Qt 5.12 for ScriptDevicePlugin 2019-12-01 00:07:35 +01:00
Michael Zanetti 4c0c95b1a8 Add a ScriptEngine 2019-12-01 00:07:35 +01:00
Michael Zanetti fd401a850a cleanup 2019-12-01 00:07:35 +01:00
Michael Zanetti e47a4062ee Fix loading of JS plugins 2019-12-01 00:07:35 +01:00
Michael Zanetti b97e4e5b0c Add support for JS device plugins 2019-12-01 00:07:35 +01:00
Michael Zanetti 9322cc79e9 Initial attempt to script a plugin 2019-12-01 00:07:35 +01:00
Jenkins nymea f1cd51c5e6 Merge PR #236: Add some more plugin search paths to work better on non-debian systems 2019-12-01 00:05:00 +01:00
Jenkins nymea 387ce07bf3 Merge PR #234: Weaken password requirements a bit 2019-12-01 00:05:00 +01:00
Jenkins nymea a56362a264 Merge PR #233: Threaded log database 2019-12-01 00:05:00 +01:00
Jenkins nymea a9c304b5f8 Merge PR #232: Don't emit EventEmitted for invalid devices 2019-12-01 00:05:00 +01:00
Jenkins nymea 3f066c5cc9 Merge PR #230: Don't load devices if the plugin dropped support for it 2019-12-01 00:05:00 +01:00
Michael Zanetti 2b63b59261 drop whitespace 2019-11-30 23:58:26 +01:00
Michael Zanetti 212ccc8596 remove unneeded processQueue 2019-11-30 23:56:56 +01:00
Michael Zanetti 64a494e44a Fix tests that didn't wait long enough for log entries to be written 2019-11-28 20:47:55 +01:00
Michael Zanetti 619bbf76f3 don't use QSqlQuery at all outside the job queue
On some backends, such as MySQL, a prepare() call will access
the database
2019-11-28 14:20:37 +01:00
Michael Zanetti 5030ab8ac5 Add some more plugin search paths to work better on non-debian systems 2019-11-26 19:47:19 +01:00
Michael Zanetti 7b99783603 Weaken password requirements a bit
We've decided to not require special characters any more
2019-11-22 17:37:37 +01:00
Michael Zanetti c7dd26d525 cleanup, fix last tests 2019-11-16 00:44:08 +01:00
Michael Zanetti 73812df269 fix shutdown 2019-11-15 23:54:40 +01:00
Michael Zanetti 0ce99fc127 add some debugs 2019-11-15 23:37:52 +01:00
Michael Zanetti f36eac080f fix duplicate query execution 2019-11-15 23:12:27 +01:00
Michael Zanetti 2361cc0473 Wait for the job queue to finish before shutting down 2019-11-15 18:34:20 +01:00
Michael Zanetti 3eac06de6e Threaded log database
This
a) makes the log db threaded by using QtConcurrent to run queries in a
different thread but still keeps ordering of the queries and always
only allows a single query at a time (QSql is not threadsafe). This fixes
removeDevice calls failing if we take more than $jsonprc_timeout to clean
a deleted device from the DB and keeps nymead responsive during that too.

b) generally improces performance of the system by not requiring operations
(emitting events, changing states) to wait for the sync log db entry to be
made.

c) drops some of the houskeeping code on nymea startup. While this will still
do log db housekeeping if the DB exceeds maxDbSize, it will not run
housekeeping on the DB any more at application startup. Reasoning for this
is that there have been reports of rules/log entries beimg destroyed if a
plugin can't be found at application startup. Given our general direction
of working towards more dynamic plugin loading, this might happen more often
in the future and we sure don't want to destroy rules etc when we just
temporarily miss a plugin.

d) tries to fix issue #226 by rotating the DB not only when it fails to open
initially, but also when it fails to insert new entries.
2019-11-15 18:33:10 +01:00
Michael Zanetti f5942a0223 Also check state changes 2019-11-15 11:02:35 +01:00
Michael Zanetti 2228523cf0 Don't emit EventEmitted for invalid devices 2019-11-12 19:25:24 +01:00
Michael Zanetti abdfce129e Don't load devices if the plugin dropped support for it 2019-11-07 11:37:11 +01:00
Michael Zanetti ec15e664e1 cleanup warnings and allow setting "unknown" debug categories 2019-11-06 13:38:22 +01:00
Michael Zanetti 25152c5e27 Add readonly feature to JSONRPC 2019-11-06 00:06:03 +01:00
Michael Zanetti fa1cd3605c Add deprecation warnings 2019-11-04 11:56:24 +01:00
Michael Zanetti 5be6e6e19d Deprecate Actions/Events/States namespaces 2019-11-04 10:52:36 +01:00
Michael Zanetti 0e7edd5abd cleanup 2019-11-04 10:52:06 +01:00
Michael Zanetti 3cbd01c1d2 drop all pack/unpack methds 2019-11-03 21:24:16 +01:00
Michael Zanetti 3a88a25c49 add copyright headers 2019-11-01 20:55:45 +01:00
Michael Zanetti baaa719b6a Restructuring json done 2019-11-01 20:55:45 +01:00
Michael Zanetti 11a388d729 implement stubs for AddDelivery and GetDeliveries 2019-11-01 20:55:45 +01:00
Michael Zanetti bdd9876a88 Allow registering QMetaObjects on JSON api 2019-11-01 20:55:45 +01:00
Michael Zanetti e2cf9cb5c3 More work on the experience mode framework 2019-11-01 20:55:45 +01:00
Michael Zanetti f8d23db584 allow registering json handlers in experience plugins 2019-11-01 20:55:02 +01:00
Michael Zanetti fab1871ea1 loading plugins working 2019-11-01 20:53:41 +01:00
Michael Zanetti a47bded031 add loading of plugins 2019-11-01 20:53:41 +01:00
Michael Zanetti f1ca2a5b86 Add experience mode plugins 2019-11-01 20:46:55 +01:00
Michael Zanetti 5e3bc2acbd Drop JsonTypes class by distributing logic to json handlers
This is required in order to be able to be more flexible in registering
new types/methods.
2019-11-01 20:46:55 +01:00
Michael Zanetti 03b8be22d6 Drop old REST server 2019-11-01 20:14:00 +01:00
Michael Zanetti 977247e950 Complete setup api 2019-10-31 13:09:26 +01:00
Michael Zanetti 0b5f475991 Fix typo 2019-10-19 14:13:48 +02:00
Michael Zanetti 9b1b6d86e6 Allow more granular notification subscriptions in API 2019-10-19 14:13:48 +02:00
Jenkins nymea 55011abaf9 Merge PR #219: Add support for more media service icons 2019-10-18 14:57:23 +02:00
Jenkins nymea d589b66e3c Merge PR #218: Improve live logs in debug interface and rework logging rules 2019-10-18 14:57:23 +02:00
Jenkins nymea fa93998d5b Merge PR #217: Improve debug report and report download mechanism 2019-10-18 14:57:23 +02:00
Jenkins nymea c066962a66 Merge PR #215: Always initialize device settings params 2019-10-18 14:57:22 +02:00
Jenkins nymea 29655ad175 Merge PR #214: MQTT hardware resource api updates 2019-10-18 14:57:22 +02:00
Jenkins nymea c2c4b50e76 Merge PR #213: Improve json parse errors 2019-10-18 14:57:22 +02:00
Michael Zanetti 679e51b027 Fix failing test 2019-10-17 12:21:16 +02:00
Michael Zanetti e049c3b2f5 Don't execute actions on devices that didn't complete the setup 2019-10-17 00:07:32 +02:00
Michael Zanetti 0c7a810366 Use deviceClass.displayName to generate a device name if the user doesn't give one 2019-10-16 17:56:49 +02:00
Michael Zanetti 14bc0eb73e fix pairing for oauth 2019-10-16 17:56:49 +02:00
Michael Zanetti 32f7f22a7d Add a timeout to api info objects 2019-10-16 17:56:49 +02:00
Michael Zanetti fe5af9a0f5 Make displayMessages translatable 2019-10-16 17:56:49 +02:00
Michael Zanetti 82bebeccca move docs around 2019-10-16 17:56:49 +02:00
Michael Zanetti 7f0f2d1d09 Rework devicemanager and plugin api 2019-10-16 17:56:49 +02:00
Simon Stürz cc858b4d0a Fix hostname reading for Qt < 5.6 2019-10-08 16:20:20 +02:00
Simon Stürz 191936e235 Load debug categories from settings and allow configuration using debug interface 2019-10-08 16:20:20 +02:00
Simon Stürz b4f32c073a Add dynamic logging filter elements for core and plugins in the livelog view 2019-10-08 16:19:42 +02:00
Simon Stürz dc6c4b88df Prepare debug categories for the live log viewer in the debug interface 2019-10-08 16:19:42 +02:00
Simon Stürz 7d98bb37c8 Adjust live logs buttons with flexbox 2019-10-08 16:19:42 +02:00
Simon Stürz 0555449578 Add remove and copy buttons for log view 2019-10-08 16:19:42 +02:00
Simon Stürz 3655ac39de Fix leftover QSysInfo::machineHostName for Qt < 5.6 2019-10-08 16:19:17 +02:00
Michael Zanetti 1f68389a85 Fix Browser icon definition in introspect 2019-10-08 15:51:10 +02:00
Simon Stürz 3114151f29 Fix hostname parsing for Qt < 5.6 2019-10-08 09:47:04 +02:00
Simon Stürz 79cdf8316e Improve debug report and report download mechanism 2019-10-02 13:12:50 +02:00
Michael Zanetti c437ef7143 Always initialize device settings params 2019-09-27 12:09:57 +02:00
Michael Zanetti 9aa98c4fa4 Also imoprove validation errros 2019-09-25 17:53:58 +02:00
Michael Zanetti b5919a534d Update MQTT api a bit to be more flexible 2019-09-25 15:15:44 +02:00
Michael Zanetti bbd18b4f65 Fix a debug print to avoid spamming the log 2019-09-06 21:47:17 +02:00
Jenkins 9990ba2f6c Merge PR #197: Verify events coming from plugins 2019-09-02 18:01:50 +02:00
Jenkins 491ea92e2d Merge PR #196: Prevent plugins from being loaded twice 2019-09-02 18:01:50 +02:00
Michael Zanetti da0b7a04f8 Verify events coming from plugins 2019-08-23 12:10:07 +02:00
Michael Zanetti 1c8f24269e Prevent plugins from being loaded multiple times 2019-08-23 11:41:20 +02:00
Michael Zanetti b4ae1919ba cleanup fixes 2019-07-25 15:56:18 +02:00
Michael Zanetti 0b7176c6f4 Re-enable the default ctor for BrowseResults
This opens up the possibility for the plugin dev to mess up the
request id if [s]he creates a new one instead of using the one given by
the api, but not being able to keep results in a Qt container
is not a price I am willing to pay for this. After all it'S going to be
very visible on the first test to the plugin dev if this deosn't match.
2019-07-25 15:56:18 +02:00
Michael Zanetti 1608e07d99 BrowserItems in rules working 2019-07-25 15:56:18 +02:00
Michael Zanetti 0fb42681af A little more work on browser item support for rules 2019-07-25 15:56:18 +02:00
Michael Zanetti 4e7557f964 add locale option 2019-07-25 15:56:18 +02:00
Michael Zanetti aee554a1ee BrowserItemActions, yay! 2019-07-25 15:56:18 +02:00
Michael Zanetti ff337bf8b6 Make browser item execution work async too 2019-07-25 15:56:18 +02:00
Michael Zanetti a385188d37 More work on the device browser 2019-07-25 15:56:18 +02:00
Michael Zanetti 57f68bcdc0 More work on adding a Device browser 2019-07-25 15:56:18 +02:00