Rename file

This commit is contained in:
Theo Arends 2022-02-14 15:59:21 +01:00
parent 0c5bb8d2bd
commit 5d9da0f971
1 changed files with 49 additions and 49 deletions

View File

@ -1,5 +1,5 @@
/*
xdrv_85_BLE_EQ3_TRV.ino - EQ3 radiator valve sense and control via BLE_ESP32 support for Tasmota
xdrv_85_esp32_ble_eq3_trv.ino - EQ3 radiator valve sense and control via BLE_ESP32 support for Tasmota
Copyright (C) 2020 Simon Hailes
@ -403,7 +403,7 @@ int EQ3ParseOp(BLE_ESP32::generic_sensor_t *op, bool success, int retries){
BLE_ESP32::ReverseMAC(addrev);
eq3_device_tag *eq3 = nullptr;
int free = -1;
for (int i = 0; i < EQ3_NUM_DEVICESLOTS; i++){
if (!memcmp(EQ3Devices[i].addr, addrev, 6)){
@ -449,7 +449,7 @@ int EQ3ParseOp(BLE_ESP32::generic_sensor_t *op, bool success, int retries){
statlen = op->notifylen;
stattime = UtcTime();
}
if (eq3){
status = eq3->lastStatus;
statlen = eq3->lastStatusLen;
@ -489,7 +489,7 @@ int EQ3ParseOp(BLE_ESP32::generic_sensor_t *op, bool success, int retries){
if (((stat & 3) == 1) && (status[5] > 9) && (status[3] > 0)) { ResponseAppend_P(PSTR("\"heat\"")); break; }
// it's achieved temp (valve closed)
if (((stat & 3) == 1) && (status[5] > 9)) { ResponseAppend_P(PSTR("\"idle\"")); break; }
ResponseAppend_P(PSTR("\"idle\""));
ResponseAppend_P(PSTR("\"idle\""));
break;
} while (0);
@ -503,10 +503,10 @@ int EQ3ParseOp(BLE_ESP32::generic_sensor_t *op, bool success, int retries){
if ((statlen >= 10) && (status[0] == 2) && (status[1] == 1)){
int mm = status[8] * 30;
int hh = mm/60;
mm = mm % 60;
ResponseAppend_P(PSTR(",\"holidayend\":\"%02d-%02d-%02d %02d:%02d\""),
status[7],
status[9],
mm = mm % 60;
ResponseAppend_P(PSTR(",\"holidayend\":\"%02d-%02d-%02d %02d:%02d\""),
status[7],
status[9],
status[6],
hh, mm
);
@ -538,7 +538,7 @@ int EQ3ParseOp(BLE_ESP32::generic_sensor_t *op, bool success, int retries){
// byte (8,9): 2A 8A (21°C up to 23:00)
// byte (10,11): 22 90 (17°C up to 24:00)
// byte (12,13): 22 90 (unused)
// byte (14,15): 22 90 (unused)
// byte (14,15): 22 90 (unused)
ResponseAppend_P(PSTR(",\"profileday%d\":\""), op->dataNotify[1]);
uint8_t *data = op->dataNotify + 2;
for (int i = 0; i < 7; i++){
@ -565,7 +565,7 @@ int EQ3ParseOp(BLE_ESP32::generic_sensor_t *op, bool success, int retries){
}
ResponseAppend_P(PSTR("}"));
int type = STAT;
if (cmdtype){
type = STAT;
@ -587,7 +587,7 @@ int EQ3ParseOp(BLE_ESP32::generic_sensor_t *op, bool success, int retries){
int EQ3GenericOpCompleteFn(BLE_ESP32::generic_sensor_t *op){
uint32_t context = (uint32_t) op->context;
opInProgress = 0;
if (op->state <= GEN_STATE_FAILED){
uint8_t addrev[7];
const uint8_t *native = op->addr.getNative();
@ -809,7 +809,7 @@ int TaskEQ3advertismentCallback(BLE_ESP32::ble_advertisment_t *pStruct)
int8_t RSSI = pStruct->RSSI;
const uint8_t *addr = pStruct->addr;
const char *alias = BLE_ESP32::getAlias(addr);
if (EQ3OnlyAliased){
// ignore unless we have an alias.
@ -925,7 +925,7 @@ void EQ3EverySecond(bool restart){
intervalSecondsCounter--;
} else {
// queue a EQ3Status op against each known EQ3.
// mark it as a regular stat rather than a use cmd.
// mark it as a regular stat rather than a use cmd.
for(int i = nextEQ3Poll; i < EQ3_NUM_DEVICESLOTS; i++){
if (!EQ3Devices[i].timeoutTime){
nextEQ3Poll = i+1;
@ -1072,7 +1072,7 @@ int EQ3Send(const uint8_t* addr, const char *cmd, char* param, char* param2, int
d[6] = RtcTime.second;
} else {
return -1;
}
}
// time_t now = 0;
// struct tm timeinfo = { 0 };
@ -1106,7 +1106,7 @@ int EQ3Send(const uint8_t* addr, const char *cmd, char* param, char* param2, int
ftemp *= 2;
uint8_t ctemp = (uint8_t) ftemp;
d[0] = 0x41; d[1] = ctemp; dlen = 2;
break;
break;
}
if (!strcmp(cmd, "offset")){
@ -1120,7 +1120,7 @@ int EQ3Send(const uint8_t* addr, const char *cmd, char* param, char* param2, int
int8_t ctemp = (int8_t) ftemp;
ctemp += 7;
d[0] = 0x13; d[1] = ctemp; dlen = 2;
break;
break;
}
if (!strcmp(cmd, "setdaynight")){
@ -1144,7 +1144,7 @@ int EQ3Send(const uint8_t* addr, const char *cmd, char* param, char* param2, int
uint8_t ntemp = (uint8_t) ftemp;
d[0] = 0x11; d[1] = dtemp; d[2] = ntemp; dlen = 3;
break;
break;
}
if (!strcmp(cmd, "setwindowtempdur")){
@ -1164,7 +1164,7 @@ int EQ3Send(const uint8_t* addr, const char *cmd, char* param, char* param2, int
int dur = 0;
sscanf(param2, "%d", &dur);
d[0] = 0x14; d[1] = temp; d[2] = (dur/5); dlen = 3;
break;
break;
}
if (!strcmp(cmd, "setholiday")){
@ -1209,61 +1209,61 @@ int EQ3Send(const uint8_t* addr, const char *cmd, char* param, char* param2, int
ftemp *= 2;
uint8_t temp = (uint8_t) ftemp + 128;
d[0] = 0x40;
d[1] = temp;
d[2] = dd;
d[3] = yy;
d[4] = tt;
d[0] = 0x40;
d[1] = temp;
d[2] = dd;
d[3] = yy;
d[4] = tt;
d[5] = mm;
dlen = 6;
break;
break;
}
if (!strcmp(cmd, "boost")) {
if (!strcmp(cmd, "boost")) {
cmdtype = 9;
d[0] = 0x45; d[1] = 0x01;
d[0] = 0x45; d[1] = 0x01;
if (param && (!strcmp(param, "off") || param[0] == '0')){
d[1] = 0x00;
}
dlen = 2; break;
dlen = 2; break;
}
if (!strcmp(cmd, "unboost")) {
if (!strcmp(cmd, "unboost")) {
cmdtype = 10;
d[0] = 0x45; d[1] = 0x00; dlen = 2; break; }
if (!strcmp(cmd, "lock")) { cmdtype = 23; d[0] = 0x80; d[1] = 0x01;
if (!strcmp(cmd, "lock")) { cmdtype = 23; d[0] = 0x80; d[1] = 0x01;
if (param && (!strcmp(param, "off") || param[0] == '0')){
d[1] = 0x00;
}
dlen = 2; break;
dlen = 2; break;
}
if (!strcmp(cmd, "unlock")) { cmdtype = 11; d[0] = 0x80; d[1] = 0x00; dlen = 2; break; }
if (!strcmp(cmd, "auto")) { cmdtype = 12; d[0] = 0x40; d[1] = 0x00; dlen = 2; break; }
if (!strcmp(cmd, "manual")) { cmdtype = 13; d[0] = 0x40; d[1] = 0x40; dlen = 2; break; }
// this is basically 'cancel holiday' - mode auto does that.
//if (!strcmp(cmd, "eco")) { cmdtype = 14; d[0] = 0x40; d[1] = 0x80; dlen = 2; break; }
if (!strcmp(cmd, "on")) {
if (!strcmp(cmd, "on")) {
int res = EQ3Send(addr, "manual", nullptr, nullptr, useAlias);
char tmp[] = "30";
int res2 = EQ3Send(addr, "settemp", tmp, nullptr, useAlias);
return res2;
}
if (!strcmp(cmd, "off")) {
if (!strcmp(cmd, "off")) {
int res = EQ3Send(addr, "manual", nullptr, nullptr, useAlias);
char tmp[] = "4.5";
int res2 = EQ3Send(addr, "settemp", tmp, nullptr, useAlias);
return res2;
}
if (!strcmp(cmd, "valve")) { cmdtype = 17; d[0] = 0x41; d[1] = 0x3c;
if (!strcmp(cmd, "valve")) { cmdtype = 17; d[0] = 0x41; d[1] = 0x3c;
if (!param || param[0] == 0){
return -1;
}
if ((!strcmp(param, "off") || param[0] == '0')){
d[1] = 0x09;
}
dlen = 2; break;
dlen = 2; break;
}
if (!strcmp(cmd, "mode")) { cmdtype = 18; d[0] = 0x40; d[1] = 0xff;// invlaid
if (!strcmp(cmd, "mode")) { cmdtype = 18; d[0] = 0x40; d[1] = 0xff;// invlaid
if (!param || param[0] == 0){
return -1;
@ -1274,13 +1274,13 @@ int EQ3Send(const uint8_t* addr, const char *cmd, char* param, char* param2, int
if (!strcmp(param, "manual")){
d[1] = 0x40;
}
if (!strcmp(param, "on") || !strcmp(param, "heat")) {
if (!strcmp(param, "on") || !strcmp(param, "heat")) {
int res = EQ3Send(addr, "manual", nullptr, nullptr, useAlias);
char tmp[] = "30";
int res2 = EQ3Send(addr, "settemp", tmp, nullptr, useAlias);
return res2;
}
if (!strcmp(param, "off") || !strcmp(param, "cool")) {
if (!strcmp(param, "off") || !strcmp(param, "cool")) {
int res = EQ3Send(addr, "manual", nullptr, nullptr, useAlias);
char tmp[] = "4.5";
int res2 = EQ3Send(addr, "settemp", tmp, nullptr, useAlias);
@ -1294,28 +1294,28 @@ int EQ3Send(const uint8_t* addr, const char *cmd, char* param, char* param2, int
//if (!strcmp(param, "eco")){
// d[1] = 0x80;
//}
dlen = 2; break;
dlen = 2; break;
}
if (!strcmp(cmd, "day")) { cmdtype = 19; d[0] = 0x43; dlen = 1; break; }
if (!strcmp(cmd, "night")) { cmdtype = 20; d[0] = 0x44; dlen = 1; break; }
if (!strcmp(cmd, "reqprofile")) { cmdtype = 21;
if (!strcmp(cmd, "reqprofile")) { cmdtype = 21;
if (!param || param[0] == 0){
return -1;
}
d[0] = 0x20; d[1] = atoi(param); dlen = 2;
break;
d[0] = 0x20; d[1] = atoi(param); dlen = 2;
break;
}
if (!strcmp(cmd, "setprofile")) { cmdtype = 22;
if (!strcmp(cmd, "setprofile")) { cmdtype = 22;
if (!param || param[0] == 0){
return -1;
}
if (!param2 || param2[0] == 0){
return -1;
}
d[0] = 0x10; d[1] = atoi(param);
d[0] = 0x10; d[1] = atoi(param);
// default
uint8_t temps[7] = {0x22,0x22,0x22,0x22,0x22,0x22,0x22};
uint8_t times[7] = {0x90,0x90,0x90,0x90,0x90,0x90,0x90};
@ -1343,9 +1343,9 @@ int EQ3Send(const uint8_t* addr, const char *cmd, char* param, char* param2, int
d[2+j*2] = temps[j];
d[2+j*2+1] = times[j];
}
dlen = 2+14;
break;
dlen = 2+14;
break;
}
break;
@ -1378,7 +1378,7 @@ int CmndTrvNext(int index, char *data){
//simpletolower(data);
switch(index){
case 0:
case 0:
case 1: {
char *p = strtok(data, " ");
@ -1447,7 +1447,7 @@ int CmndTrvNext(int index, char *data){
AddLog(LOG_LEVEL_ERROR,PSTR("EQ3 queued"));
return 1;
}
if (res < 0) { // invalid in some way
AddLog(LOG_LEVEL_ERROR,PSTR("EQ3 invalid"));
return 3;