fixed problems with AC protocol,
nodejs backend improved
This commit is contained in:
64
ac.js
64
ac.js
@@ -11,16 +11,9 @@ var INT8_MAX = 127;
|
||||
var UINT8_MAX = 255;
|
||||
var UINT8_MAX2 = 0xFF;
|
||||
|
||||
var AcModeSize = 4; // Nr. of Bits
|
||||
const AcMode = Object.freeze({"Heat":1, "Dry":2, "Cool":3, "Fan":7, "Auto":8})
|
||||
|
||||
// var AcMode {
|
||||
// Heat = 1,
|
||||
// Dry = 2,
|
||||
// Cool = 3,
|
||||
// FanHi = 7,
|
||||
// Auto = 8
|
||||
// }
|
||||
|
||||
// Constants
|
||||
var AcTimes =
|
||||
{
|
||||
@@ -35,16 +28,14 @@ var AcTimes =
|
||||
// var AcTolerance = 5; // Extra Percentage for the rest.
|
||||
};
|
||||
|
||||
|
||||
|
||||
var AcModeSize = 4; // Nr. of Bits
|
||||
|
||||
var AcFanSize = 3; // Nr. of Bits. Mask = 0b00000111
|
||||
var AcFanAuto = 0b000;
|
||||
var AcFanLow = 0b010;
|
||||
var AcFanMed = 0b011;
|
||||
var AcFanHigh = 0b101;
|
||||
var AcFan = Object.freeze({
|
||||
"Auto":0b000,
|
||||
"Low":0b010,
|
||||
"Med":0b011,
|
||||
"High":0b101});
|
||||
|
||||
//5
|
||||
var AcHalfDegreeOffset = 5;
|
||||
var AcTempMax = 31.0;
|
||||
var AcTempMin = 16.0;
|
||||
@@ -53,6 +44,7 @@ var AcPowerOffset = 2;
|
||||
var AcBitEconoOffset = 7;
|
||||
var AcBitLightOffset = 6;
|
||||
var AcBitHealthOffset = 4;
|
||||
//3
|
||||
var AcBitSwingHOffset = 3;
|
||||
var AcSwingVOffset = 3; // Mask 0b00111000
|
||||
var AcSwingVSize = 3; // Nr. of bits.
|
||||
@@ -67,7 +59,7 @@ var state;
|
||||
|
||||
state = Buffer.from(initialState.slice());
|
||||
//remote_state = initialState.slice();
|
||||
var b = setBits(state[0],0,5,0x0);
|
||||
//var b = setBits(state[0],0,5,0x0);
|
||||
// b = setBits(remote_state[0],0,6,0x0);
|
||||
// b = setBits(remote_state[0],0,6,0x0);
|
||||
// b = setBits(remote_state[0],0,7,0x0);
|
||||
@@ -82,17 +74,14 @@ var b = setBits(state[0],0,5,0x0);
|
||||
|
||||
|
||||
|
||||
console.log("" + state.toString('hex'));
|
||||
setTemp(24);
|
||||
// console.log("" + state.toString('hex'));
|
||||
setTemp(22);
|
||||
setMode(AcMode.Heat);
|
||||
// console.log("" + state.toString('hex'));
|
||||
setPower(true);
|
||||
// console.log("" + state.toString('hex'));
|
||||
setFan(AcFanMed);check();
|
||||
setFan(AcFan.Med);check();
|
||||
console.log("" + state.toString('hex'));
|
||||
var rawTime = "38000,"+GenerateTimingString();
|
||||
console.log(rawTime);
|
||||
var rawTime = "38000,"+GenerateTimingString();
|
||||
// console.log(rawTime);
|
||||
|
||||
|
||||
// const request = require('request');
|
||||
@@ -109,6 +98,10 @@ console.log(rawTime);
|
||||
// }
|
||||
// }
|
||||
// );
|
||||
function GetState()
|
||||
{
|
||||
return state.toString('hex').toUpperCase();
|
||||
}
|
||||
|
||||
function GenerateTimingString()
|
||||
{
|
||||
@@ -182,8 +175,9 @@ function setBits(data, offset, nbits, val) {
|
||||
|
||||
|
||||
|
||||
function setPower( on) {
|
||||
state[5] = setBit(state[5], AcPowerOffset, on);
|
||||
function setPower(on) {
|
||||
state[5] = setBit(state[5], AcPowerOffset, on);
|
||||
state[12] = setBit(state[12], 7, !on);
|
||||
}
|
||||
|
||||
function setMode(mode) {
|
||||
@@ -214,16 +208,16 @@ function setTemp(celsius) {
|
||||
|
||||
}
|
||||
|
||||
function setFan( speed) {
|
||||
function setFan(speed) {
|
||||
switch (speed) {
|
||||
case AcFanAuto:
|
||||
case AcFanLow:
|
||||
case AcFanMed:
|
||||
case AcFanHigh:
|
||||
case AcFan.Auto:
|
||||
case AcFan.Low:
|
||||
case AcFan.Med:
|
||||
case AcFan.High:
|
||||
state[8] = setBits(state[8], kLowNibble, AcFanSize, speed);
|
||||
break;
|
||||
default:
|
||||
setFan(AcFanAuto);
|
||||
setFan(AcFan.Auto);
|
||||
}
|
||||
}
|
||||
function setEcono(on) {
|
||||
@@ -274,10 +268,12 @@ var AcControl = {
|
||||
GetCommand: function(){
|
||||
check();
|
||||
console.log("GetCommand:" + state.toString('hex'));
|
||||
return "38000,"+GenerateTimingString();
|
||||
return GenerateTimingString();
|
||||
},
|
||||
GetState:GetState(),
|
||||
|
||||
};
|
||||
|
||||
module.exports.Tlc112 = AcControl;
|
||||
module.exports.Mode = AcMode;
|
||||
module.exports.Mode = AcMode;
|
||||
module.exports.FanSpeed = AcFan;
|
||||
Reference in New Issue
Block a user