proflame
The SIT Proflame 2 fireplace remote protocol, in Python: encode a complete appliance state into OOK timings, decode received timings back into a state and the identity of the handset that sent them, and derive the per-remote checksum constants from a single captured frame.
Transceiver-agnostic by design: this library deals in signed-microsecond timing lists, and a radio is whatever turns those into RF and back. The first consumers are the hass-proflame Home Assistant integration and the hackrf-proxy daemon ecosystem, but nothing here depends on either.
from proflame import Remote, State, encode_timings, decode_frame
# One captured frame is enough to learn a handset, checksum constants and all.
heard = decode_frame(received_timings)
remote = heard.remote
# A frame always carries the complete appliance state, never a delta.
timings = encode_timings(remote, State(power=True, flame=4, light=2))
Two things worth knowing before building on it:
- The checksum constants are per handset. They fall out of any one valid
frame (
Remote.from_frame,derive_key); hardcoding one remote's constants produces frames every other receiver rejects. - The appliance is stateless and answers no questions. Every frame carries the whole state, so a consumer must hold its own belief; nothing in the protocol confirms what the appliance did.
Documentation and data
- The protocol derivation — physical layer, framing, field layout, checksum model, open questions, acknowledgments — lives in docs/PROTOCOL.md.
- The field-confirmation procedure and its results live in docs/MAPPING.md.
- Real captures — a community five-remote packet table (aggregated from rtl_433#1905) and frames recorded off the air, used as golden test data — live in tests/.
- Bench scripts — the standalone reference decoder and the checksum analysis that first solved the relation — live in tools/.
- Related work — smartfire, rtl_433's decoder, HACS-Proflame2 — is compared and credited at the end of docs/PROTOCOL.md.
License
MIT OR Apache-2.0, at your option.
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file proflame-0.1.0.tar.gz.
File metadata
- Download URL: proflame-0.1.0.tar.gz
- Upload date:
- Size: 106.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2fa9f72cb446c103faf2f6155b021283c96560d07ff73e7223d56869f75dfc60
|
|
| MD5 |
ffdbb83506bd738c81ad47b0d1de1f8e
|
|
| BLAKE2b-256 |
cabc23ad69a7a19c7e52f9b0908928e2c2caf0f0b9657e8e73b1bba30dcb0aa1
|
Provenance
The following attestation bundles were made for proflame-0.1.0.tar.gz:
Publisher:
release-please.yml on Aetf/proflame
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
proflame-0.1.0.tar.gz -
Subject digest:
2fa9f72cb446c103faf2f6155b021283c96560d07ff73e7223d56869f75dfc60 - Sigstore transparency entry: 2526952026
- Sigstore integration time:
-
Permalink:
Aetf/proflame@8411f141d00c8f9b8f6e830fead64b6dc2f2b013 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/Aetf
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release-please.yml@8411f141d00c8f9b8f6e830fead64b6dc2f2b013 -
Trigger Event:
push
-
Statement type:
File details
Details for the file proflame-0.1.0-py3-none-any.whl.
File metadata
- Download URL: proflame-0.1.0-py3-none-any.whl
- Upload date:
- Size: 12.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4dc1ac7408d8028719c05b500b6422f724727433fcb17d9dfcebfc5c9f2de5e6
|
|
| MD5 |
667d7889f6b7bc9ae12bd58307ec8870
|
|
| BLAKE2b-256 |
1b43a6843880740bd8b056201698717d1141defb5c14cac844ffa5e7024cb320
|
Provenance
The following attestation bundles were made for proflame-0.1.0-py3-none-any.whl:
Publisher:
release-please.yml on Aetf/proflame
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
proflame-0.1.0-py3-none-any.whl -
Subject digest:
4dc1ac7408d8028719c05b500b6422f724727433fcb17d9dfcebfc5c9f2de5e6 - Sigstore transparency entry: 2526952192
- Sigstore integration time:
-
Permalink:
Aetf/proflame@8411f141d00c8f9b8f6e830fead64b6dc2f2b013 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/Aetf
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release-please.yml@8411f141d00c8f9b8f6e830fead64b6dc2f2b013 -
Trigger Event:
push
-
Statement type: