Maintenant que j’ai quelques caméras basées sur MotionEyeOS dans la maison, je voulais un moyen plus simple de savoir quand elles ont été redémarrées et également un lien sur mon téléphone pour faciliter l’accès au flux de la caméra. J’ai l’excellente application Pushover sur mon téléphone, j’ai donc décidé de demander à MotionEyeOS d’envoyer une notification Pushover à chaque redémarrage. La notification indique quelle est l’adresse IP et fournit un lien pratique sur lequel cliquer.
Qu’est-ce qu’une notification pushover ?
Les notifications Pushover ressemblent à ceci :

avec une notification Pushover individuelle ressemblant à :

Service de transfert
Pour utiliser Pushover, vous devez créer un compte sur Pushover.net et installez l’application mobile. L’application coûte de l’argent, mais c’est un coût unique et j’étais heureux de payer. Dans le tableau de bord de votre compte utilisateur, vous trouverez un « jeton » utilisateur. De nouvelles « applications » peuvent être créées et chacune aura un « jeton API » unique. J’ai créé une application nommée « MotionEyeOS » et j’ai utilisé son jeton pour mes deux caméras.
Vous pouvez utiliser Pushover pour d’autres projets et il est compatible avec tout langage de programmation pouvant appeler une URL Web.
Redirection de port
La notification Pushover fournit l’adresse IP du réseau vue de l’extérieur. Le « redirection de port » du routeur peut être utilisé pour diriger les demandes de l’extérieur du réseau vers le Pi spécifique exécutant MotionEyeOS. Votre réseau n’aura qu’une seule adresse IP externe mais de nombreux appareils et l’utilisation de ports permet de communiquer avec chacun.
Dans les exemples de cet article, j’utilise le port 40001 et mon routeur le redirige vers le Pi de mon réseau. Le routeur redirige tout le trafic entrant vers le port 40001 vers l’adresse IP interne de mon Pi (par exemple 192.168.0.11) en utilisant le numéro de port défini dans le « Port HTTP » dans les « Paramètres experts » de l’administrateur MotionEyeOS. En interne, j’utilise http://192.168.0.11:80 pour accéder à ma caméra Garden, mais en externe, j’utilise http://123.123.123.123:40001.
La notification inclut donc un lien vers « http://123.123.123.123:40001 ». En configurant plusieurs règles, vous pouvez accéder à différentes installations MotionEyeOS sur le même réseau. Donnez-leur simplement à chacun un port différent. Une deuxième caméra pourrait utiliser 40002 et le routeur redirigerait simplement vers l’adresse IP interne appropriée (par exemple 192.168.0.12).
Si vous ne savez pas comment configurer votre routeur Google « transfert de port netgear r8000 » mais remplacez « netgear r8000 » par la marque et le modèle de votre routeur. Quelqu’un, quelque part aura écrit un guide pour l’expliquer.
Téléchargements de fichiers SSH
Afin d’obtenir les scripts sur votre Raspberry Pi, vous pouvez utiliser un client SSH tel que WinSCP, FileZilla ou MobaXterm. Il existe deux techniques.
Méthode 1 – Télécharger sur Pi
Téléchargez les deux fichiers de script décrits ci-dessous sur votre PC. Modifiez userinit.sh et ajoutez vos clés Pushover. Ensuite, téléchargez sur le Raspberry Pi à l’aide du client SSH.
Méthode 2 – Télécharger directement sur Pi
Connectez-vous au Raspberry Pi à l’aide de SSH ou d’un client qui fournit une interface de ligne de commande. Accédez au répertoire approprié et téléchargez le fichier de script directement depuis BitBucket à l’aide de la commande curl. Utilisez nano pour éditer userinit.sh et ajouter vos clés Pushover.
Script Bash – userinit.sh
Pour que MotionEyeOS exécute certaines commandes personnalisées au démarrage, vous devrez placer le fichier userinit.sh dans le répertoire /data/etc/. Il s’agit d’une fonctionnalité intégrée qui peut être utilisée à de nombreuses autres fins.
user="replace_me_with_your_user_key" token="replace_me_with_your_api_token" port="40001" sleep 15 ip=$(curl -s https://api.ipify.org) ip="$ip:$port" python /data/pushover_boot.py $ip $user $token > /var/log/pushover &Il n’est pas nécessaire d’ajouter un shebang (c’est-à-dire #!/bin/sh) au début du fichier et il n’est pas nécessaire de le rendre exécutable.
Vous pouvez trouver une copie d’un exemple userinit.sh dans mon référentiel BitBucket.
Si vous utilisez une ligne de commande, vous pouvez naviguer jusqu’au bon répertoire en utilisant :
cd /data/etcIl peut ensuite être téléchargé directement sur votre Pi à l’aide de la commande « curl » :
curl https://bitbucket.org/MattHawkinsUK/rpispy-misc/raw/master/motionEyeOS/userinit.sh --output userinit.shAssurez-vous que ce script se retrouve dans le répertoire /data/etc.
Si vous utilisez une ligne de commande, vous pouvez éditer le contenu pour ajouter vos touches Pushover à l’aide de nano :
nano userinit.shUtilisez CTRL-X, Y, ENTER pour enregistrer les modifications et revenir à la ligne de commande.
Noter : Il est essentiel que vous modifiiez les variables « utilisateur » et « jeton » avec vos propres jetons utilisateur et api. Si tu ne fais pas ça Ne fera pas travail.
Script Python – pushover_boot.py
Lorsque le système démarre, le script « userinit.sh » attend quinze secondes, obtient l’adresse IP Internet à l’aide du service ipify.org, puis exécute le script « pushover_boot.py ». Le script « pushover_boot.py » doit être placé dans le répertoire /data/.
Ce script envoie les jetons, le titre, le message et l’URL à inclure dans le message à Pushover. En cas de succès, la notification sera envoyée sur votre téléphone et apparaîtra dans l’application.
Vous pouvez trouver une copie de pushover_boot.py dans mon référentiel BitBucket.
Si vous utilisez une ligne de commande, vous pouvez naviguer jusqu’au bon répertoire en utilisant :
cd /data/Il peut ensuite être téléchargé directement sur votre Pi à l’aide de la commande « curl » :
curl https://bitbucket.org/MattHawkinsUK/rpispy-misc/raw/master/motionEyeOS/pushover_boot.py --output pushover_boot.pyCe script doit être dans le répertoire /data/ !
Enregistrement
Toutes les instructions « print » dans le script Python seront dirigées vers le fichier « /var/log/pushover ». Vous pouvez visualiser le contenu de ce fichier lorsque le système a démarré en utilisant :
cat /var/log/pushoverPour le moment, il n’imprime que le titre de la notification, mais vous pouvez améliorer le script Python pour imprimer des informations plus détaillées et peut-être un horodatage.
Dépannage
Pour que ce mécanisme fonctionne, tout doit être correctement configuré. Si vous vous trompez d’un pas, cela ne fonctionnera probablement pas du tout. Voici quelques points à vérifier :
- Votre système MotionEyeOS doit être opérationnel et l’interface Web disponible sur votre réseau local.
- Vous devriez avoir un compte Pushover actif avec l’application mobile installée.
- Dans Pushover, vous devriez avoir créé une application qui vous donnera un « API Token/Key ».
- Le script pushover_boot.py doit exister dans /data/
- pushover_boot.py doit correspondre le script dans mon référentiel BitBucket exactement.
- Le script userinit.sh doit exister dans /data/etc/
- userinit.sh doit correspondre le script dans mon référentiel BitBucket exactement mais devrait utiliser votre Clé utilisateur Pushover, clé API et numéro de port.
- Votre routeur doit mapper le numéro de port entrant utilisé dans userinit.sh au « port HTML » défini dans les « Paramètres experts » de MotionEyeOS.
