Skip to content

Commit

Permalink
support for setLevel
Browse files Browse the repository at this point in the history
  • Loading branch information
ripnet committed Jan 11, 2022
1 parent 157da95 commit 667b571
Show file tree
Hide file tree
Showing 3 changed files with 70 additions and 4 deletions.
43 changes: 42 additions & 1 deletion pi/hubitat_pi.html
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,18 @@
<input type="radio" id="action_off" name="action" value="off">
<label for="action_off" class="sdpi-item-label"><span></span>off</label>
</span>
<span class="sdpi-item-child">
<input type="radio" id="action_setLevel" name="action" value="setLevel">
<label for="action_setLevel" class="sdpi-item-label"><span></span>setLevel</label>
</span>
</div>
</div>
<div class="sdpi-item action-setLevel" type="radio">
<div class="sdpi-item-label">Level (%)</div>
<select class="sdpi-item-value" id="level" name="level">

</select>
</div>

</div>
<script src="../resources/js/jquery-3.5.1.min.js"></script>
Expand All @@ -64,10 +74,17 @@
}

function start() {
// populate level
for (let i = 1; i <= 100; i++) {
$('#level').append($('<option></option>').val(i).html(i));

}

// StreamDeck connected, subscribe to events
$sd.subscribe('didReceiveGlobalSettings', receivedGlobalSettings);
$sd.subscribe('didReceiveSettings', receivedSettings);
action = $sd.actionInfo.action;
$('.action-setLevel').hide();
if (action === 'com.ripnet.hubitat.setswitch.action') {
$('.action-set').show();
} else {
Expand All @@ -79,6 +96,9 @@


$(function() {



$('.global').change(function() {
let id = $(this).attr('id');
let value = $(this).val();
Expand All @@ -96,12 +116,25 @@
$('input[type="radio"][name="action"]').change(function() {
let newSettings = Object.assign({}, localSettings);
newSettings["action"] = $(this).val();
if ($(this).val() === 'setLevel') {
$('.action-setLevel').show();
} else {
$('.action-setLevel').hide();
}
setSettings(newSettings);
});

$('#level').change(function() {
changeLevel($(this).val());
});

});

function changeLevel(value) {
let newSettings = Object.assign({}, localSettings);
newSettings["level"] = value;
setSettings(newSettings);
}

function receivedGlobalSettings(data) {
globalSettings = data.payload['settings'] || {};

Expand All @@ -116,6 +149,14 @@
if (action === 'com.ripnet.hubitat.setswitch.action') {
if (localSettings.action) {
$('input[type="radio"][name="action"][value="'+localSettings.action+'"]').attr('checked', true);
if (localSettings.action === 'setLevel') {
$('.action-setLevel').show();
} else {
$('.action-setLevel').hide();
}
}
if (localSettings.level) {
$('#level').val(localSettings.level);
}
}
}
Expand Down
21 changes: 18 additions & 3 deletions plugin/index.html
100755 → 100644
Original file line number Diff line number Diff line change
Expand Up @@ -81,13 +81,19 @@
});
}
},
setState: function(context, state) {
setState: function(context, state, value = '') {
if (
globalSettings.hasOwnProperty('hostname') &&
globalSettings.hasOwnProperty('access_token')
) {
const id = instances[context].settings.device;
$.get(globalSettings.hostname + "/devices/" + id + "/" + state + "?access_token=" + globalSettings.access_token, function (data) {
let stateString = "";
if (value.length) {
stateString = state + '/' + value;
} else {
stateString = state;
}
$.get(globalSettings.hostname + "/devices/" + id + "/" + stateString + "?access_token=" + globalSettings.access_token, function (data) {
instances[context].state = state;
updateState(context);
});
Expand All @@ -104,6 +110,8 @@
case "off":
$sd.setImageFile(instance, 'light_red');
break;
case "setLevel":
break;
default:
$sd.setImageFile(instance, 'light_gray');
}
Expand Down Expand Up @@ -159,7 +167,14 @@
break;
case 'com.ripnet.hubitat.setswitch.action':
if (instances[data.context]['settings'].action) {
hubitat.setState(data.context, instances[data.context].settings.action);
if (instances[data.context]['settings'].action === 'setLevel') {
let level = instances[data.context]['settings'].level;
if (level >= 0 && level <= 100) {
hubitat.setState(data.context, instances[data.context].settings.action, level);
}
} else {
hubitat.setState(data.context, instances[data.context].settings.action);
}
}
break;
}
Expand Down
10 changes: 10 additions & 0 deletions resources/js/streamdeck.js
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,10 @@ class StreamDeck extends Emitter {
this.actionInfo = JSON.parse(inActionInfo);
}

this.start();
}
start() {

this.ws = new WebSocket('ws://127.0.0.1:' + this.inPort)

this.ws.onopen = () => {
Expand All @@ -66,6 +70,12 @@ class StreamDeck extends Emitter {
this.emit(data.event, data);
}

this.ws.onclose = () => {
setTimeout(() => {
this.start();
}, 2000);
}

}

sendEvents() {
Expand Down

0 comments on commit 667b571

Please sign in to comment.