Installer et utiliser Cygwin pour le ssh avec un Pi

Installer et utiliser Cygwin pour le ssh avec un Pi

Août 2022 : L'article ci-dessous est mis à jour sur la façon de sélectionner ce que l'on veut installer. J'ai également ajouté deux liens vers des articles qui exposent d'autres manière de faire fonctionner un raspberry Pi de manière "headless", sans y connecter de clavier, souris et ecran. 

Pour pouvoir communiquer avec un Raspberry Pi sans avoir à le connecter à un clavier, une souris et un écran, le plus simple est d’utiliser une interface pour communiquer en « SSH » (Secure Shell – voir sur Wikipedia) depuis un ordinateur. Voici la méthode pour installer Cygwin sur un ordinateur Windows (7 à 10) et faire sa première connexion au Pi.

Installation de Cygwin

Télécharger setup.exe sur le site de Cygwin.

Exécuter setup.exe (en tant qu’administrateur) et suivre les instructions.

Pendant l’installation, on pourra s’aider de « setting up cygwin« . Voici les principaux choix que j’ai fait :

  • il vaut mieux installer pour « tous les utilisateurs » afin d’éviter d’éventuels problèmes, même si on est seul à utiliser cygwin.
  • install directory : c:/cygwin64
  • Local Package Directory : un répertoire distinct du répertoire d’installation. J’ai utilisé un sous-répertoire de « téléchargement ».

C’est au moment de choisir les paquets à installer que c’est assez difficile. Il ne faut choisir que ce dont on a besoin, dans chaque catégorie de paquets. Pour moi, c’est :

  • Admin                        cygrunsrv
  • Admin                        shutdown
  • Net                              openSSH
  • X11                              tout

J’avoue que je ne suis pas certaine du rôle des deux premiers paquets. Le troisième permet d’utiliser des commandes SSH dans notre console Cygwin. Le quatrième permet d’afficher l’écran du Pi en mode graphique (voir détails ci-dessous).

MAJ d’août 2022 : Pour choisir il faut cliquer sur la flèche à droite des items à installer comme dans la copie d’écran dessous (ici pour l’ensemble des paquets relatifs à X11). Pour les éléments isolés, il faut choisir une version et pas « passe ».

Comment sélectionner des éléments à installer en plus de l'installation par défaut de cygwin.

Ensuite on clique sur « installer » et nous disposons d’une console pour commander le Pi directement dans notre ordinateur habituel.

Se connecter en ssh au Pi

Il suffit de taper la commande ssh pi@nautilus , puis le mot de passe correspondant pour se connecter :

Cygwin : connexion SSH au Raspberry Pi
Que faire en cas d’erreur @    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!  ?

La solution vient d’ici. Il suffit de taper ssh-keygen -R 192.168.1.8  dans l’invite de commande Cygwin. Ensuite, on peut de nouveau se connecter en ssh à l’adresse 192.168.1.8 avec ssh pi@192.168.1.8  et ça fonctionne de nouveau.   

interface graphique avec Cygwin

Voir l’article plus détaillé, en anglais, de La Noia di moo ».

Dans la console Cygwin classique :

cygstart xwin # will open another window for the graphic display
# cygstart xwin -screen 0 1440x900@1 -wgl would open
# a 1440x900 window wirh OpenGL accelerated graphics

export DISPLAY=:0.0 # Cygwin is aware of the new remote display

ssh -Y pi@address # SSH to your PI

lxsession # start the windows manager. 
# it takes a few seconds, then you have the Pi GUI

On peut maintenant interagir avec le Pi en mode graphique :

CygwinGUI (interface graphique) du Raspberry Pi

Dans la copie d’écran ci-dessus, j’ai cliqué sur le bouton en bas à gauche pour pouvoir voir la liste des menus.

Autres méthodes « headless »

Et voilà !

créer une vidéo à partir d’un Powerpoint (2010)

créer une vidéo à partir d’un Powerpoint (2010)

Pour une formation en ligne, j’ai eu besoin de créer une présentation powerpoint (2010), d’enregistrer ma voix et de générer un minutage. Ensuite j’ai transformé cette présentation en vidéo. Je l’avais déjà fait voici quelques années mais j’ai mis beaucoup de temps à me rappeler comment faire. Voici donc un tutoriel détaillé.

étape 1 : créer la présentation

On crée la présentation comme on la ferait normalement. On peut aussi mettre des animations qui se déclenchent au clic de la souris.

Une fois la présentation comme on la souhaite, on l’enregistre (format pptx).

étape 2 : enregistrer la narration

Powerpoint permet d’enregistrer simultanément la narration et le minutage du diaporama. Je trouve très difficile de faire les deux à la fois. Je préfère donc enregistrer ma voix PUIS enregistrer le minutage, en fonction de ma voix. 

solution 1 : avec les outils de Powerpoint

Dans l’onglet diaporama, cliquer sur  « enregistrer le diaporama » puis choisir « commencer l’enregistrement au début »

powerpoint-video-1

Enregistrer le texte, éventuellement avec le minutage (on pourra supprimer ou corriger l’un ou l’autre ensuite). Il faut laisser un petit blanc au moment de la transition vers la diapo suivante.

Pour voir le résultat, vérifier (1) que les cases « lire les narrations » et « utiliser le minutage » sont cochées. On peut donc démarrer le diaporama (2) pour voir et entendre le résultat.

powerpoint-video-2

Si besoin, on peut corriger la narration ou le minutage, pour chaque diapo ou pour l’ensemble.

solution 2 : avec un logiciel externe (audacity)

Audacity est un logiciel libre d’enregistrement et édition de son. Le gros avantage d’un enregistrement via audacity est qu’on peut laisser des blancs qu’on corrigera ensuite à la souris.

On peut également lire à l’écran (les notes du powerpoint ou un fichier distinct) sans se préoccuper d’un minutage précis.

J’enregistre donc ma voix puis, toujours dans audacity, je choisis Fichier/exporter audio. J’ai d’abord essayé le format ‘flac’ mais il n’est pas accepté par Powerpoint. J’enregistre donc au format ‘wav’.

audacity-enregistrement

L’enregistrement est nettement meilleur car je suis moins stressée par l’interface !

Ensuite, il me suffit d’insérer le fichier audio ainsi créé dans la première diapo de la présentation :

  • Sur cette première diapo, dans l’onglet insertion, cliquer sur audio puis ‘audio à partir du fichier’.
  • Sélectionner le fichier à insérer. Un symbole « haut-parleur » apparaît sur la diapo.
  • cliquer une fois sur le symbole « haut-parleur » : dans le menu de powerpoint, deux nouveaux onglets apparaissent à droite : format et lecture.
  • Cliquer sur l’onglet ‘lecture’ puis régler le démarrage (1) sur ‘automatiquement’ si on a un fichier audio par diapo, ‘exécution sur l’ensemble des diapositives’ si on a un seul fichier (mon cas). Cocher aussi la case ‘masquer pendant la présentation’ pour que le symbole haut parleur ne soit pas visible.

powerpoint-video-3

Enfin, il faut que je cale le minutage sur ma voix enregistrée. Je procède comme précédemment (solution 1) mais je décoche « narration et pointeur laser » au moment de démarrer l’enregistrement.

étape 3 : créer une vidéo à partir du diaporama

Dans Fichier / ‘Enregistrer et envoyer’, choisir ‘créer une vidéo’.

Pour une vidéo qui sera ensuite mise en ligne, choisir ‘internet & DVD’ plutôt que ‘qualité HD et ordinateur’. Evidemment, il faut choisir ‘utiliser le minutage et les narrations enregistrés’.

Cliquer sur ‘créer la vidéo’. On ne peut enregistrer qu’au format wmv (windows media video).

étape 4 : mettre la vidéo en ligne

A priori on ne peut pas mettre en ligne une vidéo au format wmv car personne ne pourra la lire dans son navigateur (sauf peut-être avec internet explorer ou edge).

Par ailleurs, il est déconseillé de charger une vidéo directement dans WordPress pour plusieurs raisons :

  • la vidéo consommera de la bande passante de mon site et ralentira le chargement ;
  • l’internaute ne pourra pas choisir la qualité vidéo à utiliser selon le débit dont il dispose ;
  • pour que tous puissent lire la vidéo, quel que soit le navigateur utilisé, il faudra charger au moins deux vidéos au lieu d’une (cf cet article) : une au format mp4 (MPEG H.264 AAC) et l’autre au format WebM (codec vidéo VP8 ou VP9 et le codec audio Vorbis ou Opus).

Il est donc préférable de placer la vidéo sur un site tiers comme Youtube, si on accepte que la vidéo soit publique. On préférera Wistia ou Vimeo si on veut limiter l’accès aux vidéos (solutions payantes). Dans nos pages ou articles WordPress, on incorporera la vidéo à partir de ces sites tiers.

Pour incorporer (embed) la vidéo, il suffit de coller le lien de la vidéo directement dans l’éditeur WordPress.

Dans un second article, j’ai écrit mon mode opératoire précis, visible ici : Mode opératoire pour créer des supports de cours en ligne.

Et voilà !

Mon premier cours en ligne avec LearnDash sur WordPress

Mon premier cours en ligne avec LearnDash sur WordPress

Je décris ici les premiers pas pour un formateur qui voudrait créer son cours en ligne. Dans les deux premiers articles de cette série , j’ai validé que LearnDash est adapté pour ce que je veux faire (heureusement puisque j’ai déjà acheté cette extension…). Maintenant je me concentre sur l’utilisation par le formateur. Dans d’autres articles, je retournerai côté web designer pour faire les ajustements nécessaires (styles au moins).

Je précise que LearnDash est une extension payante. Je l’ai achetée voici au moins deux ans, à une époque où l’on payait une fois et on disposait de l’utilisation à vie. Ma licence expire « December 8, 2114 ». C’est même plus qu’à vie !

Installer l’extension LearnDash pour WordPress

J’ai une licence, j’ai donc un accès au site de support technique. Je peux y télécharger la dernière version de LearnDash (indiqué par la flèche orange dans la copie d’écran ci-dessous).

learndash, telecharger la dernière version

Dans le site cible, choisir ajouter une extension puis choisir « mettre en ligne une extension au format .zip » (flèche orange ci-dessous) :

mettre en ligne une extension au format .zip

Choisir le fichier zip puis installer. Activer l’extension.

Faire quelques réglages

Si learndash n’a jamais été installé, il faut aller dans Réglages (settings) et entrer le numéro de licence et l’adresse mail associée.

Dans réglages, choisir l’onglet « custom labels » et donner un nom

label Mon texte
Course Cours
Courses Cours
Lesson Module
Lessons Modules
Topic Séquence
Topics Séquences
Quiz Quiz
Quizzes Quiz
Take this Course (Button) Suivez ce cours
Mark Complete (Button) J’ai fini
Click Here to Continue (Button) Cliquez ici pour continuer

Maintenant mes cours contiennent des modules, eux-mêmes subdivisés en séquences.

Créer un nouveau cours

Dans le tableau de bord WordPress, cliquer sur « add new » cours.

On donne un titre et un contenu comme avec un article WordPress classique. Voici les spécificités :

Choix du type de cours

  1. Ouvert : le cours est gratuit et en plus il est ouvert à tous, sans inscription préalable.
  2. Fermé : personne ne peut s’inscrire à ce cours.
  3. Gratuit : le cours est gratuit mais il n’est accessible qu’aux personnes qui s’y sont inscrites.
  4. Achat unique : l’accès au cours se paie en une fois.
  5. Récurrent : l’accès au cours se paie en plusieurs fois.

Pour un premier essai de cours gratuit en ligne accessible aux personnes qui se sont inscrites, je choisis « gratuit ».

Le résumé du cours

Il n’y a pas de champs « extrait » pour les cours. Mais on peut placer du contenu entre [[visitor]] et [[/visitor]] pour qu’il soit visible de tous. On peut ainsi mettre un texte de vente à destination des visiteurs, avec une vidéo par exemple. Si le visiteur s’inscrit, il verra le reste du contenu.

Si on veut un texte spécifique aux personnes inscrites, on le met entre [[student]] et [[/student]].

Où voir la liste des cours

Dans n’importe quelle page, on peut insérer un shortcode [[ld_course_list]] qui affichera la liste des cours.

Ajouter des modules

Dans le support LearnDash, ce sont des « lessons ».

Dans l’onglet « module options » définir dans quel ordre seront présentées les leçons : par date de création, par titre (ordre alphabétique) ou par ordre de menu. Dans ce dernier cas, l’ordre est défini dans le champs « attributs » / « ordre » dans la colonne de droite à côté d’un module en cours d’édition. On met 1 à la première leçon, etc…

Les réglages des modules

  • Cours associé : le cours dans lequel s’inscrit ce module
  • Sample module : si la case est cochée, ce module est visible de tous, comme un « échantillon » pour des gens qui voudraient essayer avant d’acheter.
  • Make module visible X days after sign-up : utile si l’on veut imposer un délai entre deux modules.
  • Make module visible on specific date : intéressant pour des formations mélant du présentiel et de la formation à distance.

Ajouter des séquences

On n’est pas obligé de créer des séquences. C’est cependant une bonne idée pour que l’apprenant ait l’impression d’avancer et pour bien structurer chaque module en « capsule » facile à intégrer dans son planning et dans son cerveau.

Créer des quiz

On peut créer des quiz pour des modules ou des séquences. En principe tant que l’apprenant n’a pas atteint le niveau minimum requis il ne peut pas passer à l’étape suivante.

Liens utiles (en anglais…)

Sur les shortcodes de LearnDash : http://support.learndash.com/articles/course-shortcodes/

Note : La traduction en français doit être revue…

Lire un flux vidéo d’une webcam avec un Raspberry Pi

Lire un flux vidéo d’une webcam avec un Raspberry Pi

Je veux qu’un Raspberry Pi lise et serve un flux vidéo issu d’une caméra IP (en wifi ou ethernet). J’ai choisi d’installer motion car il me permettra de détecter les mouvements puis de déclencher des alertes. Dans cet article, j’explique seulement comment installer motion puis visualiser le flux vidéo sur une page web, en streaming.

Ce qu’il faut

  • un Raspberry Pi (un B+, avec une carte sd qui contient tout ce qui a été créé dans l’article Mise en service d’un Raspberry Pi – ie pour moi avec l’image radio-pi-2016-06-10-8h.img et Raspbian Jessie)
  • une caméra web, pour moi connectée par cable ethernet, une Foscam FI8905W, avec une IP fixe).

Changer le nom du Pi et vérifier

regarder l’adresse IP du pi sur le routeur local (pour moi 192.168.1.16)

se connecter au pi en ssh et changer son nom (hostname)

ssh root@192.168.1.16
raspi-config

puis dans 9- advanced options, aller dans A2 hostname et renommer le Pi (pour moi, « nautilus »). Finir et accepter le Reboot

Maintenant je peux me connecter à ce pi avec ssh root@nautilus .

Noter que je me connecte en root, ce qui n’est pas conseillé. Mais ça m’évite de taper « sudo  » devant chaque commande !

Installer motion

on installe des utilitaires nécessaires puis motion.

apt-get install -y libjpeg62-turbo libjpeg62-turbo-dev  libavformat-dev  libavcodec-dev  libavutil-dev libc6-dev zlib1g-dev libmysqlclient18 libmysqlclient-dev libpq5
apt-get install motion

apt-get update
apt-get upgrade

Ca prend pas mal de temps (plusieurs minutes).

Pendant ce temps, préparer la page html qui servira à débugger et vérifier.

Préparer une page html de débogage et vérification

Créer un fichier page-test.html sur un PC, qui contient le code suivant :

<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title>premier test d'affichage caméra</title>
<link href="A-style.css" rel="stylesheet" media="all" type="text/css"> 
</head>
<body>
<H1>Tableau de bord maison</h1>

<section class="streaming">
<h3>streaming caméra IP Foscam FI8905W</h3>
<p>en continu - directement de la caméra (IP fixe 192.168.1.201)</p>
<img name="FoscamCamera" src="https://USER:PWD@192.168.1.201:80/videostream.cgi?user=USER&pwd=PWD" width="600" height="450" alt="Live Feed" style="background-color: #009999" />
</section>

<section class="streaming">
<h3>streaming caméra IP Foscam FI8905W via pi nautilus</h3>
<p>en continu - directement à la caméra</p>
<img src= "http://nautilus:8081/?action=stream" width="640" height="480" title="Camera devant maison"/>
</section>

</body>
</html>

Evidemment, il faut remplacer USER et PWD par les bons codes de la caméra utilisée.

Dans le même répertoire, placer un fichier A-style.css

html, body {
 background-color: #d8da3d ;
 margin: 0;
 padding: 0;
 }
body {
  padding-left: 11em;
  font-family: Georgia, "Times New Roman",
        Times, serif;
  color: purple;
  background-color: #d8da3d 
}
 
h1 {
	font-family: Helvetica, Geneva, Arial,
        SunSans-Regular, sans-serif }

a:link {
	color: blue 
}

a:visited {
	color: purple 
}

Et maintenant, dans l’explorateur de fichiers, cliquer à droite sur page-test.html et choisir ouvrir avec votre navigateur favori (chrome pour moi).

On voit le flux vidéo de la caméra en direct mais évidemment pas celui qui passe par le pi puisqu’on n’a pas encore fini d’installer et de configurer motion.

page web de test et deboguage de motion sur Raspberry Pi

page web de test et deboguage de motion sur Raspberry Pi

Evidemment, si la première partie de la page n’affiche pas le flux vidéo de la caméra, chercher comment régler la caméra. Pour moi ça fonctionne avec une caméra Foscam FI8905W réglée comme suit :

  • adresse IP fixe 192.168.1.201
  • un administrateur (il faudrait sans doute que ce soit seulement un visiteur pour limiter les risques) nommé USER avec mot de passe PWD
  • firmware version 11.35.2.63
  • Device Embeded Web UI Version 2.4.20.11

Il est impératif de vérifier que http://USER:PWD@192.168.1.201:80/videostream.cgi?user=USER&pwd=PWD permet bien la visualisation du flux vidéo provenant de la caméra. Sinon la configuration de motion ne fonctionnera pas !

installer motion comme un « service »

Redémarrer le pi avec init 6  ou reboot .

On veut que motion démarre en même temps que le Pi . Pour cela motion doit être installé comme un service.

Dans /etc/default/motion  (attention si vous n’utilisez pas Raspbian Jessie, je crois que c’est un autre répertoire), modifier la ligne suivante (no devient yes) :

start_motion_daemon=yes

Pour donner les bons droits d’accès aux fichiers et répertoires nécessaires à motion (les fichiers et répertoires sont ceux qui sont définis dans motion.conf) :

# /etc/motion/motion.conf et thread_.conf en 775 et propriétaire root/motion
chown -R root:motion /etc/motion/
chmod -R 775 /etc/motion/   #664 will not work when motion runs as a service

# /usr/bin/motion : 755
chmod 755 /usr/bin/motion

#var/run/motion (pour motion.pid)
mkdir /var/run/motion
touch /var/run/motion/motion.pid
chmod 755 /var/run/motion/motion.pid

#/home/al/motion/ en niveau 777 et propriétaire root / motion 
# dans /home/al/motion/ créer le fichier motion.log en niveau 777 
# thread0.conf (foscam) : /home/jf/motion/log/foscam 
# thread1.conf (tablette) : /home/jf/motion/log/galaxy 
mkdir /home/jf/motion 
mkdir /home/jf/motion/log 
mkdir /home/jf/motion/log/galaxy 
mkdir /home/jf/motion/log/foscam 
touch /home/jf/motion/log/motion-log.log 
chown -R root:motion /home/jf/motion/ 
chmod -R 755 /home/jf/motion/ 
chmod 777 /home/jf/motion/log/motion-log.log

Redémarrer le pi avec init 6  ou reboot .

Maintenant, on doit voir motion parmi tous les services en cours de fonctionnement, avec un « + » devant :

service --status-all

Une liste de services s’affiche, en ordre alphabétique. Lorsqu’il y a [+] devant le service est démarré, sinon il y a [-] devant.

Raspberry Pi (jessie) avec Motion comme un service

On voit dans cette copie d’écran que motion est démarré.

et si on veut voir le statut de motion

service motion status –l

Logiquement il y a des lignes en rouge, en particulier [ALR] [VID] vid_v4lx_start: Failed to open video device /dev/video0: . C’est normal puisqu’on n’a pas configuré motion.

Dans ce qui suit, on utilisera les commandes suivantes pour arrêter, démarrer ou redémarrer le service motion :

service motion stop
service motion start
service motion restart

Maintenant, il nous reste à configurer motion.

configurer motion

Nous voulons que motion lise le flux vidéo de la caméra à l’adresse IP 192.168.1.201 et qu’il autorise l’accès par un appareil sur le réseau.

Note si on a plus d’une caméra, il faut régler motion.conf et ajouter autant de fichier thread.conf qu’il y a de caméra : voir les précisions (en anglais) de l’auteur de motion ici. Tout à la fin de motion.conf, il y a des instructions aussi.

J’ai installé de cette façon une deuxième caméra à partir d’une vieille tablette android : une caméra IP avec une vieille tablette android ?

Avant de modifier /etc/motion/motion.conf, en faire une copie qu’on appellera par exemple motion.conf.OLD. motion.conf doit avoir des droits d’accès en 664.

Editer motion.conf et régler les lignes comme suit, dans l’ordre du contenu du fichier (pour moi This config file was generated by motion 3.2.12+git20140228 , ça m’indique la version de motion pour lesquelles cette configuration fonctionne).

Pour mieux comprendre les options de réglages que l’on a, voir le wiki de l’auteur de motion, ici.

daemon on

logfile /home/jf/motion/log/motion-log.log
log_level 6 # on le laisse à ce niveau par défaut pour l'instant

v4l2_palette 8    # 17 ne marche pas correctement

width 640 #320 # lié à la caméra pour moi 640
height 480 # lié à la caméra
framerate 2 #2 image par seconde

# pour netcam_url, remarquer le ';' devant et le supprimer ! 
netcam_url http://USER:PWD@192.168.1.201:80/videostream.cgi?user=USER&pwd=PWD

; netcam_userpass value # laisser en commentaire avec ; devant
netcam_keepalive on
ffmpeg_output_movies on

; si on ne commente pas, erreur [0] [ALR] [ALL] conf_cmdparse: Unknown config option "sdl_threadnr"
; erreur pas grave mais remplit le fichier log
# sdl_threadnr 0 

target_dir /home/jf/motion/log  # Target base directory for pictures and films

# on utilise la commande http qui fonctionne en direct dans notre page web de déboguage
stream_port 8081

stream_localhost off   # permet l'accès en local

webcontrol_port 8085

webcontrol_localhost off   # on bloque l'accès

Ensuite on redémarre motion avec service motion restart . Puis Puis service motion status -l  nous indique si tout va bien.

Motion bien configuré sur Raspberry Pi

Tout va bien mais erreur Unknown config option « sdl_threadnr ». Je n’ai pas trouvé comment la résoudre et ça ne paraît pas géner le fonctionnement de motion.

Tester le bon fonctionnement

Si le flux de la caméra ne s’affiche pas correctement dans la deuxième partie de notre page de test page-test.html , ouvrir /home/al/tmp/motion.log et identifier l’erreur qui bloque motion.

on peut aussi arrêter le service motion (service motion stop ) et taper seulement motion , qui affiche des indications d’erreurs éventuelles.

affichage (embed) du flux motion

Et maintenant ?

Dans l’article suivant de cette série , nous verrons comment configurer motion pour qu’il détecte les mouvements et alerte.

Un serveur Web sur mon Raspberry Pi

Un serveur Web sur mon Raspberry Pi

Je veux transformer mon Pi en serveur web qui mettra à ma disposition des informations issues de divers capteurs dans ma maison. La première étape (après l’installation du Pi décrite dans Mise en service d’un Raspberry Pi ) est d’installer Apache.

Installer Apache

Apache est un serveur de page web sous le protocope http. Pour l’installer, j’ai suivi les instructions ici sur le site officiel du raspberry Pi.

C’est rapide. Ensuite je tape http://nautilus/ (c’est le « hostname » de ce Pi) et je vois la page par défaut d’apache, servie par mon Pi localement.

installer PHP

Selon les mêmes instructions que pour l’installation d’Apache.

J’ai ensuite supprimé /var/www/html/index.html et je l’ai remplacé par /var/www/html/index.php , dans lequel j’avais ajouté le code suivant :

<!DOCTYPE html>
<html lang="fr">
<head>
 <meta charset="utf-8">
 <title>premier test d'affichage caméra</title>
 <link href="A-style.css" rel="stylesheet" media="all" type="text/css"> 
</head>
<body>
<H1>test Raspberry Pi Web server</h1>

<p>Bonjour ! </p>

</body>
</html>

Et ça fonctionne !