Library to interface with the old CC880p Bosch COntrol Panels
Project description
Bosch Control Panel CC880P
Library to interface with the old CC880P Bosch Alarm Control Panels
Explore the docs »
View Demo
·
Report Bug
·
Request Feature
Table of Contents
About the Project
The Reason Behind
The reason behind the the development of this library, was the need turn the old Bosch Control Panel into a smart device without the need to replace it.
Home Assistant is the home automation I use, and I wanted to integrate also the Bosch control panel into it.
Because there wasn't any integration I could use for that purpose, I decided to implement the library myself and use it as dependency for the custom component bosch_control_panel_cc880 also developed by me for Home Assistant.
Interface
Thanks to this webpage, it was possible to figure out that the interface with the control panel can be done through the UART accessible through the auxiliary module pins (see the UART Pinout). As mentioned in the website, it is possible to completely replace the direct link cable usually needed to configure the control panel through the computer using the A Link Plus software.
Wiring
To sniff and decode the packets supported by the control panel, it was followed the wiring as in the following diagram:
The information about A-Link Plus can be found here. The USB-TTL converter can be a device similar to this.
To make the alarm remotely accessible, it was used a TCP/IP to UART bridge. The current and tested solution was wired as following:
The library bosch-control-panel-cc880p
is part of this repository.
The ESP8266
represents any device using that chip such as ESP1.
Note that it should be flashed with a software like ESP-Link to create a bridge between TCP/IP and UART.
Since ESP1
operates at 3.3V
and CC880P
control panel operates at 5V
, there's the need to use a level shifter, or something similar (see this site for examples).
A better solution would be wiring the system as the diagram below:
Using a device like Elfin-EW10 would prevent the usage of level shifter as it also operates at 5V
, as well as remove the need to flash any firmware as the device already provides everything needed.
UART Pinout and Configuration
The pinout of the CC880P
control panel is:
TX
: Auxiliary ModulePin3
(Note: The website describes thePin7
by mistake)RX
: Auxiliary ModulePin7
(Note: The website describes thePin3
by mistake)GND
: Auxiliary ModulePin4
VCC(5V)
: Auxiliary ModulePin6
The baud rate the control panel operates is 300
.
Protocol
Since there was no information about the protocol used to send commands to the control panel and receive the corresponding responses, the approach was to connect the control panel using the A Link Plus and then sniff and decode the packets being transferred back and forth. the following steps were followed:
- Wiring (see Wiring chapter)
- Execute the A Link Plus and connect the Alarm (see A Link Plus manual here)
- Monitor and decode the packets (using a software similar to this )
The result is presented in the frames section.
Frames
Below are presented the decoded frames that are used by this library so far:
Send Keys Command
Command used to send keys to the control panel simulating the pressing of the keypad keys.
'Send Keys' Command
C0 <k1> <k2> <k3> <k4> <k5> <k6> <k7> <area> <nKeys> <crc>
Byte Identifier Comments
-------------------------------------------------------------------------------
1 C0 Hexadecimal representation of the 'Send Key' command
2-8 k<n> Each byte is represents the key of the keypad. Can be sent
from 1 up to 7 keys in a single command
Note: Because it was not possible to determine the
checksum algorithm, the keys can only be sent one at a
time. Below is the list of the frames corresponding to
all the keys available:
'0': 0C 00 00 00 00 00 00 00 00 01 16
'1': 0C 01 00 00 00 00 00 00 00 01 16
'2': 0C 02 00 00 00 00 00 00 00 01 17
'3': 0C 03 00 00 00 00 00 00 00 01 19
'4': 0C 04 00 00 00 00 00 00 00 01 19
'5': 0C 05 00 00 00 00 00 00 00 01 1B
'6': 0C 06 00 00 00 00 00 00 00 01 1C
'7': 0C 07 00 00 00 00 00 00 00 01 1C
'8': 0C 08 00 00 00 00 00 00 00 01 1D
'9': 0C 09 00 00 00 00 00 00 00 01 1F
'#': 0C 1A 00 00 00 00 00 00 00 01 2F
'*': 0C 1B 00 00 00 00 00 00 00 01 31
9 area If the alarm is configured to have multiple areas, then
this byte identifies the target area that the key(s)
will be sent to. Otherwise set it to '00'.
10 nKeys Number of keys being sent in this command
11 crc Frame checksum
Note: The checksum is not recognized so far, and thus
it should be manually set
Get Status Command
Command used to request the overall status of the control panel.
After sending this command is expected the control panel to answer with the Get Status Response
.
'Get Status' Command
01 00 00 00 91 30 19 0F 00 00 F1
Byte Identifier Comments
----------------------------
1 01 Hexadecimal representation of the 'Get Status' command.
2-10 XX The meaning of those bytes are unknown, and thus should be
always sent shown above.
11 F1 Frame Checksum. Since the checksum algorithm is unknown and
this bytes of this command have always the same value,
the checksum value should always be 'F1'
Get Status Response
Response of Get Status Command
. This frame contains all the relevant information about the status of the control panel.
'Get Status' Response
04 34 <out> <zone> <zone> XX XX XX XX <area> <siren>
Byte Identifier Comments
----------------------------
1-2 04 34 : Hexadecimal representation of the 'Get Status' response
3 out : Each bit set indicates whether an output is on.
Maximum number of outputs is 6.
Bits 1-6 correspond to the outputs 1-6 of the
control panel.
Bits 7-8 are not used.
4-5 zone : Each bit set indicates whether a zone is triggered.
Maximum number of zones is 16.
Bits 1-8 of byte 4 correspond to the zones 1-8 of the
control panel.
Bits 1-8 of byte 5 correspond to the zones 9-16 of the
control panel.
6-9 XX : Unknown and not used bytes.
10 area : Indicates whether the stay status as well as the away
status of the control panel is enabled for each area.
Maximum number if areas is 4.
Bits 1-4 correspond to the away status of the areas 1-4
Bits 5-8 correspond to the stay status of the areas 5-8
11 siren : Indicate the status of the siren.
Bit 6 if set mean the siren is triggered.
Other bits are not used and thus unknown.
Getting Started
TODO
Prerequisites
TODO
Installation
TODO
Usage
TODO
Roadmap
- Complete documentation:
- Hardware Used
- Block diagram of the involved hardware
- Table of the packets (commands and responses)
- Other
- Configure precommit and linter
- Implement the battery of unit/integration tests
- Implement a commandline interface
- Gracefully shutdown when a signal is received (e.g. A keyboard Interrupt)
See the open issues for a full list of proposed features (and known issues).
Contributing
To contribute to this project, you need to execute the following steps:
-
Install
-
Create new feature and commit the changes
-
Create a new feature branch based from the main branch:
git checkout -b feature/<feature_name>
-
Implement the changes for the feature
-
Run formatters/linters:
-
Autopep8:
autopep8 src/ tests/
-
Flake8:
flake8 src/ tests/
-
Mypy:
mypy src/ tests/
-
-
Commit the changes (this should run pre-commit to format/lint anyway)
-
License
Distributed under the Apache License Version 2.0. See LICENSE.txt
for more information.
Contact
Hugo Gomes - hgomes88@gmail.com
Project Link: https://github.com/hgomes88/bosch-control-panel-cc880p
Pipy Releases: https://pypi.org/project/bosch-control-panel-cc880p
Acknowledgments
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for bosch-control-panel-cc880p-1.2.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8058e21ae8514928f410f5b83b359b15b3481584cb7f6def56d9df494214972d |
|
MD5 | 1a5b799331992df68ee4dda4b7386ce8 |
|
BLAKE2b-256 | a1c0b8a2d37cd5a605284fcd66eab7447e93386d67e734e4923faf86126eb32f |
Hashes for bosch_control_panel_cc880p-1.2.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8464d3d59ea744218ead4c7d9a9782a0edb11c9900799c6400f00982d88f6230 |
|
MD5 | cf5e12d4f9990c51f80d5cc63940d7e7 |
|
BLAKE2b-256 | 481f305e80d1c7e37e0481e55fe838d1d077c870bd869b4131718e8e0b317734 |