Page 1 sur 1

Etat de mes portes fermées/verrouillées avec ESP8266

Posté : lun. 23 janv. 2017 09:32
par swisscore
Hello à tous,

Alors j'ai un petit projet en cours avec des ESP8266 connecté à mon réseau puis à mon Rpi premier du nom pour récupérer l'état de mes portes principales de la maison (verrouillé ou non et ouvert/fermé)

J'ai donc installé mosquitto sur le Rpi, j'ai bien l'info de mon topic par exemple doors/garage-locked qui se met à jour si je visualise dans une console avec un mosquitto-sub, je peux me connecter avec une application android et voir l'état dès qu'il change (MQTT Dash) mais voilà...

Je dois attendre que le ESP8266 envoie l'état pour que je puisse voir sur mon android l'état des portes, et vu que c'est sur piles, j'ai fais un refresh chaque 10mn pour le moment, du coup sur mon android je dois attendre au plus 10mn avant d'avoir un refresh.

J'aurais aimé savoir s'il est possible avec Mosquitto d'envoyer les infos qu'il a dès que je me connecte avec mon smartphone?

Si vous avez besoin de plus d'info, que j'ai oublié quelque chose, faites le moi savoir :)

Merci d'avance de votre aide.

Re: Etat de mes portes fermées/verrouillées avec ESP8266

Posté : lun. 23 janv. 2017 10:05
par destroyedlolo
Salut,

Il suffit simplement que tu envoie les données en mode "retain" : ainsi les mosquitto conservera la dernière valeur reçue et la renverra aux clients qui la demande. Bref, tu n'auras plus attendre 10' lorsque tu connecteras ton client Android.

Par contre, je ne comprend pas pourquoi tu attends 10' entre chaque tests ? En 10' les portes ont largement le temps d'être ouverte et refermée même à plusieurs reprises, non ?

De mon côté, je fais les tests toutes les 15 secondes et j'envoie un message MQTT uniquement lorsque la situation de la porte change.

A+

Re: Etat de mes portes fermées/verrouillées avec ESP8266

Posté : lun. 23 janv. 2017 16:22
par swisscore
Merci de ton aide, je ne vois pas encore comment faire en "retain" mais je vais creuser cette piste. J'avais déjà vu cette option, mais j'avais pas compris s'il gardait seulement la dernière valeur du dernier topic ou s'il gardait la dernière valeur de chaque topic... Comme tu me le dis, c'est bien la dernière valeur de chaque topic qui est gardée ?

En fait le but est de ne pas avoir besoin de contrôler qu'on a pas oublié de fermer une porte avant de se coucher ou par exemple si on part un week-end,...

Du coup pas besoin d'avoir cette info en "live" pour le moment, et comme ça je tourne avec 2 piles AA pendant, je l'espère, plusieurs mois/années avec le mode deep sleep

J'avais aussi pensé à faire que lorsqu'il y a un changement, à voir si avec les messages enregistrés je ferais cette option ou non...

Re: Etat de mes portes fermées/verrouillées avec ESP8266  [RESOLU]

Posté : lun. 23 janv. 2017 17:30
par destroyedlolo
Salut
swisscore a écrit :Merci de ton aide, je ne vois pas encore comment faire en "retain" mais je vais creuser cette piste.
Regarde dans les options du Submit que tu utilises ;)
swisscore a écrit :J'avais déjà vu cette option, mais j'avais pas compris s'il gardait seulement la dernière valeur du dernier topic ou s'il gardait la dernière valeur de chaque topic... Comme tu me le dis, c'est bien la dernière valeur de chaque topic qui est gardée ?
C'est par topic.
swisscore a écrit :En fait le but est de ne pas avoir besoin de contrôler qu'on a pas oublié de fermer une porte avant de se coucher ou par exemple si on part un week-end,...
Oui, j'avais le même besoin, mais rapidement, ca m'a gaver de devoir attendre pour avoir l'info :)
Je suis en filaire avec du 1-wire donc je n'ai pas de pb d'alimentation, mais un ESP avec des sleep() 15s ou plus resiste à mon avis très longtemps.

Sinon, swiss .. parce que switzerland ? Dans ce cas, nous sommes peut etre voisin ;)

Re: Etat de mes portes fermées/verrouillées avec ESP8266

Posté : lun. 23 janv. 2017 20:10
par swisscore
[quote="destroyedlolo"]Salut
[quote="swisscore"]Merci de ton aide, je ne vois pas encore comment faire en "retain" mais je vais creuser cette piste.[/quote]
Regarde dans les options du Submit que tu utilises ;)

[quote="swisscore"]J'avais déjà vu cette option, mais j'avais pas compris s'il gardait seulement la dernière valeur du dernier topic ou s'il gardait la dernière valeur de chaque topic... Comme tu me le dis, c'est bien la dernière valeur de chaque topic qui est gardée ?[/quote]
C'est par topic.

[quote="swisscore"]En fait le but est de ne pas avoir besoin de contrôler qu'on a pas oublié de fermer une porte avant de se coucher ou par exemple si on part un week-end,...[/quote]
Oui, j'avais le même besoin, mais rapidement, ca m'a gaver de devoir attendre pour avoir l'info :)
Je suis en filaire avec du 1-wire donc je n'ai pas de pb d'alimentation, mais un ESP avec des sleep() 15s ou plus resiste à mon avis très longtemps.

Sinon, swiss .. parce que switzerland ? Dans ce cas, nous sommes peut etre voisin ;)[/quote]


En fait il le fait tout seul à voir, j'avais bien configuré le truc,

Pour ma part je ne pensais pas mettre d'alimentation 230V ou autre, du coup c'est plus restreint. Avec le mode deep sleep par contre j'ai le "problème" qu'il ne garde pas l'état des variables, du coup je dois les enregistrer à quelque part (eeprom du rtc j'ai vu que c'était possible? ou autre part?)

Oui, j'habite vers Fribourg

Re: Etat de mes portes fermées/verrouillées avec ESP8266

Posté : lun. 23 janv. 2017 21:10
par destroyedlolo
swisscore a écrit :En fait il le fait tout seul à voir, j'avais bien configuré le truc,
Cool :D
swisscore a écrit :Pour ma part je ne pensais pas mettre d'alimentation 230V ou autre, du coup c'est plus restreint.
Je n'ai qu'une alim centrale (en l’occurrence, celle de mon BananaPI) et les sondes sont alimentés par mon bus. Inconvénients étant que ça m'oblige a tirer le dit bus ...
Par contre, j'envisage d'utiliser le hertzien pour des sondes distantes (genre la température de la piscine) mais alimentées par cellules solaires ... mais faudra que je trouve le temps.
swisscore a écrit :Avec le mode deep sleep par contre j'ai le "problème" qu'il ne garde pas l'état des variables, du coup je dois les enregistrer à quelque part (eeprom du rtc j'ai vu que c'était possible? ou autre part?)
Les RTC contienne généralement des RAM faites pour ça en effet (pas des eprom car ca consome un max lors des écritures).
swisscore a écrit :Oui, j'habite vers Fribourg
Plus loin du coup :)

Re: Etat de mes portes fermées/verrouillées avec ESP8266

Posté : jeu. 26 janv. 2017 18:17
par swisscore
Autre question pour les spécialistes, quel est le moyen le plus simple pour garder une variable lors du deep sleep ?

J'ai vu qu'on pouvait utiliser la mémoire du RTC ? Est-ce que quelqu'un a un exemple ?

Re: Etat de mes portes fermées/verrouillées avec ESP8266

Posté : lun. 30 janv. 2017 18:16
par swisscore
c'est bon cela fonctionne :

Code : Tout sélectionner

#include <EEPROM.h>

byte eeprom0 = 0;
byte eeprom1 = 0;

void eepromRead()
{
  // Lecture de l'EEPROM, dernier état des portes
  eeprom0 = EEPROM.read(0);
  eeprom1 = EEPROM.read(1);
  xxx = eeprom0;
  yyy = eeprom1;
}

void eepromWrite()
{
  // Sauver en EEPROM du RTC l'état de la porte afin d'envoyer par wifi que quand il y a un changement
  EEPROM.write(0,xx);
  EEPROM.write(1,yy);
  delay(10);
  EEPROM.commit();
  delay(10);
  eepromRead();
  delay(10);
}

Par contre le persistant ne fonctionne pas toujours, j'ai 4 modules essayés, 2 fonctionnent et 2 non, je ne sais pas pourquoi...

Faut-il "purger" le fichier mosquitto.db afin de plus rien avoir dedans ?

Re: Etat de mes portes fermées/verrouillées avec ESP8266

Posté : lun. 30 janv. 2017 18:25
par swisscore
Bizarre j'ai reprogrammé le module et cela fonctionne maintenant alors que je n'avais pas vraiment fait de modif...