Fabio Manganiello
b2ffc08c89
s/MultiValueSensor/CompositeSensor/g on `smartthings`
2023-02-22 02:18:12 +01:00
Fabio Manganiello
340fd08064
Removed some old `type: ignore` comments.
2023-02-22 01:29:51 +01:00
Fabio Manganiello
cf219d5a48
Added some more docstrings to entities.
2023-02-22 01:02:26 +01:00
Fabio Manganiello
7fa545d7f8
Merge branch 'master' into 29-generic-entities-support
2023-02-22 00:46:33 +01:00
Fabio Manganiello
c645ce6bb8
Bump version: 0.24.4 → 0.24.5
2023-02-22 00:32:57 +01:00
Fabio Manganiello
bbc9647cb0
s/MultiValueSensor/CompositeSensor/g
2023-02-21 23:14:10 +01:00
Fabio Manganiello
2fa45fc5a3
Documentation and LINT fixes for sensor entities.
2023-02-21 23:10:05 +01:00
Fabio Manganiello
b4627ecd04
Removed deprecated use_unicode parameter from MPDClient
2023-02-20 20:35:33 +01:00
Fabio Manganiello
aa0b909fff
Use the TheengsDecoder to parse Bluetooth packets and map services to native entities.
2023-02-20 20:27:17 +01:00
Fabio Manganiello
73bf2446bd
Wrap `bluetooth.connect` in a per-device locked section.
2023-02-19 23:11:19 +01:00
Fabio Manganiello
9112239ac3
Better exception management in `AsyncRunnablePlugin`.
...
Exceptions that cause the termination of the plugin's loop should always
be logged as such, unless the plugin is supposed to stop and various
exceptions may occur upon teardown.
2023-02-19 23:03:27 +01:00
Fabio Manganiello
a6c36fa1c1
Added brand, model and model_id columns to `BluetoothDevice`.
2023-02-19 23:02:04 +01:00
Fabio Manganiello
68e6b271c1
Updated dist files
2023-02-19 22:58:20 +01:00
Fabio Manganiello
cb9b01c89f
Added raw_sensor metadata
2023-02-19 22:57:50 +01:00
Fabio Manganiello
72a9a9dfcf
LINT/type fixes
2023-02-19 22:56:45 +01:00
Fabio Manganiello
8aedc3c233
Recursively normalize child entities in `EntityManager._normalize_entities`
2023-02-18 17:51:57 +01:00
Fabio Manganiello
613e32e7c1
Extended number of supported events and data fields in Bluetooth integration.
2023-02-18 01:15:10 +01:00
Fabio Manganiello
7adae272a4
Merge branch 'master' into 29-generic-entities-support
2023-02-15 22:24:41 +01:00
Fabio Manganiello
08553f84b9
Added `timeout` parameter to `websocket.send`.
2023-02-15 22:23:15 +01:00
Fabio Manganiello
45664be44b
Removed deprecated `backend.bluetooth.scanner`.
...
Scan capabilities are now implemented on the `bluetooth` plugin itself.
2023-02-13 23:13:51 +01:00
Fabio Manganiello
471bc1fd3d
Updated dist files
2023-02-13 23:13:32 +01:00
Fabio Manganiello
a3aa186ddf
- Added support for `scan_pause`/`scan_resume` on `bluetooth` integration.
...
- Added `BluetoothDevice` as its own entity type.
2023-02-13 23:12:25 +01:00
Fabio Manganiello
1d0be5c929
- Simplified prototype for `EntityManager.set`
...
- Added small documentation/annotations notes to the `Plugin` module.
- Small LINT fixes
2023-02-11 21:35:00 +01:00
Fabio Manganiello
575635fd6b
Defined `set` as a base method for all plugins that implement writeable entities
2023-02-11 04:04:21 +01:00
Fabio Manganiello
4365352331
[WIP] s/set_value/set/g for entities
2023-02-11 03:57:23 +01:00
Fabio Manganiello
b0cc80ceb0
Rewriting `bluetooth.ble` plugin to use `bleak` instead of `gattlib`.
2023-02-10 17:40:20 +01:00
Fabio Manganiello
f30e077a5a
Support for custom Bluetooth adapter on `switchbot.bluetooth`.
2023-02-08 23:01:05 +01:00
Fabio Manganiello
8469a1027f
Migrated/refactored `switchbot.bluetooth` integration.
...
- Out `gattlib` + `pybluez`, in `bleak`. It's not platform-dependent, it doesn't
require libboost and other heavy build dependencies, and it doesn't require the
user that runs the service from having special privileges to access raw
Bluetooth sockets.
- Better integration with Platypush native entities. The devices are now mapped
to write-only `EnumSwitch` entities, and the status returns the serialized
representation of those entities instead of the previous intermediate
representation.
2023-02-08 22:42:00 +01:00
Fabio Manganiello
35719b0da9
Let `publish_entities` return the list of transformed_entities
2023-02-08 02:09:34 +01:00
Fabio Manganiello
e04870209e
More LINT fixes
2023-02-08 01:50:54 +01:00
Fabio Manganiello
a98a5f0980
typo fix
2023-02-08 01:09:25 +01:00
Fabio Manganiello
e49a0aec4d
Various improvements.
...
- Better synchronization logic on stop for `AsyncRunnablePlugin`.
- Fixed several thread names by dropping `prctl.set_name` in favour of
specifying the name directly on thread creation.
- Several LINT fixes.
2023-02-08 00:46:50 +01:00
Fabio Manganiello
9d028af524
Removed last reference of `SwitchPlugin`
2023-02-05 23:10:35 +01:00
Fabio Manganiello
419a0cec61
More LINTing
...
Better prototype for `MultiLevelSwitchEntityManager.set_value`
2023-02-05 23:07:43 +01:00
Fabio Manganiello
fde834c1b1
More LINT fixes + refactors
2023-02-05 22:00:50 +01:00
Fabio Manganiello
4849e14414
LINT fixes for the `utils` module + additional documentation
2023-02-05 18:05:41 +01:00
Fabio Manganiello
b8fca97891
Default poll_interval for `RunnablePlugin` set to 30 seconds
2023-02-05 17:31:43 +01:00
Fabio Manganiello
06dfd1a152
Added support for more entities in `switchbot`
2023-02-05 15:34:50 +01:00
Fabio Manganiello
64e9bf17cf
Updated dist files
2023-02-05 14:53:36 +01:00
Fabio Manganiello
2047b9b76c
[WIP] Refactoring `switchbot` plugin as a runnable plugin + entity manager
2023-02-04 22:22:51 +01:00
Fabio Manganiello
65827aa0cd
Updated dist files
2023-02-04 17:36:46 +01:00
Fabio Manganiello
b96838a856
Major LINT fixes/refactor for the `Config` class
2023-02-04 17:35:48 +01:00
Fabio Manganiello
db5846d296
Add the unit to the `Dimmer` display value if it's available
2023-02-04 17:28:54 +01:00
Fabio Manganiello
0311d87bc3
The `switch.wemo` integration now extends `SwitchEntityManager`
2023-02-04 00:58:28 +01:00
Fabio Manganiello
de2849546a
LINT fixes
2023-02-04 00:26:48 +01:00
Fabio Manganiello
a160d3217e
Removed legacy `get_sensor_plugins` and `get_switch_plugins` actions
2023-02-03 22:54:42 +01:00
Fabio Manganiello
b6814b4f16
Removed legacy Switches integration [frontend]
2023-02-03 22:49:09 +01:00
Fabio Manganiello
6ef2feea71
LINT fixes for `utils` plugin
2023-02-03 18:08:19 +01:00
Fabio Manganiello
3db9c58d31
[WIP] Converted `switch.tplink` plugin.
...
`switch.tplink` converted to a `RunnablePlugin` that implements
`SwitchEntityManager`.
2023-02-03 02:20:20 +01:00
Fabio Manganiello
be3b99326f
[WIP] Refactoring `@manages` annotation into a proper `EntityManager` hierarchy
2023-02-02 23:21:12 +01:00
Fabio Manganiello
63d6920716
Updated dist files
2023-02-02 18:07:44 +01:00
Fabio Manganiello
59eb0742a1
s/warnings/logger.debug/ if publish_entities is called with no engine registered
2023-01-29 21:52:12 +01:00
Fabio Manganiello
8aff181956
Merged `zwave.mqtt` backend into the `zwave.mqtt` plugin
2023-01-29 02:34:48 +01:00
Fabio Manganiello
0e56d0fff6
Double-check if self._thread != None on stop on the ntfy thread
...
Race conditions may occur here
2023-01-27 22:12:34 +01:00
Fabio Manganiello
341e749d23
Merged the `zigbee.mqtt` backend into the plugin.
...
- Deprecated the old `zigbee.mqtt` backend
- Black style for the `mqtt` backend
2023-01-27 01:59:57 +01:00
Fabio Manganiello
afdeb91f66
Implemented remaining supported entities for the `smartthings` integration
2023-01-26 22:10:02 +01:00
Fabio Manganiello
334ccc35a2
Don't serialize I/O wrappers
...
This removes warnings on `config.get`, where the `logging` configuration
key may also contain the current logging stream and we end up with a
JSONDecodeError when trying to serialize it.
2023-01-25 00:52:37 +01:00
Fabio Manganiello
ba31dff06a
Major refactor + fixes for `smartthings`
2023-01-24 23:56:28 +01:00
Fabio Manganiello
147f36c86c
All `Sensor` instances should have `is_read_only=True` by default
2023-01-22 21:05:14 +01:00
Fabio Manganiello
fd76642082
Added `Volume` and `Muted` entities
2023-01-22 21:04:46 +01:00
Fabio Manganiello
bb637a1411
Defined a unique `stop_timeout` (default=5) for RunnablePlugin
2023-01-22 14:28:16 +01:00
Fabio Manganiello
6d4cf64253
More work on `smartthings`.
...
- Added support for `Battery` entities
- Fixed saturation range for `Light` entities
- Parsing `min`/`max`/`unit` from the status attributes, if available
2023-01-22 01:01:47 +01:00
Fabio Manganiello
ddd516a677
Added polling/RunnablePlugin logic to `smartthings`
2023-01-22 00:09:10 +01:00
Fabio Manganiello
dabbe031ab
Don't show the entity modal unless the user clicks on the name or icon
2023-01-21 23:46:38 +01:00
Fabio Manganiello
32e4e60579
A more robust handling of events in the `zwave.mqtt` backend
2023-01-21 23:44:51 +01:00
Fabio Manganiello
3940288396
Use the new bus notification helpers
2023-01-21 16:59:18 +01:00
Fabio Manganiello
241670c9d0
Handle parent/child update events through broadcast bus events
2023-01-21 16:58:28 +01:00
Fabio Manganiello
3923a09831
- Expose methods on the bus module to publish/subscribe to notifications and entity updates
...
- Removed some redundant `pass` statements in Z-Wave derived event classes
2023-01-21 16:56:27 +01:00
Fabio Manganiello
fb562bb415
Propagate the @update event to the parent entities
2023-01-21 14:55:06 +01:00
Fabio Manganiello
4d762b81dc
EntityUpdateEvent traces can now be logged on INFO level
...
The EntityUpdateEvents generated by light.hue are now less noisy.
2023-01-21 14:50:05 +01:00
Fabio Manganiello
247912799f
Refactored light.hue integration so EntityUpdateEvents won't be triggered on every call to _get_lights
2023-01-21 14:48:33 +01:00
Fabio Manganiello
dfb13127ee
Added MotionSensor entities
2023-01-21 14:47:18 +01:00
Fabio Manganiello
a892bad34c
Refactoring smartthings plugin to support more entity types
2023-01-21 14:09:26 +01:00
Fabio Manganiello
22b8b03cb2
Refactored EntityIcon component
2023-01-15 20:02:50 +01:00
Fabio Manganiello
9a5e2899e8
Support for external_url and image_url on entities
2023-01-15 20:01:47 +01:00
Fabio Manganiello
2cc5e3f726
UI tweaks
2023-01-15 15:46:25 +01:00
Fabio Manganiello
9e4fbc6a21
Defined the collapsed data property on EntityMixin level
2023-01-15 15:29:26 +01:00
Fabio Manganiello
78e250186b
Deallocate the color converter when the light component is unmounted
2023-01-15 15:25:04 +01:00
Fabio Manganiello
e9371ac5d0
Improved entity collapse logic
...
- Toggle collapsed state also if clicked on the gap between the entity
name and the right edge, instead of opening the entity modal. The
entity configuration modal should open only when clicking on the
entity name or icon (and these should be highlighted on hover as links
as well).
- The collapsed state update should be propagated to the wrapped
component as well, if applicable.
2023-01-15 15:03:53 +01:00
Fabio Manganiello
dbf5ed3b85
s/expanded/collapsed/g (for naming consistency)
2023-01-15 14:26:44 +01:00
Fabio Manganiello
bb483fd1b1
Using a nice gradient for hover-bg
2023-01-15 12:34:18 +01:00
Fabio Manganiello
cda03887d4
Updated dist files
2023-01-15 12:34:02 +01:00
Fabio Manganiello
9df4d5b5b8
Zigbee entities should be marked as unreachable also if they are currently being interviewed
2023-01-14 22:35:17 +01:00
Fabio Manganiello
afd9a1d6bf
Don't load entities that only have non-queriable children
2023-01-14 22:33:53 +01:00
Fabio Manganiello
2778357a9e
Wrapped dynamic Vue components in shallowRef.
...
The performance of the page is heavily degraded by components loaded
dynamically via defineAsyncComponent that recursively carry behind the
whole Vue machinery.
By wrapping defineAsyncComponent calls in shallowRef we make sure that
we only wire the root level of the newly created dynamic component.
2023-01-14 22:31:48 +01:00
Fabio Manganiello
fd2d83c80b
Renamed Notification mixin's warn and error methods.
...
Renamed to `notifyWarning` and `notifyError` respectively.
Those names can often clash with other properties defined on components
that extend the mixin (like entities).
2023-01-14 22:27:43 +01:00
Fabio Manganiello
aa22507f50
DropdownItem.className should not be enforced to be a string.
...
It can also be a class -> boolean object.
2023-01-14 22:11:05 +01:00
Fabio Manganiello
a58caa17e2
Decreased time of EventQueue (2 -> 1 second) to make entity events more responsive
2023-01-13 23:28:58 +01:00
Fabio Manganiello
68497e6388
Normalize the light devices' IEEE addresses before retrieving the associated devices
2023-01-13 23:28:12 +01:00
Fabio Manganiello
22a566a88b
More refactors and fixes for `zigbee.mqtt`
2023-01-13 02:58:47 +01:00
Fabio Manganiello
38438230d7
The batch of entities currently being processed should have no duplicate keys
2023-01-11 01:22:56 +01:00
Fabio Manganiello
4a2851231c
Large refactor of `zigbee.mqtt`
...
- Support for device options as children configuration entities
- Refactored switches management, removed legacy `switches` plugin
integration, and supporting multiple binary switches for one device
2023-01-09 01:02:49 +01:00
Fabio Manganiello
27b23b7fae
Normalize array/dict options for values on EnumSwitch
2023-01-09 01:01:35 +01:00
Fabio Manganiello
e9c84ff5d4
Support units on dimmer entities
2023-01-09 01:01:05 +01:00
Fabio Manganiello
32330ca7a8
Merge branch 'master' into 29-generic-entities-support
2023-01-08 23:26:08 +01:00
dependabot[bot]
a0e45c38a5
Bump minimatch from 3.0.4 to 3.1.2 in /platypush/backend/http/webapp
...
Bumps [minimatch](https://github.com/isaacs/minimatch ) from 3.0.4 to 3.1.2.
- [Release notes](https://github.com/isaacs/minimatch/releases )
- [Commits](https://github.com/isaacs/minimatch/compare/v3.0.4...v3.1.2 )
---
updated-dependencies:
- dependency-name: minimatch
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
2023-01-08 22:24:41 +00:00
dependabot[bot]
379c822588
Bump json5 from 1.0.1 to 1.0.2 in /platypush/backend/http/webapp
...
Bumps [json5](https://github.com/json5/json5 ) from 1.0.1 to 1.0.2.
- [Release notes](https://github.com/json5/json5/releases )
- [Changelog](https://github.com/json5/json5/blob/main/CHANGELOG.md )
- [Commits](https://github.com/json5/json5/compare/v1.0.1...v1.0.2 )
---
updated-dependencies:
- dependency-name: json5
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
2023-01-08 22:22:52 +00:00
dependabot[bot]
47c3a24def
Bump loader-utils from 1.4.0 to 1.4.2 in /platypush/backend/http/webapp
...
Bumps [loader-utils](https://github.com/webpack/loader-utils ) from 1.4.0 to 1.4.2.
- [Release notes](https://github.com/webpack/loader-utils/releases )
- [Changelog](https://github.com/webpack/loader-utils/blob/v1.4.2/CHANGELOG.md )
- [Commits](https://github.com/webpack/loader-utils/compare/v1.4.0...v1.4.2 )
---
updated-dependencies:
- dependency-name: loader-utils
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
2023-01-08 15:53:12 +00:00
Fabio Manganiello
66000a0774
Merge branch 'master' into 29-generic-entities-support
2023-01-08 00:23:57 +01:00
Fabio Manganiello
2893cb1cc4
Replaced deprecated `missing` marshmallow parameter with `load_default`
2023-01-08 00:15:24 +01:00
Fabio Manganiello
7d90b274ae
Make sure that any existing device monitor is terminated upon disconnection
2023-01-07 23:48:02 +01:00
Fabio Manganiello
72454a6583
Merge branch 'master' into 29-generic-entities-support
2023-01-07 23:31:31 +01:00
Fabio Manganiello
40bdc3b7f3
Always wait 5 seconds (regardless of the poll interval) in case of errors.
...
Also, print the error only on the first occurrence, to prevent log
spamming.
2023-01-07 23:21:59 +01:00
Fabio Manganiello
e8f767d819
Take into account the notify_only_if_changed parameter
2023-01-07 23:11:34 +01:00
Fabio Manganiello
c5cf9803ff
Take into account the notify_only_if_changed parameter
2023-01-07 23:09:42 +01:00
Fabio Manganiello
6630873e2c
Merge branch 'master' into 29-generic-entities-support
2023-01-07 22:39:46 +01:00
Fabio Manganiello
2ee810bdc4
Added missing event to documentation
2023-01-07 22:39:23 +01:00
Fabio Manganiello
b7f266cd92
Merge branch 'master' into 29-generic-entities-support
2023-01-07 22:31:36 +01:00
Fabio Manganiello
a77206800d
Added HID plugin to support interaction with generic HID devices
2023-01-07 22:30:32 +01:00
Fabio Manganiello
c215c693f5
Only pass children that aren't configuration values to the entities
2023-01-03 23:25:43 +01:00
Fabio Manganiello
7868d6fe37
Support for nested configuration objects on entity modals
2023-01-03 23:16:14 +01:00
Fabio Manganiello
13eb515f87
Select current display value by default on EnumSwitch
2023-01-03 23:14:57 +01:00
Fabio Manganiello
01727f53bc
Support for is_configuration flag on `zwave` entities
2023-01-03 23:13:34 +01:00
Fabio Manganiello
c32aecece3
Added is_configuration flag to entities
2023-01-03 23:12:27 +01:00
Fabio Manganiello
81fee3ea2a
Style tweaks
2023-01-03 23:11:39 +01:00
Fabio Manganiello
71ed545cc7
Fancier gradient background for the navigator header
2023-01-02 23:28:53 +01:00
Fabio Manganiello
0f60bc2131
Don't delete external_id and data attributes unless they are set
2023-01-02 21:01:46 +01:00
Fabio Manganiello
b0671354ea
(Tentative) support for zwave light colors
2023-01-02 12:50:01 +01:00
Fabio Manganiello
4f75cbc8b4
Updated frontend dist files
2023-01-01 23:23:18 +01:00
Fabio Manganiello
80c2c77272
Support for entities with children on the frontend
2023-01-01 23:06:40 +01:00
Fabio Manganiello
dd3c4b10c7
Run register_service in a separate thread in `backend.http`.
...
The Zeroconf registration part may randomly get stuck, resulting in the
web server not being properly started.
It's therefore better to run the Zeroconf registration process
asynchronously, for it's not strictly required for the web server to
execute.
2023-01-01 13:19:11 +01:00
Fabio Manganiello
edddc90d73
Run register_service in a separate thread in `backend.http`.
...
The Zeroconf registration part may randomly get stuck, resulting in the
web server not being properly started.
It's therefore better to run the Zeroconf registration process
asynchronously, for it's not strictly required for the web server to
execute.
2023-01-01 13:16:46 +01:00
Fabio Manganiello
1c811a490f
Don't serialize children_ids in Entity.to_json()
...
Serializing both children_ids and parent_id can result in nasty
SQLAlchemy bugs, especially when handling objects that haven't been
flushed yet.
2023-01-01 12:47:15 +01:00
Fabio Manganiello
f9b6799a18
A more robust and scalable way of merging/handling the currentValue/targetValue duality in zwave.mqtt
2023-01-01 12:45:41 +01:00
Fabio Manganiello
0513339be7
Merge branch 'master' into 29-generic-entities-support
2022-12-20 23:06:19 +01:00
Fabio Manganiello
84ce31cab0
Bump version: 0.24.3 → 0.24.4
2022-12-20 23:05:42 +01:00
Fabio Manganiello
d0d333e8f4
FIX: Clear the cronjob event after receiving a TIME_SYNC.
...
When a cronjob receives a TIME_SYNC event (because the system clock has
changed/drifted and the cronjobs are expected to recalculate their next
run slot) it should also clear the event.
Otherwise, the next `wait` will be skipped and the cronjob will be
executed even if it wasn't scheduled.
2022-12-20 23:01:03 +01:00
Fabio Manganiello
2feaba7bf4
Add children_ids attribute to entities when converted to JSON
2022-12-18 21:03:12 +01:00
Fabio Manganiello
3615a269fe
Use Float instead of Numeric on NumericSensor table.
...
The Numeric type may have casting/rounding issues with SQLite.
2022-12-18 15:25:22 +01:00
Fabio Manganiello
5763c5e0ba
Don't use the entities cache when upserting entities.
...
This may make things a bit less optimal, but it's probably the only
possible solution that preserves my sanity.
Managing upserts of cached instances that were previously made transient
and expunged from the session is far from easy, and the management of
recursive parent/children relationships only add one more layer of
complexity (and that management is already complex enough in its current
implementation).
2022-12-18 15:13:21 +01:00
Fabio Manganiello
b0464219d3
Large refactor of the entities engine.
2022-12-17 21:41:23 +01:00
Fabio Manganiello
9ddebb920f
Merge branch 'master' into 29-generic-entities-support
2022-12-17 00:51:51 +01:00
Fabio Manganiello
6666f5581c
Bump version: 0.24.2 → 0.24.3
2022-12-17 00:31:22 +01:00
Fabio Manganiello
152ebdf737
[ #236 ] Added `author` and `tags` attributes to new feed entry event and schema objects.
2022-12-17 00:21:32 +01:00
Fabio Manganiello
b044fa4acf
s/disable_logging/logging_level/g on entity events.
2022-12-11 11:58:49 +01:00
Fabio Manganiello
2ee2a1d7b5
Replaced `disable_logging` with a more generic `logging_level`.
...
The `disable_logging` attribute was only available on events and
responses, and it could only either entirely disable or enable logging
for all the events of a certain type.
The new flag allows more customization by setting the default logging
level used for any message of a certain type (or `None` to disable
logging). This makes it possible to e.g. set some verbose events to
debug level, and the user can see them if they configure the application
in debug mode.
It also delegates the logging logic to the message itself, instead of
having different parts of the application handling their own logic.
2022-12-11 11:46:37 +01:00
Fabio Manganiello
d4b540dd67
Replaced `disable_logging` with a more generic `logging_level`.
...
The `disable_logging` attribute was only available on events and
responses, and it could only either entirely disable or enable logging
for all the events of a certain type.
The new flag allows more customization by setting the default logging
level used for any message of a certain type (or `None` to disable
logging). This makes it possible to e.g. set some verbose events to
debug level, and the user can see them if they configure the application
in debug mode.
It also delegates the logging logic to the message itself, instead of
having different parts of the application handling their own logic.
2022-12-11 11:39:38 +01:00
Fabio Manganiello
aa3479abeb
Added [-v|--verbose] and --version options to the command line.
2022-12-11 10:59:12 +01:00
Fabio Manganiello
a1d3724b8d
Added [-v|--verbose] and --version options to the command line.
2022-12-11 10:54:03 +01:00
Fabio Manganiello
cf9d34d38e
A more robust logic to parse `zwave.mqtt` value attributes.
2022-12-10 16:21:29 +01:00
Fabio Manganiello
c4f649a0d5
`autoflush` should be passed as an option to `db.get_session`.
2022-12-10 16:20:14 +01:00
Fabio Manganiello
6a2a3100f8
LINT fixes for `zwave.mqtt` backend
2022-12-10 16:16:23 +01:00
Fabio Manganiello
5a47308516
Merge branch 'master' into 29-generic-entities-support
2022-12-10 15:57:28 +01:00
Fabio Manganiello
4c8190ac14
Bump version: 0.24.1 → 0.24.2
2022-12-10 15:37:49 +01:00
Fabio Manganiello
6713bf6994
Fixed `backend.zwave` event logic dispatch for recent versions of ZWaveJS.
...
ZWaveJS has broken back-compatibility with zwavejs2mqtt when it comes to
events format.
Only a partial representation of the node and value objects is
forwarded, and that's often not sufficient to infer the full state of
the node with its values.
The `_dispatch_event` logic has therefore been modified to accommodate
both the implementation.
This means that we have to go conservative in order to preserve
back-compatibility and not over-complicate things, even if it (slightly)
comes at the expense of performance.
2022-12-10 15:35:09 +01:00
Fabio Manganiello
313105f014
Fixed `backend.zwave` event logic dispatch for recent versions of ZWaveJS.
...
ZWaveJS has broken back-compatibility with zwavejs2mqtt when it comes to
events format.
Only a partial representation of the node and value objects is
forwarded, and that's often not sufficient to infer the full state of
the node with its values.
The `_dispatch_event` logic has therefore been modified to accommodate
both the implementation.
This means that we have to go conservative in order to preserve
back-compatibility and not over-complicate things, even if it (slightly)
comes at the expense of performance.
2022-12-10 14:52:10 +01:00
Fabio Manganiello
219a0a99ca
`main.db` should use the configured `workdir` when not specified.
...
Closes : #234
Reviewed-On: #234
2022-12-09 23:37:10 +01:00
Fabio Manganiello
3b1147eaae
Bump version: 0.24.0 → 0.24.1
2022-12-08 12:33:34 +01:00
Fabio Manganiello
5ba3fa1b5b
FIX: Parenthesized context managers are only available in Python >= 3.10
...
Since Parenthesized context managers are only supported on very recent
versions of Python (thanks black for breaking back-compatibility), we
should still use the old multiline syntax - it's not worth breaking
compatibility with Python >= 3.6 and < 3.10 just to avoid typing a
backslash.
2022-12-08 12:28:36 +01:00
Fabio Manganiello
00fca6b187
Merge branch 'master' into 29-generic-entities-support
2022-12-04 20:58:06 +01:00
Fabio Manganiello
00a918dd20
Support for the new way of reporting events on ZWaveJS-UI.
...
The most recent versions of ZwaveJS-UI don't send the `hexId` of the
node on node change events. We have therefore to infer it from the
reported `dbLink`.
2022-12-04 20:56:52 +01:00
Fabio Manganiello
3a92bf59ca
Support for the new way of reporting events on ZWaveJS-UI.
...
The most recent versions of ZwaveJS-UI don't send the `hexId` of the
node on node change events. We have therefore to infer it from the
reported `dbLink`.
2022-12-04 20:48:42 +01:00
Fabio Manganiello
ecba72935f
Check for table metadata existance in `Base.metadata` instead of having a separate entity registry
2022-12-04 16:28:46 +01:00
Fabio Manganiello
1ab85f99d9
Support for illuminance sensor entities on `zigbee.mqtt`
2022-11-30 02:16:56 +01:00
Fabio Manganiello
09d70e2ff1
The `zwavejs2mqtt` project has been renamed `zwave-js-ui`
...
Change the documentation accordingly
2022-11-30 02:04:48 +01:00
Fabio Manganiello
b6370b51da
Extended humidity sensors detection for zigbee.mqtt
2022-11-30 01:24:35 +01:00
Fabio Manganiello
16c24d799d
Removed custom formatting for child zigbee/zwave entity names
...
The parent->child relationship is now modelled on the database itself,
so we no longer need value names specifically formatted as
`[DeviceName] ValueName` - the UI will take care of it.
2022-11-30 01:02:25 +01:00
Fabio Manganiello
080b21ab70
Added support for reachable flag on zwave.mqtt child entities
2022-11-30 01:01:45 +01:00
Fabio Manganiello
2b532c1947
Implemented parent/child support for zigbee.mqtt entities
2022-11-30 00:55:04 +01:00
Fabio Manganiello
abaeabea22
Implemented recursive merges of parent/child relationships in entities
2022-11-30 00:50:53 +01:00
Fabio Manganiello
cc156a53a1
Support for parent/children relationships on `zwave.mqtt` entities
2022-11-28 21:42:11 +01:00
Fabio Manganiello
0edd73690b
Modelling of parent/children relationships on entity level
2022-11-28 21:36:00 +01:00
Fabio Manganiello
0e0c90f0f2
zwave.mqtt additions
...
- Infer entity types on the basis of their semantic type (bool, decimal,
list) and read-only attribute (read-only bool is `BinarySensor`,
read-write bool is `Switch`, read-only decimal is `NumericSensor`,
read-write decimal is `Dimmer`, etc.) instead of trying to infer it
from the command class. Only a small set of command classes (like
configurations, vendor-specific or internal values) will be excluded.
This should greatly increase the number of supported values.
- Added support for `EnumSwitch` entities.
- Added inference for illuminance and humidity sensors.
2022-11-27 22:53:53 +01:00
Fabio Manganiello
78c59f437a
Added support for illuminance sensor entities
2022-11-27 22:38:58 +01:00
Fabio Manganiello
03d1c554ea
Updated webapp dist files
2022-11-27 14:23:30 +01:00
Fabio Manganiello
b1a7a7d915
Fixed little overlap between the entities' header and the navigator
2022-11-27 12:56:39 +01:00
Fabio Manganiello
b5653e070e
Style improvements for the main navigator
2022-11-27 12:56:17 +01:00
Fabio Manganiello
681f307d04
A more self-explanatory icon for entity grouping selections
2022-11-27 00:56:47 +01:00
Fabio Manganiello
bba582875a
The `data` attribute on `EntityUpdateEvent` shouldn't be taken into account for flashing updates
2022-11-27 00:56:23 +01:00
Fabio Manganiello
e8d6717fcb
Added input box for <Dimmer> entities
2022-11-27 00:56:01 +01:00
Fabio Manganiello
bd59a5eefd
Support for range labels on <Slider>
2022-11-27 00:55:19 +01:00
Fabio Manganiello
f8aaab20f5
Updated webapp dist files
2022-11-27 00:53:58 +01:00
Fabio Manganiello
faa8295469
White background for main nav
2022-11-26 01:52:42 +01:00
Fabio Manganiello
d29723ea41
Keep the main menu items vertically aligned to the center also on tablets
2022-11-26 01:28:20 +01:00
Fabio Manganiello
d0c8a8edf9
A bit of padding for LightHue on mobile
2022-11-26 01:19:52 +01:00
Fabio Manganiello
37254cad1a
Mobile UI improvements
2022-11-26 01:16:07 +01:00
Fabio Manganiello
f28f08dd1a
Keep the main menu open on page load by default on >= desktop
2022-11-26 01:15:03 +01:00
Fabio Manganiello
fecd96f64c
Solved issue with main menu shrinking a bit when the main panel has too much wide content
2022-11-26 00:32:11 +01:00
Fabio Manganiello
33cc055249
Switched expanded main menu to light colors
2022-11-26 00:31:36 +01:00
Fabio Manganiello
a57e67b96f
Better style for the settings' users and token panels
2022-11-25 23:16:16 +01:00
Fabio Manganiello
21c1c96f2e
Use Dropdown for the settings menu
2022-11-25 23:15:41 +01:00
Fabio Manganiello
292ed2abff
Better style for dropdown items.
...
- Larger icon div to prevent text overlapping with icons
- Support for `selected` class
2022-11-25 23:14:28 +01:00
Fabio Manganiello
73f6712f7a
Bump version: 0.23.6 → 0.24.0
2022-11-22 00:12:25 +01:00
Fabio Manganiello
c0dd91838b
Merge branch 'master' into 29-generic-entities-support
2022-11-21 22:13:47 +01:00
Fabio Manganiello
d95baac74e
Add user credentials on the encrypted JWT token.
...
Adding the credentials ensures that tokens associated to non-existing
users, or users with an invalid password, won't be accepted, even if
they were correctly encrypted using the host's keypair.
This adds an additional layer of security in case the host's keypair
gets compromised.
2022-11-21 13:16:09 +01:00
Fabio Manganiello
98d7c95aa7
Removed two unrequired `return` statements
2022-11-21 13:04:48 +01:00
Fabio Manganiello
ba1681fc22
Merge branch 'master' into 29-generic-entities-support
2022-11-21 12:36:01 +01:00
Fabio Manganiello
a2c8e27bd8
Removed PyJWT dependency.
...
PyJWT is a very brittle and cumbersome dependency that expects several
cryptography libraries to be already installed on the system, and it can
lead to hard-to-debug errors when ported to different systems.
Moreover, it installs the whole `cryptography` package, which is several
MBs in size, takes time to compile, and it requires a Rust compiler to
be present on the target machine.
Platypush will now use the Python-native `rsa` module to handle JWT
tokens.
2022-11-21 12:30:38 +01:00
Fabio Manganiello
02f89258b8
FIX: Task.set_name only works on Python >= 3.8
2022-11-21 09:49:57 +01:00
Fabio Manganiello
ae17a12c12
FIX: `UserManager.get_users`
...
`UserManager.get_users` should not return a reference to the query
object, since the query object will be invalidated as soon as the
connection is closed.
Instead, it should return directly the list of `User` objects.
2022-11-21 00:57:00 +01:00
Fabio Manganiello
e579fb3417
Don't display sensors with null value
2022-11-21 00:05:19 +01:00
Fabio Manganiello
b9e6614b04
Added support for `EnumSensor` entities
2022-11-21 00:04:07 +01:00
Fabio Manganiello
d171000a0e
Initial support for sensor entities in `zwave.mqtt`
2022-11-14 22:08:15 +01:00
Fabio Manganiello
a7bc4f443c
Imports order
2022-11-14 21:30:43 +01:00
Fabio Manganiello
45d0e4445b
Sorted entity type names
2022-11-14 00:46:58 +01:00
Fabio Manganiello
96ce4729f9
Updated webapp dist files
2022-11-14 00:46:40 +01:00
Fabio Manganiello
b7757d17cc
Updated webapp dist files
2022-11-14 00:06:41 +01:00
Fabio Manganiello
7fac5392b8
Blink entities only if their values have actually changed
2022-11-13 23:52:21 +01:00
Fabio Manganiello
211372e472
Added support for dimmers on `zigbee.mqtt`
2022-11-13 18:48:36 +01:00
Fabio Manganiello
833d908a32
Blink entities body upon update
2022-11-13 01:39:40 +01:00
Fabio Manganiello
24f5a8283c
Added `PRAGMA foreign_keys = ON` before deleting entities on SQLite
...
SQLite doesn't enable foreign keys cascade on delete by default.
2022-11-13 01:18:45 +01:00
Fabio Manganiello
f90d84a3d4
Don't wait for UI updates for entities that are not queriable
2022-11-13 00:54:37 +01:00
Fabio Manganiello
fb594cb8b1
Updated webapp dist files
2022-11-12 16:31:35 +01:00
Fabio Manganiello
69e097707d
Don't lock read session from the main database
2022-11-12 16:10:57 +01:00
Fabio Manganiello
86edd70d93
Fixed session/concurrency management on the main SQLite db
...
- The `declarative_base` instance should be shared
- Database `session_locks` should be stored at module, not instance
level
- Better isolation of scoped sessions
- Enclapsulated `get_session` method in `UserManager`
2022-11-12 15:36:17 +01:00
Fabio Manganiello
bfeb0a08c4
Encapsulate `_get_session` in `EntityManager`
2022-11-12 15:14:10 +01:00
Fabio Manganiello
8450129858
LINT fixes
2022-11-12 11:39:12 +01:00
Fabio Manganiello
8a894d0989
`user_manager` should be a global object instead of being initialized on-demand
2022-11-12 11:38:40 +01:00
Fabio Manganiello
6b7933cd33
Using a different SQLite database for entities
...
This prevents multiprocessing/concurrency issues when modifying the same
database file both from the main process and from the web server process
2022-11-12 02:00:55 +01:00
Fabio Manganiello
3fc94181b7
LINT fixes
2022-11-11 22:02:36 +01:00
Fabio Manganiello
26f869b6e4
LINT fixes
2022-11-11 21:49:38 +01:00
Fabio Manganiello
02a4c9f667
Added is_query_disabled attribute to entities
2022-11-11 20:40:36 +01:00
Fabio Manganiello
84bb77bd5b
Replaced ambiguous logger variable name
2022-11-11 20:37:39 +01:00
Fabio Manganiello
00a43dd1f8
Implemented `EnumSwitch` entity type
...
Done for `zigbee.mqtt`, other plugins will follow
2022-11-11 01:46:38 +01:00
Fabio Manganiello
801ed05684
Added support for binary sensors (in zigbee.mqtt for now)
2022-11-05 01:47:50 +01:00
Fabio Manganiello
6454f9d018
Propert snake case -> camel case conversion for backend entities -> frontend components
2022-11-04 22:53:24 +01:00
Fabio Manganiello
0f19104512
Improved zigbee.mqtt node property queries.
...
Now handling cases of nodes with values having multiple levels (> 1) of
nested properties.
2022-11-04 22:51:40 +01:00
Fabio Manganiello
5ca3c06f96
Normalize device names in set_lights
2022-11-02 23:32:21 +01:00
Fabio Manganiello
d5f8d55b4b
Fixed zigbee.mqtt light entity conversion
2022-11-02 23:07:12 +01:00
Fabio Manganiello
636d1ced3a
A more robust way of splitting devices provided in the <ieee_address:value> format
2022-11-02 22:49:19 +01:00
Fabio Manganiello
7db84acd34
Notify of entity scan timeouts on the console instead of creating tons of notifications
2022-11-02 22:24:06 +01:00
Fabio Manganiello
02abef71e3
Fixes for zigbee devices polling
...
- Don't publish a `get` request if the device has no exposed queriable
attributes.
- Perform the recursive build of the `get` request payload before
checking for the `access` attribute.
2022-11-02 21:54:47 +01:00
Fabio Manganiello
64513be6b8
Initial implementation of sensor entities.
...
Implemented (at least in `zigbee.mqtt`, for now):
- `TemperatureSensor`
- `HumiditySensor`
- `VoltageSensor`
- `CurrentSensor`
- `EnergySensor`
- `PowerSensor`
- `NumericSensor` (generic fallback 1)
- `RawSensor` (generic fallback 2)
- `Sensor` (root class)
2022-11-02 16:38:17 +01:00
Fabio Manganiello
440cd60d6e
A (slightly) smarter way to infer the plural spelling of singular entity names
2022-11-02 16:35:20 +01:00
Fabio Manganiello
3d1a08f7af
Changed default entity grouping on the frontend.
...
Changed from `type` to `category`, which is basically the `name_plural`
attribute of the associated entity type metadata.
This allows us to define distinct entity metadata entries that we still
want to share the same grouping - for instance, `temperature_sensor`,
`humidity_sensor` and `battery` should all be grouped under `Sensors` on
the frontend.
2022-11-02 16:33:12 +01:00
Fabio Manganiello
68dd09e8ae
Removed unused `expanded` data attribute
2022-11-02 16:31:50 +01:00
Fabio Manganiello
d7214c4c83
Fix for `No converter available` warnings on zigbee2mqtt
...
Only include readable (not state-only) properties on the payload sent to
to `zigbee2mqtt/<device>/get`.
2022-10-31 00:51:26 +01:00
Fabio Manganiello
a1cf671334
Added support for link_quality entities to `zigbee.mqtt`
2022-10-30 11:03:22 +01:00
Fabio Manganiello
78dc8416fb
Snake case -> camel case for backend -> frontend entity types conversion
2022-10-30 11:01:46 +01:00
Fabio Manganiello
691d109fb7
Expunge entities after session commit to ensure that the ORM objects can be reused
2022-10-30 11:00:09 +01:00
Fabio Manganiello
71ccf6d04a
Support for battery sensors on zigbee.mqtt
2022-10-29 18:16:38 +02:00
Fabio Manganiello
42651e937b
LINT fixes on zigbee.mqtt plugin
2022-10-29 14:09:44 +02:00
Fabio Manganiello
d61b053f72
Support for battery entities
2022-10-29 13:38:42 +02:00
Fabio Manganiello
cdacf50fc7
Support for decimal.Decimal type JSON serialization
2022-10-29 13:35:52 +02:00
Fabio Manganiello
b8215d2736
A more robust cron start logic
...
If may happen (usually because of a race condition) that a cronjob has
already been started, but it hasn't yet changed its status from IDLE to
RUNNING when the scheduler checks it.
This fix guards the application against such events. If they occur, we
should just report them and move on, not terminate the whole scheduler.
2022-10-27 10:45:59 +02:00
Fabio Manganiello
486cd66885
More LINTs
2022-10-23 21:23:19 +02:00
Fabio Manganiello
72c7444a45
LINT
2022-10-23 18:23:20 +02:00
Fabio Manganiello
951950c864
Added dimmer entities
2022-10-23 00:30:32 +02:00
Fabio Manganiello
d7278857e5
Ensure that no records with duplicate key exist within an SQLAlchemy session before flushing
2022-10-23 00:28:42 +02:00
Fabio Manganiello
3e6ebdd23b
Don't store/show the state of write-only toggle switches
2022-10-23 00:28:01 +02:00
Fabio Manganiello
8cd5cb3338
The Slider should only react to @input events
2022-10-23 00:26:59 +02:00
Fabio Manganiello
1af7ece881
Added deprecation notice for `zwave` plugin and backend (use `zwave.mqtt` instead)
2022-10-22 19:17:58 +02:00
Fabio Manganiello
5c68365188
Better management for entity error icons
2022-10-14 23:37:36 +02:00
Fabio Manganiello
7f575bacaa
Implemented the new zwavejs2mqtt features for adding and removing nodes
2022-10-14 23:28:02 +02:00
Fabio Manganiello
5995d045e1
Merge branch 'master' into 29-generic-entities-support
2022-10-14 20:57:13 +02:00
Fabio Manganiello
a5db599268
FIX: Skip empty lines on `config.include`
2022-10-14 20:56:18 +02:00
Fabio Manganiello
c89ed24f4b
Updated webapp dist files
2022-10-12 03:07:17 +02:00
Fabio Manganiello
1b791156bd
Proper support for color zigbee lights
2022-10-12 03:00:42 +02:00
Fabio Manganiello
e617fc75d4
Fixed slider ranges and label
2022-10-12 02:59:50 +02:00
Fabio Manganiello
041f64c80f
Dirty workaround to prevent redefinition of SQLAlchemy ORM model classes
2022-10-10 01:38:15 +02:00