Commit graph

337 commits

Author SHA1 Message Date
f9b0bc905e
Migrated websocket service.
The websocket service is no longer provided by a different service,
controlled by a different thread running on another port.

Instead, it's now exposed directly over Flask routes, using
WSGI+eventlet+simple_websocket.

Also, the SSL context options have been removed from `backend.http`, for
sake of simplicity. If you want to enable SSL, you can serve Platypush
through a reverse proxy like nginx.
2023-05-07 12:08:28 +02:00
3aefc9607d
Migrated from waitress to gunicorn.
`waitress`, unlike `gunicorn`, doesn't provide an easy way to plug into
a WSGI socket that can be used for the websocket interface.
2023-05-07 00:42:57 +02:00
285f3941d9
Always use an external uWSGI server to run the web service.
Added `waitress` dependency. For performance and security reasons, it's
better to always run the Flask application inside of a uWSGI server.

`waitress` also makes things easier by avoiding to ask the user to
manually provide the external executable arguments, as it was the case
with `uwsgi` and `gunicorn`.
2023-05-05 00:07:13 +02:00
91d1d33ab6
Exclude tests from pip installation. 2023-05-03 21:45:02 +02:00
12cca4991a
Fixed paths for Alembic's package_data. 2023-04-29 23:48:06 +02:00
78cee5d9b0
Added support for automatic database migrations.
Added Alembic environment and `run_db_migrations` logic to the entities
engine so database schema changes can be processed as soon as the
application is started.
2023-04-29 11:32:31 +02:00
87889142e0
Fixed compatibility with SQLAlchemy >= 2.0 in the db plugin. 2023-04-24 22:52:17 +02:00
2781eb1fb1
Merge branch 'master' into 29-generic-entities-support 2023-03-27 00:36:50 +02:00
7a368ebbb8
[#240] Migrated clipboard plugin from pyperclip to pyclip.
Closes: #240
2023-03-26 23:52:15 +02:00
f5d9895521
Added marshmallow_dataclass to the requirements. 2023-03-26 03:44:57 +02:00
2f49ddf33a
Fallback logic that uses DBus to disconnect from a BT device.
This logic will be used if the connection wasn't opened by the current
process and therefore a call to DBus is required to terminate it.
2023-03-24 01:57:05 +01:00
3743ee4f00
s/TheengsGateway/TheengsDecoder/g now that the pip package has been published. 2023-03-20 01:41:21 +01:00
2411b961e8
[WIP] Big, big refactor of the Bluetooth integration.
- Merged together Bluetooth legacy and BLE plugins and scanners.
- Introduced Theengs as a dependency to infer BLE device types and
  create sub-entities appropriately.
- Using `BluetoothDevice` and `BluetoothService` entities as the bread
  and butter for all the Bluetooth plugin's components.
- Using a shared cache of devices and services between the legacy and
  BLE integrations, with merging/coalescing logic included.
- Extended list of discoverable services to include all those officially
  supported by the Bluetooth specs.
- Instantiate a separate pool of workers to discover services.
- Refactor of the Bluetooth events - all of them are now instantiated
  from a single `BluetoothDevice` object.
2023-03-13 02:31:21 +01:00
7fa545d7f8
Merge branch 'master' into 29-generic-entities-support 2023-02-22 00:46:33 +01:00
c645ce6bb8
Bump version: 0.24.4 → 0.24.5 2023-02-22 00:32:57 +01:00
26d9aaa5b1
(Temporarily) specify sqlalchemy<2.0.0.
SQLAlchemy 2 has introduced several breaking changes that can break
several things in the application - especially where the code uses
`connection.execute()` with raw SQL statements.

We need to temporarily force the installation of versions from the 1.x
branch, while migrating the existing code to the new version.
2023-02-22 00:25:57 +01:00
613e32e7c1
Extended number of supported events and data fields in Bluetooth integration. 2023-02-18 01:15:10 +01:00
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
84ce31cab0
Bump version: 0.24.3 → 0.24.4 2022-12-20 23:05:42 +01:00
6666f5581c
Bump version: 0.24.2 → 0.24.3 2022-12-17 00:31:22 +01:00
4c8190ac14
Bump version: 0.24.1 → 0.24.2 2022-12-10 15:37:49 +01:00
3b1147eaae Bump version: 0.24.0 → 0.24.1 2022-12-08 12:33:34 +01:00
73f6712f7a
Bump version: 0.23.6 → 0.24.0 2022-11-22 00:12:25 +01:00
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
a0575ed6de
Bump version: 0.23.5 → 0.23.6 2022-09-19 20:41:02 +02:00
c2a3f2f4f3
Bump version: 0.23.4 → 0.23.5 2022-09-18 19:55:05 +02:00
e1aa214bad tidal-integration (#223)
Reviewed-on: platypush/platypush#223
2022-09-16 21:48:09 +02:00
6c6e68b512
Added support for OPML import and export in the RSS plugin.
[closes #219]
2022-09-02 00:21:40 +02:00
b11a0e8bbb
Bump version: 0.23.3 → 0.23.4 2022-08-28 15:27:54 +02:00
cbe2e7bbfe
[WIP] 2022-08-04 03:08:54 +02:00
b857ce60a7
Bump version: 0.23.2 → 0.23.3 2022-06-01 23:08:32 +02:00
fee5fc4ae0
HTTP backend dependencies moved from optional to required
If Platypush is supposed to work also without a manually created
`config.yaml`, and the HTTP backend is enabled by default in that
configuration, then Flask and companions should be among the required
dependencies.
2022-04-27 14:52:41 +02:00
2e33d3b3c5
Bump version: 0.23.1 → 0.23.2 2022-03-27 16:43:36 +02:00
7c9e9d284d
Bump version: 0.23.0 → 0.23.1 2022-03-01 12:50:31 +01:00
c0039c3f87
Bump version: 0.22.10 → 0.23.0 2022-03-01 01:33:43 +01:00
42ee149b95
Bump version: 0.22.9 → 0.22.10 2022-02-07 15:59:20 +01:00
1038090ffd
LINT fixes 2022-02-07 15:51:12 +01:00
786286eac6
Refactored D-Bus integration
- Added ability to listen for signals
- Improved introspection output
- `dbus` plugin and backend have now been merged
- Migrated from `dbus` to `pydbus`
2022-02-07 15:45:43 +01:00
833e1c49be
Bump version: 0.22.8 → 0.22.9 2022-01-06 14:08:55 +01:00
3e4b91cd6c
Removed pytz dependency 2022-01-05 18:04:32 +01:00
081da3eb84
Bump version: 0.22.7 → 0.22.8 2021-12-13 21:21:42 +01:00
6df9cbcf3c
Bump version: 0.22.6 → 0.22.7 2021-12-13 20:47:50 +01:00
fa708663e1
Replaced command-line uwsgi wrapper in the backend.http docs with gunicorn
gunicorn makes it easier to set up a uWSGI wrapper
around the web application, and it's easier to
install and document than handling uwsgi as an
external system dependency.
2021-12-11 22:44:00 +01:00
f74ca28382
Bump version: 0.22.5 → 0.22.6 2021-11-27 10:56:28 +01:00
adb9672989
Bump version: 0.22.4 → 0.22.5 2021-11-15 00:12:42 +01:00
d7b273434b
[#203] Added IRC integration 2021-11-14 19:43:19 +01:00
3ef602cc0b
Fixed typo in AVS repo URL [closes #204] 2021-11-07 11:45:04 +01:00
6c0a8bf259
Bump version: 0.22.3 → 0.22.4 2021-10-19 23:30:25 +02:00
d844890ab2 Bump version: 0.22.2 → 0.22.3 2021-10-01 23:53:05 +02:00
c12c83b386 Bump version: 0.22.1 → 0.22.2 2021-09-25 12:54:01 +02:00
68831e9e81 [#196] Added ngrok integration 2021-09-25 01:34:45 +02:00
cb0638fe19 Bump version: 0.22.0 → 0.22.1 2021-09-22 00:29:03 +02:00
a2f5755496 Bump version: 0.21.4 → 0.22.0 2021-09-16 23:28:39 +02:00
3bfc5b83ef Moved to manifest files for describing plugins and backends and their dependencies 2021-09-16 17:53:40 +02:00
ac0dd95bcc Bump version: 0.21.3 → 0.21.4 2021-08-24 23:01:45 +02:00
d086da64f6 Bump version: 0.21.2 → 0.21.3 2021-07-28 01:09:27 +02:00
47228f2432 Bump version: 0.21.1 → 0.21.2 2021-07-20 01:36:59 +02:00
0762004838 Bump version: 0.21.0 → 0.21.1 2021-06-22 23:40:53 +02:00
acc4f1c0e3 Added PCA9685 PWM driver plugin 2021-05-16 17:29:03 +02:00
69583d2e15 Added support for Marshmallow schemas in responses 2021-05-10 18:42:13 +02:00
5ca15937e3 Bump version: 0.20.10 → 0.21.0 2021-05-06 23:21:11 +02:00
9fa3385766 Bump version: 0.20.9 → 0.20.10 2021-04-28 23:06:14 +02:00
b9bc4b5fe0 Bump version: 0.20.8 → 0.20.9 2021-04-12 02:48:30 +02:00
86761e7088 Bump version: 0.20.7 → 0.20.8 2021-04-04 00:15:11 +02:00
99831bf0c7 Fix compatibility with all versions of websocket-client, regardless of the list of arguments required by the callbacks (either ws as a first argument or not) 2021-04-02 19:27:25 +02:00
eb486df1ee Bump version: 0.20.6 → 0.20.7 2021-03-26 23:09:33 +01:00
c74d2fb124 Bump version: 0.20.5 → 0.20.6 2021-03-16 21:33:08 +01:00
352d421e61 Added file.monitor backend [closes #172]
The file.monitor backend leverages watchdog instead of the Linux-only
inotify API and it replaces the inotify backend.
2021-03-14 00:08:20 +01:00
6f224cbda9 Removed legacy "local" backend and pusher script 2021-03-13 01:52:15 +01:00
96588df83b Bump version: 0.20.4 → 0.20.5 2021-03-12 01:40:03 +01:00
71af6e87e0 Bump version: 0.20.3 → 0.20.4 2021-03-08 01:51:39 +01:00
4ada1c663d Added SmartThings plugin [#148] 2021-03-05 02:23:28 +01:00
66c1e59c61 Bump version: 0.20.2 → 0.20.3 2021-02-28 23:48:34 +01:00
708ce210ba Added missing vlc requirements 2021-02-28 01:09:35 +01:00
d0707b6479 Bump version: 0.20.1 → 0.20.2 2021-02-27 21:27:37 +01:00
cde5e4e4f9 Bump version: 0.20.0 → 0.20.1 2021-02-27 15:01:38 +01:00
61c5bae527 Bump version: 0.13.9 → 0.20.0 2021-02-24 22:41:16 +01:00
b3c28f6773 Added support for JWT token-based authentication 2021-02-12 22:43:34 +01:00
23a5cd519a Merge branch 'master' into vuejs 2021-02-05 23:18:31 +01:00
b57a241f52 Changed base URL to platypush.tech 2021-02-05 23:18:18 +01:00
269000ab85 Merge branch 'master' into vuejs 2021-02-02 22:18:07 +01:00
fca0c2265c Added extra alias "snowboy" for "hotword" 2021-01-31 12:42:02 +01:00
8e2d590e62 Merge branch 'master' into vuejs 2021-01-23 15:06:14 +01:00
e2e7011e53 s/github.com/git.platypush.tech/g 2021-01-23 15:03:43 +01:00
Fabio Manganiello
7a7e00bea2 Migrated music.snapcast UI 2021-01-22 01:00:49 +01:00
Fabio Manganiello
04cb2324aa Removed dashboard configuration from HttpBackend, removed old HTTP
static files and replaced them with Vue app target dist/ directory.
2020-11-26 11:54:28 +01:00
Fabio Manganiello
ba8e5ef6a0 Fixed croniter timezone offset logic mismatch 2020-11-21 01:38:07 +01:00
Fabio Manganiello
9dacd2d3c9 Fixed croniter timezone offset logic mismatch 2020-11-21 01:36:37 +01:00
Fabio Manganiello
0c0e7411f7 Bump version: 0.13.8 → 0.13.9 2020-11-11 22:31:47 +01:00
Fabio Manganiello
43f71ed47b Bump version: 0.13.7 → 0.13.8 2020-11-10 22:55:03 +01:00
Fabio Manganiello
8279f22940 Bump version: 0.13.6 → 0.13.7 2020-10-13 23:26:13 +02:00
Fabio Manganiello
0a9c4fc3a7 Added GStreamer camera plugin [relates to #151] 2020-09-28 22:10:56 +02:00
Fabio Manganiello
d92e630314 Bump version: 0.13.5 → 0.13.6 2020-09-27 17:20:51 +02:00
Fabio Manganiello
09f9e974b1 Camera plugins refactor 2020-09-25 17:19:43 +02:00
Fabio Manganiello
c0f7cc0782 Added NextCloud integration [closes #149] 2020-09-10 11:10:26 +02:00
Fabio Manganiello
d27b23ec5a Bump version: 0.13.4 → 0.13.5 2020-09-03 17:17:47 +02:00
Fabio Manganiello
1681f80728 Added IMAP plugin and generic mail check backend [links to #146] 2020-08-31 15:33:03 +02:00
Fabio Manganiello
af614480b8 Added LCD display integration (closes #145) 2020-08-23 20:00:08 +01:00
Fabio Manganiello
6bed284e8b Added DHT temperature/humidity sensor integration [closes #113] 2020-08-22 23:46:21 +01:00
Fabio Manganiello
f54a5cdf87 Minimum required Python version bumped (3.5->3.6) and readthedocs Python interpreter upgraded (3.6->3.7). 2020-08-22 15:28:52 +02:00