Mini Hack: Integrer et contrôler une camera Wanscam HW0021 ou K21 sur Jeedom

Mini Hack: Integrer et contrôler une camera Wanscam HW0021 ou K21 sur Jeedom

14 août 2020 0 Par Jérôme Ferrari

Bonjour à tous,

Aujourd’hui, nous allons travailler sur l’intégration d’une caméra Wanscam (HW0021 ou K21) dans Jeedom qui ressemble à cela:

Cette caméra de sécurité n’est pas chère et facilement pilotable.

Petit warning concernant les cameras fonctionnant par IP… Si vous ne connaissez pas vraiment ce qui peut transiter par ce genre de webcam, il est préférable qu’elle soit mise sur un réseau wifi qui ne soit pas connecté à internet… ça évitera de vous retrouver sur la toile à votre insus.

Comme la rasberry et surtout les distributions qui l’accompagne sont capables de se connecter autant sur le port Ethernet que le wifi en même temps, il n’est pas compliqué de faire 2 réseaux séparés (mais cela ne sera pas abordé dans cet article).

Pour information, cette article est basé sur des informations issues des sites suivants:

https://forum.jeedom.com/viewtopic.php?t=43386

https://www.ispyconnect.com/userguide-ptz.aspx

Je ne rentrerai pas non plus sur tout l’aspect technique de chacun des logiciels utilisés mais si vous avez des questions à leur sujet, n’hésitez pas à les mettre dans les commentaires.

Partie 0: Préparation du matériel

Dans un premier temps, il vous faudra télécharger le logiciel fiddler qui permet de logger tout le trafic entre votre ordinateur et internet. (Je vous expliquerai pourquoi par la suite. Vous pouvez le retrouver ici:

https://www.telerik.com/fiddler

Il vous faut aussi configurer votre caméra via votre téléphone ou votre navigateur afin qu’elle se connecte sur le bon réseau. (Pour ma part, j’ai utilisé YSEE depuis mon téléphone). Je vous laisse voir en fonction de votre caméra.

https://play.google.com/store/apps/details?id=com.g.yilian.ysee&hl=fr

Il vous faudra pensez au passage à récupérer l’adresse IP de votre caméra.

Maintenant que tout est en place, nous pouvons passer à la phase d’intégration dans Jeedom.

Partie 1: Intégration dans Jeedom

Dans un premier temps, il vous faut installer le plugin Caméra, Script et JeeXplorer

Une fois cela fait, vous pouvez allez dans le plugin Caméra.

Cliquez sur le Ajouter et donnez un nom à votre caméra

Maintenant, vous pouvez remplir le pluging de la façon suivante:

  • Choissiez le model Wanscam – HW0021
  • Rentrez l’adresse IP
  • Mettez 80 pour le port
  • Mettez le nom d’utilisateur ainsi que le mot de passe
  • Pour l’URL de snapshot mettez /cgi-bin/net_jpeg.cgi?ch=1

Pensez à sauvegarder et vous pouvez allez maintenant vérifier que l’image est bien présente dans le dashboard

Super ça fonctionne nous avons l’image, mais malheureusement pas encore le contrôle du mouvement…

Normalement, le contrôle dois fonctionner directement avec le protocole Onvif mais depuis quelques temps les firmwares de ces caméra ont évolués et il faut utiliser une petite astuce pour continuer à les utiliser en faisant une requête HTTP.

Partie 2: Comment récupérer l’identifiant

Pour cela, il faut dans un premier temps fermer votre navigateur web, puis lancer le logiciel Fiddler.

Une fois Fiddler en place, vous pouvez relancer votre navigateur web.

Vous devez maintenant allez à l’adresse IP de votre caméra et renseignez vos identifiants. vous vous retrouvez sur la page suivante:

Il vous suffit alors de cliquer sur l’une des flèches qui se trouvent sous PTZ Control

Une fois cela fait, retournez sur Fiddler et vous devriez avoir quelque chose de ce genre:

Si vous cliquez sur la case où il est marqué /cgi-bin/cmd.cgi et que vous regardez dans Headers (qui se trouve à droite), vous obtiendrez à la ligne Authorization: Basic un code qui nous sera utile pour la suivante. Copiez ce code avec le = inclu (ici en rouge) et gardez le précieusement.

Voilà nous avons en avons fini avec cette partie. Maintenant nous pouvons retourner sur Jeedom.

Au passage, vous pouvez aussi en profiter pour enregistrer les preset que vous voulez (c’est les positions prédéfinis que vous souhaitez)

Pour cela, il suffit de bouger la caméra avec les flèches vers le point de la pièce qui vous interresse et d’aller dans l’onglet Preset Control d’ajouter le numéro du preset et de cliquer sur Add a preset (ici je n’en ai enregistré qu’un seul)

Partie 3: Création d’un script de contrôle sur Jeedom

Maintenant, nous allons allez dans le plugin JeeXplorer afin de créer un script python qui interprétera les commandes envoyées par les différents scripts de Jeedom dans le but d’envoyer les bonnes requêtes HTTP vers la caméra.

Pour créer un script, allez dans JeeXplorer puis descendez jusqu’à l’arborescence suivante:

html/plugins/script/data

vous arrivez à un repertoire qui ressemble à cela (sans tous mes scripts ^^):

Cliquez sur l’icone Nouveau fichier

Cliquez sur PY: Source Python et donnez lui un nom (pour ma par,je lui est donné le nom script_commande_ptz.py

On le retrouve ensuite dans la fenêtre

Double-cliquez dessus et copier/coller le code ci-dessous.

Il faudra mettre le bon mot de passe récupéré avant dans le headers (il faut qu’il y est bien 2 = comme dans l’exemple) et remplacer les adresses IP par la votre.

! /usr/bin/env python3
import sys
import requests
headers = {'Authorization': 'Basic MDPRécupéreravant==',
'Content-type': 'application/json'}
print(sys.argv[1])
if sys.argv[1]== "pos1":
response = requests.get('http://192.168.1.55/cgi-bin/editpreset.cgi?opType=goto&edit_index=0', headers=headers).json()
else:
if sys.argv[1]== "1":
response = requests.get('http://192.168.1.55/cgi-bin/cmd.cgi?opType=set&cmd=ptz&ptz_cmd=1', headers=headers).json()
else:
if sys.argv[1]== "2":
response = requests.get('http://192.168.1.55/cgi-bin/cmd.cgi?opType=set&cmd=ptz&ptz_cmd=2', headers=headers).json()
else:
if sys.argv[1]== "3":
response = requests.get('http://192.168.1.55/cgi-bin/cmd.cgi?opType=set&cmd=ptz&ptz_cmd=3', headers=headers).json()
else:
if sys.argv[1]== "4":
response = requests.get('http://192.168.1.55/cgi-bin/cmd.cgi?opType=set&cmd=ptz&ptz_cmd=4', headers=headers).json()
else:
if sys.argv[1]== "iron":
response = requests.get('http://192.168.1.55/cgi-bin/getcmos.cgi?opType=set&other_irLED=1', headers=headers).json()
else:
if sys.argv[1]== "iroff":
response = requests.get('http://192.168.1.55/cgi-bin/getcmos.cgi?opType=set&other_irLED=2', headers=headers).json()
else:
if sys.argv[1]== "irauto":
response = requests.get('http://192.168.1.55/cgi-bin/getcmos.cgi?opType=set&other_irLED=3', headers=headers).json()
else:
print("x")

Maintenant cliquez sur Enregistrer et Fermer

Voilà vous de faire le script d’interprétation qui permettra de diriger la caméra dans toute les directions, d’allumer, d’éteindre ou de mettre en auto l’infrarouge et de demander à la caméra d’allez sur le preset (ici le 1 mais en modifiant le code vous pouvez en rajouter)

Nous allons maintenant le connecter avec Jeedom grâce au plugin Script.

Partie 4: Liaison entre le script Python et Jeedom

Maintenant, il faut aller dans le plugin Script et cliquez sur Ajouter

Donnez un nom à votre script (ici je l’ai appelé PTZ_camera_wanscam)

Une fois dedans, cliquez sur commande puis cliquez sur + Ajouter une commande script

Vous vous retrouvez avec ceci:

Cliquez sur le bouton vert

Mettez un nom par exemple IRAUTO et copier/coller le code suivant

!/bin/bash
sudo python3 /var/www/html/plugins/script/data/script_commande_ptz.py irauto

Enregistrez et fermez la fenêtre

Remplissez maintenant de la façon suivante:

Sauvegardez maintenant (en haut à droite)

pour faire les autres commandes, refaites la même opération de création:

Il faudra juste modifier l’argument du code pour appeler les différentes fonction de la façon suivante:

  • Bas –> 1
  • Haut –> 2
  • Droite –> 3
  • Gauche –> 4
  • IRON –> iron
  • IROFF –> iroff
  • IRAUTO –> irauto
  • Preset 1 –> pos1

Cela donne normalement cela à la fin :

Voila les commandes sont faites et vous pouvez les tester en cliquant sur le bouton Tester de chacune d’elle

Si tout est ok, nous pouvons maintenant relier chaque commande sur le plugin de la caméra.

Partie 5: Finalisation des commandes de la caméra

Allez maintenant dans le plugin Caméra et retournez sur votre caméra

Cliquez sur l’onglet Commandes et remplacez les anciennes commandes de la façon suivante (en recherchant vos propres commandes):

Pensez aussi à cocher la case Afficher des commandes qui vous intéresse.

Pensez à sauvegarder et retournez sur le dashboard de votre caméra.

Faites le test de vos commandes….

Tadam!!!! Tout fonctionne!!!

Voilà j’espère que ce mini-hack vous aura aidé et je vous souhaite une bonne continuation.

Jérôme Ferrari