Added stop

This commit is contained in:
2020-08-28 19:42:51 +03:00
parent e52f19bdb1
commit a7e3975619

View File

@@ -2,6 +2,7 @@
#include <ArduinoOTA.h>
#include <Ticker.h>
#include <AsyncMqttClient.h>
#include <SoftwareSerial.h>
#define LED_WF (14)
#define LED_MQ (12)
@@ -40,6 +41,8 @@ WiFiEventHandler wifiConnectHandler;
WiFiEventHandler wifiDisconnectHandler;
Ticker wifiReconnectTimer;
SoftwareSerial softSer;
void connectToWifi();
void connectToMqtt();
void onWifiConnect(const WiFiEventStationModeGotIP& event);
@@ -54,6 +57,7 @@ void writeHex(std::string data);
void setup(){
Serial.begin(9600);
softSer.begin(9600, SWSERIAL_8N1, D5, D6, false);
WiFi.mode(WIFI_STA);
WiFi.hostname("Cur-MidRoom");
Serial.begin(9600);
@@ -110,8 +114,8 @@ void loop(){
ArduinoOTA.handle();
crc = 0;
offset = 0;
while(Serial.available()){
readByte(Serial.read());
while(softSer.available()){
readByte(softSer.read());
}
if(cRun + 999 < millis()){
cRun = millis();
@@ -175,10 +179,39 @@ void onMqttSubscribe(uint16_t packetId, uint8_t qos) {
void onMqttMessage(char* topic, char* payload, AsyncMqttClientMessageProperties properties, size_t len, size_t index, size_t total) {
if(strcmp("/home/midroom/curtcmd", topic) == 0){
crc = 0;
switch(atoi(payload)){
case 1:
writeHex(TUYA_CLOSE);
writeByte(crc);
break;
case 2:
writeHex(TUYA_OPEN);
writeByte(crc);
break;
case 3:
writeHex(TUYA_STOP);
writeByte(crc);
break;
}
mqttClient.publish("/home/midroom/curtcmd", 0, false, "0");
}
else if(strcmp("/home/midroom/curtpos_set", topic) == 0){
int pos = atoi(payload);
crc = 0;
if(pos == 100){
writeHex(TUYA_CLOSE);
writeByte(crc);
}
else if(pos == 0){
writeHex(TUYA_OPEN);
writeByte(crc);
}
else if (pos > 0 && pos < 100){
writeHex(TUYA_SET_POSITION);
writeByte(100 - pos);
writeByte(crc);
}
}
}
@@ -194,7 +227,7 @@ void readByte(uint8_t data) {
if (sum == crc) {
uint8_t cmd_type = buffer[3];
uint8_t data_id = buffer[6];
uint8_t data_size = buffer[9]; // only 1byte or 4bytes values
//uint8_t data_size = buffer[9]; // only 1byte or 4bytes values
switch (cmd_type) {
case 0x07: {
switch (data_id) {
@@ -248,12 +281,12 @@ void readByte(uint8_t data) {
}
void writeByte(uint8_t data) {
Serial.write(data);
softSer.write(data);
crc += data;
}
void writeHex(std::string data) {
int i = 0;
uint16_t i = 0;
while (i < data.length()) {
const char hex[2] = {data[i++], data[i++]};
uint8_t d = strtoul(hex, NULL, 16);