update mqtt

This commit is contained in:
2022-05-30 19:31:54 +02:00
parent 4f6b71a615
commit 9996ecea44
5 changed files with 183 additions and 73 deletions

View File

@@ -1,7 +1,10 @@
{ {
// See http://go.microsoft.com/fwlink/?LinkId=827846 // See http://go.microsoft.com/fwlink/?LinkId=827846
// for the documentation about the extensions.json format // for the documentation about the extensions.json format
"recommendations": [ "recommendations": [
"platformio.platformio-ide" "platformio.platformio-ide"
] ],
} "unwantedRecommendations": [
"ms-vscode.cpptools-extension-pack"
]
}

View File

@@ -13,8 +13,6 @@ platform = espressif32
board = esp32dev board = esp32dev
framework = arduino framework = arduino
monitor_speed = 115200 monitor_speed = 115200
lib_deps = lib_deps =
erropix/ESP32 AnalogWrite@^0.2 erropix/ESP32 AnalogWrite@^0.2
Aasim-A/AsyncTimer Aasim-A/AsyncTimer

View File

@@ -5,17 +5,19 @@
uint64_t lastmillis = 0; uint64_t lastmillis = 0;
//_led ledarray[] = { //_led ledarray[] = {
c_led dimFL(DIM_FL, "dim_FL"); c_led dimFL(DIM_FL, "dim_FL", 0);
c_led dimFR(DIM_FR, "dim_FR"); c_led dimFR(DIM_FR, "dim_FR", 1);
c_led dimRL(DIM_RL, "dim_RL"); c_led dimRL(DIM_RL, "dim_RL", 2);
c_led dimRR(DIM_RR, "dim_RR"); c_led dimRR(DIM_RR, "dim_RR", 3);
c_led blinkFL(BLINK_FL, "blink_FL"); c_led blinkFL(BLINK_FL, "blink_FL", 4);
c_led blinkFR(BLINK_FR, "blink_FR"); c_led blinkFR(BLINK_FR, "blink_FR", 5);
c_led interiourLed(INTERIOUR, "interiour"); c_led interiourLed(INTERIOUR, "interiour", 6);
void c_led::begin(void) void c_led::begin(void)
{ {
Serial.printf("LED %s begin", _ledName.c_str()); Serial.printf("LED %s begin", _ledName.c_str());
ledcSetup(_PWMChannel, DIM_FPWM, DIM_RESBITS);
ledcAttachPin(_pin, _PWMChannel);
pinMode(_pin, OUTPUT); pinMode(_pin, OUTPUT);
digitalWrite(_pin, false); digitalWrite(_pin, false);
_ledstate = false; _ledstate = false;
@@ -30,7 +32,7 @@ void c_led::setState(e_ledstate newstate)
_timer = 0; _timer = 0;
Serial.printf("led %s: setstate %s\n", _ledName.c_str(), ledStateToString(newstate).c_str()); Serial.printf("led %s: setstate %s\n", _ledName.c_str(), ledStateToString(newstate).c_str());
} }
if(newstate == led_blink) if (newstate == led_blink)
{ {
_ledstate = false; _ledstate = false;
} }
@@ -55,58 +57,155 @@ void c_led::init()
//_newstate = true; //_newstate = true;
} }
void c_led::handle_dim_on(void)
{
if (_newstate)
{
if (_ledstate)
{
setState(led_on);
}
else
{
_timer = millis();
_newstate = false;
}
}
uint64_t currentmillis = millis();
if (currentmillis - _timer > _dimstepms)
{
_timer = currentmillis;
ledcWrite(_PWMChannel, _dimmer);
_dimmer += _dimstep;
}
if (_dimmer > DIM_MAX)
{
setState(led_on);
_dimmer = DIM_MAX;
}
}
void c_led::handle_dim_off(void)
{
if (_newstate)
{
if (!_ledstate)
{
setState(led_off);
}
else
{
_timer = millis();
_newstate = false;
}
_timer = millis();
_newstate = false;
}
uint64_t currentmillis = millis();
if (currentmillis - _timer > _dimstepms)
{
_timer = currentmillis;
ledcWrite(_PWMChannel, _dimmer);
_dimmer -= _dimstep;
}
if (_dimmer < _dimstep)
{
setState(led_off);
_dimmer = DIM_MIN;
}
}
void c_led::handle_blink(void)
{
_newstate = false;
uint64_t currentmillis = millis();
if (currentmillis - _timer > BLINKSPEED)
{
_ledstate = !_ledstate;
if (_ledstate)
{
_dimmer = DIM_MIN;
}
else
{
_dimmer = DIM_MAX;
}
_timer = currentmillis;
//Serial.printf("led %s update, state = %s\n", _ledName.c_str(), String(_ledstate).c_str());
}
if (_ledstate)
{
if (_dimmer >= DIM_MAX)
{
_dimmer = DIM_MAX;
}
else
{
if (currentmillis - _timer2 > 5)
{
_dimmer += 64;
_timer2 = currentmillis;
}
//Serial.printf("led %s update, dimmer = %u\n", _ledName.c_str(), _dimmer);
}
}
else
{
if (_dimmer <= DIM_STEP)
{
_dimmer = DIM_MIN;
}
else
{
//Serial.printf("led %s update, dimmer = %u\n", _ledName.c_str(), _dimmer);
if (currentmillis - _timer2 > 5)
{
_dimmer -= 64;
_timer2 = currentmillis;
}
}
}
ledcWrite(_PWMChannel, _dimmer);
}
void c_led::update(void) void c_led::update(void)
{ {
//Serial.printf("led %s update, state = %s, newstate = %s\n", _ledName.c_str(), ledStateToString(_state).c_str(), String(_newstate).c_str()); if (_newstate)
{
Serial.printf("led %s update, state = %s\n", _ledName.c_str(), ledStateToString(_state).c_str());
}
switch (_state) switch (_state)
{ {
case led_off: case led_off:
{ {
digitalWrite(_pin, false); //digitalWrite(_pin, false);
_ledstate = false; _ledstate = false;
ledcWrite(_PWMChannel, DIM_MIN);
_newstate = false;
} }
break; break;
case led_dim_on: case led_dim_on:
{ {
if (_newstate) handle_dim_on();
{
_dimmer = 0;
_timer = millis();
_newstate = false;
}
uint64_t currentmillis = millis();
if (currentmillis - _timer > _dimstepms)
{
_timer = currentmillis;
analogWrite(_pin, _dimmer, DIM_RES);
_dimmer += _dimstep;
}
if (_dimmer > DIM_RES)
{
setState(led_on);
}
} }
break; break;
case led_on: case led_on:
{ {
digitalWrite(_pin, true); //digitalWrite(_pin, true);
ledcWrite(_PWMChannel, DIM_MAX);
_newstate = false; _newstate = false;
_ledstate = true; _ledstate = true;
} }
break;
case led_dim_off: case led_dim_off:
{ {
handle_dim_off();
} }
break; break;
case led_blink: case led_blink:
{ {
uint64_t currentmillis = millis(); handle_blink();
if (currentmillis - _timer > BLINKSPEED)
{
//Serial.printf("%s timer expired\n", _ledName.c_str());
_ledstate = !_ledstate;
digitalWrite(_pin, _ledstate);
_timer = currentmillis;
}
} }
break; break;
default: default:
@@ -122,16 +221,16 @@ void c_led::toggle(void)
{ {
case led_on: case led_on:
setState(led_off); setState(led_dim_off);
break; break;
case led_dim_on: case led_dim_on:
setState(led_off); setState(led_dim_off);
break; break;
case led_off: case led_off:
setState(led_on); setState(led_dim_on);
break; break;
case led_dim_off: case led_dim_off:
setState(led_on); setState(led_dim_on);
break; break;
case led_blink: case led_blink:
setState(noChange); setState(noChange);
@@ -145,20 +244,20 @@ void initLeds(void)
{ {
Serial.println("InitLeds"); Serial.println("InitLeds");
dimFL.begin(); // dimFL.begin(); //
dimFR.begin(); //setState(led_on); dimFR.begin(); //setState(led_on);
dimRL.begin(); //setState(led_on); dimRL.begin(); //setState(led_on);
dimRR.begin(); //etState(led_on); dimRR.begin(); //etState(led_on);
blinkFR.begin(); //setState(led_on); blinkFR.begin(); //setState(led_on);
blinkFL.begin(); //setState(led_on); blinkFL.begin(); //setState(led_on);
interiourLed.begin(); //setState(led_on); interiourLed.begin(); //setState(led_on);
analogWriteResolution(10); analogWriteResolution(10);
dimFL.setState(led_on); dimFL.setState(led_dim_on);
dimFR.setState(led_on); dimFR.setState(led_dim_on);
dimRL.setState(led_on); dimRL.setState(led_dim_on);
dimRR.setState(led_on); dimRR.setState(led_dim_on);
blinkFR.setState(led_blink); blinkFR.setState(led_blink);
blinkFL.setState(led_blink); blinkFL.setState(led_blink);
interiourLed.setState(led_on); interiourLed.setState(led_on);
@@ -202,43 +301,43 @@ void setLedPattern(e_ledpattern setpattern)
{ {
case allOff: case allOff:
{ {
setLeds(led_off, led_off, led_off, led_off, led_off, led_off, led_off); setLeds(led_dim_off, led_dim_off, led_dim_off, led_dim_off, led_dim_off, led_dim_off, led_dim_off);
} }
break; break;
case allOn: case allOn:
{ {
setLeds(led_on, led_on, led_on, led_on, led_on, led_on, led_on); setLeds(led_dim_on, led_dim_on, led_dim_on, led_dim_on, led_dim_on, led_dim_on, led_dim_on);
} }
break; break;
case panic: case panic:
{ {
//setLeds(noChange, noChange, noChange, noChange, led_off, led_off, noChange); //setLeds(noChange, noChange, noChange, noChange, led_off, led_off, noChange);
setLeds(noChange, noChange, noChange, noChange, led_blink, led_blink, noChange); setLeds(noChange, noChange, led_blink, led_blink, led_blink, led_blink, noChange);
} }
break; break;
case night: case night:
{ {
setLeds(led_on, led_on, led_on, led_on, noChange, noChange, led_on); setLeds(led_dim_on, led_dim_on, led_dim_on, led_dim_on, noChange, noChange, led_dim_on);
} }
break; break;
case turnLeft: case turnLeft:
{ {
setLeds(noChange, noChange, noChange, noChange, led_off, led_blink, noChange); setLeds(noChange, noChange, noChange, led_blink, led_off, led_blink, noChange);
} }
break; break;
case turnRight: case turnRight:
{ {
setLeds(noChange, noChange, noChange, noChange, led_blink, led_off, noChange); setLeds(noChange, noChange, led_blink, noChange, led_blink, led_off, noChange);
} }
break; break;
case interiourOn: case interiourOn:
{ {
setLeds(noChange, noChange, noChange, noChange, noChange, noChange, led_on); setLeds(noChange, noChange, noChange, noChange, noChange, noChange, led_dim_on);
} }
break; break;
case interiourOff: case interiourOff:
{ {
setLeds(noChange, noChange, noChange, noChange, noChange, noChange, led_off); setLeds(noChange, noChange, noChange, noChange, noChange, noChange, led_dim_off);
} }
break; break;
default: default:

View File

@@ -12,8 +12,12 @@
#define INTERIOUR 5 // #define INTERIOUR 5 //
#define NUM_LEDS 7 #define NUM_LEDS 7
#define DIM_TIME 1000 #define DIM_TIME 3000
#define DIM_RES 1024 #define DIM_RESBITS 10
#define DIM_FPWM 5000
#define DIM_RES (int)(pow(2, DIM_RESBITS) - 1)
#define DIM_MIN 0
#define DIM_MAX (DIM_RES - 1)
#define DIM_STEP 255 #define DIM_STEP 255
#define DIM_STEPMS (DIM_TIME / DIM_STEP) #define DIM_STEPMS (DIM_TIME / DIM_STEP)
@@ -59,6 +63,7 @@ class c_led
const uint8_t _pin; const uint8_t _pin;
e_ledstate _state; e_ledstate _state;
uint64_t _timer; uint64_t _timer;
uint64_t _timer2;
uint32_t _dimmer; uint32_t _dimmer;
bool _newstate; bool _newstate;
bool _ledstate; bool _ledstate;
@@ -66,12 +71,17 @@ class c_led
uint32_t _dimstep; uint32_t _dimstep;
String _ledName; String _ledName;
const int _PWMChannel;
void init(); void init();
void handle_dim_on( void );
void handle_dim_off(void );
void handle_blink( void );
public: public:
c_led(uint8_t pin, String name) : _pin(pin) c_led(uint8_t pin, String name, int PWMChannel) : _pin(pin), _PWMChannel(PWMChannel)
{ {
_ledName = name; _ledName = name;
init(); init();
} }

View File

@@ -7,7 +7,7 @@
// Update these with values suitable for your network. // Update these with values suitable for your network.
byte mac[] = {0xDE, 0xED, 0xBA, 0xFE, 0xFE, 0xED}; byte mac[] = {0xDE, 0xED, 0xBA, 0xFE, 0xFE, 0xED};
IPAddress MQTTserver(192, 168, 2, 5); IPAddress MQTTserver(192, 168, 2, 3);
const char *SSID = "poes"; const char *SSID = "poes";
const char *PWD = "Rijnstraat214"; const char *PWD = "Rijnstraat214";