Commit graph

2957 commits

Author SHA1 Message Date
Fabio Manganiello 89d85baa6d
Support for implicit serialization of Enum values in JSONAble. 2023-03-26 03:43:04 +02:00
Fabio Manganiello a71017df33
Updated web app files 2023-03-24 16:45:55 +01:00
Fabio Manganiello 567e9d4e21
Removed legacy bluetooth backends.
No replacements have been made for the OBEX backends (push and file
services). PyOBEX is too broken and unmaintained, and there are too many
poorly documented steps required to get an unprivileged user to run an
SDP service.
2023-03-24 16:41:30 +01:00
Fabio Manganiello 3c355352c5
Using the new StoppableThread API. 2023-03-24 16:39:30 +01:00
Fabio Manganiello 5ebf4e912e
Added wait_stop and shoud_stop methods to StoppableThread. 2023-03-24 16:05:18 +01:00
Fabio Manganiello 998793e94f
Added OBEX_FILE_TRANSFER constant to directory stub. 2023-03-24 15:41:20 +01:00
Fabio Manganiello 4b4db5b3c7
Added StoppableThread common interface. 2023-03-24 15:40:16 +01:00
Fabio Manganiello 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
Fabio Manganiello 913ef6f8cd
Refresh BluetoothDevice.reachable when a device is found/lost. 2023-03-24 01:56:19 +01:00
Fabio Manganiello d46d4e2300
Added support for Bluetooth devices blacklist.
Based on device address, name or manufacturer.
2023-03-24 01:52:39 +01:00
Fabio Manganiello 0cebcf4f9b
switchbot.bluetooth integration migrated to a bluetooth plugin. 2023-03-23 17:46:54 +01:00
Fabio Manganiello 4fac110bb8
Added bluetooth.set method, whose execution is delegated to the plugins. 2023-03-23 17:45:02 +01:00
Fabio Manganiello cd219f44c4
Pass the list of plugins when creating Bluetooth managers. 2023-03-23 17:42:16 +01:00
Fabio Manganiello 43289a3b55
Scan always at least for 10 seconds before failing on get_device. 2023-03-23 17:41:37 +01:00
Fabio Manganiello 6267943786
Wrap BleakError exceptions into AssertionError. 2023-03-23 17:40:30 +01:00
Fabio Manganiello d6805a8b18
Added support for custom Bluetooth device plugins. 2023-03-23 17:10:37 +01:00
Fabio Manganiello af125347d6
If no matching services are found when connecting to a device, default to BLEManager.
GATT characteristics are not necessarily exposed as services.
2023-03-23 13:00:26 +01:00
Fabio Manganiello d1cd6dd2af
get_plugin with reload=True should stop the existing plugin if it's running 2023-03-23 01:11:54 +01:00
Fabio Manganiello a2a5fce6cb
Added Apple Continuity to the list of blacklisted manufacturers/models 2023-03-22 22:55:19 +01:00
Fabio Manganiello e71c312133
Always read an entity's parent through get_parent when climbing up.
This should avoid the risk of `DetachedInstanceError` by retrieving the
object into the session if it's not available.
2023-03-22 22:41:09 +01:00
Fabio Manganiello 5c23d3aa87
metadata and rssi fields on BLEDevice have been deprecated.
Changed the BLE beacon parsing logic to read those fields from
`AdvertisementData` instead of `BLEDevice`.
2023-03-22 22:39:01 +01:00
Fabio Manganiello 65bc3ae06d
Noisy beacons device configuration should look both at manufacturer and model. 2023-03-22 22:37:46 +01:00
Fabio Manganiello f49b866a51
Focus the <input> element when a <NameEditor> element is created. 2023-03-22 21:28:21 +01:00
Fabio Manganiello dd80dc998c
Show entity icon and type in the list of children entities on EntityModal. 2023-03-22 21:26:59 +01:00
Fabio Manganiello 239dd17f23
Exclude from the list of display children on EntityModal those with no name or that are configuration values. 2023-03-22 16:38:38 +01:00
Fabio Manganiello e10bec88c0
Noisy beacons logging trace moved from info to debug. 2023-03-22 16:31:57 +01:00
Fabio Manganiello 5dd95362a1
Include links both to the parent and children entities in EntityModal. 2023-03-22 16:20:29 +01:00
Fabio Manganiello 99cfd247a5
A more effective logic to exclude noisy BLE beacons.
This includes BLE beacons sent from all Google/Apple/Microsoft/Samsung
beacon networks in all of their variants.
2023-03-22 15:35:02 +01:00
Fabio Manganiello 01d323fad0
Passing a boolean exclude_known_noisy_beacons to bluetooth plugin.
The logic to exclude BLE beacons from randomized devices needs to be a
bit more granular and not limited only to the reported device
manufacturer.
2023-03-22 15:29:19 +01:00
Fabio Manganiello f6e09d34e4
A more clever logic of parsing the manufacturer for BLE devices.
1. Check the manufacturer parsed via Bleak/Theengs
2. Check the MAC address prefix in the oui numbers table
3. Check from the reported `manufacturer_data`
2023-03-22 14:16:00 +01:00
Fabio Manganiello f7e8cfe5a7
Don't include unit in BLE sensors when they are matched against the native type.
It's likely to just include the native type name anyway.
2023-03-22 14:14:59 +01:00
Fabio Manganiello 486f37a45e
Support sensor value reported both on value as well as _value fields. 2023-03-22 14:11:13 +01:00
Fabio Manganiello bfc87e0f7b
Display arrays and objects in the entity modal as prettified JSON. 2023-03-22 13:50:35 +01:00
Fabio Manganiello c750d83188
Prevent name collisions on bluetooth.ServiceClass. 2023-03-22 03:27:25 +01:00
Fabio Manganiello 174b1ee6a9
Use a default list of excluded Bluetooth manufacturers. 2023-03-21 16:03:01 +01:00
Fabio Manganiello e9abb5cb9a
Implemented support for child entities in entity modals. 2023-03-21 16:02:02 +01:00
Fabio Manganiello b1cb7ef847
Added a list of excluded_manufacturers to BluetoothPlugin. 2023-03-21 14:32:45 +01:00
Fabio Manganiello 718e0434ba
Display all available entity attributes on EntityModal. 2023-03-20 14:32:03 +01:00
Fabio Manganiello 78bbe71be1
Another .pull-right fix. 2023-03-20 02:04:32 +01:00
Fabio Manganiello 3743ee4f00
s/TheengsGateway/TheengsDecoder/g now that the pip package has been published. 2023-03-20 01:41:21 +01:00
Fabio Manganiello 431dedf3eb
BluetoothDevice moved to its own component, with device connect support. 2023-03-20 01:28:12 +01:00
Fabio Manganiello 0a4b22c12e
Implemented connect/disconnect call on BluetoothService component. 2023-03-20 01:27:47 +01:00
Fabio Manganiello 714f853751
Pass the list of children to the entity component. 2023-03-20 01:27:21 +01:00
Fabio Manganiello a011de890b
Better .pull-right class implementation. 2023-03-20 01:26:48 +01:00
Fabio Manganiello 2b5596820b
Made Types.objectsEqual method more robust against null input 2023-03-19 22:50:23 +01:00
Fabio Manganiello 71a3481560
Better style for the sidebar/nav 2023-03-19 22:23:37 +01:00
Fabio Manganiello 12096f2dbe
Don't fail hard when device disconnection fails. 2023-03-19 12:56:53 +01:00
Fabio Manganiello 40f81b105f
Set the connected flag when connecting/disconnecting from a service. 2023-03-19 12:56:31 +01:00
Fabio Manganiello 9d66b63266
BluetoothService attributes fixes.
BluetoothService IDs should always be in the format `address::uuid` and
the name should always be in title format.
2023-03-19 12:55:14 +01:00
Fabio Manganiello 6e9263c4e4
A more elegant logic to infer the manufacturer name. 2023-03-19 12:54:52 +01:00