Skip to content

Commit

Permalink
Update index.js
Browse files Browse the repository at this point in the history
  • Loading branch information
NebzHB authored May 19, 2024
1 parent ada8d8e commit dc066d6
Showing 1 changed file with 20 additions and 10 deletions.
30 changes: 20 additions & 10 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -3276,7 +3276,7 @@ JeedomPlatform.prototype.setAccessoryValue = function(value, characteristic, ser
action = 'setValue';
const oldValue = value;
value = 100 - value;// invert percentage
value = Math.ceil(((value / 100)*(service.maxValue-service.minValue))+service.minValue); // transform from percentage to scale
value = percentageToRange(value, service.minValue, service.maxValue); // transform from percentage to scale
if(value > service.infos.state.currentValue) {
service.Moving=Characteristic.PositionState.DECREASING;
} else if (value != service.infos.state.currentValue) {
Expand Down Expand Up @@ -3304,7 +3304,7 @@ JeedomPlatform.prototype.setAccessoryValue = function(value, characteristic, ser
action = 'setValue';
const oldValue = value;
value = 100 - value;// invert percentage
value = Math.ceil(((value / 100)*(service.maxValue-service.minValue))+service.minValue); // transform from percentage to scale
value = percentageToRange(value, service.minValue, service.maxValue); // transform from percentage to scale
if(value > service.infos.state.currentValue) {
service.Moving=Characteristic.PositionState.DECREASING;
} else if (value != service.infos.state.currentValue) {
Expand All @@ -3331,7 +3331,7 @@ JeedomPlatform.prototype.setAccessoryValue = function(value, characteristic, ser
} else {
action = 'setValue';
const oldValue = value;
value = Math.ceil(((value / 100)*(service.maxValue-service.minValue))+service.minValue);// transform from percentage to scale
value = percentageToRange(value, service.minValue, service.maxValue); // transform from percentage to scale
if(value > service.infos.state.currentValue) {
service.Moving=Characteristic.PositionState.INCREASING;
} else if (value != service.infos.state.currentValue) {
Expand All @@ -3358,7 +3358,7 @@ JeedomPlatform.prototype.setAccessoryValue = function(value, characteristic, ser
else if (service.actions.slider) {
action = 'setValue';
const oldValue = value;
value = Math.ceil(((value / 100)*(service.maxValue-service.minValue))+service.minValue);// transform from percentage to scale
value = percentageToRange(value, service.minValue, service.maxValue); // transform from percentage to scale
if(value > service.infos.state.currentValue) {
service.Moving=Characteristic.PositionState.INCREASING;
} else if (value != service.infos.state.currentValue) {
Expand Down Expand Up @@ -3390,7 +3390,7 @@ JeedomPlatform.prototype.setAccessoryValue = function(value, characteristic, ser
} else {
action = 'setValue';
const oldValue = value;
value = Math.ceil(((value / 100)*(service.maxValue-service.minValue))+service.minValue);
value = percentageToRange(value, service.minValue, service.maxValue); // transform from percentage to scale
if(value > service.infos.state) {
service.Moving=Characteristic.PositionState.INCREASING;
} else if (value != service.infos.state) {
Expand All @@ -3415,7 +3415,7 @@ JeedomPlatform.prototype.setAccessoryValue = function(value, characteristic, ser
else if (service.actions.slider) {
action = 'setValue';
const oldValue = value;
value = Math.ceil(((value / 100)*(service.maxValue-service.minValue))+service.minValue);
value = percentageToRange(value, service.minValue, service.maxValue); // transform from percentage to scale
if(value > service.infos.state) {
service.Moving=Characteristic.PositionState.INCREASING;
} else if (value != service.infos.state) {
Expand Down Expand Up @@ -4612,7 +4612,7 @@ JeedomPlatform.prototype.getAccessoryValue = function(characteristic, service, i
for (const cmd of cmdList) {
if (cmd.generic_type == 'FLAP_STATE' && cmd.id == service.cmd_id) {
returnValue = parseInt(cmd.currentValue);
returnValue = Math.floor(((returnValue-service.minValue) / (service.maxValue-service.minValue))*100);
returnValue = rangeToPercentage(returnValue, service.minValue, service.maxValue);

if(service.maxValue == 100) {
returnValue = returnValue > (service.maxValue-5) ? service.maxValue : returnValue; // >95% is 100% in home (flaps need yearly tunning)
Expand All @@ -4625,7 +4625,7 @@ JeedomPlatform.prototype.getAccessoryValue = function(characteristic, service, i
}
if (cmd.generic_type == 'FLAP_STATE_CLOSING' && cmd.id == service.cmd_id) {
returnValue = parseInt(cmd.currentValue);
returnValue = Math.floor(((returnValue-service.minValue) / (service.maxValue-service.minValue))*100);
returnValue = rangeToPercentage(returnValue, service.minValue, service.maxValue);

if(service.maxValue == 100) {
returnValue = returnValue > (service.maxValue-5) ? service.maxValue : returnValue; // >95% is 100% in home (flaps need yearly tunning)
Expand All @@ -4639,7 +4639,7 @@ JeedomPlatform.prototype.getAccessoryValue = function(characteristic, service, i
}
if (cmd.generic_type == 'WINDOW_STATE' && cmd.id == service.cmd_id) {
returnValue = parseInt(cmd.currentValue);
returnValue = Math.floor(((returnValue-service.minValue) / (service.maxValue-service.minValue))*100);
returnValue = rangeToPercentage(returnValue, service.minValue, service.maxValue);

if(Math.abs(returnValue - service.TargetValue) <= 1) {service.Moving=Characteristic.PositionState.STOPPED;}
else if (service.TargetValue !== undefined && service.Moving===Characteristic.PositionState.STOPPED) {service.TargetValue=undefined;}
Expand All @@ -4651,7 +4651,7 @@ JeedomPlatform.prototype.getAccessoryValue = function(characteristic, service, i
case Characteristic.TargetPosition.UUID :
if(service.TargetValue === undefined) {
returnValue = parseInt(service.infos.state.currentValue);
returnValue = Math.floor(((returnValue-service.minValue) / (service.maxValue-service.minValue))*100);
returnValue = rangeToPercentage(returnValue, service.minValue, service.maxValue);

if(service.maxValue == 100) {
returnValue = returnValue > (service.maxValue-5) ? service.maxValue : returnValue; // >95% is 100% in home (flaps need yearly tunning)
Expand Down Expand Up @@ -6435,6 +6435,16 @@ JeedomBridgedAccessory.prototype.delServices = function(accessory) {
}
};

// convert range to percentage
function rangeToPercentage(value, min, max) {
return Math.floor(((value - min) / (max - min)) * 100);
}

// convert percentage to range
function percentageToRange(percentage, min, max) {
return Math.ceil((percentage / 100) * (max - min) + min);
}

// -- hexToR
// -- Desc : take the R value in a html color string
// -- Params --
Expand Down

0 comments on commit dc066d6

Please sign in to comment.