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