Table des matières

Le partageoir , la partagette

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.

Nouvelle utilisation

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

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      

Ancienne à base de SD

  1. Il faut déposer ses données sur une microSD, un simple copie.
    1. ATTENTION la longueur maxi des noms de fichiers est encore de 8 caractères..
    2. index.htm” c'est bon , mais pas “mon super fichiers.html
  2. Mettre la microSD dans le partageoir et appuyer sur le bouton.
  3. Les données sont visibles sur un réseau WIFI 100m autour
  4. Tous le monde peut les lire il suffit de se connecter à son réseau WIFI
  5. Il y a possibilité de déposer un fichier avec un code et d'autre sécurité? ( a faire ) mais de base tout devrait être ouvert…
  6. C'est un portail captif: cad TOUT est redirigé sur les pages présentes sur la SD !

Avantage:

  1. maîtrise de ses données partagées
  2. on peut laisser l'objet sans y laisser sa fortune, ne coûte qu'une dizaine d'euro
  3. fonctionne avec 2 piles ou avec le soleil
  4. code libre

Exemples d'utilisations moins triviales:

Une fiction interactive, une oeuvre hypertextuelle interactive

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:

Évolution possible de l'idée

Inclusion de variable venant des GPIO/A0 ou de capteurs de l'ESP dans un script Twine

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

Matériel

aujourd'hui été 2018 j'utilise

Au début de l'année c'était:

Connexions

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

Codes

Partagettes

Partagette V37 septembre 2019

Partagette V34 mars 2019

Partagette V32 dec 2018

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.

Partagette V20 à 30

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

partagette-30.tgz et partagette.tgz

Partagette V18 et V19

Après quelques essais , j'ai implémenté d'autres fonctions

partagette-20.tgz

Partagettes anciennes versions

V8 partagette-ok-8.tgz

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

V9

partageoirsd_v9.tar.gz

V8

partageoirsd_v8.tar.gz

V7

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
}

V6

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

V5

# 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

V4

Fonctionne avec arduino-ESP8266 6.5.1

V2

V1

param.ini

param.ini est un fichier de paramétrage, il contient :

  1. des commentaire qui commencent par “;”
  2. des catégories entre crochets []
  3. des couples item = valeur

ainsi

Il existe un fichier logfile = CONNECT.LOG qui contient les ssid environnant et les mac des machines qui se connectent.

Sur base de l'IDE arduino 1.6.5 adapté à l'ESP:

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 de la SD

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 :