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

Salut

Quel partitionement de la mémoire flash avez vous retenu (dans le menu la où vous choisissez la carte)

Salut J-M-L

Celui par défaut : Default 4MB with spiffs (1,2MB APP/1,5MB SPIFFS)

Et vous avez chargé les fichiers dedans depuis l’interface ?

Alors la je ne sais plus si il y a une manip, il faut que je révise.

dans mon menu j'ai ESP 32 sketch data upload. Il me fait une erreur quand j'essais de clicker dessus il me met

ATTENTION : la bibliothèque LiquidCrystal_I2C-1.1.2 prétend être exécutable sur la (ou les) architecture(s) avr et peut être incompatible avec votre carte actuelle qui s'exécute sur esp32.
Le croquis utilise 786482 octets (60%) de l'espace de stockage de programmes. Le maximum est de 1310720 octets.
Les variables globales utilisent 40552 octets (12%) de mémoire dynamique, ce qui laisse 287128 octets pour les variables locales. Le maximum est de 327680 octets.
esptool.py v2.6
Serial port COM4
Connecting........_
Chip is ESP32D0WDQ6 (revision 1)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
MAC: 24:6f:28:b2:23:f8
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 921600
Changed.
Configuring flash size...
Auto-detected Flash size: 4MB
Compressed 8192 bytes to 47...
Wrote 8192 bytes (47 compressed) at 0x0000e000 in 0.0 seconds (effective 5041.2 kbit/s)...
Hash of data verified.
Compressed 17392 bytes to 11186...
Wrote 17392 bytes (11186 compressed) at 0x00001000 in 0.1 seconds (effective 973.0 kbit/s)...
Hash of data verified.
Compressed 786592 bytes to 439028...
Wrote 786592 bytes (439028 compressed) at 0x00010000 in 6.9 seconds (effective 906.3 kbit/s)...
Hash of data verified.
Compressed 3072 bytes to 128...
Wrote 3072 bytes (128 compressed) at 0x00008000 in 0.0 seconds (effective 1536.0 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...
[SPIFFS] data   : C:\Users\ ***\Desktop\The_code_du_lave_linge\data
[SPIFFS] start  : 2686976
[SPIFFS] size   : 1472
[SPIFFS] page   : 256
[SPIFFS] block  : 4096
/begin.htm
/index.htm
/master.htm
/studio.htm
/style.css
[SPIFFS] upload : C:\Users\***\AppData\Local\Temp\arduino_build_997957/The_code_du_lave_linge.spiffs.bin
[SPIFFS] address: 2686976
[SPIFFS] port   : COM4
[SPIFFS] speed  : 921600
[SPIFFS] mode   : dio
[SPIFFS] freq   : 80m

esptool.py v2.6
Serial port COM4
Traceback (most recent call last):
  File "esptool.py", line 2959, in 
  File "esptool.py", line 2952, in _main
  File "esptool.py", line 2652, in main
  File "esptool.py", line 222, in __init__
  File "site-packages\serial\__init__.py", line 88, in serial_for_url
  File "site-packages\serial\serialwin32.py", line 62, in open
serial.serialutil.SerialException: could not open port 'COM4': WindowsError(5, 'Acc\xe8s refus\xe9.')
Failed to execute script esptool
SPIFFS Upload failed!

Donc ça plante aussi à ce niveau la... je suis juste sur mon smartphone - faites un Google sur l’erreur « Failed to execute script esptool SPIFFS Upload failed! » pour voir si ca vous donne des idées

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();