Archives par étiquette : snapshot

Hotspot et caméras ?

Et si vous profitiez d’avoir un hotspot WiFi, avec un enregistreur de connexions qui fonctionne sous linux, pour venir y installer un serveur Web et mettre à disposition de vos utilisateurs les clichés instantanés d’une ou plusieurs vues des caméras IP de votre établissement ?

C’est ce qui motive le projet de Monwifi actuellement en version Beta, avec une interface d’administration pour ajouter et supprimer les caméras :

et une interface de visualisation destinée à vos utilisateurs et clients :

Ici nous avons choisi de capturer le flux de 3 caméras en montage, dont celle de Chamonix, excusez nous du peu 😉
Si vous cliquez sur une image, un onglet s’ouvre et elle s’affiche en pleine résolution, permettant aisément de zoomer. Cette page fonctionne sur PC, smartphone, ou tablette, bien entendu.

Imaginons maintenant que vous exploitiez un établissement avec une piscine : les utilisateurs de votre hotspot wifipak vont pouvoir visualiser en temps semi-réel l’occupation du bassin, je dis bien semi-réel car il n’est pas question d’être intrusif et de diffuser un flux vidéo, uniquement d’afficher un snapshot, c’est à dire une capture d’écran à un instant t.
De même, une caméra IP sur un parcours de golf, sur une terrasse de restaurant, sur une plage privée vous offriront la même possibilité : on y va ? on n’y va pas ? Trop de monde ? Y’a personne ?!
Mais on peut également imaginer visualiser une aire de jeux pour voir que le p’tit dernier s’amuse bien, sans risques.

Revenons à l’administration de ces captures, peut-être avez-vous remarqué ce détail :

RTSP ? Oui, rtsp, ce protocole sur pratiquement toutes les caméras IP qui permet de visualiser le flux vidéo. Toutes les caméras ne font hélas pas de snapshot, à l’instar des TP-Link TAPO : il faut dans ce cas pouvoir capturer le flux vidéo et en extraire une image à un instant donné, lors de cette rapide capture, avant de l’afficher.

Vous aurez ainsi le choix de plusieurs modèles de caméras, soit avec un flux RTSP, soit avec une capacité de snapshot. Nous avons pour le moment testé les caméras Ubiquiti, après avoir activé le snapshot dans l’interface d’administration de chaque caméra. Les caméras TAPO TP-Link refusent elle systématiquement la capture rtsp, aussi avons nous décidé de tester un matériel Imou :

Affaire à suivre… nous allons rapidement découvrir si ce matériel nous offrira toutes les fonctionnalités attendues, car à ce tarif (< 50 €), il ne manque pas de qualités 😉

Evolution des fonctionnalités :

Comment faire évoluer l’interface ? Cela va dépendre des idées de nos clients, il faudra dans un premier temps tester un prototype, voir si le retour des clients est positif, découvrir quels aspects nous devrons faire évoluer surtout.

Déjà, nous imaginons pouvoir ajouter l’envoi d’une image vers un serveur Web, pour par exemple afficher une vue en temps réel de la plage en face de votre établissement, l’enneigement des pistes de la station, une ligne d’horizon sur les montagnes voisines, ou tout paysage que vous voudrez bien proposer à vos visiteurs internet : un lien sur la caméra, un serveur ftp avec un login et un mot de passe, des heures de fonctionnement en fonction du lever du jour sur un lieu donné, et une fréquence d’actualisation. Simple non ?

L’IA, outil de taille :

Inutile de vous le cacher, nous avons utilisé plusieurs IA pour générer ces interfaces, avec en tête ChatGPT et MistralAI. Nous avons rapidement oublié Gemini par Google car à chaque correction, seule une partie des codes était affichée, nécessitant de redemander sans cesse l’envoi du code entier pour ne pas perdre de temps : en vain, l’intelligence est absente de Gemini pour ce qui concerne le code informatique, il vaut mieux l’utiliser pour trouver des recettes de cuisine ou demander l’âge avancé de Flamby Mou 1er, ex-Mouzident sociamou de la France ;-))))

Ces outils sont fabuleux, rapides surtout, mais en aucun cas ne remplacent totalement, pour le moment, notre capacité d’analyse et de programmation. Nous les avons éduqués, orientés, modifiés à la main souvent. Cela reste des outils, mais ne nous voilons pas la face, ils sont fabuleusement utiles !

Conclusion :

Si le projet vous intéresse, si vous utilisez ou voudriez utiliser un hotspot Wifipak, n’hésitez pas à nous faire signe sur Monwifi.fr pour devenir Beta-testeur dès que le projet sera un peu plus avancé.
A terme il pourrait bien s’ouvrir à d’autres matériels hotspot en ne s’utilisant que comme serveur Web et serveur de capture d’images, qui sait…

Capture d’image sur caméra IP Aircam par Wget

Comment récupérer une image d’une caméra AirCam Ubiquiti avec une simple commande Wget (Linux) ?

aircam

Commencez par recopier le script à la fin du billet dans un fichier snap.sh par exemple. Rendez ensuite le script exécutable :

chmod +x snap.sh

puis exécutez le :

sh snap.sh votre_ip:port admin password fichier.jpg

Remplacez admin, password par vos identifiants de connexion ou ne les indiquez pas si vous utilisez le couple ubnt/ubnt de base.
Port est le port http (80 par défaut) et peut-être oublié si vous ne l’avez pas modifié.
fichier.jpg sera le fichier image capturé.

Par exemple :

sh snap.sh 192.168.1.121:82 admin pass snap.jpg

Et voilà, vous avez désormais une image haute résolution snap.jpg que vous allez pouvoir exploiter à volonté, l’envoyer par email, la rendre visible sur un site internet, etc. Il est même possible d’automatiser la capture en lançant le script snap.sh à intervalle régulier via crontab pour afficher une image en temps réel de votre environnement à vos visiteurs, mais ceci est une autre histoire.

Ce petit script fonctionne fort bien sur un Raspberry Pi et apporte quelques idées d’expérimentations, notamment avec son serveur web intégré : nous en reparlerons prochainement 😉

Le script :

#!/bin/sh

usage() {
	echo "airCam snapshot grabber v0.1 (c) Ubiquiti Networks, Inc."
	echo "Usage: $0 <aircam IP> [<username> <password> <output file>]"
}

if [ $# -lt 1 ]; then
	usage $0
	exit 10
fi

IP=$1
USER=$2
PASS=$3
SNAPSHOT_FILE=$4

if [ -z "$USER" ]; then
	USER=ubnt
fi

if [ -z "$PASS" ]; then
	PASS=ubnt
fi

if [ -z "$SNAPSHOT_FILE" ]; then
	SNAPSHOT_FILE=aircam-snapshot.jpg
fi

COOKIES="--cookie cookies.txt  --cookie-jar cookies.txt"
AUTH="--form-string username=$USER --form-string password=$PASS"
URL=http://${IP}

# fetch cookie
curl -s $COOKIES -L ${URL}/login.cgi -o /dev/null
TMPFILE=$(mktemp .ac-snap.tmp.XXXXXX)
echo "Recuperation de l'image depuis $IP..."
curl -s $COOKIES -H "Expect:" $AUTH -L ${URL}/login.cgi?uri=/snapshot.cgi?chan=0 -o $TMPFILE

# check downloaded file
file $TMPFILE | grep JPEG >/dev/null 2>&1
RC=$?
if [ 0 -eq $RC ]; then
	echo "Chargement reussi."
	mv $TMPFILE $SNAPSHOT_FILE
	echo "Sauvegarde dans '$SNAPSHOT_FILE'"
else
	echo "Erreur ! Mauvais login/mot de passe ?"
fi

rm -f $TMPFILE
exit $RC

Selon une idée sur cette page.

AirCam : prendre un cliché

Comment effectuer une capture d’image sur une caméra IP AirCam ?

AirCam

AirCam

La réponse est simple, une simple ligne http et le tour est joué, comme par exemple :

http://192.168.1.120:81/snapshot.cgi?chan=0&user=login&password=pass

Ici, nous avons une caméra avec l’adresse IP 192.168.1.120, accessible sur le port 81. Pour y accéder, nous avons login et pass comme accès, à remplacer bien entendu par vos propres informations.

Vous obtenez alors l’affichage de snapshot.jpeg, une image que vous allez pouvoir utiliser à volonté, enregistrer, etc.