Skip to content

Commit

Permalink
Markdown linting
Browse files Browse the repository at this point in the history
  • Loading branch information
kennymc-c committed Oct 3, 2024
1 parent 5e8357b commit 1e627ab
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 36 deletions.
50 changes: 26 additions & 24 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,111 +7,113 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## Unreleased

*Changes in the next release*
_Changes in the next release_

## [0.7.0-beta] - 2024-09-20

### Breaking changes

- **🎉 This integration can now also run on the remote as a custom integration driver. From now on each release will have a tar.gz file attached that can be installed on the remote** (see [Run on the remote](/README.md#Run-on-the-remote-as-a-custom-integration-driver))
- ⚠️ Running custom integrations on the remote is currently only available in beta firmware releases and requires version 1.9.2 or newer. Please keep in mind that due to the beta status there are missing firmware features that require workarounds (see link above) and that changes in future beta updates may temporarily or permanently break the functionality of this integration as a custom integration. Please wait until custom integrations are available in stable firmware releases if you don't want to take these risks.
- When running as an external integration driver the working directory when starting driver.py should now be the root of the repository. The path in docker-entry.sh has been adjusted. The configuration json file is therefore now created in the root of the integration directory. Existing users have to move config.json from the intg-sonysdcp directory

### Added

- Add build.yml Github action to automatically build a self-contained binary of the integration and create a release draft with the current driver version as a tag/name

### Changed

- Deactivate the attributes poller task when the integration runs on the remote as a custom integration driver.
- The reason for this is to reduce battery consumption and save cpu/memory usage. Also this function is just needed if you control the projector alternating with a second device. In a future release this setting may also be adjustable in the integration setup.
- Due to the custom integration upload feature setup.json has been renamed to driver.json and moved to the root of the repository
- Corrected the semantic version scheme in driver.json (x.x to x.x.x)



## [0.6-beta] - 2024-05-11

### Added

- Added IP auto discovery. Just leave the ip text field empty in the setup process

### Changed

- No need to change the default SDAP advertisement interval anymore on the projector as the query function is now running asynchronously in a separate thread

### Fixed
- Replaced a variable reference log warning message with a clearer error description. This message appears if attributes of an entity should be updated that the remote has not yet subscribed to, e.g. shortly after the integration setup has been completed or if the integration configuration has been deleted just on the remote side.


- Replaced a variable reference log warning message with a clearer error description. This message appears if attributes of an entity should be updated that the remote has not yet subscribed to, e.g. shortly after the integration setup has been completed or if the integration configuration has been deleted just on the remote side.

## [0.5-beta] - 2024-05-05

### Changed

- Only update attribute if it differs from the value stored on the remote

### Fixed
- Fixed attributes poller not running due to a check against an API function that has not been implemented in the remote core (get_configured_entities)


- Fixed attributes poller not running due to a check against an API function that has not been implemented in the remote core (get_configured_entities)

## [0.4-beta] - 2024-05-03

### Added

- Added new simple commands for Motionflow, HDR, 2D/3D conversion & format, lamp control, input lag reduction & menu position
- Added attributes poller function that checks all available integration attributes of the projector every 20 seconds by default. The interval can be changed in config.py. Set to 0 to deactivate this function.
- Added runtime storage to reduce config file access load
- Added missing SDCP error response messages in protocol.py

### Changed
- The CURSOR_LEFT command has been mapped to the back command on the remote as in most cases this has the same function as a typical back command that the projector doesn't have


- The CURSOR_LEFT command has been mapped to the back command on the remote as in most cases this has the same function as a typical back command that the projector doesn't have

## [0.3-beta] - 2024-04-17

### Added

- Show pySDCP exception messages in log
- Show SDCP error response message according to Sony's documentation instead of just the error code

### Changed

- Split up setup flow and media player into separate files
- Optimize SDAP setup flow



## [0.2-beta] - 2024-04-04

### Breaking Changes

- Generate entity name from projector model name and entity id from model and serial number.
- **This requires existing users to remove the integration on the remote, restart the integration and then run the setup process again. In existing activities/macros the old entity has to be removed and replaced by the new entity. Button mappings and on/off sequences have to be updated as well**
- Note: The projector sends data only **every 30 seconds** by default and the interval should therefore be shortened to a minimum of 10 seconds in the web interface of the projector under _Setup/Advanced Menu/Advertisement/Interval_ to avoid timeouts to the remote and the integration. Otherwise the websocket connection to the remote could be reset if data is returned to slow to the integration which results in a spinning wheel in the setup flow.

### Added

- Optimize setup workflow and add a setup complete flag to config.json
- Use logging module instead of print()

### Fixed

- Added a missing comma that was causing two simple commands to show as a single command
- Fixed a naming problem for picture presets
- Corrected minimum WS Core API version in setup.json to 0.24.3. Previous version was a REST API version number



## [0.1-beta] - 2024-03-24

### Added

- Added Media Player entity
- Features:
- ON_OFF, TOGGLE, MUTE, UNMUTE, MUTE_TOGGLE, DPAD, HOME, SELECT_SOURCE
- Attributes:
- STATE, MUTED, SOURCE, SOURCE_LIST
- Options:
- SIMPLE_COMMANDS
- LENS_SHIFT_UP, LENS_SHIFT_DOWN, LENS_SHIFT_LEFT, LENS_SHIFT_RIGHT, LENS_FOCUS_FAR, LENS_FOCUS_NEAR, LENS_ZOOM_LARGE, LENS_ZOOM_SMALL
- MODE_ASPECT_RATIO_NORMAL, MODE_ASPECT_RATIO_V_STRETCH, MODE_ASPECT_RATIO_ZOOM_1_85, MODE_ASPECT_RATIO_ZOOM_2_35, MODE_ASPECT_RATIO_STRETCH, MODE_ASPECT_RATIO_SQUEEZE
- MODE_PRESET_CINEMA_FILM_1, MODE_PRESET_CINEMA_FILM_2, MODE_PRESET_REF, MODE_PRESET_TV, MODE_PRESET_PHOTO, MODE_PRESET_GAME, MODE_PRESET_RIGHT_CINEMA, MODE_PRESET_BRIGHT_TV, MODE_PRESET_USER
- Features:
- ON_OFF, TOGGLE, MUTE, UNMUTE, MUTE_TOGGLE, DPAD, HOME, SELECT_SOURCE
- Attributes:
- STATE, MUTED, SOURCE, SOURCE_LIST
- Options:
- SIMPLE_COMMANDS
- LENS_SHIFT_UP, LENS_SHIFT_DOWN, LENS_SHIFT_LEFT, LENS_SHIFT_RIGHT, LENS_FOCUS_FAR, LENS_FOCUS_NEAR, LENS_ZOOM_LARGE, LENS_ZOOM_SMALL
- MODE_ASPECT_RATIO_NORMAL, MODE_ASPECT_RATIO_V_STRETCH, MODE_ASPECT_RATIO_ZOOM_1_85, MODE_ASPECT_RATIO_ZOOM_2_35, MODE_ASPECT_RATIO_STRETCH, MODE_ASPECT_RATIO_SQUEEZE
- MODE_PRESET_CINEMA_FILM_1, MODE_PRESET_CINEMA_FILM_2, MODE_PRESET_REF, MODE_PRESET_TV, MODE_PRESET_PHOTO, MODE_PRESET_GAME, MODE_PRESET_RIGHT_CINEMA, MODE_PRESET_BRIGHT_TV, MODE_PRESET_USER
- Added subscribe/unsubscribe, connect/disconnect and enter/exit standby event handlers
- Added infos to README.md
- Added requirements.txt and CHANGELOG.md


### Removed

- Removed alpha test button entity
Expand Down
25 changes: 13 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# Sony Projector integration for Unfolded Circle Remote Devices

## ⚠️ WARNING ⚠️
## ⚠️ Disclaimer ⚠️

### Disclaimer: This software may contain bugs that could affect system stability. Please use it at your own risk!
This software may contain bugs that could affect system stability. Please use it at your own risk!

##

Expand All @@ -11,7 +11,7 @@ Integration for Unfolded Circle Remote Devices running [Unfolded OS](https://www
Using [uc-integration-api](https://github.com/aitatoi/integration-python-library)
and a modified and extended version of [pySDCP](https://github.com/Galala7/pySDCP) that is included in this repository.

### Supported commands:
### Supported commands

- Turn On/Off/Toggle
- Mute/Unmute/Toggle
Expand Down Expand Up @@ -50,9 +50,9 @@ and a modified and extended version of [pySDCP](https://github.com/Galala7/pySDC
\** _May not work work with all video signals. Please refer to Sony's user manual_ \
\*** _May not work on certain projector models that do not support this mode/feature. Please refer to Sony's user manual_

_If a command can't be processed or applied by the projector this will result in a bad request error on the remote. The response error message from the projector is shown in the integration log_
If a command can't be processed or applied by the projector this will result in a bad request error on the remote. The response error message from the projector is shown in the integration log

### Supported attributes:
### Supported attributes

- State (On, Off, Unknown)
- Muted (True, False)
Expand All @@ -61,18 +61,18 @@ _If a command can't be processed or applied by the projector this will result in

By default the integration checks the status of all attributes every 20 seconds. The interval can be changed in config.py. Set it to 0 to deactivate this function.

### Planned features:
### Planned features

- Picture position and advanced iris commands (needs testers as I only own a VPL-VW-270 that doesn't support lens memory and iris control)
- Additional sensor entity to show the lamp time
- Additional remote entity to automatically map all commands to buttons and the ui grid
- Configure poller interval, SDCP & SDAP ports and PJTalk community in an advanced setup

* Additional smaller planned improvements are labeled with #TODO in the code*
Additional smaller planned improvements are labeled with #TODO in the code

### Known supported projectors

*According to pySDCP and/or personal testing.*
_According to pySDCP and/or personal testing._

- VPL-HW65ES
- VPL-VW100
Expand All @@ -88,15 +88,15 @@ By default the integration checks the status of all attributes every 20 seconds.
- VPL-VW528
- VPL-VW665

*Please inform me if you have a projector that is not on this list and it works with pySDCP or this integration*
Please inform me if you have a projector that is not on this list and it works with pySDCP or this integration

## Usage

### Projector Setup

#### Activate SDCP/PJTalk

Open the projectors web interface and go to _Setup/Advanced Menu (left menu)/PJTalk_, activate the *Start PJ Talk Service* checkbox and click on _Apply_.
Open the projectors web interface and go to _Setup/Advanced Menu (left menu)/PJTalk_, activate the _Start PJ Talk Service_ checkbox and click on _Apply_.

![webinterface](webinterface.png)

Expand All @@ -123,7 +123,7 @@ Download the uc-intg-sonysdcp-x.x.x-aarch64.tar.gz archive in the assets section

#### Install custom integration driver on the remote

The custom integration driver installation is currently only possible via the Core API.
The custom integration driver installation is currently only possible via the Core API.

```shell
curl --location 'http://$IP/api/intg/install' \
Expand All @@ -135,7 +135,7 @@ There is also a Core API GUI available at https://[Remote-IP]/doc/core-rest/. Sc

UC plans to integrate the upload function to the web configurator once they get enough positive feedback from developers (and users). The current status can be tracked in this issue: [#79](https://github.com/unfoldedcircle/feature-and-bug-tracker/issues/79).

### Run on a separate device as an external integration
### Run on a separate device as an external integration

#### Bare metal/VM

Expand Down Expand Up @@ -178,6 +178,7 @@ For Python based integrations Unfolded Circle recommends to use `pyinstaller` to
First we need to compile the driver on the target architecture because `pyinstaller` does not support cross compilation.

The `--onefile` option to create a one-file bundled executable should be avoided:

- Higher startup cost, since the wrapper binary must first extract the archive.
- Files are extracted to the /tmp directory on the device, which is an in-memory filesystem.
This will further reduce the available memory for the integration drivers!
Expand Down

0 comments on commit 1e627ab

Please sign in to comment.