Silvair EnOcean Proxy Server
The Silvair EnOcean Proxy Server model integrates an EnOcean switch together with Generic OnOff Server and Generic Level Server models, enabling dimming and on/off light control. It implements the Silvair EnOcean Switch Mesh Proxy Server specification.
The model initializes the Bluetooth EnOcean library.
The EnOcean switch can be automatically commissioned/decommissioned if option CONFIG_BT_MESH_SILVAIR_ENOCEAN_AUTO_COMMISSION
is set.
The Silvair EnOcean Proxy Server uses either one or two elements on a node.
Each element handles its own button pair and has its own corresponding Generic OnOff Server and Generic Level Server models.
These models should not be accessed by the user application as the Silvair EnOcean Proxy Server model uses them to send messages.
The publication settings of these client models can be configured to control a specific light or a group of lights.
However, the Generic OnOff Server and Generic Level Server models need to be instantiated for each element.
BT_MESH_MODEL_SILVAIR_ENOCEAN_BUTTON
is provided to do this, and should be used as presented below:
struct bt_mesh_silvair_enocean_srv enocean;
static struct bt_mesh_elem elements[] = {
BT_MESH_ELEM(
1,
BT_MESH_MODEL_LIST(BT_MESH_MODEL_SILVAIR_ENOCEAN_BUTTON(&silvair_enocean, 0)),
BT_MESH_MODEL_LIST(BT_MESH_MODEL_SILVAIR_ENOCEAN_SRV(&silvair_enocean))),
BT_MESH_ELEM(
2,
BT_MESH_MODEL_LIST(BT_MESH_MODEL_SILVAIR_ENOCEAN_BUTTON(&silvair_enocean, 1)),
BT_MESH_MODEL_NONE),
};
The Silvair EnOcean Proxy Server does not require any message handler callbacks.
States
None
Extended models
None
Persistent storage
If CONFIG_BT_ENOCEAN_STORE
is enabled, the Silvair EnOcean Proxy Server stores the commissioned EnOcean device address.
API documentation
include/bluetooth/mesh/vnd/silvair_enocean_srv.h
subsys/bluetooth/mesh/vnd/silvair_enocean_srv.c
- group bt_mesh_silvair_enocean_srv
API for the Silvair EnOcean Server.
Defines
-
BT_MESH_COMPANY_ID_SILVAIR
-
BT_MESH_MODEL_ID_SILVAIR_ENOCEAN_SRV
-
BT_MESH_SILVAIR_ENOCEAN_PROXY_BUTTONS
-
BT_MESH_MODEL_SILVAIR_ENOCEAN_SRV(_srv)
Silvair Enocean Proxy Server model entry.
- Parameters
_srv – [in] Pointer to a Silvair EnOcean Server model instance.
-
BT_MESH_MODEL_SILVAIR_ENOCEAN_BUTTON(_srv, _idx)
Model entries for a button for a Silvair Enocean Proxy Server model.
One of these should be added for each rocker switch handled by the Silvair Enocean Proxy Server instance, each on its own element. This macro includes the Generic Level Client and Generic OnOff Client.
- Parameters
_srv – [in] Pointer to a Light Lightness Server model instance.
_idx – [in] Button index for the model entries. Must be in the range 0 to
BT_MESH_SILVAIR_ENOCEAN_PROXY_BUTTONS
.
Enums
-
enum bt_mesh_silvair_enocean_state
Silvair Enocean Proxy Server state machine state
Values:
-
enumerator BT_MESH_SILVAIR_ENOCEAN_STATE_IDLE
Idle state
-
enumerator BT_MESH_SILVAIR_ENOCEAN_STATE_WAIT
Waiting state
-
enumerator BT_MESH_SILVAIR_ENOCEAN_STATE_PHASE_A
Phase A state
-
enumerator BT_MESH_SILVAIR_ENOCEAN_STATE_PHASE_B
Phase B state
-
enumerator BT_MESH_SILVAIR_ENOCEAN_STATE_PHASE_C
Phase C state
-
enumerator BT_MESH_SILVAIR_ENOCEAN_STATE_PHASE_D
Phase D state
-
enumerator BT_MESH_SILVAIR_ENOCEAN_STATE_IDLE
-
struct bt_mesh_silvair_enocean_srv
- #include <silvair_enocean_srv.h>
Silvair Enocean Proxy Server instance.
Public Members
-
bt_addr_le_t addr
Enocean device address
-
struct bt_mesh_model_pub pub
Publish parameters
-
struct net_buf_simple pub_buf
Publication buffer
-
uint8_t pub_data[BT_MESH_MODEL_BUF_LEN(BT_MESH_SILVAIR_ENOCEAN_PROXY_OP, BT_MESH_SILVAIR_ENOCEAN_PROXY_MSG_MAXLEN)]
Publication data
-
struct bt_mesh_model *mod
Access model pointer.
-
sys_snode_t entry
Entry in global list of Enocean Proxy models.
-
struct bt_mesh_silvair_enocean_button
- #include <silvair_enocean_srv.h>
State for each button controlled by this instance
Public Members
-
struct bt_mesh_lvl_cli lvl
Generic Level Client instance
-
struct bt_mesh_onoff_cli onoff
Generic OnOff Client instance
-
enum bt_mesh_silvair_enocean_state state
Current state of the state machine
-
bool target
Target on/off in the state machine
-
int tick_count
Tick counter
-
bool release_pending
Flag for moving to phase D
-
int32_t delta
Current delta
-
struct k_work_delayable timer
Timer used for state machine timeouts
-
struct bt_mesh_lvl_cli lvl
-
bt_addr_le_t addr
-
BT_MESH_COMPANY_ID_SILVAIR