vizit support
This commit is contained in:
parent
a79fbb1ee5
commit
ae46832d88
@ -12,23 +12,26 @@ int previousData = 0;
|
|||||||
int dataLength = 0;
|
int dataLength = 0;
|
||||||
int signalDuration = 0;
|
int signalDuration = 0;
|
||||||
|
|
||||||
|
int flat = 0;
|
||||||
|
|
||||||
void resetCounters() {
|
void resetCounters() {
|
||||||
countZeros = 0;
|
countZeros = 0;
|
||||||
countOnes = 0;
|
countOnes = 0;
|
||||||
|
|
||||||
previousData = 0;
|
previousData = 0;
|
||||||
dataLength = 0;
|
dataLength = 1;
|
||||||
signalDuration = 0;
|
signalDuration = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void writeState(char* message) {
|
void writeState(char* message) {
|
||||||
println(message);
|
//println(message);
|
||||||
publishToMQTT(STATE_MQTT_TOPIC, message);
|
publishToMQTT(STATE_MQTT_TOPIC, message);
|
||||||
}
|
}
|
||||||
|
|
||||||
void receiveData(int data) {
|
void receiveDigit(int data) {
|
||||||
if (data != previousData) {
|
if (data != previousData) {
|
||||||
if (previousData == HIGH) {
|
if (previousData == HIGH) {
|
||||||
|
//println("AAAA ", dataLength, " ", signalDuration);
|
||||||
dataLength++;
|
dataLength++;
|
||||||
}
|
}
|
||||||
signalDuration = 0;
|
signalDuration = 0;
|
||||||
@ -50,7 +53,7 @@ void changeState(State state, bool resetCountersFlag=true) {
|
|||||||
ledTurnOn();
|
ledTurnOn();
|
||||||
writeState("connected");
|
writeState("connected");
|
||||||
break;
|
break;
|
||||||
case RECEIVING_DATA:
|
case RECEIVING_FIRST_DIGIT:
|
||||||
writeState("receiving data");
|
writeState("receiving data");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -59,13 +62,24 @@ void changeState(State state, bool resetCountersFlag=true) {
|
|||||||
resetCounters();
|
resetCounters();
|
||||||
}
|
}
|
||||||
|
|
||||||
void flatReceived() {
|
void firstDigitReceived() {
|
||||||
int flat = dataLength/2;
|
println("| 1 data length: ", dataLength);
|
||||||
|
flat = dataLength*10;
|
||||||
|
}
|
||||||
|
|
||||||
if (flat < 1)
|
void secondDigitReceived() {
|
||||||
return;
|
if (dataLength == 11) {
|
||||||
|
dataLength = 1;
|
||||||
|
}
|
||||||
|
|
||||||
println("| data length: ", dataLength);
|
flat += dataLength;
|
||||||
|
flat -= 1;
|
||||||
|
|
||||||
|
if (flat > 100 && flat < 110) {
|
||||||
|
flat -= 100;
|
||||||
|
}
|
||||||
|
|
||||||
|
println("| 2 data length: ", dataLength);
|
||||||
println("| flat: ", flat);
|
println("| flat: ", flat);
|
||||||
publishToMQTT(FLAT_NUMBER_MQTT_TOPIC, flat);
|
publishToMQTT(FLAT_NUMBER_MQTT_TOPIC, flat);
|
||||||
}
|
}
|
||||||
@ -87,24 +101,43 @@ void updateStateMachine(int data) {
|
|||||||
}
|
}
|
||||||
} else if (data == HIGH) {
|
} else if (data == HIGH) {
|
||||||
if (countZeros >= INITIALIZING_CALL_THRESHOLD) {
|
if (countZeros >= INITIALIZING_CALL_THRESHOLD) {
|
||||||
changeState(RECEIVING_DATA);
|
changeState(RECEIVING_FIRST_DIGIT);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case RECEIVING_DATA:
|
case RECEIVING_FIRST_DIGIT:
|
||||||
receiveData(data);
|
receiveDigit(data);
|
||||||
|
|
||||||
if (data == LOW) {
|
if (data == LOW) {
|
||||||
countOnes = 0;
|
countOnes = 0;
|
||||||
countZeros++;
|
countZeros++;
|
||||||
if (countZeros >= DATA_RECEIVED_THESHOLD) {
|
|
||||||
flatReceived();
|
|
||||||
changeState(DATA_RECEIVED);
|
|
||||||
}
|
|
||||||
} else if (data == HIGH) {
|
} else if (data == HIGH) {
|
||||||
countZeros = 0;
|
countZeros = 0;
|
||||||
countOnes++;
|
countOnes++;
|
||||||
|
if (countOnes >= DATA_RECEIVED_THESHOLD) {
|
||||||
|
firstDigitReceived();
|
||||||
|
changeState(RECEIVING_SECOND_DIGIT);
|
||||||
|
}
|
||||||
|
if (countOnes >= CONNECTED_THRESHOLD) {
|
||||||
|
changeState(CONNECTED);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case RECEIVING_SECOND_DIGIT:
|
||||||
|
receiveDigit(data);
|
||||||
|
|
||||||
|
if (data == LOW) {
|
||||||
|
countOnes = 0;
|
||||||
|
countZeros++;
|
||||||
|
} else if (data == HIGH) {
|
||||||
|
countZeros = 0;
|
||||||
|
countOnes++;
|
||||||
|
if (countOnes >= DATA_RECEIVED_THESHOLD) {
|
||||||
|
secondDigitReceived();
|
||||||
|
changeState(DATA_RECEIVED);
|
||||||
|
}
|
||||||
if (countOnes >= CONNECTED_THRESHOLD) {
|
if (countOnes >= CONNECTED_THRESHOLD) {
|
||||||
changeState(CONNECTED);
|
changeState(CONNECTED);
|
||||||
}
|
}
|
||||||
|
@ -5,14 +5,15 @@
|
|||||||
|
|
||||||
#define CONNECTED_THRESHOLD 50000
|
#define CONNECTED_THRESHOLD 50000
|
||||||
#define NOT_CONNECTED_THRESHOLD 50000
|
#define NOT_CONNECTED_THRESHOLD 50000
|
||||||
#define INITIALIZING_CALL_THRESHOLD 15000
|
#define INITIALIZING_CALL_THRESHOLD 45
|
||||||
#define DATA_RECEIVED_THESHOLD 30000
|
#define DATA_RECEIVED_THESHOLD 5000
|
||||||
#define CALL_ENDED_THRESHOLD 10000
|
#define CALL_ENDED_THRESHOLD 10000
|
||||||
|
|
||||||
enum State {
|
enum State {
|
||||||
NOT_CONNECTED,
|
NOT_CONNECTED,
|
||||||
CONNECTED,
|
CONNECTED,
|
||||||
RECEIVING_DATA,
|
RECEIVING_FIRST_DIGIT,
|
||||||
|
RECEIVING_SECOND_DIGIT,
|
||||||
DATA_RECEIVED,
|
DATA_RECEIVED,
|
||||||
CALL_ENDED
|
CALL_ENDED
|
||||||
};
|
};
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
#include "config/config.h"
|
#include "config/config.h"
|
||||||
#include "infra/mqtt.h"
|
#include "infra/mqtt.h"
|
||||||
#include "infra/led.h"
|
#include "infra/led.h"
|
||||||
#include "domain/stateMachineVizit.h"
|
#include "domain/stateMachine.h"
|
||||||
|
|
||||||
State currentState = NOT_CONNECTED;
|
State currentState = NOT_CONNECTED;
|
||||||
int countZeros = 0;
|
int countZeros = 0;
|
||||||
@ -12,6 +12,8 @@ int previousData = 0;
|
|||||||
int dataLength = 0;
|
int dataLength = 0;
|
||||||
int signalDuration = 0;
|
int signalDuration = 0;
|
||||||
|
|
||||||
|
int flat = 0;
|
||||||
|
|
||||||
void resetCounters() {
|
void resetCounters() {
|
||||||
countZeros = 0;
|
countZeros = 0;
|
||||||
countOnes = 0;
|
countOnes = 0;
|
||||||
@ -26,7 +28,7 @@ void writeState(char* message) {
|
|||||||
publishToMQTT(STATE_MQTT_TOPIC, message);
|
publishToMQTT(STATE_MQTT_TOPIC, message);
|
||||||
}
|
}
|
||||||
|
|
||||||
void receiveDigit(int data) {
|
void receiveData(int data) {
|
||||||
if (data != previousData) {
|
if (data != previousData) {
|
||||||
if (previousData == HIGH) {
|
if (previousData == HIGH) {
|
||||||
dataLength++;
|
dataLength++;
|
||||||
@ -50,7 +52,7 @@ void changeState(State state, bool resetCountersFlag=true) {
|
|||||||
ledTurnOn();
|
ledTurnOn();
|
||||||
writeState("connected");
|
writeState("connected");
|
||||||
break;
|
break;
|
||||||
case RECEIVING_FIRST_DIGIT:
|
case RECEIVING_DATA:
|
||||||
writeState("receiving data");
|
writeState("receiving data");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -87,23 +89,24 @@ void updateStateMachine(int data) {
|
|||||||
}
|
}
|
||||||
} else if (data == HIGH) {
|
} else if (data == HIGH) {
|
||||||
if (countZeros >= INITIALIZING_CALL_THRESHOLD) {
|
if (countZeros >= INITIALIZING_CALL_THRESHOLD) {
|
||||||
changeState(RECEIVING_FIRST_DIGIT);
|
changeState(RECEIVING_DATA);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case RECEIVING_FIRST_DIGIT:
|
case RECEIVING_DATA:
|
||||||
receiveDigit(data);
|
receiveData(data);
|
||||||
|
|
||||||
if (data == LOW) {
|
if (data == LOW) {
|
||||||
countOnes = 0;
|
countOnes = 0;
|
||||||
countZeros++;
|
countZeros++;
|
||||||
|
if (countZeros >= DATA_RECEIVED_THESHOLD) {
|
||||||
|
flatReceived();
|
||||||
|
changeState(DATA_RECEIVED);
|
||||||
|
}
|
||||||
} else if (data == HIGH) {
|
} else if (data == HIGH) {
|
||||||
countZeros = 0;
|
countZeros = 0;
|
||||||
countOnes++;
|
countOnes++;
|
||||||
if (countOnes >= DATA_RECEIVED_THESHOLD) {
|
|
||||||
changeState(CONNECTED);
|
|
||||||
}
|
|
||||||
if (countOnes >= CONNECTED_THRESHOLD) {
|
if (countOnes >= CONNECTED_THRESHOLD) {
|
||||||
changeState(CONNECTED);
|
changeState(CONNECTED);
|
||||||
}
|
}
|
@ -5,15 +5,14 @@
|
|||||||
|
|
||||||
#define CONNECTED_THRESHOLD 50000
|
#define CONNECTED_THRESHOLD 50000
|
||||||
#define NOT_CONNECTED_THRESHOLD 50000
|
#define NOT_CONNECTED_THRESHOLD 50000
|
||||||
#define INITIALIZING_CALL_THRESHOLD 45
|
#define INITIALIZING_CALL_THRESHOLD 15000
|
||||||
#define DATA_RECEIVED_THESHOLD 250
|
#define DATA_RECEIVED_THESHOLD 30000
|
||||||
#define CALL_ENDED_THRESHOLD 10000
|
#define CALL_ENDED_THRESHOLD 10000
|
||||||
|
|
||||||
enum State {
|
enum State {
|
||||||
NOT_CONNECTED,
|
NOT_CONNECTED,
|
||||||
CONNECTED,
|
CONNECTED,
|
||||||
RECEIVING_FIRST_DIGIT,
|
RECEIVING_DATA,
|
||||||
RECEIVING_SECOND_DIGIT,
|
|
||||||
DATA_RECEIVED,
|
DATA_RECEIVED,
|
||||||
CALL_ENDED
|
CALL_ENDED
|
||||||
};
|
};
|
@ -57,7 +57,7 @@ void publishToMQTT(const char* topic, int message) {
|
|||||||
|
|
||||||
char num_char[10];
|
char num_char[10];
|
||||||
sprintf(num_char, "%d", message);
|
sprintf(num_char, "%d", message);
|
||||||
mqttClient.publish(topic, 2, true, num_char);
|
mqttClient.publish(fullTopic, 2, true, num_char);
|
||||||
|
|
||||||
publishJSONToMQTT(topic, message);
|
publishJSONToMQTT(topic, message);
|
||||||
}
|
}
|
||||||
@ -70,7 +70,7 @@ void publishToMQTT(const char* topic, float message) {
|
|||||||
|
|
||||||
char num_char[10];
|
char num_char[10];
|
||||||
dtostrf(message, 1, 2, num_char); // Convert float to string
|
dtostrf(message, 1, 2, num_char); // Convert float to string
|
||||||
mqttClient.publish(topic, 2, true, num_char);
|
mqttClient.publish(fullTopic, 2, true, num_char);
|
||||||
|
|
||||||
publishJSONToMQTT(topic, message);
|
publishJSONToMQTT(topic, message);
|
||||||
}
|
}
|
||||||
|
12
src/main.cpp
12
src/main.cpp
@ -26,14 +26,24 @@ int data = 0;
|
|||||||
|
|
||||||
bool flag = false;
|
bool flag = false;
|
||||||
|
|
||||||
|
void IRAM_ATTR one() {
|
||||||
|
flag = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void IRAM_ATTR zero() {
|
||||||
|
flag = false;
|
||||||
|
}
|
||||||
|
|
||||||
void setup() {
|
void setup() {
|
||||||
Serial.begin(115200);
|
Serial.begin(115200);
|
||||||
|
|
||||||
WiFi.onEvent(WiFiEvent);
|
WiFi.onEvent(WiFiEvent);
|
||||||
|
|
||||||
pinMode(DATA_PIN, INPUT);
|
pinMode(DATA_PIN, INPUT_PULLUP);
|
||||||
pinMode(LED_PIN, OUTPUT);
|
pinMode(LED_PIN, OUTPUT);
|
||||||
pinMode(DRY_CONT_PIN, OUTPUT);
|
pinMode(DRY_CONT_PIN, OUTPUT);
|
||||||
|
attachInterrupt(DATA_PIN, one, RISING);
|
||||||
|
attachInterrupt(DATA_PIN, zero, FALLING);
|
||||||
|
|
||||||
digitalWrite(LED_PIN, HIGH);
|
digitalWrite(LED_PIN, HIGH);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user