Gérer lun lave linge en co-propriété

Ok merci, j'ai changé le cable pas mieux; je vais me pencher sur les drivers mais je pars en week end je regarderai a ca demain soir.

Merci en tout cas.

essayez d'abaisser la vitesse de 921600 bauds à 115200 pour le téléchargement - juste au cas où...

Hello, un rappel :
Pour l’esp data upload il ne faut pas ouvrir la console.

Salut lesept, content de te relire !!

Une fois de plus bravo c'est parceque la console était ouverte que je n'arrivais pas a uploader. Ca fonctionne nickel . Je poursuis mes tests et je reviens vers vous. Merci.

Bonjour, j'aimerais mettre plusieurs badges master dans mon code. La ligne pour intégrer le badge master est celui ci :

void initUsers() {
  //ini le tableau des badges
  // Master
  Utilisateur[0].nom = "Master";
  Utilisateur[0].uID =  0xC8F117;
  Utilisateur[0].existe = true;
  Utilisateur[0].nbUtils = 0;
  Utilisateur[0].credit = 1000;

je voulais faire ca:

 Utilisateur[0].uID = {0x52BBD7,0xF64347,0x370EE8,0x1DC87,0xF3E1C7,0xF89837,0xD21427,0x1B2B7,0xB8BB27,0xCC6647,0xC8F117,0x17F1C8B5};

mais ca ne passe pas ?

Vous avez une idée de comment je peux l'écrire ?

c'est prévu que pour une seule valeur et pas un tableau.

il faut modifier la structure et faire de Utilisateur[0].uID un tableau de uint32_t (avec une borne max)

const byte maxBadge = 10;

struct Params {
  char nom[12];
  uint32_t uID[maxBadge];
  bool existe;
  int nbUtils;
  int credit;
};

et faire

Utilisateur[0].uID[0] = 0x52BBD7;
Utilisateur[0].uID[1] = 0xF64347;
Utilisateur[0].uID[2] = 0x370EE8;
...

et en mettant à 0xFFFFFFFF par exemple les cases non remplies.

et bien sûr modifier la fonction qui teste le badge pour qu'elle parcourt le tableau en ignorant celles qui valent 0xFFFFFFFF

ça augmente bien sûr très fortement la mémoire nécessaire.

une autre façon de faire est de rajouter un champ bool à la structure qui dit si le badge a les droits admin ou pas.

struct Params {
  char nom[12];
  uint32_t uID;
  bool superUtilisateur;
  bool existe;
  int nbUtils;
  int credit;
};

et vous déclarez

  Utilisateur[0].nom = "Master";
  Utilisateur[0].uID =  0xC8F117;
  Utilisateur[0]. superUtilisateur = true; // false pour les locataires
  Utilisateur[0].existe = true;
  Utilisateur[0].nbUtils = 0;
  Utilisateur[0].credit = 1000;

comme ça vous ne gérez qu'une seule liste de badges sans "sous ensemble" bizarre de cartes associées à un enregistrement.

Merci pour ce retour;

J'ai essayé les 2 méthodes mais je n'arrive pas a les passer. Le code et long et il y a plein d'interractions (et je comprend pas la moitié d'entre elle). Je vais réflechir a une autre solution pour les badges masters parce qu'il me reste encore beaucoup de choses a voir sur ce projet. merci en tout cas

Je pense que la seconde solution proposée par J-M-L est bonne et facile à mettre en œuvre. Poste ton code je peux t'aider à le faire...

Oui je pense que c’est le plus simple

Au passage - pour évolutions futures, on pourrait en profiter pour changer le booléen carte active en une structure de champs de bits et affecter 1 bit pour la notion de carte active et prendre un ou deux bits pour définir le type de droits de la carte (super user, admin, locataire par exemple) à chaque type la capacité de faire des choses plus ou moins avancées.

Comme ça on reste économe en mémoire - toujours qu’un octet occupé - et on a encore 5 bits pour des évolutions ultérieures.

Oula, bit pour moi c'est surtout un gros mot :). je plaisante.

Je vous met le fichier en PJ si cela vous convient car le nombre de caractère dépasse les lignes de codes utilisées sur le site

Et au risque d'abuser; si pendant que vous l'avez dans les mains vous pouvez verrouiller l'accès à l' IP local par un mot de passe c'est tournée générale de lavage de linge !!

Je te conseille de ne pas laisser ton mot de passe Wifi en clair dans le fichier ino, lorsque tu le postes sur le forum.

Voici une version avec une authentification à la connexion initiale (admin / admin : à modifier lignes 49 et 50) et qui permet au badge numéro 2 (Pierre : studio 2) d’avoir les droits master.

A tester…

the_code_du_lave_linge.ino (17.4 KB)

oups merci j’ai zappé

Voila le code sans ma vie dessus

the_code_du_lave_linge.ino (17.9 KB)

Tu essayes celui que j'ai envoyé au message 453 ?

ah je n'avais pas vu;

il ne passe pas a ce niveau là :

switch (tagok) {
    case 0:
      master();
      // instructions master
      break;
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
    case 6:
    case 7:
    case 8:
    case 9:
    case 10:
      // instructions user connu
      if (Params[tagok] % 2 == 0) user(tagok); ---> ici il me dit expected primary-expression before '[' token
      else master();
      break;
    case 255:
      inconnu();

Au temps pour moi
C’est Params[tagok].droits

   // instructions user connu
      if (Params[tagok].droits) user(tagok);  --->exit status 1   expected primary-expression before '[' token

      else master();

j'ai peut être mal écrit...

Params[tagok].droits %2==0

Je suis sur mon smartphone, je vérifie des que je reviens sur le PC

EDIT : correction

      if (Utilisateur[tagok].droits % 2 == 0) user(tagok);

Salut le sept, j'ai juste 2 min avant de partir et au boulot mais ca semble fonctionner nickel, le paasword fonctionne.

je regarde au master ce soir. Merci !!

Ca fonctionne, lorsque je passe le badge locataire 2 il lance le "void master". donc du coup pour mettre mes 10 badges master je dois créer 10 utilisateurs genre :

 Utilisateur[1].nom = "master1";
  Utilisateur[1].uID = 0x17F1C8B5;
  Utilisateur[1].droits = 0b00000011;
 Utilisateur[2].nom = "master2";
  Utilisateur[2].uID = 045534313;
  Utilisateur[2].droits = 0xb00000011; 
 Utilisateur[3].nom = "master3";
  Utilisateur[3].uID = 0x54352jh;
  Utilisateur[3].droits = 0b00000011; 
....

C'est bien ca ? Dans l'idée j'ai 10 badges Master et j'aimerai faire 25 badges locataires c'est jouable vous pensez ?