1615 views
# G1sms+ installation manuelle ## Code source https://git.p2p.legal/axiom-team/G1sms/ ## I. Projet G1sms+ A découvrir sur G1sms.fr ## II. Préparation ### 1. Installer Raspbian Stretch ou Buster (9 ou 10) :ice_cream: Téléchargez "Raspbian Buster Lite" et flashez l'image sur une carte microSD Installez Raspbian ([comment faire sur un RaspberryPi Zero sans écran?](https://raspberry-pi.fr/raspberry-pi-sans-ecran-sans-clavier/)). Terminez cette phase par une mise à jour ```sudo apt update; sudo apt upgrade -y``` ### 2. Activer le GSM pHAT (Controle par SMS)? Liens pour achat: - https://www.kubii.fr/cartes-extension-cameras-raspberry-pi/2197-gsm-gprs-gnss-bluetooth-hat-pour-raspberry-pi-kubii-3272496011113.html - https://www.planete-domotique.com/hat-gsm-gprs-gnss-bluetooth-pour-raspberry-pi-waveshare.html - https://www.robotshop.com/eu/fr/hat-gsm-gprsgnssbluetooth-raspberry-pi.html 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... ### 3. Pensez à démarrer la carte GSM ! 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 ``` Ajouter le lancement de ce script au démarrage (dans /etc/rc.local), et redémarrer gammu-smsd ``` sudo systemctl restart gammu-smsd ``` **NOTA BENE** L'interface de gestion par SMS permet au noeud G1sms de contrôler des Portefeuilles "G1sms" par reception de SMS. L'installation est faite avec Kalkun pour gérer l'envoi de SMS. Vous ne souhaitez pas activer cette interface? Sautez cette section ! Les commandes éxécutées par cette 'interface' sont ```./shell/sms_*.sh``` Les scripts "./shell/cron" en cours d'écriture/test sont à activer manuellement... ## III. Installer gammu et gammu-smsd > **Cette section "optionnelle" est [désormais gérée par le script ./install.sh](https://git.p2p.legal/axiom-team/G1sms/src/master/README.md#iii-installation-automatique-de-%E1%B8%A11sms-avec-ses-pr%C3%A9requis-gammu-ipfs-et-ses-modules)** Ce qui suit le décrit (en partie). Afin de dialoguer avec le réseau GSM, recevoir et envoyer des SMS. Nous utiliserons le serveur gammu. Suivre la procédure détaillée ici: https://tutoandco.colas-delmas.fr/software/envoyer-sms-gammu-deamon/ sudo apt-get install ppp screen git python3-pip minicom gammu gammu-smsd sudo usermod -aG gammu pi; Vérifier que la carte GSM pHAT est démarrée, sinon lancer sudo ./GSM_powerkey.sh Identification de la carte sudo gammu --identify > Device : /dev/ttyS0 > Manufacturer : SIMCOM_Ltd > Model : unknown (SIMCOM_SIM868) > Firmware : Revision:1418B03SIM868M32_BT > IMEI : 868183033532677 Création du fichier de configuration gammurc à partir de ces infos... **sudo nano /etc/gammurc** [gammu] port = /dev/ttyS0 model = SIMCOM_Ltd (SIMCOM_SIM868) connection = at19200 synchronizetime = yes logfile = /tmp/smsd.log logformat = nothing TEST: Envoyer un SMS. sudo gammu sendsms TEXT 06nnnnnnnn -text "NOUVEAU G1sms+" Tout ce passe bien? Alors on installe le daemon gammu smsd sudo apt install gammu-smsd -y Préparer le fichier de configuration ([DOC gammu...](https://wammu.eu/docs/manual/smsd/config.html)) Adaptez selon le code PIN de votre carte SIM. **sudo nano /etc/gammu-smsdrc** [gammu] device = /dev/ttyS0 name = SIMCOM_Ltd (SIMCOM_SIM868) connection = at19200 synchronizetime = yes gammucoding = utf8 logformat = textall [smsd] service = files Logfile = /tmp/smsd.log DeliveryReport = log debuglevel = 3 CommTimeout = 5 ReceiveFrequency = 5 CheckSecurity = 1 PIN = 0000 HangupCalls = 1 # Paths where messages are stored inboxpath = /var/spool/gammu/inbox/ outboxpath = /var/spool/gammu/outbox/ sentsmspath = /var/spool/gammu/sent/ errorsmspath = /var/spool/gammu/error/ # Run G1SMS Script RunOnReceive RunOnReceive = /home/pi/G1sms+/sms_received.sh Le fichier de configuration maintenant prêt, on peut redémarrer le démon smsd **sudo service gammu-smsd restart** Vous voyez cette ligne dans vos processus? Tudo Bom :smiley: ! ps auxf usr/bin/gammu-smsd --pid=/var/run/gammu-smsd.pid --daemon VOILA! Le système peut maintenant dialoguer par SMS. ## Installer l'accès au coeur G1 manuellement ### 1. Installer Silkaj & Duniterpy # Exécuter les commandes suivante en root sudo -s # Silkaj + Duniterpy sudo apt install python3-setuptools python3-pip sudo apt install libsodium18 libsodium23 # Ajouter celles de votre distribution sudo pip3 install silkaj Voila ces 2 super connecteurs python à Duniter installés :cool: Ils seront utilisés par G1sms+ pour gérer les wallets et leurs TX, récupérer le profil des membres dans Cesium+, etc... En fait pour l'instant l'API CLI de silkaj n'étant pas encore disponible. C'est la version 0.50 patchée de G1sms qui continue à être utilisée (TODO !!!). Dans ce cas, il faudra peut-être installer les librairies pythons à la main... cd ./silkaj pip3 install -r requirements.txt Dans cette version. Le dialogue avec les serveurs Duniter a été améliorée par un "load-balacing" régulier sur le groupe de serveurs en plus grand consensus et ayant un timeout correct... ### 2. Installer IPFS Installer ipfs par son programme de mise à niveau permettra de facilement suivre l'évolution de l'Univers Interplanétaire :crystal_ball: sudo -s cd /usr/src/ wget https://dist.ipfs.io/ipfs-update/v1.5.2/ipfs-update_v1.5.2_linux-arm.tar.gz tar xvzf ipfs-update_v1.5.2_linux-arm.tar.gz cd ipfs-update ./install.sh ipfs-update install latest ``` su pi ipfs init -p lowpower ipfs config Pubsub.Router gossipsub ipfs config Datastore.StorageMax 32GB ipfs config --json Experimental.Libp2pStreamMounting true sudo nano /etc/systemd/system/ipfs.service ``` https://git.p2p.legal/axiom-team/G1sms/src/master/.install/templates/1/ipfs.service ``` sudo systemctl enable ipfs sudo systemctl start ipfs ipfs id -f='<id>\n' ``` Vous récupérez IPFSNODEID, Clef ipfs Qm*** adresse de votre noeud. Maintenant on peut choisir entre 3 façons de faire: 1. Opérer IPFS en Réseau Privé (swarm.key & Environment="LIBP2P_FORCE_PNET=1") et gérer ses serveurs de bootstrap. https://pad.p2p.legal/ipfs-onelove#Rejoindre-l%E2%80%99Essaim 2. Opérer sur IPFS Global en prenant soin de crypter les données échangées. https://medium.com/@mycoralhealth/learn-to-securely-share-files-on-the-blockchain-with-ipfs-219ee47df54c ~~3. Utiliser l'application ipfs-cluster: https://cluster.ipfs.io/documentation/quickstart/~~ ~~4. Utiliser textile.io~~ C'est finalement l'option 1 et 2 qui a été choisie en activant les améliorations de routage de la couche P2P IPFS, et en chiffrant les fichiers mis dans IPFS par la clef GPG du SWARM, du NODE, ou du TAG. Ici, chaque noeud reste propritéaire des G1sms wallet qu'il a créé est reste le seul à pouvoir interagir avec. Configurer le démon **ipfs** pour le user **pi** Configurer et initialiser le démon avec des options p2p trop pratiques (communication, publication et surveillance de canal, forward de ports, reverse ssh, etc... on accède à tout par son hash, y compris un noeud...) su pi ipfs init -p lowpower # Activate pubsub (mode gossip) ipfs config Pubsub.Router gossipsub # Define max storage ipfs config Datastore.StorageMax 6GB ## Port Forwarding on P2P (SSH: ipfs p2p listen /x/ssh /ip4/127.0.0.1/tcp/22 ) ipfs config --json Experimental.Libp2pStreamMounting true On ajoute au BOOTSTRAP le(s) noeud(s) leader (always on) du SWARM ######### UPDATE BOOTSTRAP LIST ########### ipfs bootstrap rm --all ### fred@onelove.madeinzion.org ### ipfs bootstrap add /ip6/fe80::207:cbff:fe0b:75bb/tcp/4001/ipfs/QmSX7gFRPHui5A2DWFk2VmBvq6hynj2hubhJLQAwPWe4Lh ipfs bootstrap add /ip4/51.15.2.211/tcp/4001/ipfs/QmSX7gFRPHui5A2DWFk2VmBvq6hynj2hubhJLQAwPWe4Lh ### fred@rec.copylaradio.com ### ipfs bootstrap add /ip6/fe80::208:a2ff:fe0c:20d8/tcp/4001/ipfs/Qmb6Gyy3KFWTxWh4v6fBeh5ANxAF6YAahWQtokmsNsqGda ipfs bootstrap add /ip4/51.15.166.54/tcp/4001/ipfs/Qmb6Gyy3KFWTxWh4v6fBeh5ANxAF6YAahWQtokmsNsqGda ### 5. Installer la Suite: logiciels et périphériques On installe **gnupg** ntpdate pour synchroniser nos horloges plus de quoi manipuler les images, les qrcodes, les chiffres et le json (dialogue avec DUNITER et CESIUM+) sudo apt install gnupg ntpdate sudo apt install ssmtp mpack # Pour manipuler les images, les chiffres et le json sudo apt install imagemagick qrencode bc jq libttspico-utils libttspico0 libttspico-data - 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/ sudo 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 ######## # TEST # # EMAIL=fred@qwantic.com cat ./email.txt | sed s/EMAIL/$EMAIL/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 # INSTALL EN COURS... préparer un script qui effectue ce qui est décrit dans ce document pour lancer des installations plus automatiques de NODE G1sms+ # ENCORE MOINS CHER Utiliser un module SIM800L https://raspberry-pi.fr/sim800l-gsm-gps-raspberry/