Skip to content

Commit

Permalink
[Konnected] Taking configured onValue into account when sending statu…
Browse files Browse the repository at this point in the history
…s to actuator (#13360)

* Taking configured onvalue into account when sending status to actuator
* Added documentation for onValue configuration

Signed-off-by: Haavar Valeur <haavar@haavar.com>
  • Loading branch information
haavar authored Sep 10, 2022
1 parent ce6b0a8 commit 9c534e3
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 17 deletions.
5 changes: 5 additions & 0 deletions bundles/org.openhab.binding.konnected/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,11 @@ You will need to add channels for the zones that you have connected and configur
You will need to configure each channel with the appropriate zone number corresponding to the zone on The Konnected Alarm Panel.
Then you need to link the corresponding item to the channel.

Switches and actuators can be configured as high or low level triggered.
This is done though setting the parameter onValue to 1 for high level trigger or 0 for low level trigger.
The default setting is high level triggered (1).
It may for example be useful to set channel to low level trigger when using a low level trigger relay board, to avoid inverting the switch logic.

For the actuator type channels you can also add configuration parameters times, pause and momentary which will be added to the payload that is sent to the Konnected Alarm Panel.
These parameters will tell the module to pulse the actuator for certain time period.
A momentary switch actuates a switch for a specified time (in milliseconds) and then reverts it back to the off state.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -92,10 +92,7 @@ public void handleCommand(ChannelUID channelUID, Command command) {
if (channelType.contains(CHANNEL_SWITCH)) {
logger.debug("A command was sent to a sensor type so we are ignoring the command");
} else {
int sendCommand = (OnOffType.OFF.compareTo((OnOffType) command));
logger.debug("The command being sent to zone {} for channel:{} is {}", zone, channelUID.getAsString(),
sendCommand);
sendActuatorCommand(sendCommand, zone, channelUID);
sendActuatorCommand((OnOffType) command, zone, channelUID);
}
} else if (command instanceof RefreshType) {
// check to see if handler has been initialized before attempting to get state of pin, else wait one minute
Expand Down Expand Up @@ -404,34 +401,28 @@ private String updateKonnectedModule() throws KonnectedHttpRetryExceeded {
/**
* Sends a command to the module via {@link KonnectedHTTPUtils}
*
* @param scommand the string command, either 0 or 1 to send to the actutor pin on the Konnected module
* @param command the state to send to the actuator
* @param zone the zone to send the command to on the Konnected Module
*/
private void sendActuatorCommand(Integer scommand, String zone, ChannelUID channelId) {
private void sendActuatorCommand(OnOffType command, String zone, ChannelUID channelId) {
try {
Channel channel = getThing().getChannel(channelId.getId());
if (channel != null) {
logger.debug("getasstring: {} getID: {} getGroupId: {} toString:{}", channelId.getAsString(),
channelId.getId(), channelId.getGroupId(), channelId);
ZoneConfiguration zoneConfig = channel.getConfiguration().as(ZoneConfiguration.class);
KonnectedModuleGson payload = new KonnectedModuleGson();
payload.setState(scommand);

payload.setZone(thingID, zone);

// check to see if this is an On Command type, if so add the momentary, pause, times to the payload if
// they exist on the configuration.
if (scommand == zoneConfig.onValue) {
if (command == OnOffType.ON) {
payload.setState(zoneConfig.onValue);
payload.setTimes(zoneConfig.times);
logger.debug("The times configuration was set to: {} for channelID: {}.", zoneConfig.times,
channelId);
payload.setMomentary(zoneConfig.momentary);
logger.debug("The momentary configuration set to: {} channelID: {}.", zoneConfig.momentary,
channelId);
payload.setPause(zoneConfig.pause);
logger.debug("The pause configuration was set to: {} for channelID: {}.", zoneConfig.pause,
channelId);
} else {
payload.setState(zoneConfig.onValue == 1 ? 0 : 1);
}

String payloadString = gson.toJson(payload);
logger.debug("The command payload is: {}", payloadString);
String path = "";
Expand Down

0 comments on commit 9c534e3

Please sign in to comment.