WIP : à tester
This commit is contained in:
parent
547b51068a
commit
df8061018c
@ -35,10 +35,9 @@ Médias
|
||||
Avancement
|
||||
==========
|
||||
WIP.
|
||||
Le partie arduino fonctionne, mais dès récéption de l'allumage t'as un breath plein pot.
|
||||
Le partie arduino fonctionne, mais pour le moment il n'y a pas d'arret automatique de l'alarme.
|
||||
La partie home-assistant fonctionne, le reveil configuré est bien envoyé à l'arduino.
|
||||
TODO: Utiliser ArduinoOTA pour gérer les mises à jours sans fil.
|
||||
TODO: gitlab-ci : on peut checker la syntax en lancant un docker home-assistant !!!
|
||||
TODO: HA Il faut des scenes pour retrouver les couleurs classiques
|
||||
TODO: Ard pas de progression du brightness au cour du temps
|
||||
TODO: Ard pas d'arret une fois le reveil lancé
|
||||
|
||||
@ -9,7 +9,7 @@
|
||||
|
||||
// LED
|
||||
// Corresponds à un max brightness configurable via HA
|
||||
int brightness = LED_BRIGHTNESS_DEFAULT;
|
||||
int maxBrightness = LED_BRIGHTNESS_DEFAULT;
|
||||
// Utilisé pour définir le seuil actuel de brightness
|
||||
int curbrightness = 0;
|
||||
int color = LED_COLOR_DEFAULT;
|
||||
@ -33,7 +33,6 @@ void setup()
|
||||
|
||||
LEDS.addLeds<LED_CHIPSET,LED_PIN, LED_COLOR_ORDER>(leds, LED_NUM).setCorrection(TypicalSMD5050);
|
||||
ledBlackAll();
|
||||
FastLED.setBrightness(brightness);
|
||||
|
||||
// MQTT
|
||||
client.setServer(MQTT_SERVER, MQTT_PORT);
|
||||
@ -124,8 +123,7 @@ void callbackMQTT(char* topic, byte* payload, unsigned int length)
|
||||
}
|
||||
mqttSendState();
|
||||
} else if (stopic == MQTT_LED_BRIGHTNESS_COMMAND) {
|
||||
brightness = msgString.toInt();
|
||||
FastLED.setBrightness(brightness);
|
||||
maxBrightness = msgString.toInt();
|
||||
mqttSendBrightnessState();
|
||||
} else if (stopic == MQTT_LED_COLOR_COMMAND) {
|
||||
// Sample : 134,168,255
|
||||
@ -146,7 +144,7 @@ void mqttSendState()
|
||||
void mqttSendBrightnessState()
|
||||
{
|
||||
char buff[4];
|
||||
itoa(brightness, buff, 10);
|
||||
itoa(maxBrightness, buff, 10);
|
||||
client.publish(MQTT_LED_BRIGHTNESS_STATE, buff, true);
|
||||
}
|
||||
|
||||
@ -194,11 +192,28 @@ void ledError()
|
||||
*/
|
||||
void ledDisplay()
|
||||
{
|
||||
// Source : http://sean.voisen.org/blog/2011/10/breathing-led-with-arduino/
|
||||
float breath = (exp(sin(millis() / 4000.0 * PI)) - 0.3678794) * 108.4;
|
||||
/* Natural Breathing LED
|
||||
* Source : http://sean.voisen.org/blog/2011/10/breathing-led-with-arduino/
|
||||
* La formule : (exp(sin(x / freq)) - (1/e)) * (maxBrightness/(e-(1/e))
|
||||
* freq = 2000.0 * PI (-> interval de 4sec)
|
||||
* Fréquence respiratoire : https://fr.wikipedia.org/wiki/Fr%C3%A9quence_respiratoire
|
||||
* Test perso rapide révéillé : 18 cycles par minutes -> interval de 3.33sec.
|
||||
*
|
||||
* En remplaçant 1/e par 0.349 on arrive à un minimal de 1.00x ce qui permet d'avoir les leds qui ne s'éteignent pas
|
||||
* Il faut alors remplacer maxBrightness par maxBrightness - 1 dans la dernière partie de l'équation
|
||||
*/
|
||||
//float breath = (exp(sin(millis() / 4000.0 * PI)) - 0.36787944) * 108.0;
|
||||
float breath = (exp(sin(millis() / 4000.0 * PI)) - 0.349) * ((maxBrightness - 1) / (EULER - (1 / EULER)));
|
||||
|
||||
fill_solid(leds, LED_NUM, color);
|
||||
FastLED.setBrightness(map(breath, 0, 255, 0, curbrightness));
|
||||
FastLED.setBrightness(breath);
|
||||
EVERY_N_SECONDS(1) {
|
||||
Serial.print(breath);
|
||||
Serial.print(" | ");
|
||||
Serial.print(curbrightness);
|
||||
Serial.print("/");
|
||||
Serial.println(maxBrightness);
|
||||
}
|
||||
FastLED.show();
|
||||
}
|
||||
|
||||
@ -207,7 +222,9 @@ void loop() {
|
||||
// TODO : ou de manière moins fréquence mais en faisant un saut de palier.
|
||||
// TODO : la solution peut aussi etre un mix des deux
|
||||
EVERY_N_SECONDS(10) {
|
||||
curbrightness++;
|
||||
if (curbrightness <= maxBrightness) {
|
||||
curbrightness++;
|
||||
}
|
||||
}
|
||||
|
||||
// MQTT
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user