====== Chaînes et chaînage, vision d'un environnement de création ======
Définissons une méthode/environnement de création libre, modulaire, accessible et économe, de 2017.
Buts:
* éditer des sites Internet
* diffuser des sites Internet et des services autres, en rapport avec les usages d'aujourd'hui
* connectable avec des smartphones, logique javascript/Nodejs
* connectable avec des PC logique html/php/mysql etc...
* pouvoir intégrer des espaces d'expérimentations et de création numérique/analogique
* ne pas coûter cher pour pouvoir l'offrir lors d'atelier au participant
* Auto-Intégrable localement avec d'autre machine identique pour la gestion d'un mesh
* pouvoir etre aussi une central d'objets connectés
* avoir éventuellement de multiple E/S audio ( jackd/logique HP bluetooth/...) chaque élément ne fournissant que 2/2 canal audio
* accès aux interfaces/capteurs des autres éléments du réseau, une machine servant de capteur, une autre pour la diffusion, une autre pour la gestion de moteurs etc... )
* utiliser un système relativement simple à mettre en oeuvre, pas de soudure?
===== Pistes: =====
==== Éditions ====
* Editer des pages en markdown
* [[http://remarkableapp.github.io |Remarkable ]] Simple et efficace
* [[http://atom.io|Atom]] , Complet, peut même éditer du code pour arduino
* Transcoder du code de mise en page vers markdown
* https://github.com/titledk/dokuwiki-to-markdown-converter
* Gérer la fabrication de site Internet, integrer les pages,images theme et fabrique le code pour le télécharger sur un serveur distant ou pas ( apache/nginx/...) pas besoin de php,mysql car sites statiques
* [[https://blog.getpelican.com/|Pelican]], en python
* [[http://gohugo.io/|gohugo]], en Go
* https://github.com/spf13/hugo
==== Gestion de serveur/services ====
* [[https://yunohost.org/|Yunohost]] du code python pour gerer ses sites,messagerie,partage sur une petite machine armbian/debian
* https://github.com/B4rb3rouss/hostathome alternative a yunohost plus directe et moins casse pieds
* [[http://armbian.com|Armbian]] le système d'exploitation , base Debian pour tout un tas de carte ARM
* topologie réseau
* B.A.T.M.A.N.
* découverte automatique des routes pour atteindre une passerelle
* il semble aussi découverte de périphérique attaché ?
* fixer les IP dans un cadre general ?
==== Base créative ====
Il y a 2 cotés, accès au système:
- Coté réseau local WiFi en point d'acces (hostapd)
- Coté Internet , connectable sur une box, un routeur à Internet
on créer un tuyau connectant node-red et PD soit en [[https://en.wikipedia.org/wiki/FUDI|FUDI]] (netsend/netreceive) soit en firmata soit en OSC ?
* puredata pd-L2ork / malinette netpd...
* http://forum.pdpatchrepo.info/topic/10569/purr-data-finally-released
* https://git.purrdata.net/jwilkes/purr-data
* objets en rapport avec pd / node-red
* https://www.npmjs.com/package/pd-fileutils ??
* https://www.npmjs.com/package/port ??
* https://github.com/thisconnect/port
* node-red gestion d'interaction aux objet connectés et autres interfaces/capteurs
* https://flows.nodered.org/
* https://www.npmjs.com/search?q=Raspberry&page=1&ranking=popularity pour trouver des drivers
* http://johnny-five.io/ plugin arduino / firmata
* https://github.com/rwaldron/johnny-five/wiki/Getting-Started#prerequisites
* truc pour comprendre node-red
* https://hallard.me/pitinfo/ => pm2 en gestionnaire de tache
* gestion de sites du coté Internet à travers yunohost/nginx
Un accès à un bureau VNC (noVNC accès par un navigateur) peut être mis en place, 'bureau' ou plutôt session simple, fluxbox, windowmaker?, openbox ..., tunnel ssh.
Nous pouvons utiliser aussi la carte sans arduino, (ni pd), avec directement les GPIO de la carte elle même.
* http://wiki.friendlyarm.com/wiki/index.php/WiringNP:_WiringPi_for_NanoPi
==== Matériels====
* [[http://www.friendlyarm.com/index.php?route=product/product&path=69&product_id=132| Nanopi NEO]] 10$ + kits de connexions divers (penser rester sous les 2kg pour le transport)
* ou [[https://fr.aliexpress.com/store/product/New-Orange-Pi-Zero-Set-6-Orange-Pi-Zero-512MB-Expansion-Board-Black-Case-development-board| Kit Orange Pi Zero ]] ( tot 17€)
* ou une Nanopi M1 si besoin de sortie HDMI video ? ( tot..30€ )
* microSD 8 ou 16Go class10!
* cable USB micro , d'alim
* **Alimentation** qui dure, waterproof ,** elle doit absolument délivrer plus de 2A !!!**
* sur ebay 20W High Power LED Driver 110V/220V Waterproof Transformer Power Supply (5€?)
* Mean Well LPV-20-5 (15?)
==== Expériences ====
Prérequis : Installation d'une microSD armbian debian jessie server
apt-get update
dpkg-reconfigure locales # choisir fr_FR.UTF-8
# mettre fr_FR.UTF-8 sur les lignes de /etc/default/locale
# avahi donne un nom a la machine (mDNS)
apt-get install avahi-utils libnss-mdns avahi-autoipd
avahi-set-host-name neo-1 # neo-1 a changer ...
# deja fait sur les version armbian >= 5.27
echo "blacklist rtl8192cu" >> /etc/modprobe.d/blacklist.conf # pb sur wifi rtl8192cu!
# partie alsa base
cat < /etc/asound.conf
pcm.!default { type hw ; card 0 }
ctl.!default { type hw ; card 0 }
EOF
apt-get purge whoopsie libwhoopsie0
vi /etc/dbus-1/system.d/org.freedesktop.NetworkManager.conf # et enlever ous les trucs user whoopsie
# partie dbus au cas ou jackd et user pi
echo 'export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/dbus/system_bus_socket' >> /home/pi/.bashrc
echo '
'>/etc/dbus-1/system.d/audiojack.conf
# /etc/fstab
echo "none /dev/shm tmpfs defaults 0 0" >> /etc/fstab
Modifs
* cf https://github.com/dynobot/TinyCore-Sound-Adjustments/
* https://github.com/dynobot/Linux-Audio-Adjustments
echo "#modif latence reseau" > /etc/sysctl.d/network-latency.conf
echo 'net.core.rmem_max = 16777216' >> /etc/sysctl.d/network-latency.conf
echo 'net.core.wmem_max = 16777216' >> /etc/sysctl.d/network-latency.conf
cat </etc/rc.local
#!/bin/bash
#Reduce Audio thread latency
#chrt -f -p 43 $(pidof ksoftirqd/0)
#chrt -f -p 43 $(pidof ksoftirqd/1)
#chrt -f -p 43 $(pidof ksoftirqd/2)
#chrt -f -p 43 $(pidof ksoftirqd/3)
#Reduce operating system latency
echo noop > /sys/block/mmcblk0/queue/scheduler
echo 1000000 > /proc/sys/kernel/sched_latency_ns
echo 100000 > /proc/sys/kernel/sched_min_granularity_ns
echo 25000 > /proc/sys/kernel/sched_wakeup_granularity_ns
sleep 5
#chrt -f -p 27 $(LE_PID_DE_LAPPLI_AUDIO)
exit 0
EOF
qjackctl et donc jackd fonctionne bien avec une carte son USB
/usr/bin/jackd -v -dalsa -r44100 -p1024 -n2 -D -Chw:Device -Phw:Device
Il semble y avoir un probleme avec alsa sur la carte interne, que pulsaudio n'a pas... Donc dans les cas ou on utlise jackd et puredata : utiliser une carte USB !
Sinon pour une lecture simple pulsaudio fait l'affaire
=== Partie serveur coté Internet ===
# gestion de serveur yunohost
git clone https://github.com/YunoHost/install_script /tmp/install_script
cd /tmp/install_script && sudo ./install_yunohost
* sur l'interface http://neo-1.local
* création de l'utilisateur yuno
* installer shellinabox pour un terminal dans un navigateur
* option et test https://github.com/labriqueinternet/hotspot_ynh
* a condition d'avoir la bonne clée WiFi ! (peu de compatibilité)
* https://neo-1.local/wifiadmin #SSID neo-1 / nanopi2017
* test d'un tableau de post'it application : 'https://github.com/YunoHost-Apps/scrumblr_ynh/'
=== Partie serveur coté local ===
Installation d'un bureau interface X11 fluxbox et Installation d'un serveur X reseau xtightvnc-server
apt install fluxbox xterm tightvncserver xfonts-base x11-xserver-utils
apt install pcmanfm xpad # options
Pensez en étant l'utilisateur à un vncpasswd et lancez par vncserver
Installation de [[https://github.com/novnc/noVNC | noVNC ]]
cd /usr/local/bin
git clone https://github.com/novnc/noVNC.git
apt install python-numpy
Reste à ajouter les ouvertures de port 5901 et 6080 du firewall (http://neo-1.local:6080/vnc.html?host=neo-1.local&port=6080)
Le lancement automatique peut se faire dans /etc/rc.local: y ajouter avant le exit
# lancement des services NEO
su neo -c "vncserver " &
sleep 3
su neo -c "cd /usr/local/bin/noVNC ; ./utils/launch.sh --vnc localhost:5901 " &
Si noVNC ne fonctionne pas : une version précédente ok : {{ :projets:novnc.tgz |}}
**cote hat pour les NEO** venant de http://wiki.friendlyarm.com/wiki/index.php/Main_Page
git clone https://github.com/friendlyarm/BakeBit.git
git clone https://github.com/friendlyarm/WiringNP
git clone https://github.com/friendlyarm/NanoHAT-Motor-Python-Library
=== Préparation d'un site méthode ===
Trouver un nom pour la plateforme technique ? y en a t il besoin ?: besace , FourbiFab, BazarLab
DIYOptre : espace d'expérimentation séparant le monde réel de l'algorithmique
DIYOD : Do It Youself Our DIYOD
Le site etant aussi une doc du site
* Fabrication de la base
* ou trouver les composants
* comment les assembler
* comment faire le systeme , ou trouver des images du système
* Faire des services Internet ( usage de yunohost )
* sites
* partage de ressources
* Faire une machine algorithmique ( usage de pd, node-red, supercollider, codes python ... )
* machine sonore
* machine et objet poétiques
* Connecter des capteurs
* différents type , schéma, photos, codes