Script qui redémarre une camera IP

Forum dédié aux problématiques concernant les scripts pour DomoticZ.
Entourez votre code et les logs avec les balises nommées code grâce au bouton <\>.
Pyrrhus
Messages : 130
Inscription : 11 juin 2015, 14:57

Script qui redémarre une camera IP

Message par Pyrrhus »

Bonjour,
j'ai acquis récemment une camera ip trendnet tvip662 qui a tendance a planter: normalement, quand je tape l'adresse de la camera dans un navigateur, j'ai la video, les controle pour la tourner,...etc. Mais de temps en temps, j'ai droit à une belle page web toute simple avec écris en gros "Internal Server error" dont voici le code:

Code : Tout sélectionner

<head><link href="resource://jid1-mnnxcxisbpnsxq-at-jetpack/data/skin/socialwidgets.css" type="text/css" rel="stylesheet"></head>
<body>
<h1>Internal Server Error</h1>
We are sorried.
</body>
J'utilise domoticz sur mon RPi2 et il me reste une fibaro wall plug.
L'idée est de faire un script sh qui serait lancé toutes les 10 minutes avec cron. Si c'est la page d'erreur qui est détectée, la wall plug s'etteindrait et se rallumerait pour réinitialiser la caméra. Pour cette partie là du script, pas de probléme, j'utilise souvent

Code : Tout sélectionner

curl - s http://ip_rasp:port/json.htm?type=command&param=switchlight&idx=XX&switchcmd=On ou Off
Par contre je suis complétement perdu pour la première partie... Je sais qu'il y a un mélange de "curl" et de "grep" pour détecter le "Internal Server Error we are sorried"
Mais je ne sais pas du tout comment faire, quels paramètres utilisés...
L'idée est simple: si c'est la page d'erreur qui est détectée, la caméra redémarre via la wall plug. Si ce n'est pas la page d'erreur, on ne fait rien.
La page web de la camera est juste http://ip_cam
Pouvez vous m'aider ?
Chrominator
Messages : 1042
Inscription : 19 déc. 2015, 07:29
Localisation : France

Re: Script qui redémarre une camera IP

Message par Chrominator »

Perso je préfère bash.

Le script suivant devrait fonctionner (pas testé), tout exec renvoie un code retour pour identifier comment l'opération s'est terminée.
C'est ce qu'on teste ici.

Code : Tout sélectionner

#!/bin/bash
ip_rasp="192.168.x.x"
port="y"
wget --output-document="/var/tmp/camera_status" http://ip_cam
status=`cat /var/tmp/camera_status |grep 'Internal Server Error'`
if [ $? == 0 ]; then
  # En panne
  curl - s http://$ip_rasp:$port/json.htm?type=command&param=switchlight&idx=XX&switchcmd=Off
  sleep 5
  curl - s http://$ip_rasp:$port/json.htm?type=command&param=switchlight&idx=XX&switchcmd=On
fi
Je te laisse initialiser ip_rasp et port selon ta config.
Un bon frein vaut mieux que deux sparadraps.

Ubuntu 24.04.3 LTS - Domoticz 2025.1 (build 16782)
Pentium G3220T 2.6GHz - 4Go DDR3
RFXtrx433 USB Ver Pro1/1043
Z-Stick GEN5 Version: 1.6-1136-g07ea22bb
Rtl433 RTL-SDR receiver
RFLink Gateway
Zigbee SLZB-06
Pyrrhus
Messages : 130
Inscription : 11 juin 2015, 14:57

Re: Script qui redémarre une camera IP

Message par Pyrrhus »

Bonjour chrominator !
Merci de m'aider.
J'ai essayé ton script, ma camera étant justement plantée (là ça tombe bien !)
Le probleme c'est que le fichier camera_status généré est vide.
Par contre quand je fais dans le terminal :

Code : Tout sélectionner

wget --output-document="/var/tmp/camera_status" http://ip_cam
il me génère toujours un fichier camera_status vide mais on voit clairement dans le terminal :

Code : Tout sélectionner

--2016-03-19 14:25:40--  http://192.168.xx.xx/
Connexion vers 192.168.xx.xx:80...connecté.
requête HTTP transmise, en attente de la réponse...500 Internal Server Error
2016-03-19 14:25:40 ERREUR 500: Internal Server Error.
Comment récupérer ce "Internal Server Error" pour éteindre et rallumer la wall plug ?
Merci beaucoup
Chrominator
Messages : 1042
Inscription : 19 déc. 2015, 07:29
Localisation : France

Re: Script qui redémarre une camera IP

Message par Chrominator »

Bizarre.

Alors à ce moment là, redirige la sortie standard dans un fichier, du genre :

Code : Tout sélectionner

wget http://ip_cam > /var/tmp/camera_status
Le fichier /var/tmp/camera_status devrait contenir ce que tu lis à l'écran.

Ca marche ? :shock:
Un bon frein vaut mieux que deux sparadraps.

Ubuntu 24.04.3 LTS - Domoticz 2025.1 (build 16782)
Pentium G3220T 2.6GHz - 4Go DDR3
RFXtrx433 USB Ver Pro1/1043
Z-Stick GEN5 Version: 1.6-1136-g07ea22bb
Rtl433 RTL-SDR receiver
RFLink Gateway
Zigbee SLZB-06
Pyrrhus
Messages : 130
Inscription : 11 juin 2015, 14:57

Re: Script qui redémarre une camera IP

Message par Pyrrhus »

J'ai réussi !

Code : Tout sélectionner

#!/bin/bash

wget http://192.168.xx.xx/ &>/var/tmp/camstatus
if grep 'Internal Server Error' /var/tmp/camstatus ; then
 
  curl -s "http://ip_du rasp:port/json.htm?type=command&param=switchlight&idx=XX&switchcmd=Off"
  sleep 5
  curl -s "http://ip_du rasp:port/json.htm?type=command&param=switchlight&idx=XX&switchcmd=On"
else
echo "Camera is running"
fi
Je te remercie beaucoup de m'avoir mis sur la voie avec le wget ! J'ai du mettre un "&" sinon le script bloque...

Probleme résolu !
Répondre