Détecteur dans ma boite aux lettres

Les applications du Raspberry Pi en contrôle d'accès, alarme et vidéosurveillance

Modérateur : Francois

destroyedlolo
Raspinaute
Messages : 1585
Enregistré le : dim. 10 mai 2015 18:44
Localisation : Dans la campagne à côté d'Annecy
Contact :

Re: Détecteur dans ma boite aux lettres

Message par destroyedlolo » mar. 12 juin 2018 10:18

NetMichel a écrit :
mar. 12 juin 2018 07:52
Car je ne connais pas la programmation des ESP et je trouvais cela plus logique/simple de mettre un Arduino mais je vais regarder
Hormis évidement pour le WiFi et l'organisation des GPIO/Timer/ ... c'est exactement pareil.
C'est comme si tu passais de l'Uno au Méga :mrgreen: :mrgreen:
NetMichel a écrit :
mar. 12 juin 2018 07:52
Par contre, je ne veux pas détecter uniquement le passage du facteur, j'ai aussi des livraisons de colis
Ben une lettre ou un colis ... les 2 couperont un faisceau lumineux s'il est bien placé :mrgreen:
  • BananaPI : Gentoo, disque SATA de 2 To
  • Domotique : 1-wire, TéléInfo, Tablette passée sous Gentoo, ESP8266
  • Multimedia par DNLA
  • Et pleins d'idées ... et bien sûr, pas assez de temps.
Un descriptif de ma domotique 100% fait maison.

destroyedlolo
Raspinaute
Messages : 1585
Enregistré le : dim. 10 mai 2015 18:44
Localisation : Dans la campagne à côté d'Annecy
Contact :

Re: Détecteur dans ma boite aux lettres

Message par destroyedlolo » jeu. 14 juin 2018 09:32

spourre a écrit :
lun. 11 juin 2018 12:36
Et il se contente de 3V. De plus, il est possible d'inclure la mise à jour "en l'air" (OTA) mais il faut le prévoir dans le croquis. Cela a été très bien documenté dans un récent numéro de Hackable Magazine.
Tien d'ailleurs : mauvaise surprise hier, j'ai joué avec un de mes ESP-201 et ça ne fonctionnait pas (et en plus, message d'erreur loin d'etre explicite).
Bref, après quelques tests ... mon ESP n'a que 512K de flash contrairement à d'autres 201 qui ont 1M ... et avec 512K, pas assez de place pour mettre 2 fois BasicOTA en mémoire pour seulement quelques dizaines d'octets :evil:
Bref, il faut bien s'assurer d'avoir un ESP avec 1 Mo ...
  • BananaPI : Gentoo, disque SATA de 2 To
  • Domotique : 1-wire, TéléInfo, Tablette passée sous Gentoo, ESP8266
  • Multimedia par DNLA
  • Et pleins d'idées ... et bien sûr, pas assez de temps.
Un descriptif de ma domotique 100% fait maison.

spourre
Raspinaute
Messages : 735
Enregistré le : lun. 22 déc. 2014 16:50
Localisation : 67380 LINGOLSHEIM

Re: Détecteur dans ma boite aux lettres

Message par spourre » jeu. 14 juin 2018 11:55

destroyedlolo a écrit :
jeu. 14 juin 2018 09:32
...

Bref, il faut bien s'assurer d'avoir un ESP avec 1 Mo ...
Ne crois pas que je suis sponsorisé par Denis BODOR mais, AMHA, HM est vraiment "la référence" :mrgreen:
dans le numéro 22 de janvier/février 2018, page 76, il décrit "comment augmenter la mémoire des vieux modules WIFI ESP8266 en remplaçant un unique composant".
il remplace la mémoire flash de 512 ko par une de 4 Mo (ça devrait donc résoudre ton problème).
Il ne faut pas trembler et avoir un peu de matériel (tresse à dessouder) mais ça reste faisable.

Sylvain

destroyedlolo
Raspinaute
Messages : 1585
Enregistré le : dim. 10 mai 2015 18:44
Localisation : Dans la campagne à côté d'Annecy
Contact :

Re: Détecteur dans ma boite aux lettres

Message par destroyedlolo » jeu. 14 juin 2018 12:10

Yep :)

D'un autre coté, j'ai d'autres ESP-201 avec 1-Mo et vu le prix ...
Je vais donc réservé celui la pour des taches plus simples, sans OTA.

Mais c'est assez idiot comment est fait l'OTA : a chaque fois, tout est téléchargé (code WiFi, OTA, "librairies systeme" ) et en plus, il faut 2 fois plus de place que le schetch (du coup un simple BasicOTA ne passe pas :( ) ... ca gagnerait à avoir un peu de modularité.
Malheureusement, ca va a l'encontre de comment est foutu l'IDE arduino ou tout est recompiler façon monolithique ...
  • BananaPI : Gentoo, disque SATA de 2 To
  • Domotique : 1-wire, TéléInfo, Tablette passée sous Gentoo, ESP8266
  • Multimedia par DNLA
  • Et pleins d'idées ... et bien sûr, pas assez de temps.
Un descriptif de ma domotique 100% fait maison.

spourre
Raspinaute
Messages : 735
Enregistré le : lun. 22 déc. 2014 16:50
Localisation : 67380 LINGOLSHEIM

Re: Détecteur dans ma boite aux lettres

Message par spourre » ven. 15 juin 2018 19:09

destroyedlolo a écrit :
jeu. 14 juin 2018 12:10

Malheureusement, ca va a l'encontre de comment est foutu l'IDE arduino ou tout est recompiler façon monolithique ...
On s'éloigne un peu du sujet initial mais comme le PO lui-même a posé des questions sur l'outil de développement à utiliser avec les ESP (il croyait obligatoire d'avoir un Arduino), je vais développer un peu.

Le coup de génie d'Espressif (le développeur des ESP) a été de le rendre, dès le début, compatible avec l'IDE Arduino. Cet IDE présente certes les limitations que tu soulignes, à justes raisons, mais il était un peu "le standard" du moment (forums actifs, nombreuses bibliothèques, exemple de code...).
Sa facilité d’utilisation en fait un outil abordable pour des utilisateurs qui ne maîtrisent pas forcément les arcanes de la cross-compilation. Les concepts de base sont "masqués" par un vocabulaire dédié et simplifié comme "croquis", "vérifier", "téléverser"...
Cette approche permet à ne nombreux utilisateurs d'utiliser des programmes compilés sur une machine de développement (Windows, Mac OS, Linux..) alors que la plupart des utilisateurs de Rasberry ne dépassent pas le stade des langages interprétés (Python ...) comme le montre les nombreuses discussions de ce forum.

En montant en puissance (l'ESP32 Wroom), Espressif a gardé cette approche et fournit une version allégée de son kit de développement (SDK) qui prend le nom de IDF (IoT Development Framework) pour marquer qu'il est bien dédié à l'IoT (Internet of Things).
Le prix à payer pour l'intégration dans l'IDE Arduino et sa facilité d'utilisation est la perte d'accès à de nombreuses fonctionnalités liées à la gestion de projets (gestionnaire de versions, débogage..) ou du système ( FreeRTOS...).

Cette approche peut satisfaire 90 % des utilisateurs et faciliter la migration d'Arduino vers ESP.
Pour les "power users" comme toi, il y a la possibilité de faire exactement l'inverse. Installer l'IDF d'Espressif et y incorporer le soutien de l'Arduino.
Tu te retrouves avec une chaîne complète de cross-compilation, à la mode UNIX. Tu peux donc utiliser TOUS les outils habituels, soit en mode CLI (GIT, make, VI...), soit en mode GUI (Eclipse) .

N'ayant aucun background Arduino, pour mes premiers pas, j'ai choisi le mode "facile" mais j'ai bien conscience de sous-exploiter la bête :twisted:

Sylvain

PS) j'ai oublié de préciser que cela est très bien expliqué dans le dernier numéro de HM avec même, pour le fun, la procédure à suivre pour le compiler sur un Rasberry :mrgreen: :mrgreen:

destroyedlolo
Raspinaute
Messages : 1585
Enregistré le : dim. 10 mai 2015 18:44
Localisation : Dans la campagne à côté d'Annecy
Contact :

Re: Détecteur dans ma boite aux lettres

Message par destroyedlolo » dim. 17 juin 2018 02:10

Salut,

Ben ce qui est décrit dans HM permet de compiler en ligne de commande ... mais entraine pas mal de limitations, en particulier, il rend difficile l'inclusion des librairies Arduino : l'IDE n'utilise pas de "librairies" aux sens OS du terme, mais copie les sources du projet et de ses librairies dans un répertoire temporaire avant de tout compiler ... ca a des avantages en particulier en facilitant les choses pour les débutants comme tu le dis, mais c'est assez crade et consommateur vu que tout est recompilé à chaque changement de directives ... ou a chaque reboot si c'est dans un /tmp bien configuré.
Du coup, il faudrait faire de même si on veut faire un compilation en ligne de commandes : tout copier. Et quand c'est fait a la mimine, ca devient vite pénible (peut etre existe-t-il des outils pour ca ... je n'ai pas chercher).
Et on se retrouve in fine avec un binaire monolithique qui est téléchargé sur l'ESP. Du coup, ca ne résout pas mes pb de modularité.

Ce que je veux dire, dans mon système, il faudrait qu'on se retrouve avec plusieurs parties binaires chargées à des endroits différents de la mémoire ( le SDK, les librairies utilisées, notre code, ... ).
Et il faudra une "édition de liens" sur l'ESP pour que chacun retrouve ce qu'il a besoin chez le voisin.
Genre, notre code contient un

Code : Tout sélectionner

WiFi.begin()
ben il faudra qu'il saute au code correspondant dans les librairies.

Sous Linux, le dynamique Linker utilise une "table des symbole" autant que je me souvienne mais c'est trop lourd et de la place perdue pour de l'embarqué.

L'autre solution, plus légère, est d'utiliser des tables de sauts : lors de la compilation des librairies, un fichier "de liens" est créé qui indique "la fonction begin() se trouve à l'offset 0x1234 de la librairie WiFi", donc dans le code généré, ca se traduit par un simple

Code : Tout sélectionner

jsr 0x1234(WiFi)
Alors, si c'est facile à faire, je ne suis pas persuadé que le Gcc "de base" sache gérer ce type de liens de manière natif (ben oui, je ne suis pas si power user que tu le dis ;) ).
Par exemple, l'OS de l'Amiga était entièrement basé sur ce système : sauf qu'il fallait soit utiliser des extensions spécifiques Amiga du compilo ( #pragma ), soit utiliser ce qu'on appelait des stubs, des fonctions assembleurs qui faisait les sauts correspondants.

A+
  • BananaPI : Gentoo, disque SATA de 2 To
  • Domotique : 1-wire, TéléInfo, Tablette passée sous Gentoo, ESP8266
  • Multimedia par DNLA
  • Et pleins d'idées ... et bien sûr, pas assez de temps.
Un descriptif de ma domotique 100% fait maison.

spourre
Raspinaute
Messages : 735
Enregistré le : lun. 22 déc. 2014 16:50
Localisation : 67380 LINGOLSHEIM

Re: Détecteur dans ma boite aux lettres

Message par spourre » mar. 19 juin 2018 20:03

Bonjour,
Je ne cite pas pour ne pas alourdir mais tes remarques sont intéressantes :evil:
Je vais essayer d'y répondre mais je pense, même si le PO n'a pas encore manifesté de mauvaise humeur, que l'on s'éloigne un peu (beaucoup ?) du sujet d'origine.

Mon analyse s'articule autour de 2 volets:

-) technique
-) philosophique (c'est d'actualité).

Technique:

Comme déjà mentionné, j'utilise (pour le moment) l'approche "facile" par l'IDE Arduino. J'ai installé tout cela dans une VM, avec un user espdev. Comme Denis l'explique bien dans HM, cela revient à installer le SDK (IDF) d'Espressif, dans une version à peine allégée. L'accès via l'IDE Arduino masque toute la cuisine interne.
J'ai donc exploré /home/espdev/Arduino/hardware/espressif/esp32/docs/ et suis rapidement tombé sur ce fichier make.md dont je te livre le contenu:
To use make
============

[makeEspArduino](https://github.com/plerup/makeEspArduino) is a generic makefile for any ESP8266/ESP32 Arduino project.Using make instead of the Arduino IDE makes it easier to do automated and production builds.
Cela me donne à penser que la version est tellement peu allégée, qu'elle peut être invoquée en mode CLI, avec un makefile pour gagner en finesse et en automatisation dans la construction des programmes.

En suivant le lien vers ce fichier make, qui est hébergé sur un dépôt GIT:
https://github.com/plerup/makeEspArduino
tu trouveras encore plus d"'informations dont celle-ci semble bien répondre à ton objection quant à la "non gestion" des bibliothèques par l'IDE Arduino:
The makefile can use the ESP/Arduino environment either from the installation within the Arduino IDE or in a separate git clone of the environment. The latter can be useful in project where you want stringent control of the environment version e.g. by using it as a git submodule.

You basically just have to specify your main sketch file and the libraries it uses. The libraries can be from arbitrary directories without any required specific hierarchy or any of the other restrictions which normally apply to builds made from within the Arduino IDE. The makefile will find all involved header and source files automatically.

The makefile will also automatically produce header and c files which contain information about the time when the build (link) was performed. This file also includes the git descriptions (tag) of the used version of the ESP/Arduino environment and the project source (when applicable). This can be used by the project source files to provide stringent version information from within the software.

Rules for building the firmware as well as upload it to the ESP board are provided.

It is also possible to let the makefile generate and upload a complete SPIFFS file system based on an arbitrary directory of files.

The intension is to use the makefile as is. Possible specific configuration is done via via makefile variables supplied on the command line or in separate companion makefiles.

The makefile can be used on Linux, Mac OS and Microsoft Windows (Cygwin).
Je ne pense pas nécessaire de traduire, ceux qui sont en mesure de comprendre l'utilité du make doivent certainement maîtriser un minimun l'anglais (technique).

Philosophique:

Cela semble donc techniquement possible et peut répondre à des besoins des professionnels voire des amateurs éclairés. Il ne faut toutefois pas se tromper d'approche. L'ESP n'est pas un nano-computeur mais reste un (puissant) microcontrôleur. Je trouve déjà bluffant qu'il accueille un RTOS et puisse se programmer en C, C++.
Vouloir des DLL, avec tout ce que cela comporte de problèmes de compatibilité entre les versions, ne me semble pas raisonnable.
Vouloir un loader avec calcul de la relocation de entrées de la DLL va se payer en termes de délais de réaction et en perte de performances (bye bye le temps réel), comme nous le connaissons malheureusement avec le Raspberry.
Donc le développement peut être modulaire, avec des vraies bibliothèques mais, in finé, le programme est monolbloc (link statique).

Cordialement

Sylvain

destroyedlolo
Raspinaute
Messages : 1585
Enregistré le : dim. 10 mai 2015 18:44
Localisation : Dans la campagne à côté d'Annecy
Contact :

Re: Détecteur dans ma boite aux lettres

Message par destroyedlolo » mer. 20 juin 2018 00:32

Salut,
spourre a écrit :
mar. 19 juin 2018 20:03
Je vais essayer d'y répondre mais je pense, même si le PO n'a pas encore manifesté de mauvaise humeur, que l'on s'éloigne un peu (beaucoup ?) du sujet d'origine.
Comme souvent, je ne suis pas sur qu'il soit encore parmi nous :roll: Ceci dit, Michel si tu nous lis, je bosse sur un barrière optique pour mon poulailler, au cas où tu n'ai pas avancé de ton côté :) (Faudra juste ne pas etre pressé, l'été étant aussi chargé que l'hiver :twisted:).
spourre a écrit :
mar. 19 juin 2018 20:03
Cela me donne à penser que la version est tellement peu allégée, qu'elle peut être invoquée en mode CLI, avec un makefile pour gagner en finesse et en automatisation dans la construction des programmes.
...
En suivant le lien vers ce fichier make, qui est hébergé sur un dépôt GIT:
https://github.com/plerup/makeEspArduino
Sur le forum Arduino, je suis aussi tombé sur Arduino-Makefile qui est un Make Maker qui a l'aire de prendre en compte les librairies sans faire les copies dont je parle.
Quoi qu'il en soit, avec un Makefile, on devrait obtenir un .o par source : il faudra donc séparer ceux des librairies de ceux de notre programme et les charger en mémoire ... après avoir résolu le pb des liens.
Sur ce point précis, j'imagine qu'il y a le même pb lors des appels au firmware (les fameux 0x00000.bin ou 0x10000.bin), il faudrait regarder comment ils font les appels ... en espérant que ce ne soit pas par un système de trap.
spourre a écrit :
mar. 19 juin 2018 20:03
Je trouve déjà bluffant qu'il accueille un RTOS et puisse se programmer en C, C++.
Hé hé, je me suis fait la même réflexion :mrgreen: Non pas pour le C car ca se fait aussi sur des uP beaucoup moins dotés comme les PICs, mais il y a eu de gros progrès fait avec GCC et le C++ : mes premieres expériences en C++ (y'a bien longtemps) donnaient des exécutables très gros et surtout très lourd. Ce n'est (heureusement) plus le cas.
spourre a écrit :
mar. 19 juin 2018 20:03
L'ESP n'est pas un nano-computeur mais reste un (puissant) microcontrôleur [...] Vouloir des DLL, avec tout ce que cela comporte de problèmes de compatibilité entre les versions, ne me semble pas raisonnable.
Le but n'est pas d'avoir des DLL, mais de pouvoir ne mettre à jour que la partie du binaire correspondant à notre code. Le postulat étant que les "librairies" restent inchangées. Si on doit les faire évoluer (nouvelles versions, changement des options de compilation), un système comme je le présente plus haut nécessite de réinstaller toutes les parties ... et sans doute de recompiler notre propre partie, les offsets changeant peut-être.
spourre a écrit :
mar. 19 juin 2018 20:03
Vouloir un loader avec calcul de la relocation de entrées de la DLL va se payer en termes de délais de réaction
Oui, s'il y a relocation. Mais si tu utilises un système d'offsets comme je le décris, il n'y a strictement aucune pénalité : l'étape équivalente à la relocation est faite lors de la compilation lorsque les offsets sont calculés par le compilo ... et fait parti de toutes facons des tâches qu'il doit faire.
L'adresse/Offset étant connu à ce moment là, aucune perte de temps.
spourre a écrit :
mar. 19 juin 2018 20:03
et en perte de performances (bye bye le temps réel), comme nous le connaissons malheureusement avec le Raspberry.
Le pb est différent sur les système Unix : du fait de son multitâche évolué (et dynamique), le réveil d'un processus particulier n'est pas suffisamment déterministe et surtout rapide lorsqu'un événement arrive ...
Comme il me semble que nous en avions discuté, il n'y a dans ce cas qu'une seule possibilité : c'est créer un module kernel qui attache la routine de traitement directement à l'interruption qui l'interesse (à l'ancienne on pourrait dire). Du coup, il court-circuite tout le mécanisme du multitâche (avec les inconvénients que cela implique) mais on a vraiment du temps-réel. La dite routine doit être la plus courte possible et à pleins de limitations, classique de chez classique.

Sinon, pour en revenir à l'OTA en temps que tel, une autre solution serait de passer par Lua vu que seul le script serait à télécharger et non les librairies et le langage : je n'ai pas essayé car j'ai lu qu'il ne restait pas des masses de place pour le script ... et comme je n'ai le pb que sur les ESP ayant le moins de flash ...
Mais bon, faudrait que je trouve le temps de regarder de plus prêt.

A+
  • BananaPI : Gentoo, disque SATA de 2 To
  • Domotique : 1-wire, TéléInfo, Tablette passée sous Gentoo, ESP8266
  • Multimedia par DNLA
  • Et pleins d'idées ... et bien sûr, pas assez de temps.
Un descriptif de ma domotique 100% fait maison.

MiG_Flogger
Messages : 4
Enregistré le : sam. 14 juil. 2018 17:29

Re: Détecteur dans ma boite aux lettres

Message par MiG_Flogger » dim. 15 juil. 2018 10:52

Bonjour,

J'aimerais aussi installer un détecteur dans ma boîte aux lettres, mais j'ai un petit problème. La boîte aux lettres serait là : https://tranio.com/greece/adt/1436303/
En effet, j'aimerais m'acheter une résidence secondaire, et c'est la principale raison pour laquelle je me suis intéressé à la domotique, puis au Raspberry Pi. J'aimerais pouvoir surveiller efficacement ladite résidence depuis chez moi, et mon appartement principal quand je suis en vacances. Donc, la boîte aux lettres, une surveillance de l'ouverture de la porte, et si je suis bon, l'ouverture/fermeture des volets déroulants.

Le truc, c'est qu'il y a déjà plein de tutos pour tout ça, maaaaiiiis vu que la résidence serait à l'étranger, je ne peux pas adopter un système par SMS à moins de me prendre un forfait international. Bon, quand on achète une maison, on ne défèque pas une pendule pour un forfait téléphone, mais ça prend plus de temps à faire, il faut soit prendre un forfait "standard" avec engagement etc, soit recharger constamment un forfait "jetable". Et pareil pour le Raspberry Pi qui serait à ma résidence principale, puisque je m'en servirais pour me contacter en Grèce.

Je pensais faire passer ça par internet, mais pas par une boîte mail puisque je n'ai pas de notifications mail sur téléphone (j'ai essayé, je suis bombardé toute la nuit donc non), est-il possible de faire tourner le Raspberry Pi sous Android et d'y installer une application type Viber ou Whatsapp pour envoyer des messages? Bien sûr, la framboise serait connectée à la box de la maison donc pas de problème de connexion, mais ce n'est pas le gros problème : pensez-vous qu'il serait possible de coder quelque chose pour que la présence d'une lettre dans la boîte ou l'ouverture de la porte m'envoie automatiquement un message Viber ou Whatsapp? En effet, cela me semble assez difficile... Sinon, si c'est plus simple, je peux aussi créer une boîte mail dédiée uniquement à la réception de messages venant des Raspberries, et installer l'application liée à cette boîte mail sur mon téléphone.

Qu'en pensez-vous? Je ne suis pas sûr que mon message soit clair, donc n'hésitez pas à me demander :mrgreen: bon dimanche!

Bud Spencer
Raspinaute
Messages : 1089
Enregistré le : lun. 15 août 2016 21:38

Re: Détecteur dans ma boite aux lettres

Message par Bud Spencer » dim. 15 juil. 2018 12:38

MiG_Flogger a écrit :
dim. 15 juil. 2018 10:52
...pensez-vous qu'il serait possible de coder quelque chose pour que la présence d'une lettre dans la boîte ou l'ouverture de la porte m'envoie automatiquement un message Viber ou Whatsapp? En effet, cela me semble assez difficile......

Whatsapp, je sais pas, mais c'est très simple a réaliser avec Viber soit en client REST ou avec l'API.
https://developers.viber.com/
Le premier ennemi de la connaissance n’est pas l’ignorance, c’est l’illusion de la connaissance (S. Hawking).

Répondre

Retourner vers « Accès, alarme et vidéosurveillance »