Le ou La ?
Le partageoir est un objet électronique qui fait des trucs informatiques. C'est peu la pataugeoire des enfants du numérique, expérimentant l'écriture et le codage commun. Et aussi une sorte de TAZ, stase temporaire à deux sous dont les tiroirs sont à surprises. L'idée première à part l'inassouvissable envie de bricolage est de faire un machin qui ne vaut rien. Parce que jusque là, un boite à partage et autre pirate box, coûte plus de 25€ nécessite une bonne source d'énergie, et n'est pas si simple que cela à mettre en œuvre. Parce que les codes de la programmation de la puce ESP8266 sont disponibles, et que personne ne s'en est occupé jusqu'à aujourd'hui… tous le monde semble se perdre dans l'immensité d'Internet, semant dans les nuages ce qui de fait reste très local, jetant par les fenêtres empommées son savoir, ses connaissances, ses créations, et ne récoltant que du vent, quant ce n'est pas des tempêtes. Le partageoir n'a pas besoin d'Internet, elle n'en utilise que ses sbires. Elle n'a pas besoin d'autre source d'énergie que le soleil. Elle ne vous fait pas consommer sournoisement 15000 km de réseau mondial au moindre clic ( prendre sa voiture pour aller acheter son pain à moins du kilomètre ou naviguer sur les réseaux sociaux toute la journée est aujourd'hui équivalent en terme d’empreinte carbone …)
Le partagoir ne sait faire pour le moment qu'un truc, partager localement des données numériques.
Il peut devenir spore numérique dans sa phase de reproduction.
Le partageoir est aujourd'hui une version plus sophistiquée que la partagette. Le partageoir peut porter un site web dynamique et offrir toute sorte de services réseaux que la partagette ne se contente que d'être un petit site de pages html
Je dirais que le partageoir est sur une base de processeur ARM alors que la partagette est autour d'ESP8266 , ESP32 ou ce genre de puces WiFi dédiées au objets connectés.
A partir d'une ESP8266 PRO cad avec 16Mo de flash, que je concidere suffisant, si on a besoin de plus il faut s'orienter sur un partageoir avec une ARM et debian
$ for file in `ls -A1`; do curl -F "file=@$PWD/$file" 192.168.4.1/edit; done // pas de sous repertoire
$ for file in `find . -type f -print | sed 's/.\///'; do curl -F "file=@$PWD/$file" 192.168.4.1/edit; done // fonctionne en mode admin
Commande bash : faire un fichier ex : esp_partagette_ftp.sh dans le repertoire à transféré, programme récursif !
#!/bin/bash echo " ftp -p -n -v 192.168.4.1 <<!! user toto gnulinux " > /tmp/esp_ftp.sh for file in `find . -type f -print | sed 's/.\///'` do echo "put $file" >> /tmp/esp_ftp.sh done echo "exit !!" >> /tmp/esp_ftp.sh bash /tmp/esp_ftp.sh
le programme est aussi fourni avec les sources
mais le mieux ?? est peut etre d'avoir sur un serveur web extérieur un répertoire accessible avec les fichiers. On peut gérer alors une flotte de partagette chacune étant identifiée séparément, le paramètre DOSSIER indiquant le répertoire du site à télécharger. ( je n'utilise plus cette fonction …)
Fichier prtgeuse.txt:
#info chipID = 001840EF SOURCE_SSID ssid d'ou recupérer les fichiers (prtgeuse.txt) SOURCE_PASS SOURCE_SITE , url DOSSIER , le repertoire contenant le site a telecharger PAGES_VERSION , telecharge si nouvelle version , int HORAIRES se met en deepsleep si heure pas bonne ex 9,10,11,12,16,17 SRVNTP serveur NTP pour mise a l'heure SSID SSID prise par la PARTAGETTE PASS mot de passe si existe SITEIP IP du site de la partagette SITE nom du site de la partagette CANAL canal_wifi de 1 a 13 MAX_CONNEXION nbr de connexion simultanées max =5 (8 en theorie) INVISIBLE si 1 SSID invisible
exemple
# Global # SOURCE_SSID ssid d'ou recupérer les fichiers + config.ini ### definitions globales SOURCE_SSID = PARTAGEUSE SOURCE_PASS = 1234567890 SOURCE_SITE = http://truc.site/public #MODIFPASS ### définition par zones WiFi # par partageoir/partagette # PREMIERE PARTAGETTE # Nom des partagettes # chipId , repertoire de cette SD # PAGES_VERSION , telecharge si nouvelle version , int # HORAIRES se met en deepsleep si heure pas bonne ex 9,10,11,12,16,17 # faire un fichier /listfic.txt = liste de tous les fichiers a telecharger CHIP_ID = 6605423 PAGES = simple VERSION = 1 HORAIRES = 0,1,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23 SRVNTP = FreeWifi SSID = PARTAGEOIR PASS = SITE = http://192.168.4.1 MAX_CONNEXION = 6 CANAL = 1 INVISIBLE = 0 FTPUSER = toto FTPPASS = linux GLOBPASS = gnulinux ################################################ CHIP_ID = 6605424 PAGES = defaut VERSION = 1 HORAIRES = 0,1,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23 SSID = PARTAGETTE PASS = SITE = http://192.168.4.1
fichier /listfic.txt exemple
/tags/index.xml /favicon.ico /categories/index.xml /prtgeuse.txt /index.xml /index.html /images/partagette-18.tgz /sitemap.xml /listfic.txt
De base une fiction interactive, par exemple écrite avec Twine2 fonctionne sur le partageoir. Ce mode de programmation gagne à être connu, il permet la création logique en utilisant de façon très simple les possibilités de javascript.
Mais en ajoutant des fonctions voir des capteurs à la puce, on pourrait:
La page html/javascript lue sur un terminal/smartphone peut prendre en compte une information en temps réel venant des capteurs connectés sur le partagoir. Cela permet du texte interactif et dynamique avec une relation au contexte (Projet Ronce de vents…)
Inclure une possibilité de sortir les variables par http (?json) exemple http://partageoir.local/?A0 renvoi {A0=234} ou juste 234
Un code javascript pourrait etre du genre
var url = new URL("http://partageoir.local/?A0"); var A0 = url.searchParams.get("A0");
let url = 'https://example.com'; fetch(url) .then(res => res.json()) .then((out) => { console.log('Checkout this JSON! ', out); }) .catch(err => { throw err });
aujourd'hui été 2018 j'utilise
Au début de l'année c'était:
si vous faites cela sans le shield wemos
CD/DAT3/CS | GPIO15 |
CMD/DI | GPIO13 |
CLK/SCLK | GPIO14 |
DAT0/DO | GPIO12 (may need an 10K pullup to 3.3V) |
VSS1 & VSS2 | GND |
VDD | 3.3V |
Cette nouvelle version permet d'envisager de déposer des partagettes dans des endroits fréquentés, ce qui n'était pas le cas jusque la.
Je reviens sur la synchronisation de l'heure, si une horloge est présente (DS1309) elle est utilisée , si le paramètre SRVNTP dans le fichier /prtgeuse.txt ou serv_ntp pour /prtgeuse.json est présent , il est utilisé.
Une commande protégée cmd?srv_ntp=“lepointWiFi” est disposnible , ne pas oublié de faire cmd?sauve=“” ensuite
Après quelques essais , j'ai implémenté d'autres fonctions
C'est une version que je présente au Summerlab SN juillet 2018
PlatformIO a des bibliothèques a trous :( je repasse sur arduino pour cette parti d'échanges http
V6 J'utilise PlatformIO pour la compilation et le dépot du site sur la flash partagette-5.tgz
180206-120404-d1_mini_pro.tar Ajouts:
le fichier param.cfg est au format json, j'ai collé un pass a cause d'android ;(
{ "SSID" : "partageoir", "PASSWORD" : "0123456789", "HOSTNAME" : "surla.zone", "canal_wifi" : 1, "max_connection" : 8, "invisible" : 0 }
Sur PlatformIO et plus arduino : ronces_sd_captif.tar
pensez pour telecharger sur la flash le spiffs , data dans le / du projet (pas /src) et faire par le terminal d'Atom : - platformio run –target buildfs - platformio run –target uploadfs
# le SSID final sera renommé en .local # par défaut SSID deviendra partageoir.local # par defaut hostname deviendra partagoir.local SSID = partageoir HOSTNAME = partageoir #PASSWORD = 0123456789 MODIFPASS = 777
Fonctionne avec arduino-ESP8266 6.5.1
param.ini est un fichier de paramétrage, il contient :
ainsi
Il existe un fichier logfile = CONNECT.LOG qui contient les ssid environnant et les mac des machines qui se connectent.
sdweb_snhack3-v1-ok.ino, mon code de test, un grand merci à Hristo Gochkov et Ivan Grokhotkov ( igrr )
avec un portail captif , une grosse evolution, cf https://www.hackster.io/rayburne/esp8266-captive-portal-5798ff?ref=user&ref_id=506&offset=0
les fichiers à coller à la racine de la SD, formatée en fat:partageoir-stock.tgz Attention les noms de fichier sont encore en 8.3 à l'ancienne, pas encore de nom long …
mon param.ini du moment
;Paramétrage du Partageoir ; [wifi] ; le nom du réseau WIFI ici = nom de la page ; url de la page = partage.local/index.htm ssid = partage.local hostname = partage ; réseau ouvert ; password = ; mot de passe d'accès plus large (non implémenté) ; le dépot est fermé par le firmware pour le moment ;modifpass = sesame [network] ;mac = 01:23:45:67:AB:AB ;ip de base =192.168.4.1 / 255.255.0.0 ; jamais 2 ip identiques sur le même réseau ;ip modifiée = 192.168.IPC.IPD IPC = 4; IPD = 3; [materiel] ; CS connexion sur ESP-12 sdgpio = 16 [log] ; compteur d'allumage ; compteur = compteur.log ; trace des connexions ; logfile = CONNECT.LOG
Le firmware tout fait a flasher avec esptool ou esptool.py :