G1sms/README.md

260 lines
12 KiB
Markdown
Raw Normal View History

2019-11-28 15:09:41 +01:00
# G1sms+
2019-12-08 03:24:18 +01:00
### Lien du pad : https://pad.p2p.legal/G1sms-install
2019-11-28 15:09:41 +01:00
> LE DRAPEAU DE LA MONNAIE LIBRE EST PLANTE DANS LE SYSTEME DE FICHIER INTERPLANETAIRE!! :: [G1Forge / G1FabLab](https://www.g1sms.fr/fr/blog) ::
Il s'agit de la seconde version de G1sms. Cette mouture utilise une carte fille GSM (à la place d'un dongle USB) et ajoute une couche de communication inter noeuds grâce à l'utilisation de IPFS.
Le réseau G1sms+ manipule des portefeuilles (synchronis(é)ables avec des portefeuilles G1) partagés par IPFS dévérouillable par interaction Humaine/Machine avec un des Noeuds du Swarm. Il peut être découplé pour assurer comptabilisation des échanges en temps réel et synchroniser les états G1 simplifiés... Le Token ZEN (convertible en Ḡ1) y opère ses comptes sur un réseau de noeuds IPFS de confiance (administrés par des membres compétents et motivés pour le moment)...
On peut:
- Effectuer toutes les [anciennes commandes G1sms](https://www.g1sms.fr/fr/g1sms/aide)
- Réaliser des virements (simples ou **récurrents**) entre portefeuilles G1sms, G1Tag ou membres Cesium.
- Imprimer des G1tag qui peuvent servir de bon au porteur ou de coffre, ou un mix des 2 (en barrant les QRcodes qui ne servent pas).
- Scanner les G1Tag pour valider son montant et/ou l'encaisser (parfait comme solution cashless (+G1) pour un festival ou autre événementiel, les festivaliers repartent avec de la monnaie libre!!).
- A venir, trouver les moyens d'indiquer le montant d'une transaction pour fabriquer un [G1Tx](https://pad.p2p.legal/s/G1Tx#) qui facilite le fonctionnement en mode Coffre du G1Tag.
J'aimerai bien créer une alerte SMS quand une annonce gchange.fr est proche de mon geoPoint :gem:
---
Tout ça totalement décentralisé dans un essaim IPFS
Avec des commandes CLI enchainées https://docs.ipfs.io/reference/api/cli/#ipfs-swarm
Musiques pour plongée profonde dans le CODE:
https://www.youtube.com/watch?v=kJxp-vOboSU
https://www.youtube.com/watch?v=QDnG3Jni7sY
https://www.youtube.com/watch?v=LqV65iPTmnc
https://www.youtube.com/watch?v=_PVwf9nRAA0
2019-12-12 18:48:03 +01:00
## I. Matériel
2019-12-12 16:35:33 +01:00
2019-12-12 18:48:03 +01:00
**A découvrir sur la page [G1SMS:small_orange_diamond:](https://www.g1sms.fr/fr/blog/g1smsplus)**
2019-12-12 16:35:33 +01:00
2019-12-12 18:48:03 +01:00
## II. Préparation
2019-12-12 18:15:04 +01:00
2019-12-12 18:48:03 +01:00
### 1. Installer Raspbian Stretch ou Buster (9 ou 10) :ice_cream:
2019-11-28 15:09:41 +01:00
2019-12-12 18:48:03 +01:00
* Téléchargez "[Raspbian Buster Lite](https://www.raspberrypi.org/downloads/raspbian/)" et flashez l'image sur une carte microSD
2019-11-28 15:09:41 +01:00
* Installez Raspbian ([comment faire sur un RaspberryPi Zero sans écran?](https://projetsdiy.fr/comment-installer-raspbian-raspberry-pi-zero-sans-ecran-clavier/)).
Terminez cette phase par une mise à jour
> **sudo apt update; sudo apt upgrade -y**
2019-12-12 18:48:03 +01:00
### 2. Installation carte GSM (pour commandes par SMS)?
2019-11-28 15:09:41 +01:00
L'interface de commande par SMS permet d'ouvrir l'usage de la monnaie libre à ceux qui ne possèdent pas de smartphone et n'ont aucun ordinateur connecté à disposition... Et permet l'utilisation du réseau 2G des opérateurs, peut encombré et presque gratuit (1€/ mois chez Free je crois)
> Vous ne souhaitez pas activer cette interface? [Sautez cette section](#Installer-le-coeur-de-G1sms) !
NB: Vous pourrez utiliser les commandes "./shell/sms_*.sh" en ligne de commande (lancer "./test.sh").
Elles ont besoin d'être testées et d'améliorer leur compatibilité CLI. En fonction de votre matériel, vous pourre utiliser et enrichir les commandes "./shell/tag_*.sh" ( Imprimer et Scanner des TAG de type billets ou CB ).
Les scripts "./shell/cron" en cours d'écriture/test et sont à activer soi-même.
2019-12-12 18:48:03 +01:00
### 3. **Activer le GSM pHAT**
2019-11-28 15:09:41 +01:00
La carte utilise une connexion UART sur l'interface GPIO du Rpi pour communiquer (en commandes AT). Placer le jumper dans la position B pour activer ce mode. On prendra soin de désactiver la console (tty) établie par le système sur le port série qui rentre en conflit autrement...
* Activer et libérer le port série UART
* Ajouter: **enable_uart=1** à **/boot/config.txt**
* Effacer **console=serial0,115200** de **/boot/cmdline.txt**
* Redémarrer...
2019-12-12 18:48:03 +01:00
### 4. Démarrer la carte GSM !
2019-11-28 15:09:41 +01:00
il faudra appuyer 3 secondes sur le bouton d'allumage. Nous allons le faire par un script qui manipule le GPIO.
sudo apt install wiringpi;
sudo usermod -aG gpio pi;
**nano GSM_powerkey.sh**
#!/bin/bash
if [ ! -e /sys/class/gpio/gpio4 ]; then
echo "File exists."
echo "4" > /sys/class/gpio/export
fi
echo "out" > /sys/class/gpio/gpio4/direction
echo "0" > /sys/class/gpio/gpio4/value
sleep 2
echo "1" > /sys/class/gpio/gpio4/value
Ajouter le lancement de ce script au démarrage (dans /etc/rc.local)
2019-12-12 18:54:24 +01:00
## III. Installation automatique de Ḡ1sms+ avec ses prérequis (Gammu, IPFS) et ses modules
*Pour une installation manuelle: https://pad.p2p.legal/G1sms-install*
2019-12-12 18:48:03 +01:00
### Clonez le dépôt G1sms+
2019-12-12 18:57:40 +01:00
sudo apt update && sudo apt install git
git clone https://git.p2p.legal/axiom-team/G1sms
mv G1sms G1sms+
cd G1sms+
chmod u+x install.sh
2019-11-28 15:09:41 +01:00
2019-12-12 18:48:03 +01:00
### Options
2019-12-12 18:59:16 +01:00
./install.sh : Cycle normale, va détecter si les éléments sont installés ne va pas les réinstaller. Demande confirmations, et propose d'installer les outils otionnels
./install.sh force : Réinstalle les éléments même si ils sont déjà installés
./install.sh noask : Ne pose pas de questions de confirmation pendant l'install, il y va
./install.sh all : Install les outils optionnels sans poser de question
2019-12-12 18:48:03 +01:00
./install.sh noptions : N'installe pas les outils optionnels
2019-11-28 15:09:41 +01:00
2019-12-12 18:48:03 +01:00
**VOILA! Le système peut maintenant dialoguer par SMS.**
2019-11-28 15:09:41 +01:00
2019-12-12 18:48:03 +01:00
## IV. Tests
2019-11-28 15:09:41 +01:00
2019-12-12 18:48:03 +01:00
### Envoyer un SMS
echo "Mon premier SMS envoyé !" | gammu-smsd-inject TEXT 06xxxxxxxx
2019-11-28 15:09:41 +01:00
2019-12-12 18:48:03 +01:00
**TODO :**
- Ajouter un test silkaj
- Notif d'une alert admin par G1sms
2019-11-28 15:09:41 +01:00
2019-12-12 18:48:03 +01:00
---
---
---
2019-11-28 15:09:41 +01:00
2019-12-12 18:48:03 +01:00
**La partie qui suis doit être mise à jours !**
2019-11-28 15:09:41 +01:00
### 3. ACTIVER LE SUPPORT A DISTANCE
Grâce l'activation de **Experimental.Libp2pStreamMounting** vous pouvez autoriser l'accès depuis les autres machines du Swarm par forward P2P du port SSH.
# POUR QUE fred@onelove PUISSE SE CONNECTER ET DEPANNER LE NOEUD...
ssh-keygen
echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDFthQ3FggJlz/+ZglZJjVJzYs6ehx/iB7f89KY396K+7ai4ETqFhq6ANVp9xeQ4dLU26w0bFBELcnh9rn5QDSrXjsIptoWXErkSdZOeXqofnLtJEOhZO/I328y0C1vQRwtMMXKLLnqPe14h+zJenc7KJbL5cvB3Hd7nfQ+Q0uEnIsKb0f5wcKagySHIFdmY/FqaGz5g4MXGq7nlX/31hvfTFhF0g+k3mhvTTVQ368Op9qZZIozYhBoojWWvK5mwAovxdS9QT1hKrFXHfjov/aKQxLAy0a0oxFvHKoYN/l4ffGibFMAmedljTxf1VSDBv/k/RN53UU6RufW3qqBjY0b fred@onelove" >> ~/.ssh/authorized_keys
FAIRE APPEL AU SUPPORT
> Envoyer un email à support@qo-op.com en indiquant votre problème et le Qm_NODE_IPFSID de votre noeud IPFS (voici les commandes à lancer pour activer l'accès ssh à distance vers un noeud)
# Activer le forwad de votre port local SSH vers le SWARM
ipfs p2p listen /x/ssh /ip4/127.0.0.1/tcp/22
# FERMER le forward
ipfs p2p close --all
# Récupérer votre Qm_NODE_IPFSID
Qm_NODE_IPFSID=$(ipfs id -f='<id>\n')
echo $Qm_NODE_IPFSID
# Se connecter au port forwardé
ipfs p2p forward /x/ssh /ip4/127.0.0.1/tcp/2222 /ipfs/$Qm_NODE_IPFSID
ssh pi@localhost -p 2222
- Configurer un serveur relai email
:a: https://wiki.archlinux.org/index.php/SSMTP
:b: http://ozzmaker.com/send-email-from-the-raspberry-pi-or-linux-command-line-with-attachments/
nano /etc/ssmtp/ssmtp.conf (mailjet.com)
root= support@qo-op.com
mailhub= in-v3.mailjet.com:465
FromLineOverride=YES
AuthUser=02b075c3f28b9797d406f0ca015ca984
AuthPass=*****************************
UseTLS=YES
cat ./email.txt | sed s/EMAIL/"${EMAIL}"/g | sed s/SUBJECT/"${SUBJECT}"/g | sed s/MESSAGE/"${MESSAGE}"/g | ssmtp -v ${EMAIL}
- Ajouter son imprimante A4 USB ou réseau avec CUPS
Config: http://G1sms.local:631/
sudo apt install printer-driver-all cups
sudo cupsctl --remote-admin
sudo usermod -aG lpadmin pi
- Installer l'imprimante à autocollants (Brother QL700)
sudo pip3 install brother_ql
- Installer l'interface de controle web (plus besoin, elle est déjà dans le code distribué, mais il faudra quand même installer les dépences python requises)
http://g1sms.local/labeldesigner
cd /home/pi/G1sms+/www
git clone https://github.com/pklaus/brother_ql_web.git
cd brother_ql_web
sudo pip3 install -r requirements.txt
- Merci à cet utilisateur de Brother QL700 pour son tutoriel
https://www.rs-online.com/designspark/building-a-pi-powered-wireless-label-printer
- Installer le lecteur de QR Code
- pour l'usage sous Raspberry
Le placer en mode "Virtual Serial Port" 'en scannant sur la doc accompagnant le bon QRcode) (ajouter "enable_uart=1" dans ""/boot/config.txt" de votre RPi).
- Sur PC (avec environnement graphique X11), le mode "Virtual keyboard" semble s'activer...
Voici celui que j'ai acheté:
https://rover.ebay.com/rover/1/709-53476-19255-0/1?icep_id=114&ipn=icep&toolid=20004&campid=5338602552&mpre=https%3A%2F%2Fwww.ebay.fr%2Fitm%2FWired-Barcode-Scanner-USB-Code-de-num%25C3%25A9risation-polyvalent-Code-QR-Lecteur-B1C4%2F183889216620
# [Récupérer le code](https://forum.monnaie-libre.fr/t/le-g1fablab-recherche-1fadas-pour-participer-au-g1sms-one-live-swarm/8038/8?u=qoop)
> Ce CODE est un automate. Tout commence par une commande (IDWallet, Commande), **"./sms_received.sh"** et les fichiers sms_*.sh gèrent les codes exécutés par chaque commande.
>
> Utiliser la commande **./search** fournie pour fouiller dans le code, ajouter "log" pour débugger dans:
> Log => tail -f /tmp/g1sms.log -n 200
> gammu => tail -f /tmp/smsd.log -n 200
,
# EN FAISANT PARTIE DU SWARM G1sms+ VOUS DEVENEZ GARANT DE LA SECURITE PHYSIQUE ET INFORMATIQUE DE VOTRE NOEUD!
Le lien IPFS du CODE OFFICIEL mis à jour est publiée sur cette page du FORUM: https://forum.monnaie-libre.fr/t/le-g1fablab-recherche-1fadas-pour-participer-au-g1sms-one-live-swarm/8038/8?u=qoop
# Liens divers & Documentation
2G/3G/4G
* Anyone familiar with the Waveshare GSM/Bluetooth Hat?
https://lb.raspberrypi.org/forums/viewtopic.php?t=206761
* Waveshare:
https://www.waveshare.com/wiki/GSM/GPRS/GNSS_HAT
https://www.waveshare.com/gsm-gprs-gnss-hat.htm
* Interfacing Gsm/Gprs/Gnss/Bluetooth Hat With Raspberry Pi 3
https://www.rhydolabz.com/wiki/?p=18639
* Raspberry Pi : How to access the Internet using GSM / GPRS Modem
https://www.rhydolabz.com/wiki/?p=16325
* Setting up your Raspberry Pi to work with a 3G dongle
https://nicovddussen.wordpress.com/2014/11/12/setting-up-your-raspberry-pi-to-work-with-a-3g-dongle/
* SIM868 PPP Dail-up Networking
https://www.waveshare.com/wiki/SIM868_PPP_Dail-up_Networking
* FONA Tethering to Raspberry Pi or BeagleBone Black
https://learn.adafruit.com/fona-tethering-to-raspberry-pi-or-beaglebone-black/setup
* Raspberry Pi GSM Phone Modem Setup
https://www.the-empire.systems/
* Configuration ppp avec la carte NadHAT
https://blog.garatronic.fr/index.php/fr/tutoriel-fr/65-configuration-ppp-avec-la-carte-nadhat-fr
* Cellular & GPS Enabled Pi 3
https://www.digikey.com/en/maker/projects/d0cf660bfc144842a49bfbc5c1dc2ff0
---
OPENCV
* Reconnaissance faciale
https://www.pyimagesearch.com/2018/06/25/raspberry-pi-face-recognition/
https://github.com/ageitgey/face_recognition (installation plante sur RPi3)
---
IPFS/IPNS
* Raptoreum: How to setup a public IPFS gateway
https://raptoreum.com/blog/how-to-set-up-a-public-ipfs-gateway/
* DAG: use IPLD (IPFS Linked Data) to generate a JSON bundle that will reference each version
https://ethereum.stackexchange.com/questions/63109/ipfs-versioning-how-to-get-all-files-from-the-ipfs-key
* TODO: Adapter le paramètre "LowWater" des noeuds du SWARM IPFS au nombre de noeuds en fonction pour optimiser le trafic réseau.
* What is InterPlanetary Naming System(IPNS)? https://hackernoon.com/understanding-ipfs-in-depth-3-6-what-is-interplanetary-naming-system-ipns-9aca71e4c13b