API PORT 80, AVR HTTP ETAG, Compiled for all, bins

This commit is contained in:
2021-12-20 02:17:02 +03:00
parent c185de3f26
commit 6cd4e5dbea
28 changed files with 36475 additions and 35576 deletions

View File

@@ -14,3 +14,4 @@
-DTIMER_INT -DTIMER_INT
-DRESTART_LAN_ON_MQTT_ERRORS -DRESTART_LAN_ON_MQTT_ERRORS
-DOTA_PORT=80

View File

@@ -47,3 +47,4 @@
-DRESTART_LAN_ON_MQTT_ERRORS -DRESTART_LAN_ON_MQTT_ERRORS
-D CORS=\"http://lazyhome.ru\" -D CORS=\"http://lazyhome.ru\"
-DOTA_PORT=80

View File

@@ -18,3 +18,4 @@
-DRESTART_LAN_ON_MQTT_ERRORS -DRESTART_LAN_ON_MQTT_ERRORS
#-D CORS=\"http://lazyhome.ru\" #-D CORS=\"http://lazyhome.ru\"
-DOTA_PORT=80

View File

@@ -27,3 +27,4 @@
-DRESTART_LAN_ON_MQTT_ERRORS -DRESTART_LAN_ON_MQTT_ERRORS
-D CORS=\"http://lazyhome.ru\" -D CORS=\"http://lazyhome.ru\"
-DOTA_PORT=80

View File

@@ -17,5 +17,7 @@
-DFS_STORAGE -DFS_STORAGE
-DFS_PREPARE -DFS_PREPARE
-DOTA
-DRESTART_LAN_ON_MQTT_ERRORS -DRESTART_LAN_ON_MQTT_ERRORS
-D CORS=\"http://lazyhome.ru\" -D CORS=\"http://lazyhome.ru\"
-DOTA_PORT=80

View File

@@ -8,3 +8,4 @@
-DRESTART_LAN_ON_MQTT_ERRORS -DRESTART_LAN_ON_MQTT_ERRORS
-D CORS=\"http://lazyhome.ru\" -D CORS=\"http://lazyhome.ru\"
-DOTA_PORT=80

View File

@@ -8,3 +8,4 @@
-DRESTART_LAN_ON_MQTT_ERRORS -DRESTART_LAN_ON_MQTT_ERRORS
-D CORS=\"http://lazyhome.ru\" -D CORS=\"http://lazyhome.ru\"
-DOTA_PORT=80

View File

@@ -20,3 +20,4 @@
#-DMDNS_ENABLE #-DMDNS_ENABLE
-DRESTART_LAN_ON_MQTT_ERRORS -DRESTART_LAN_ON_MQTT_ERRORS
-D CORS=\"http://lazyhome.ru\" -D CORS=\"http://lazyhome.ru\"
-DOTA_PORT=80

View File

@@ -24,3 +24,4 @@
# Example of UARTBRIDGE configuration # Example of UARTBRIDGE configuration
#-DUARTBRIDGE_ENABLE #-DUARTBRIDGE_ENABLE
-DOTA_PORT=80

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@@ -5515,8 +5515,8 @@
:1058900020495020616464726573733A0045455035 :1058900020495020616464726573733A0045455035
:1058A000524F4D20636C65617265640A000A4C6159 :1058A000524F4D20636C65617265640A000A4C6159
:1058B0007A79686F6D652E7275204C6967687448D7 :1058B0007A79686F6D652E7275204C6967687448D7
:1058C000756220636F6E74726F6C6C65722000324B :1058C000756220636F6E74726F6C6C65722000631A
:1058D0006535633764385F323032312D31322D31E6 :1058D0003138356465335F323032312D31322D311C
:1058E000390020432B2B2076657273696F6E3A0066 :1058E000390020432B2B2076657273696F6E3A0066
:1058F0003230313130334C000A282D29574154437E :1058F0003230313130334C000A282D29574154437E
:1059000048444F47000A436F6E66696720736572AB :1059000048444F47000A436F6E66696720736572AB
@@ -5591,8 +5591,8 @@
:105D50006C6F7200666C6F61740024686F6D6965AA :105D50006C6F7200666C6F61740024686F6D6965AA
:105D600000246E6F6465730072656164790024734A :105D600000246E6F6465730072656164790024734A
:105D700074617465002473746174730024666F72B7 :105D700074617465002473746174730024666F72B7
:105D80006D617400757074696D65003265356337D7 :105D80006D617400757074696D65006331383564D8
:105D900064385F323032312D31322D3139004C6967 :105D900065335F323032312D31322D3139004C696B
:105DA0006768744875622000466F72636564206599 :105DA0006768744875622000466F72636564206599
:105DB0007865637574696F6E00556E6B6E6F776E84 :105DB0007865637574696F6E00556E6B6E6F776E84
:105DC00020636D64004D6F746F722074696D656F30 :105DC00020636D64004D6F746F722074696D656F30

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -235,7 +235,7 @@ uint16_t httpHandler(Client& client, String request, uint8_t method, long conten
{ {
#ifdef OTA #ifdef OTA
//String response = ""; //String response = "";
debugSerial<<request<<endl; debugSerial<<method<<F(" ")<<request<<endl;
if (method == HTTP_GET && request == (F("/"))) if (method == HTTP_GET && request == (F("/")))
{ {
@@ -1568,6 +1568,16 @@ void printBool(bool arg) { (arg) ? infoSerial<<F("+") : infoSerial<<F("-"); }
const char * headerKeys[]={"ETag"}; const char * headerKeys[]={"ETag"};
void headerHandlerProc(String header)
{
debugSerial<<header<<endl;
//ETag: W/"51e-17bffcd0547"
if (header.startsWith("ETag: "))
{
sysConf.setETAG(header);
}
}
bool loadConfigFromHttp() bool loadConfigFromHttp()
{ {
//macAddress * mac = sysConf.getMAC(); //macAddress * mac = sysConf.getMAC();
@@ -1609,8 +1619,9 @@ if (!sysConf.getServer(configServer,sizeof(configServer)))
debugSerial<<F("free ")<<freeRam()<<endl;delay(100); debugSerial<<F("free ")<<freeRam()<<endl;delay(100);
hclient.setHeaderHandler(headerHandlerProc);
// FILE is the return STREAM type of the HTTPClient // FILE is the return STREAM type of the HTTPClient
configStream = hclient.getURI(URI,get_header); configStream = hclient.getURI(URI,NULL,get_header);
debugSerial<<F("hclient")<<endl;delay(100); debugSerial<<F("hclient")<<endl;delay(100);
responseStatusCode = hclient.getLastReturnCode(); responseStatusCode = hclient.getLastReturnCode();
debugSerial<<F("retcode ")<<responseStatusCode<<endl;delay(100); debugSerial<<F("retcode ")<<responseStatusCode<<endl;delay(100);
@@ -2459,20 +2470,20 @@ configLocked--;
////// Legacy Thermostat code below - to be moved in module ///// ////// Legacy Thermostat code below - to be moved in module /////
enum heaterMode {HEAT,OFF,ERROR}; enum heaterMode {HEATER_HEAT,HEATER_OFF,HEATER_ERROR};
void thermoRelay(int pin, heaterMode on) void thermoRelay(int pin, heaterMode on)
{ {
int thermoPin = abs(pin); int thermoPin = abs(pin);
pinMode(thermoPin, OUTPUT); pinMode(thermoPin, OUTPUT);
if (on == ERROR) if (on == HEATER_ERROR)
{ {
digitalWrite(thermoPin, LOW); digitalWrite(thermoPin, LOW);
debugSerial<<F(" BYPASS")<<endl; debugSerial<<F(" BYPASS")<<endl;
} }
else if (on == HEAT) else if (on == HEATER_HEAT)
{ {
digitalWrite(thermoPin, (pin<0)?LOW:HIGH); digitalWrite(thermoPin, (pin<0)?LOW:HIGH);
debugSerial<<F(" ON")<<endl; debugSerial<<F(" ON")<<endl;
@@ -2519,15 +2530,15 @@ void thermoLoop(void) {
mqttClient.publish("/alarm/snsr", thermoItem->name); mqttClient.publish("/alarm/snsr", thermoItem->name);
tStore.timestamp16=0; //Stop termostat tStore.timestamp16=0; //Stop termostat
thermostat.setExt(tStore.asint); thermostat.setExt(tStore.asint);
thermoRelay(thermoPin,ERROR); thermoRelay(thermoPin,HEATER_ERROR);
} }
else else
{ // Not expired yet { // Not expired yet
if (curTemp > THERMO_OVERHEAT_CELSIUS) mqttClient.publish("/alarm/ovrht", thermoItem->name); if (curTemp > THERMO_OVERHEAT_CELSIUS) mqttClient.publish("/alarm/ovrht", thermoItem->name);
if (!active) thermoRelay(thermoPin,OFF);//OFF if (!active) thermoRelay(thermoPin,HEATER_OFF);//OFF
else if (curTemp < thermoSetting - THERMO_GIST_CELSIUS) thermoRelay(thermoPin,HEAT);//ON else if (curTemp < thermoSetting - THERMO_GIST_CELSIUS) thermoRelay(thermoPin,HEATER_HEAT);//ON
else if (curTemp >= thermoSetting) thermoRelay(thermoPin,OFF);//OFF else if (curTemp >= thermoSetting) thermoRelay(thermoPin,HEATER_OFF);//OFF
else debugSerial<<F(" -target zone-")<<endl; // Nothing to do else debugSerial<<F(" -target zone-")<<endl; // Nothing to do
} }

View File

@@ -14,8 +14,8 @@
#endif #endif
#if defined(ARDUINO_ARCH_AVR) #if defined(ARDUINO_ARCH_AVR)
#include "HTTPClientAVR.h" #include "HTTPClient.h"
#include <ArduinoHttpClient.h> //#include <ArduinoHttpClient.h>
#include <avr/pgmspace.h> #include <avr/pgmspace.h>
#include <avr/wdt.h> #include <avr/wdt.h>
//#include <EEPROM.h> //#include <EEPROM.h>

View File

@@ -189,8 +189,8 @@ build_type = debug
board = esp32-evb board = esp32-evb
monitor_baud = 115200 monitor_baud = 115200
;upload_speed = 115200 ;upload_speed = 115200
;upload_command = arduinoOTA -address 192.168.88.60 -port 65280 -username arduino -password password -b -upload /sketch -sketch $SOURCE;sleep 5 ;upload_command = arduinoOTA -address 192.168.88.60 -port 80 -username arduino -password password -b -upload /sketch -sketch $SOURCE;sleep 5
;upload_command = arduinoOTA -address 192.168.11.230 -port 65280 -username arduino -password password -b -upload /sketch -sketch $SOURCE;sleep 5 ;upload_command = arduinoOTA -address 192.168.11.230 -port 80 -username arduino -password password -b -upload /sketch -sketch $SOURCE;sleep 5
;upload_protocol = custom ;upload_protocol = custom
build_flags = !python get_build_flags.py esp32-wifi build_flags = !python get_build_flags.py esp32-wifi
@@ -260,7 +260,7 @@ build_flags = !python get_build_flags.py due
; Need to place arduinoOTA utility from Arduino IDE distribution to folder in your PATH ; Need to place arduinoOTA utility from Arduino IDE distribution to folder in your PATH
;fix address and password ;fix address and password
;upload_flags = ;upload_flags =
upload_command = arduinoOTA -address 192.168.88.21 -port 65280 -username arduino -password password -b -upload /sketch -sketch $SOURCE upload_command = arduinoOTA -address 192.168.88.21 -port 80 -username arduino -password password -b -upload /sketch -sketch $SOURCE
upload_protocol = custom upload_protocol = custom
lib_ignore = lib_ignore =
;DS2482_OneWire //UNCOMMENT for software 1-wire driver ;DS2482_OneWire //UNCOMMENT for software 1-wire driver
@@ -325,7 +325,6 @@ lib_ignore =
WifiManager WifiManager
Ethernet3 Ethernet3
Ethernet2 Ethernet2
HTTPClient
NRFFlashStorage NRFFlashStorage
WebServer WebServer
UIPEthernet UIPEthernet
@@ -377,7 +376,7 @@ board_build.f_cpu = 16000000L
;build_unflags = -flto - not working without LTO! ;build_unflags = -flto - not working without LTO!
;upload_protocol = arduino ;upload_protocol = arduino
upload_command = arduinoOTA -address 192.168.11.213 -port 65280 -username arduino -password password -b -upload /sketch -sketch $BUILD_DIR/${PROGNAME}.bin;sleep 5 upload_command = arduinoOTA -address 192.168.11.213 -port 80 -username arduino -password password -b -upload /sketch -sketch $BUILD_DIR/${PROGNAME}.bin;sleep 5
upload_protocol = custom upload_protocol = custom
board_upload.speed = ${env:fuses_bootloader.board_bootloader.speed} board_upload.speed = ${env:fuses_bootloader.board_bootloader.speed}
@@ -391,7 +390,6 @@ lib_ignore =
WifiManager WifiManager
Ethernet3 Ethernet3
Ethernet2 Ethernet2
HTTPClient
NRFFlashStorage NRFFlashStorage
WebServer WebServer
UIPEthernet UIPEthernet
@@ -610,8 +608,8 @@ framework = arduino
board = due board = due
monitor_baud = 115200 monitor_baud = 115200
build_flags = !python get_build_flags.py lighthub21 build_flags = !python get_build_flags.py lighthub21
upload_command = /opt/local/sbin/arduinoOTA -address 192.168.11.172 -port 65280 -username arduino -password password -b -upload /sketch -sketch $SOURCE ;sleep 6 upload_command = /opt/local/sbin/arduinoOTA -address 192.168.11.172 -port 80 -username arduino -password password -b -upload /sketch -sketch $SOURCE ;sleep 6
;upload_command = arduinoOTA -address 192.168.88.45 -port 65280 -username arduino -password password -b -upload /sketch -sketch $SOURCE;sleep 6 ;upload_command = arduinoOTA -address 192.168.88.45 -port 80 -username arduino -password password -b -upload /sketch -sketch $SOURCE;sleep 6
upload_protocol = custom upload_protocol = custom
lib_ignore = lib_ignore =
;DS2482_OneWire //UNCOMMENT for software 1-wire driver ;DS2482_OneWire //UNCOMMENT for software 1-wire driver

302
savedconf.json Normal file
View File

@@ -0,0 +1,302 @@
{
"mqtt":["edem3","192.168.88.2"],
"syslog":["192.168.88.2"],
"dmx":[3,80],
"topics":{"root":"edem"},
"items":
{
"lightall":[7,[
"lampbedr3",
"lampcab31",
"lampcab32",
"lampsauna3",
"lampbath33",
"lampktc3",
"lampwc3",
"lamp4",
"lampext4",
"lamphall3",
"lampstw3",
"fasadeast",
"bra31",
"lampgst3",
"lampkln3",
"lampbalk3",
"fasadsouth",
"bra32"]],
"gr_hall3":[7,["lamphall3","lampstw3"]],
"gr_gost3":[7,["lampgst3","lampktc3"]],
"relays":[7,["pout0","thermostat","pout2","pout3","pout4","pout5","pout6"]],
"uouts":[7,["unprot0","unprot1","unprot2","unprot3","unprot4","unprot5","unprot6","unprot7"]],
"mb1":[44,[1,0,3,100]],
"mb2":[44,[1,1,3,100]],
"mb3":[44,[1,2,3,100]],
"mb4":[44,[1,3,3,100]],
"mba":[44,[96,0,0]],
"lamp_zal":[4,[1,60001,-1,255]],
"lampbedr3":[0,1],
"lampcab31":[0,2],
"lampcab32":[0,3],
"lampsauna3":[0,4],
"lampbath3":[0,5],
"lampwc3":[0,6],
"lampktc3":[0,7],
"lamp4":[0,8],
"lamphall3":[0,9],
"lampext4":[0,10],
"lampstw3":[0,11],
"fasadeast":[0,12],
"lampgst3":[0,13],
"bra31":[0,14],
"bra32":[0,15],
"lampbalk3":[0,16],
"fasadsouth":[0,17],
"lampkln3":[0,18],
"lampbar3":[0,21],
"ledbedr3":[1,22],
"ledcab31":[1,26],
"ledcab32":[1,30],
"ledkab":[7,["ledcab31","ledcab32"]],
"ledsauna31":[1,34],
"ledsauna32":[1,38],
"ledsauna":[7,["ledsauna31","ledsauna32"]],
"led4":[1,42],
"ledktc31":[1,48],
"ledktc31w":[0,52],
"ledktc32":[1,53],
"ledktc32w":[0,57],
"ledgst31":[1,58],
"ledgst31w":[0,62],
"ledgst32":[1,63],
"ledgst32w":[0,67],
"ledktc3w":[7,["ledktc31w","ledktc32w","ledgst31w","ledgst32w"]],
"ledktc3":[7,["ledktc31","ledktc32","ledgst31","ledgst32"]],
"fanbath3":[0,68],
"fanwc3":[0,69],
"pout0":[6,22],
"thermostat":[5,23,33],
"pout2":[6,24],
"water3":[6,25],
"pout4":[3,9],
"pout5":[3,8],
"pout6":[3,11],
"pout7":[6,12],
"pwm0" :[3,4],
"pwm1" :[3,5],
"pwm2" :[3,6],
"pwm3" :[3,7],
"pwm10":[3,10],
"unprot0":[6,33],
"unprot1":[6,32],
"unprot2":[6,31],
"unprot3":[6,30],
"unprot4":[6,29],
"unprot5":[6,28],
"unprot6":[6,27],
"unprot7":[6,26]
},
"in":
[ {"#":42,"emit":"power3","item":"fanwc3"},
{"#":44,"emit":"in1"},
{"#":46,"emit":"in2"},
{"#":49,"emit":"in3"},
{"#":43,"emit":"in4"},
{"#":45,"emit":"in5"},
{"#":47,"emit":"in6"},
{"#":48,"emit":"in7"},
{"#":34,"emit":"in8"},
{"#":36,"emit":"in9"},
{"#":38,"T":0,
"click":{"item":"gr_hall3","icmd":"ON"},
"dclick":{"item":"lampbedr3","icmd":"ON"},
"tclick":{"item":"lightall","icmd":"REST"},
"rpcmd":{"item":"gr_hall3","icmd":"%+2"}
},
{"#":40,"T":0,
"click":{"item":"gr_hall3","icmd":"OFF"},
"dclick":{"item":"lampbedr3","icmd":"OFF"},
"tclick":{"item":"lightall","icmd":"HALT"},
"rpcmd":{"item":"gr_hall3","icmd":"%-2"}
},
{"#":35,"T":0,
"click":{"item":"gr_gost3","icmd":"ON"},
"dclick":{"item":"lampwc3","icmd":"ON"},
"tclick":{"item":"lampbath3","icmd":"ON"},
"rpcmd":{"item":"gr_gost3","icmd":"%+2"}
},
{"#":37,"T":0,
"click":{"item":"gr_gost3","icmd":"OFF"},
"dclick":{"item":"lampwc3","icmd":"OFF"},
"tclick":{"item":"lampbath3","icmd":"OFF"},
"rpcmd":{"item":"gr_gost3","icmd":"%-2"}
},
{"#":39,"emit":"in14"},
{"#":41,"emit":"in15"},
{"#":54,"T":0,"act":
[
{
"map":[128,640],
"click":{"item":"gr_gost3","icmd":"ON"},
"dclick":{"item":"lampwc3","icmd":"ON"},
"tclick":{"item":"lampbath3","icmd":"ON"},
"rpcmd":{"item":"gr_gost3","icmd":"%+2"}
},
{
"map":[641,1024],
"click":{"item":"gr_gost3","icmd":"OFF"},
"dclick":{"item":"lampwc3","icmd":"OFF"},
"tclick":{"item":"lampbath3","icmd":"OFF"},
"rpcmd":{"item":"gr_gost3","icmd":"%-2"}
}
]},
{"#":55,"T":66,"emit":"a01","map":[0,1024,0,1024,10]},
{"#":56,"T":66,"emit":"a02","map":[0,1024,0,1024,10]},
{"#":57,"T":66,"emit":"a03","map":[0,1024,0,1024,10]},
{"#":58,"T":66,"emit":"a04","map":[0,1024,0,1024,10]},
{"#":59,"T":66,"emit":"a05","map":[0,1024,0,1024,10]},
{"#":60,"T":0,"act":
[
{
"map":[128,640],
"click":{"item":"gr_hall3","icmd":"ON"},
"dclick":{"item":"lampbedr3","icmd":"ON"},
"tclick":{"item":"lightall","icmd":"REST"},
"rpcmd":{"item":"gr_hall3","icmd":"%+2"}
},
{
"map":[641,1024],
"click":{"item":"gr_hall3","icmd":"OFF"},
"dclick":{"item":"lampbedr3","icmd":"OFF"},
"tclick":{"item":"lightall","icmd":"HALT"},
"rpcmd":{"item":"gr_hall3","icmd":"%-2"}
}
]},
{"#":61,"T":0,"act":
[
{
"map":[128,640],
"click":{"item":"gr_gost3","icmd":"ON"},
"dclick":{"item":"lampwc3","icmd":"ON"},
"tclick":{"item":"lampbath3","icmd":"ON"},
"rpcmd":{"item":"gr_gost3","icmd":"%+2"}
},
{
"map":[641,1024],
"click":{"item":"gr_gost3","icmd":"OFF"},
"dclick":{"item":"lampwc3","icmd":"OFF"},
"tclick":{"item":"lampbath3","icmd":"OFF"},
"rpcmd":{"item":"gr_gost3","icmd":"%-2"}
}
]},
{"#":62,"T":66,"emit":"a08","map":[0,1024,0,1024,10]},
{"#":63,"T":66,"emit":"a09","map":[0,1024,0,1024,10]},
{"#":64,"T":66,"emit":"a10","map":[0,1024,0,1024,10]},
{"#":65,"T":66,"emit":"a11","map":[0,1024,0,1024,10]},
{"#":66,"T":0,"emit":"leak31","item":"water3","scmd":"OFF","rcmd":"ON"},
{"#":67,"T":2,"emit":"leak32","item":"water3","scmd":"OFF","rcmd":"ON"},
{"#":68,"T":0,"emit":"leak33","item":"water3","scmd":"OFF","rcmd":"ON"},
{"#":69,"T":0,"emit":"a15"}
],
"in2":
{ "42":{"emit":"power3","item":"fanwc3"},
"44":{"emit":"in1"},
"46":{"emit":"in2"},
"49":{"emit":"in3"},
"43":{"emit":"in4"},
"45":{"emit":"in5"},
"47":{"emit":"in6"},
"48":{"emit":"in7"},
"34":{"emit":"in8"},
"36":{"emit":"in9"},
"38":{"T":0,
"click":{"item":"gr_hall3","icmd":"ON"},
"dclick":{"item":"lampbedr3","icmd":"ON"},
"tclick":{"item":"lightall","icmd":"REST"},
"rpcmd":{"item":"gr_hall3","icmd":"%+2"}
},
"40":{"T":0,
"click":{"item":"gr_hall3","icmd":"OFF"},
"dclick":{"item":"lampbedr3","icmd":"OFF"},
"tclick":{"item":"lightall","icmd":"HALT"},
"rpcmd":{"item":"gr_hall3","icmd":"%-2"}
},
"35":{"T":0,
"click":{"item":"gr_gost3","icmd":"ON"},
"dclick":{"item":"lampwc3","icmd":"ON"},
"tclick":{"item":"lampbath3","icmd":"ON"},
"rpcmd":{"item":"gr_gost3","icmd":"%+2"}
},
"37":{"T":0,
"click":{"item":"gr_gost3","icmd":"OFF"},
"dclick":{"item":"lampwc3","icmd":"OFF"},
"tclick":{"item":"lampbath3","icmd":"OFF"},
"rpcmd":{"item":"gr_gost3","icmd":"%-2"}
},
"39":{"emit":"in14"},
"41":{"emit":"in15"},
"54":{"addr":54,"T":0,"act":
[
{
"map":[128,640],
"click":{"item":"gr_gost3","icmd":"ON"},
"dclick":{"item":"lampwc3","icmd":"ON"},
"tclick":{"item":"lampbath3","icmd":"ON"},
"rpcmd":{"item":"gr_gost3","icmd":"%+2"}
},
{
"map":[641,1024],
"click":{"item":"gr_gost3","icmd":"OFF"},
"dclick":{"item":"lampwc3","icmd":"OFF"},
"tclick":{"item":"lampbath3","icmd":"OFF"},
"rpcmd":{"item":"gr_gost3","icmd":"%-2"}
}
]},
"55":{"T":66,"emit":"a01","map":[0,1024,0,1024,10]},
"56":{"T":66,"emit":"a02","map":[0,1024,0,1024,10]},
"57":{"T":66,"emit":"a03","map":[0,1024,0,1024,10]},
"58":{"T":66,"emit":"a04","map":[0,1024,0,1024,10]},
"59":{"T":66,"emit":"a05","map":[0,1024,0,1024,10]},
"60":{"T":66,"emit":"a06","map":[0,1024,0,1024,10]},
"61":{"T":66,"emit":"a07","map":[0,1024,0,1024,10]},
"62":{"T":66,"emit":"a08","map":[0,1024,0,1024,10]},
"63":{"T":66,"emit":"a09","map":[0,1024,0,1024,10]},
"64":{"T":66,"emit":"a10","map":[0,1024,0,1024,10]},
"65":{"T":66,"emit":"a11","map":[0,1024,0,1024,10]},
"66":{"T":0,"emit":"leak31","item":"water3","scmd":"OFF","rcmd":"ON"},
"67":{"T":2,"emit":"leak32","item":"water3","scmd":"OFF","rcmd":"ON"},
"68":{"T":0,"emit":"leak33","item":"water3","scmd":"OFF","rcmd":"ON"}
}
}