Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Konnected] Taking configured onValue into account when sending status to actuator #13360

Merged
merged 2 commits into from
Sep 10, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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(),
haavar marked this conversation as resolved.
Show resolved Hide resolved
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