<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Scripts on Surveillance camera avec raspberry, mjpg-streamer, Django et Apache</title><link>https://djangocamera.netlify.app/script/</link><description>Recent content in Scripts on Surveillance camera avec raspberry, mjpg-streamer, Django et Apache</description><generator>Hugo -- gohugo.io</generator><language>fr-fr</language><lastBuildDate>Tue, 01 Jul 2025 08:30:17 +0200</lastBuildDate><atom:link href="https://djangocamera.netlify.app/script/index.xml" rel="self" type="application/rss+xml"/><item><title>SuppressFiles_py_2Raspberry</title><link>https://djangocamera.netlify.app/script/suppressFiles_py_2Raspberry/</link><pubDate>Tue, 01 Jul 2025 08:30:17 +0200</pubDate><guid>https://djangocamera.netlify.app/script/suppressFiles_py_2Raspberry/</guid><description>#Script qui permet de supprimer les fichiers datant de plus de N jours. #On lance un cron pour supprimer régulièrement ces fichiers. #On élimine également les lignes correspondantes dans la base de données. #Ajout d&amp;#39;une caméra supplémentaire from subprocess import run import sqlite3 from datetime import datetime, timedelta from configparser import ConfigParser parser_file = &amp;#34;/etc/camera/configuration.ini&amp;#34; parser = ConfigParser() parser.read(parser_file) home = parser.get(&amp;#34;paths&amp;#34;, &amp;#34;home&amp;#34;) folder = parser.get(&amp;#34;paths&amp;#34;, &amp;#34;folder&amp;#34;) project = parser.get(&amp;#34;paths&amp;#34;, &amp;#34;project&amp;#34;) pathCamera_1 = parser.</description></item><item><title>GetCamerasAndRegister_py_2Raspberry</title><link>https://djangocamera.netlify.app/script/getCamerasAndRegister_py_2Raspberry/</link><pubDate>Mon, 30 Jun 2025 17:22:00 +0200</pubDate><guid>https://djangocamera.netlify.app/script/getCamerasAndRegister_py_2Raspberry/</guid><description>&amp;#34;&amp;#34;&amp;#34;Script python qui : prend une photo depuis chacune des caméras stocke cette photo dans le dossier ad hoc modifie la base de données pour indiquer la date, la camera, le nom de la photo et le chemin du fichier Dans la mesure où on est susceptible de prendre des photos rapprochées (moins de la minute), le cron est insuffisant On fait donc une boucle while infinie avec le delta temps pour prendre les photos en fonction du paramète [frequences][capture] du fichier /etc/camera/configuration.</description></item><item><title>WiFiCheck.sh</title><link>https://djangocamera.netlify.app/script/WiFiCheck_sh/</link><pubDate>Mon, 13 Nov 2023 23:08:41 +0100</pubDate><guid>https://djangocamera.netlify.app/script/WiFiCheck_sh/</guid><description>#!/bin/bash ################################################################## # A Project of TNET Services, Inc # # Title: WiFi_Check # Author: Kevin Reed (Dweeber) # dweeber.dweebs@gmail.com # Project: Raspberry Pi Stuff # # Copyright: Copyright (c) 2012 Kevin Reed &amp;lt;kreed@tnet.com&amp;gt; # https://github.com/dweeber/WiFi_Check # # Purpose: # # Script checks to see if WiFi has a network IP and if not # restart WiFi # # Uses a lock file which prevents the script from running more # than one at a time.</description></item><item><title>stream.3_4cam_html</title><link>https://djangocamera.netlify.app/script/stream_3_html_4cam/</link><pubDate>Wed, 18 Oct 2023 16:29:44 +0100</pubDate><guid>https://djangocamera.netlify.app/script/stream_3_html_4cam/</guid><description>{% extends &amp;#34;camera/base.html&amp;#34; %} {% block content %} &amp;lt;h2 class=&amp;#34;monh2&amp;#34;&amp;gt;Caméra 3 en direct&amp;lt;/h2&amp;gt; &amp;lt;figure&amp;gt; &amp;lt;img class=&amp;#34;centre-image imgresponsive&amp;#34; src={{stream.0}} alt=&amp;#34;Erreur sur la caméra 3&amp;#34; width=&amp;#34;300&amp;#34; &amp;gt; &amp;lt;figcaption&amp;gt;CAMERA 3 : Streaming&amp;lt;/figcaption&amp;gt; &amp;lt;/figure&amp;gt; &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; &amp;lt;a class=&amp;#34;buttonLigne&amp;#34; href=&amp;#34;/camera/stream_AllCam/&amp;#34;&amp;gt;Direct 4 Caméras&amp;lt;/a&amp;gt; &amp;lt;a class=&amp;#34;buttonLigne&amp;#34; href=&amp;#34;/camera/&amp;#34;&amp;gt;Accueil&amp;lt;/a&amp;gt; {% endblock %}</description></item><item><title>views_4cam.py</title><link>https://djangocamera.netlify.app/script/views_py_4cam/</link><pubDate>Tue, 17 Oct 2023 23:28:16 +0100</pubDate><guid>https://djangocamera.netlify.app/script/views_py_4cam/</guid><description>from django.shortcuts import render, redirect from django.http import HttpResponse from django.core.paginator import Paginator from django.template.response import TemplateResponse from datetime import datetime, timedelta from django.utils import timezone import pytz #pour régler les problèmes d&amp;#39;heure naïve et consciente from pytz import timezone from suntimes import SunTimes from configparser import ConfigParser from .models import Photo, Appareil config_file = &amp;#34;/etc/camera/configuration.ini&amp;#34; parser = ConfigParser() parser.read(config_file) longitude = float(parser.get(&amp;#34;locate&amp;#34;, &amp;#34;longitude&amp;#34;)) latitude = float(parser.get(&amp;#34;locate&amp;#34;, &amp;#34;latitude&amp;#34;)) altitude = float(parser.</description></item><item><title>RunCamera_1_4cam.py</title><link>https://djangocamera.netlify.app/script/runCamera_3_py_4cam/</link><pubDate>Tue, 17 Oct 2023 23:09:33 +0100</pubDate><guid>https://djangocamera.netlify.app/script/runCamera_3_py_4cam/</guid><description>&amp;#34;&amp;#34;&amp;#34;Script python qui va lancer la caméra supplémentaire et permettre à mjpg-streamer de générer les flux et les images statiques A indiquer dans le crontab en @reboot&amp;#34;&amp;#34;&amp;#34; import subprocess from time import sleep from configparser import ConfigParser parser_file = &amp;#34;/etc/camera/configuration.ini&amp;#34; parser = ConfigParser() parser.read(parser_file) cam_3_name = parser.get(&amp;#34;camera&amp;#34;, &amp;#34;cam_3_name&amp;#34;) cam_3_port = parser.get(&amp;#34;camera&amp;#34;, &amp;#34;cam_3_port&amp;#34;) cam_3_resol = parser.get(&amp;#34;camera&amp;#34;, &amp;#34;cam_3_resol&amp;#34;) cam_3_fps = parser.get(&amp;#34;camera&amp;#34;, &amp;#34;cam_3_fps&amp;#34;) mjpg_path = parser.get(&amp;#34;paths&amp;#34;, &amp;#34;mjpg&amp;#34;) delay_run=int(parser.get(&amp;#34;frequences&amp;#34;, &amp;#34;delay_run_Cam_3&amp;#34;)) sleep(delay_run) #attente avant de lancer les commandes #command_cp = [&amp;#34;cp&amp;#34;, f&amp;#39;{path_db}{baseName}&amp;#39;, f&amp;#39;{path_db}/{baseBackUp}&amp;#39;] #command_1 = [&amp;#34;cd&amp;#34;, f&amp;#39;{mjpg_path}&amp;#39;, &amp;#34;&amp;amp;&amp;amp;&amp;#34;, &amp;#34;export&amp;#34;, f&amp;#39;LD_LIBRARY_PATH=.</description></item><item><title>suppressFiles_4cam.py</title><link>https://djangocamera.netlify.app/script/suppressFiles_py_4cam/</link><pubDate>Tue, 17 Oct 2023 17:06:08 +0100</pubDate><guid>https://djangocamera.netlify.app/script/suppressFiles_py_4cam/</guid><description>#Script qui permet de supprimer les fichiers datant de plus de N jours. #On lance un cron pour supprimer régulièrement ces fichiers. #On élimine également les lignes correspondantes dans la base de données. #Ajout d&amp;#39;une caméra supplémentaire from subprocess import run import sqlite3 from datetime import datetime, timedelta from configparser import ConfigParser parser_file = &amp;#34;/etc/camera/configuration.ini&amp;#34; parser = ConfigParser() parser.read(parser_file) home = parser.get(&amp;#34;paths&amp;#34;, &amp;#34;home&amp;#34;) folder = parser.get(&amp;#34;paths&amp;#34;, &amp;#34;folder&amp;#34;) project = parser.get(&amp;#34;paths&amp;#34;, &amp;#34;project&amp;#34;) pathCamera_1 = parser.</description></item><item><title>getCamerasAndRegister_4cam.py</title><link>https://djangocamera.netlify.app/script/getCamerasAndRegister_py_4cam/</link><pubDate>Tue, 17 Oct 2023 16:56:44 +0100</pubDate><guid>https://djangocamera.netlify.app/script/getCamerasAndRegister_py_4cam/</guid><description>&amp;#34;&amp;#34;&amp;#34;Script python qui : prend une photo depuis chacune des caméras stocke cette photo dans le dossier ad hoc modifie la base de données pour indiquer la date, la camera, le nom de la photo et le chemin du fichier Dans la mesure où on est susceptible de prendre des photos rapprochées (moins de la minute), le cron est insuffisant On fait donc une boucle while infinie avec le delta temps pour prendre les photos en fonction du paramète [frequences][capture] du fichier /etc/camera/configuration.</description></item><item><title>parHeure_4cam.html</title><link>https://djangocamera.netlify.app/script/parHeure_html_4cam/</link><pubDate>Tue, 17 Oct 2023 16:39:07 +0100</pubDate><guid>https://djangocamera.netlify.app/script/parHeure_html_4cam/</guid><description>{% extends &amp;#34;camera/base.html&amp;#34; %} {% load static %} {% block header %} &amp;lt;h1 class=&amp;#34;monh1&amp;#34;&amp;gt;Photos par Heures&amp;lt;/h1&amp;gt;&amp;lt;br&amp;gt; {% endblock %} {% block content %} &amp;lt;p class=&amp;#34;monh2&amp;#34;&amp;gt;Page {{ photos.number }} / {{ photos.paginator.num_pages }}&amp;lt;/p&amp;gt; {% if photos.has_previous %} &amp;lt;a class=&amp;#34;buttonLigne&amp;#34; href=&amp;#34;?page={{ photos.previous_page_number }}&amp;#34;&amp;gt;Page Précédente&amp;lt;/a&amp;gt; {% endif %} {% if photos.has_next %} &amp;lt;a class=&amp;#34;buttonLigne&amp;#34; href=&amp;#34;?page={{ photos.next_page_number }}&amp;#34;&amp;gt;Page Suivante&amp;lt;/a&amp;gt; {% endif %} &amp;lt;table&amp;gt; &amp;lt;tr&amp;gt; {% for photo in photos %} &amp;lt;td&amp;gt;&amp;lt;img class=&amp;#34;centre-image imgSmall&amp;#34; src=&amp;#34;{% static photo.</description></item><item><title>stream_AllCam_4cam</title><link>https://djangocamera.netlify.app/script/stream_AllCam_html_4cam/</link><pubDate>Tue, 17 Oct 2023 16:30:17 +0100</pubDate><guid>https://djangocamera.netlify.app/script/stream_AllCam_html_4cam/</guid><description>{% extends &amp;#34;camera/base.html&amp;#34; %} {% block content %} &amp;lt;!-- Modifier le titre : les 4 caméras en direct --&amp;gt; &amp;lt;h1 class=&amp;#34;monh1&amp;#34;&amp;gt;les 4 caméras en direct&amp;lt;/h2&amp;gt; &amp;lt;table&amp;gt; &amp;lt;!-- Scinder le tableau en 2 lignes (balise &amp;lt;tr&amp;gt;). Ecriture de la première ligne avec 2 cellules (balise &amp;gt;td&amp;gt; --&amp;gt; &amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; &amp;lt;a href=&amp;#34;{% url &amp;#39;stream_py&amp;#39; %}&amp;#34;&amp;gt; &amp;lt;img class=&amp;#34;centre-image imgresponsive&amp;#34; src={{stream.2}} alt=&amp;#34;Erreur sur la caméra nocturne&amp;#34; width=&amp;#34;300&amp;#34; &amp;gt; &amp;lt;figcaption&amp;gt;CAMERA Nuit : Streaming&amp;lt;/figcaption&amp;gt; &amp;lt;/a&amp;gt; &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; &amp;lt;a href=&amp;#34;{% url &amp;#39;stream_1&amp;#39; %}&amp;#34;&amp;gt; &amp;lt;img class=&amp;#34;centre-image imgresponsive&amp;#34; src={{stream.</description></item><item><title>historique_4cam.html</title><link>https://djangocamera.netlify.app/script/historique_html_4cam/</link><pubDate>Tue, 17 Oct 2023 16:29:06 +0100</pubDate><guid>https://djangocamera.netlify.app/script/historique_html_4cam/</guid><description>{% extends &amp;#34;camera/base.html&amp;#34; %} {% load static %} {% block header %} &amp;lt;h1 class=&amp;#34;monh1&amp;#34;&amp;gt;Historique Général&amp;lt;/h1&amp;gt; {% endblock %} {% block content %} &amp;lt;table&amp;gt; &amp;lt;tr&amp;gt; &amp;lt;!-- modification de la variable `latest_photo_list_group3` en `latest_photo_list_group` --&amp;gt; {% for photo in latest_photo_list_group %} &amp;lt;td&amp;gt; &amp;lt;a href=&amp;#34;{% static photo.file_photo_jpg %}&amp;#34;&amp;gt; &amp;lt;img class=&amp;#34;centre-image imgresponsive&amp;#34; src=&amp;#34;{% static photo.file_photo_jpg %}&amp;#34; height=&amp;#34;150&amp;#34; width=&amp;#34;225&amp;#34; alt=&amp;#34;photo non disponible&amp;#34; loading=&amp;#34;lazy&amp;#34;/&amp;gt;&amp;lt;figcaption&amp;gt;{{photo.name}} - {{photo.appareil}}&amp;lt;/figcaption&amp;gt; &amp;lt;/a&amp;gt; &amp;lt;/td&amp;gt; {% if forloop.last %} &amp;lt;/tr&amp;gt; {% else %} &amp;lt;!</description></item><item><title>urls_4cam.py (camera)</title><link>https://djangocamera.netlify.app/script/urls_py_4cam/</link><pubDate>Tue, 17 Oct 2023 10:32:54 +0100</pubDate><guid>https://djangocamera.netlify.app/script/urls_py_4cam/</guid><description>from django.urls import path from . import views #Ajouter la quatrième caméra dans urlpatterns[] urlpatterns = [ path(&amp;#39;&amp;#39;, views.accueil, name=&amp;#39;accueil&amp;#39;), path(&amp;#39;historique/&amp;#39;, views.historique, name=&amp;#39;historique&amp;#39;), path(&amp;#39;nuit/&amp;#39;, views.nuit, name=&amp;#39;nuit&amp;#39;), path(&amp;#39;parHeure/&amp;#39;, views.parheure, name=&amp;#39;parHeure&amp;#39;), path(&amp;#39;stream_py/&amp;#39;, views.stream_py, name=&amp;#34;stream_py&amp;#34;), path(&amp;#39;stream_1/&amp;#39;, views.stream_1, name=&amp;#34;stream_1&amp;#34;), path(&amp;#39;stream_2/&amp;#39;, views.stream_2, name=&amp;#34;stream_2&amp;#34;), path(&amp;#39;stream_AllCam/&amp;#39;, views.stream_AllCam, name=&amp;#34;stream_AllCam&amp;#34;), path(&amp;#39;stream_3/&amp;#39;, views.stream_3, name=&amp;#34;stream_3&amp;#34;), ]</description></item><item><title>project-camera.conf 4cam</title><link>https://djangocamera.netlify.app/script/project-camera_conf_4cam/</link><pubDate>Tue, 17 Oct 2023 10:04:57 +0100</pubDate><guid>https://djangocamera.netlify.app/script/project-camera_conf_4cam/</guid><description>#mis en dehors du virtual host voir https://stackoverflow.com/questions/47803081/certbot-apache-error-name-duplicates-previous-wsgi-daemon-definition WSGIDaemonProcess project-camera.com python-home=/home/pi/folder/folder_venv python-path=/home/pi/folder/project &amp;lt;VirtualHost *:80&amp;gt; #!!!REMPLACER &amp;lt;site name&amp;gt; par le nom de votre site (par exemple, monprojet.sytes.net) ServerName &amp;lt;site name&amp;gt; ServerAlias www.&amp;lt;site name&amp;gt; Redirect permanent / https://&amp;lt;site name&amp;gt; &amp;lt;/VirtualHost&amp;gt; &amp;lt;VirtualHost *:443&amp;gt; #!!!REMPLACER &amp;lt;site name&amp;gt; par le nom de votre site (par exemple, monprojet.sytes.net) ServerName &amp;lt;site name&amp;gt; ServerAlias &amp;lt;site name&amp;gt; #pour accroître la sécurité et être en HSTS Redirect permanent /secure https://&amp;lt;site name&amp;gt; ErrorLog ${APACHE_LOG_DIR}/error.</description></item><item><title>Configuration_4cam.ini</title><link>https://djangocamera.netlify.app/script/configuration_ini_4cam/</link><pubDate>Mon, 16 Oct 2023 20:19:31 +0100</pubDate><guid>https://djangocamera.netlify.app/script/configuration_ini_4cam/</guid><description>;Fichier ini. A placer dans /etc/camera ;ini file, to set in /etc/camera [locate] ;par défaut : le centre de la France selon l'IGN, Corse non comprise ;remplacer les valeurs par celles de votre localisation ;default : centre of France according IGN, Corse not included ;replace the values with those of your location longitude=2.430278 latitude=46.539722 altitude=326 zone=Europe/Paris [hosts] local=127.0.0.1 ;ip locale Raspberry - port du serveur Django ;MODIFIER L'IP LOCALE DE LA RASPBERRY (raspIP) EN FONCTION DE VOTRE VALEUR ;local ip Raspberry - Django server port ;CHANGE THE LOCAL IP OF THE RASPBERRY (raspIP) ACCORDING TO YOUR VALUE raspIP=&amp;lt;local IP Raspberry&amp;gt; ;port du serveur Django ;Django server port django_port=8000 ;proxy pour accès extérieur ;proxy for outdoor internet access proxy_1=Rp1 proxy_2=Rp2 proxy_py=Rpi ; pour la quatrième caméra proxy_3=Rp3 [mails] ;mail du site (celui avec lequel on crée un compte chez le fournisseur DynDNS) ;ce mail peut être le même que le mail personnel ; mais il vaut mieux en créer un ;VOUS DEVEZ RENSEIGNER LES DONNNEES DES DEUX MAILS AVEC VOS VALEURS ;site email (the one with which we create an account with the DynDNS provider) ;this email can be the same as the personal email; but it is better to create one ;YOU MUST FILL IN THE DATA OF BOTH EMAILS WITH YOUR VALUES mail_site=&amp;lt;user1&amp;gt;@&amp;lt;provider1&amp;gt; ;mot de passe du mail_site ;password mail_site mail_site_mdp=&amp;lt;password&amp;gt; ;mail personnel (celui auquel vont être envoyées diverses alertes et informations) ;personal email (the one to which various alerts and information will be sent) mail_perso=&amp;lt;user2&amp;gt;@&amp;lt;provider2&amp;gt; ;port du smtp.</description></item><item><title>global.css</title><link>https://djangocamera.netlify.app/script/global_css/</link><pubDate>Sat, 07 Oct 2023 11:45:19 +0100</pubDate><guid>https://djangocamera.netlify.app/script/global_css/</guid><description>/* pour les fontes en fonction du type d&amp;#39;élément */ p { font-size: 18px; } pre { font-size: 18px; color: #8A104D; } h1 { font-size: 44px; color: #8A104D; } .monh1 { font-size: 25px; color: #8A104D; text-align: left; } .monh2 { font-size:16px; color: #8A104D; text-align: left; font-weight: bold; } /* traitement des images : centrer, ajuster... */ .centre-image { display: block; margin-left: auto; margin-right: auto; } .imgresponsive { width: 100%; max-width: 750px; height: auto; } .</description></item><item><title>base_4cam.html</title><link>https://djangocamera.netlify.app/script/base_html_4cam/</link><pubDate>Tue, 24 Jan 2023 16:22:37 +0100</pubDate><guid>https://djangocamera.netlify.app/script/base_html_4cam/</guid><description>{% load static %} &amp;lt;!DOCTYPE html&amp;gt; &amp;lt;html lang=&amp;#34;fr&amp;#34;&amp;gt; &amp;lt;head&amp;gt; {% block title %}&amp;lt;title&amp;gt;X &amp;amp; Y&amp;lt;/title&amp;gt;{% endblock %} &amp;lt;meta charset=&amp;#34;utf-8&amp;#34; name=&amp;#34;viewport&amp;#34; content=&amp;#34;width=device-width, initial-scale=1.0&amp;#34;&amp;gt; &amp;lt;link rel=&amp;#34;shortcut icon&amp;#34; href=&amp;#34;{% static &amp;#39;camera/logo/logo.png&amp;#39; %}&amp;#34; type=&amp;#34;image/x-icon&amp;#34; /&amp;gt; &amp;lt;link rel=&amp;#34;stylesheet&amp;#34; href=&amp;#34;https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css&amp;#34;&amp;gt; &amp;lt;link rel=&amp;#34;stylesheet&amp;#34; href=&amp;#34;{% static &amp;#39;camera/css/global.css&amp;#39; %}&amp;#34;&amp;gt; &amp;lt;/head&amp;gt; &amp;lt;script&amp;gt; function myFunction() { var x = document.getElementById(&amp;#34;myNavbar&amp;#34;); if (x.className === &amp;#34;navbar&amp;#34;) { x.className += &amp;#34; responsive&amp;#34;; } else { x.className = &amp;#34;navbar&amp;#34;; } } &amp;lt;/script&amp;gt; &amp;lt;body&amp;gt; {% block navebar %} &amp;lt;div class=&amp;#39;navbar&amp;#39; id=&amp;#34;myNavbar&amp;#34;&amp;gt; &amp;lt;ul&amp;gt; &amp;lt;li&amp;gt;&amp;lt;a href=&amp;#34;/camera/&amp;#34; &amp;gt;Accueil&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt; &amp;lt;li class=&amp;#34;dropdown&amp;#34;&amp;gt;&amp;lt;a class=&amp;#34;dropbtn&amp;#34; href=&amp;#34;/camera/stream_AllCam/&amp;#34;&amp;gt;En Direct &amp;amp;ensp;&amp;lt;/a&amp;gt; &amp;lt;div class=&amp;#34;dropdown-content&amp;#34;&amp;gt; &amp;lt;a href=&amp;#34;/camera/stream_AllCam/&amp;#34;&amp;gt;Les 3 Caméras&amp;lt;/a&amp;gt; &amp;lt;a href=&amp;#34;/camera/stream_py/&amp;#34;&amp;gt;Caméra Py&amp;lt;/a&amp;gt; &amp;lt;a href=&amp;#34;/camera/stream_1/&amp;#34;&amp;gt;Caméra 1&amp;lt;/a&amp;gt; &amp;lt;a href=&amp;#34;/camera/stream_2/&amp;#34;&amp;gt;Caméra 2&amp;lt;/a&amp;gt; &amp;lt;a href=&amp;#34;/camera/stream_3/&amp;#34;&amp;gt;Caméra 3&amp;lt;/a&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/li&amp;gt; &amp;lt;li&amp;gt;&amp;lt;a href=&amp;#34;/camera/nuit/&amp;#34;&amp;gt;La Nuit&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt; &amp;lt;li&amp;gt;&amp;lt;a href=&amp;#34;/camera/historique/&amp;#34;&amp;gt;Historique&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt; &amp;lt;li&amp;gt;&amp;lt;a href=&amp;#34;/camera/parHeure/&amp;#34;&amp;gt;Par Heures&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt; &amp;lt;div class=&amp;#39;icon&amp;#39;&amp;gt; &amp;lt;li&amp;gt;&amp;lt;a href=&amp;#34;javascript:void(0);&amp;#34; onclick=&amp;#34;myFunction()&amp;#34;&amp;gt; &amp;lt;i class=&amp;#34;fa fa-bars&amp;#34;&amp;gt;&amp;lt;/i&amp;gt; &amp;lt;/a&amp;gt; &amp;lt;/li&amp;gt;&amp;lt;/div&amp;gt; &amp;lt;/ul&amp;gt; &amp;lt;/div &amp;gt; {% endblock %} &amp;lt;div class= &amp;#34;item_header&amp;#34;&amp;gt; {% block header %} {% endblock %} &amp;lt;/div&amp;gt; &amp;lt;div class=&amp;#34;item_main&amp;#34;&amp;gt; {% block content %} {% endblock %} &amp;lt;/div&amp;gt; &amp;lt;table class=&amp;#34;item_footer&amp;#34;&amp;gt; &amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;&amp;lt;img src=&amp;#34;{% static &amp;#39;camera/logo/logo.</description></item><item><title>ipcheck.py</title><link>https://djangocamera.netlify.app/script/ipcheck_py/</link><pubDate>Mon, 25 Jan 2021 14:47:05 +0100</pubDate><guid>https://djangocamera.netlify.app/script/ipcheck_py/</guid><description>#!/usr/bin/python3.5 # -*-coding:Utf-8 import json import requests import datetime import smtplib from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from configparser import ConfigParser parser_file = &amp;#34;/etc/camera/configuration.ini&amp;#34; parser = ConfigParser() parser.read(parser_file) mail_site = parser.get(&amp;#34;mails&amp;#34;, &amp;#34;mail_site&amp;#34;) mail_site_mdp = parser.get(&amp;#34;mails&amp;#34;, &amp;#34;mail_site_mdp&amp;#34;) mail_perso = parser.get(&amp;#34;mails&amp;#34;, &amp;#34;mail_perso&amp;#34;) smtp_port = int(parser.get(&amp;#34;mails&amp;#34;, &amp;#34;smtp_port&amp;#34;)) home = parser.get(&amp;#34;paths&amp;#34;, &amp;#34;home&amp;#34;) fournisseur = mail_site.split(&amp;#34;@&amp;#34;)[1] login = mail_site.split(&amp;#34;@&amp;#34;)[0] filePath = f&amp;#39;{home}/currentIP.txt&amp;#39; def notifyByMail(ip, date): print(&amp;#34;Sending email...&amp;#34;) dateString = date.strftime(&amp;#34;%Y-%m-%dT%H:%M:%S.%fZ&amp;#34;) server=smtplib.SMTP(f&amp;#39;smtp.{fournisseur}&amp;#39;,smtp_port) server.ehlo() server.starttls() server.</description></item><item><title>mail_reboot.py</title><link>https://djangocamera.netlify.app/script/mail_reboot_py/</link><pubDate>Mon, 25 Jan 2021 11:03:46 +0100</pubDate><guid>https://djangocamera.netlify.app/script/mail_reboot_py/</guid><description>#!/usr/bin/python3 # -*-coding:Utf-8 import datetime import smtplib from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from time import sleep from configparser import ConfigParser parser_file = &amp;#34;/etc/camera/configuration.ini&amp;#34; parser = ConfigParser() parser.read(parser_file) mail_site = parser.get(&amp;#34;mails&amp;#34;, &amp;#34;mail_site&amp;#34;) mail_site_mdp = parser.get(&amp;#34;mails&amp;#34;, &amp;#34;mail_site_mdp&amp;#34;) mail_perso = parser.get(&amp;#34;mails&amp;#34;, &amp;#34;mail_perso&amp;#34;) smtp_port = int(parser.get(&amp;#34;mails&amp;#34;, &amp;#34;smtp_port&amp;#34;)) delay_send_mail_reboot=int(parser.get(&amp;#34;frequences&amp;#34;, &amp;#34;delay_send_mail_reboot&amp;#34;)) fournisseur = mail_site.split(&amp;#34;@&amp;#34;)[1] login = mail_site.split(&amp;#34;@&amp;#34;)[0] sleep(delay_send_mail_reboot) date = datetime.datetime.now() dateString = date.strftime(&amp;#34;%Y-%m-%dT%H:%M:%S.%fZ&amp;#34;) server=smtplib.SMTP(f&amp;#39;smtp.{fournisseur}&amp;#39;,smtp_port) server.ehlo() server.starttls() server.login(login,mail_site_mdp) msg = MIMEMultipart() fromaddr = mail_site msg[&amp;#39;From&amp;#39;] = fromaddr msg[&amp;#39;Subject&amp;#39;] = f&amp;#39;Redémarrage de la raspberry - {dateString}&amp;#39; body = f&amp;#39;ATTENTION : la raspberry a redémarré le {dateString}.</description></item><item><title>project-camera.conf V5</title><link>https://djangocamera.netlify.app/script/project-camera_conf_V5/</link><pubDate>Mon, 25 Jan 2021 10:04:57 +0100</pubDate><guid>https://djangocamera.netlify.app/script/project-camera_conf_V5/</guid><description>#mis en dehors du virtual host voir https://stackoverflow.com/questions/47803081/certbot-apache-error-name-duplicates-previous-wsgi-daemon-definition WSGIDaemonProcess project-camera.com python-home=/home/pi/folder/folder_venv python-path=/home/pi/folder/project &amp;lt;VirtualHost *:80&amp;gt; #!!!REMPLACER &amp;lt;site name&amp;gt; par le nom de votre site (par exemple, monprojet.sytes.net) ServerName &amp;lt;site name&amp;gt; ServerAlias www.&amp;lt;site name&amp;gt; Redirect permanent / https://&amp;lt;site name&amp;gt; &amp;lt;/VirtualHost&amp;gt; &amp;lt;VirtualHost *:443&amp;gt; #!!!REMPLACER &amp;lt;site name&amp;gt; par le nom de votre site (par exemple, monprojet.sytes.net) ServerName &amp;lt;site name&amp;gt; ServerAlias &amp;lt;site name&amp;gt; #pour accroître la sécurité et être en HSTS Redirect permanent /secure https://&amp;lt;site name&amp;gt; ErrorLog ${APACHE_LOG_DIR}/error.</description></item><item><title>project-camera.conf V4</title><link>https://djangocamera.netlify.app/script/project-camera_conf_V4/</link><pubDate>Sun, 24 Jan 2021 23:36:45 +0100</pubDate><guid>https://djangocamera.netlify.app/script/project-camera_conf_V4/</guid><description>#mis en dehors du virtual host voir https://stackoverflow.com/questions/47803081/certbot-apache-error-name-duplicates-previous-wsgi-daemon-definition WSGIDaemonProcess project-camera.com python-home=/home/pi/folder/folder_venv python-path=/home/pi/folder/project &amp;lt;VirtualHost *:80&amp;gt; #!!!REMPLACER &amp;lt;site name&amp;gt; par le nom de votre site (par exemple, monprojet.sytes.net) ServerName &amp;lt;site name&amp;gt; ServerAlias www.&amp;lt;site name&amp;gt; ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined Alias /static/ /var/www/stock/ &amp;lt;Directory /var/www/stock&amp;gt; Require all granted &amp;lt;/Directory&amp;gt; &amp;lt;Directory /home/pi/folder/project/camera/static&amp;gt; Require all granted &amp;lt;/Directory&amp;gt; WSGIScriptAlias / /home/pi/folder/project/project/wsgi.py WSGIProcessGroup project-camera.com &amp;lt;Directory /home/pi/folder/project/project&amp;gt; &amp;lt;Files wsgi.py&amp;gt; Require all granted &amp;lt;/Files&amp;gt; &amp;lt;/Directory&amp;gt; #pour forcer authentification accès site &amp;lt;Location &amp;#34;/ &amp;#34;&amp;gt; AuthType Basic AuthName &amp;#34;Authentification obligatoire&amp;#34; AuthUserFile &amp;#34;/etc/apache2/.</description></item><item><title>views.py V2</title><link>https://djangocamera.netlify.app/script/views_py_V2/</link><pubDate>Sun, 24 Jan 2021 23:28:16 +0100</pubDate><guid>https://djangocamera.netlify.app/script/views_py_V2/</guid><description>from django.shortcuts import render, redirect from django.http import HttpResponse from django.core.paginator import Paginator from django.template.response import TemplateResponse from datetime import datetime, timedelta from django.utils import timezone import pytz #pour régler les problèmes d&amp;#39;heure naïve et consciente from pytz import timezone from suntimes import SunTimes from configparser import ConfigParser from .models import Photo, Appareil config_file = &amp;#34;/etc/camera/configuration.ini&amp;#34; parser = ConfigParser() parser.read(config_file) longitude = float(parser.get(&amp;#34;locate&amp;#34;, &amp;#34;longitude&amp;#34;)) latitude = float(parser.get(&amp;#34;locate&amp;#34;, &amp;#34;latitude&amp;#34;)) altitude = float(parser.</description></item><item><title>project-camera.conf V3</title><link>https://djangocamera.netlify.app/script/project-camera_conf_V3/</link><pubDate>Sun, 24 Jan 2021 23:14:04 +0100</pubDate><guid>https://djangocamera.netlify.app/script/project-camera_conf_V3/</guid><description>#mis en dehors du virtual host voir https://stackoverflow.com/questions/47803081/certbot-apache-error-name-duplicates-previous-wsgi-daemon-definition WSGIDaemonProcess project-camera.com python-home=/home/pi/folder/folder_venv python-path=/home/pi/folder/project &amp;lt;VirtualHost *:80&amp;gt; #!!!REMPLACER &amp;lt;site name&amp;gt; par le nom de votre site (par exemple, monprojet.sytes.net) ServerName &amp;lt;site name&amp;gt; ServerAlias www.&amp;lt;site name&amp;gt; ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined Alias /static/ /var/www/stock/ &amp;lt;Directory /var/www/stock&amp;gt; Require all granted &amp;lt;/Directory&amp;gt; &amp;lt;Directory /home/pi/folder/project/camera/static&amp;gt; Require all granted &amp;lt;/Directory&amp;gt; WSGIScriptAlias / /home/pi/folder/project/project/wsgi.py WSGIProcessGroup project-camera.com &amp;lt;Directory /home/pi/folder/project/project&amp;gt; &amp;lt;Files wsgi.py&amp;gt; Require all granted &amp;lt;/Files&amp;gt; &amp;lt;/Directory&amp;gt; #pour forcer authentification accès site &amp;lt;Location &amp;#34;/&amp;#34;&amp;gt; AuthType Basic AuthName &amp;#34;Authentification obligatoire&amp;#34; AuthUserFile &amp;#34;/etc/apache2/.</description></item><item><title>wsgi.py</title><link>https://djangocamera.netlify.app/script/wsgi_py/</link><pubDate>Sun, 24 Jan 2021 20:34:32 +0100</pubDate><guid>https://djangocamera.netlify.app/script/wsgi_py/</guid><description>&amp;#34;&amp;#34;&amp;#34; WSGI config for project project. It exposes the WSGI callable as a module-level variable named ``application``. For more information on this file, see https://docs.djangoproject.com/en/3.1/howto/deployment/wsgi/ &amp;#34;&amp;#34;&amp;#34; import os import sys from django.core.wsgi import get_wsgi_application os.environ.setdefault(&amp;#39;DJANGO_SETTINGS_MODULE&amp;#39;, &amp;#39;project.settings&amp;#39;) sys.path.append(&amp;#39;/home/pi/folder/project&amp;#39;) sys.path.append(&amp;#39;/home/pi/folder/project/project&amp;#39;) application = get_wsgi_application()</description></item><item><title>project-camera.conf V2</title><link>https://djangocamera.netlify.app/script/project-camera_conf_V2/</link><pubDate>Sun, 24 Jan 2021 20:20:54 +0100</pubDate><guid>https://djangocamera.netlify.app/script/project-camera_conf_V2/</guid><description>#mis en dehors du virtual host voir https://stackoverflow.com/questions/47803081/certbot-apache-error-name-duplicates-previous-wsgi-daemon-definition WSGIDaemonProcess project-camera.com python-home=/home/pi/folder/folder_venv python-path=/home/pi/folder/project &amp;lt;VirtualHost *:80&amp;gt; #!!!REMPLACER &amp;lt;local IP Raspberry&amp;gt; par l’IP de la Raspberry ; par exemple : ServerName 192.168.1.49 ServerName &amp;lt;local IP Raspberry&amp;gt; ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined Alias /static/ /var/www/stock/ &amp;lt;Directory /var/www/stock&amp;gt; Require all granted &amp;lt;/Directory&amp;gt; &amp;lt;Directory /home/pi/folder/project/camera/static&amp;gt; Require all granted &amp;lt;/Directory&amp;gt; WSGIScriptAlias / /home/pi/folder/project/project/wsgi.py WSGIProcessGroup project-camera.com &amp;lt;Directory /home/pi/folder/project/project&amp;gt; &amp;lt;Files wsgi.py&amp;gt; Require all granted &amp;lt;/Files&amp;gt; &amp;lt;/Directory&amp;gt; #pour forcer authentification accès site &amp;lt;Location &amp;#34;/&amp;#34;&amp;gt; AuthType Basic AuthName &amp;#34;Authentification obligatoire&amp;#34; AuthUserFile &amp;#34;/etc/apache2/.</description></item><item><title>project-camera.conf V1</title><link>https://djangocamera.netlify.app/script/project-camera_conf_V1/</link><pubDate>Sun, 24 Jan 2021 19:38:27 +0100</pubDate><guid>https://djangocamera.netlify.app/script/project-camera_conf_V1/</guid><description>#mis en dehors du virtual host voir https://stackoverflow.com/questions/47803081/certbot-apache-error-name-duplicates-previous-wsgi-daemon-definition WSGIDaemonProcess project-camera.com python-home=/home/pi/folder/folder_venv python-path=/home/pi/folder/project &amp;lt;VirtualHost *:80&amp;gt; #!!!REMPLACER &amp;lt;local IP Raspberry&amp;gt; par l’IP de la Raspberry ; par exemple : ServerName 192.168.1.49 ServerName &amp;lt;local IP Raspberry&amp;gt; ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined Alias /static/ /var/www/stock/ &amp;lt;Directory /var/www/stock&amp;gt; Require all granted &amp;lt;/Directory&amp;gt; &amp;lt;Directory /home/pi/folder/project/camera/static&amp;gt; Require all granted &amp;lt;/Directory&amp;gt; WSGIScriptAlias / /home/pi/folder/project/project/wsgi.py WSGIProcessGroup project-camera.com &amp;lt;Directory /home/pi/folder/project/project&amp;gt; &amp;lt;Files wsgi.py&amp;gt; Require all granted &amp;lt;/Files&amp;gt; &amp;lt;/Directory&amp;gt; &amp;lt;/VirtualHost&amp;gt; # Pour éliminer erreur AH00558 ServerName 127.</description></item><item><title>runDjango.py</title><link>https://djangocamera.netlify.app/script/runDjango_py/</link><pubDate>Sun, 24 Jan 2021 17:23:20 +0100</pubDate><guid>https://djangocamera.netlify.app/script/runDjango_py/</guid><description>&amp;#34;&amp;#34;&amp;#34;Script python qui va lancer Django et rendre celui-ci accessible sur le réseau local A indiquer dans le crontab en @reboot&amp;#34;&amp;#34;&amp;#34; import subprocess from configparser import ConfigParser parser_file = &amp;#34;/etc/camera/configuration.ini&amp;#34; parser = ConfigParser() parser.read(parser_file) raspIp = parser.get(&amp;#34;hosts&amp;#34;, &amp;#34;raspIP&amp;#34;) home = parser.get(&amp;#34;paths&amp;#34;, &amp;#34;home&amp;#34;) folder = parser.get(&amp;#34;paths&amp;#34;, &amp;#34;folder&amp;#34;) venv = parser.get(&amp;#34;paths&amp;#34;, &amp;#34;venv&amp;#34;) project = parser.get(&amp;#34;paths&amp;#34;, &amp;#34;project&amp;#34;) django_port = parser.get(&amp;#34;hosts&amp;#34;, &amp;#34;django_port&amp;#34;) #command = &amp;#34;. {}/{}/{}/bin/activate &amp;amp;&amp;amp; python {}/{}/{}/manage.py runserver {}:{}&amp;#34;.format(home, folder, venv, home, folder, project, raspIp, django_port) command = &amp;#34;.</description></item><item><title>suppressFiles.py</title><link>https://djangocamera.netlify.app/script/suppressFiles_py/</link><pubDate>Sun, 24 Jan 2021 17:06:08 +0100</pubDate><guid>https://djangocamera.netlify.app/script/suppressFiles_py/</guid><description>#Script qui permet de supprimer les fichiers datant de plus de N jours. #On lance un cron pour supprimer régulièrement ces fichiers. #On élimine également les lignes correspondantes dans la base de données. from subprocess import run import sqlite3 from datetime import datetime, timedelta from configparser import ConfigParser parser_file = &amp;#34;/etc/camera/configuration.ini&amp;#34; parser = ConfigParser() parser.read(parser_file) home = parser.get(&amp;#34;paths&amp;#34;, &amp;#34;home&amp;#34;) folder = parser.get(&amp;#34;paths&amp;#34;, &amp;#34;folder&amp;#34;) project = parser.get(&amp;#34;paths&amp;#34;, &amp;#34;project&amp;#34;) pathCamera_1 = parser.get(&amp;#34;paths&amp;#34;, &amp;#34;pathCamera_1&amp;#34;) pathCamera_2 = parser.</description></item><item><title>getCamerasAndRegister.py</title><link>https://djangocamera.netlify.app/script/getCamerasAndRegister_py/</link><pubDate>Sun, 24 Jan 2021 16:56:44 +0100</pubDate><guid>https://djangocamera.netlify.app/script/getCamerasAndRegister_py/</guid><description>&amp;#34;&amp;#34;&amp;#34;Script python qui : prend une photo depuis chacune des caméras stocke cette photo dans le dossier ad hoc modifie la base de données pour indiquer la date, la camera, le nom de la photo et le chemin du fichier Dans la mesure où on est susceptible de prendre des photos rapprochées (moins de la minute), le cron est insuffisant On fait donc une boucle while infinie avec le delta temps pour prendre les photos en fonction du paramète [frequences][capture] du fichier /etc/camera/configuration.</description></item><item><title>parHeure.html</title><link>https://djangocamera.netlify.app/script/parHeure_html/</link><pubDate>Sun, 24 Jan 2021 16:39:07 +0100</pubDate><guid>https://djangocamera.netlify.app/script/parHeure_html/</guid><description>{% extends &amp;#34;camera/base.html&amp;#34; %} {% load static %} {% block header %} &amp;lt;h1 class=&amp;#34;monh1&amp;#34;&amp;gt;Photos par Heures&amp;lt;/h1&amp;gt;&amp;lt;br&amp;gt; {% endblock %} {% block content %} &amp;lt;p class=&amp;#34;monh2&amp;#34;&amp;gt;Page {{ photos.number }} / {{ photos.paginator.num_pages }}&amp;lt;/p&amp;gt; {% if photos.has_previous %} &amp;lt;a class=&amp;#34;buttonLigne&amp;#34; href=&amp;#34;?page={{ photos.previous_page_number }}&amp;#34;&amp;gt;Page Précédente&amp;lt;/a&amp;gt; {% endif %} {% if photos.has_next %} &amp;lt;a class=&amp;#34;buttonLigne&amp;#34; href=&amp;#34;?page={{ photos.next_page_number }}&amp;#34;&amp;gt;Page Suivante&amp;lt;/a&amp;gt; {% endif %} &amp;lt;table&amp;gt; &amp;lt;tr&amp;gt; {% for photo in photos %} &amp;lt;td&amp;gt;&amp;lt;img class=&amp;#34;centre-image imgSmall&amp;#34; src=&amp;#34;{% static photo.</description></item><item><title>stream_AllCam.html</title><link>https://djangocamera.netlify.app/script/stream_AllCam_html/</link><pubDate>Sun, 24 Jan 2021 16:30:17 +0100</pubDate><guid>https://djangocamera.netlify.app/script/stream_AllCam_html/</guid><description>{% extends &amp;#34;camera/base.html&amp;#34; %} {% block content %} &amp;lt;h1 class=&amp;#34;monh1&amp;#34;&amp;gt;les 3 caméras en direct&amp;lt;/h2&amp;gt; &amp;lt;table&amp;gt; &amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; &amp;lt;a href=&amp;#34;{% url &amp;#39;stream_py&amp;#39; %}&amp;#34;&amp;gt; &amp;lt;img class=&amp;#34;centre-image imgresponsive&amp;#34; src={{stream.2}} alt=&amp;#34;Erreur sur la caméra nocturne&amp;#34; width=&amp;#34;300&amp;#34; &amp;gt; &amp;lt;figcaption&amp;gt;CAMERA Nuit : Streaming&amp;lt;/figcaption&amp;gt; &amp;lt;/a&amp;gt; &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; &amp;lt;a href=&amp;#34;{% url &amp;#39;stream_1&amp;#39; %}&amp;#34;&amp;gt; &amp;lt;img class=&amp;#34;centre-image imgresponsive&amp;#34; src={{stream.0}} alt=&amp;#34;Erreur sur la caméra 1&amp;#34; width=&amp;#34;300&amp;#34; &amp;gt; &amp;lt;figcaption&amp;gt;CAMERA 1: Streaming&amp;lt;/figcaption&amp;gt; &amp;lt;/a&amp;gt; &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; &amp;lt;a href=&amp;#34;{% url &amp;#39;stream_2&amp;#39; %}&amp;#34;&amp;gt; &amp;lt;img class=&amp;#34;centre-image imgresponsive&amp;#34; src={{stream.</description></item><item><title>stream.py_html</title><link>https://djangocamera.netlify.app/script/stream_py_html/</link><pubDate>Sun, 24 Jan 2021 16:30:02 +0100</pubDate><guid>https://djangocamera.netlify.app/script/stream_py_html/</guid><description>{% extends &amp;#34;camera/base.html&amp;#34; %} {% block content %} &amp;lt;h2 class=&amp;#34;monh2&amp;#34;&amp;gt;Caméra py en direct&amp;lt;/h2&amp;gt; &amp;lt;figure&amp;gt; &amp;lt;img class=&amp;#34;centre-image imgresponsive&amp;#34; src={{stream.0}} alt=&amp;#34;Erreur sur la caméra py&amp;#34; width=&amp;#34;300&amp;#34; &amp;gt; &amp;lt;figcaption&amp;gt;CAMERA InfraRouge : Streaming&amp;lt;/figcaption&amp;gt; &amp;lt;/figure&amp;gt; &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; &amp;lt;a class=&amp;#34;buttonLigne&amp;#34; href=&amp;#34;/camera/stream_AllCam/&amp;#34;&amp;gt;Direct 3 Caméras&amp;lt;/a&amp;gt; &amp;lt;a class=&amp;#34;buttonLigne&amp;#34; href=&amp;#34;/camera/&amp;#34;&amp;gt;Accueil&amp;lt;/a&amp;gt; {% endblock %}</description></item><item><title>stream.2_html</title><link>https://djangocamera.netlify.app/script/stream_2_html/</link><pubDate>Sun, 24 Jan 2021 16:29:44 +0100</pubDate><guid>https://djangocamera.netlify.app/script/stream_2_html/</guid><description>{% extends &amp;#34;camera/base.html&amp;#34; %} {% block content %} &amp;lt;h2 class=&amp;#34;monh2&amp;#34;&amp;gt;Caméra 2 en direct&amp;lt;/h2&amp;gt; &amp;lt;figure&amp;gt; &amp;lt;img class=&amp;#34;centre-image imgresponsive&amp;#34; src={{stream.0}} alt=&amp;#34;Erreur sur la caméra 2&amp;#34; width=&amp;#34;300&amp;#34; &amp;gt; &amp;lt;figcaption&amp;gt;CAMERA 2 : Streaming&amp;lt;/figcaption&amp;gt; &amp;lt;/figure&amp;gt; &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; &amp;lt;a class=&amp;#34;buttonLigne&amp;#34; href=&amp;#34;/camera/stream_AllCam/&amp;#34;&amp;gt;Direct 3 Caméras&amp;lt;/a&amp;gt; &amp;lt;a class=&amp;#34;buttonLigne&amp;#34; href=&amp;#34;/camera/&amp;#34;&amp;gt;Accueil&amp;lt;/a&amp;gt; {% endblock %}</description></item><item><title>stream_1.html</title><link>https://djangocamera.netlify.app/script/stream_1_html/</link><pubDate>Sun, 24 Jan 2021 16:29:38 +0100</pubDate><guid>https://djangocamera.netlify.app/script/stream_1_html/</guid><description>{% extends &amp;#34;camera/base.html&amp;#34; %} {% block content %} &amp;lt;h2 class=&amp;#34;monh2&amp;#34;&amp;gt;Caméra 1 en direct&amp;lt;/h2&amp;gt; &amp;lt;figure&amp;gt; &amp;lt;img class=&amp;#34;centre-image imgresponsive&amp;#34; src={{stream.0}} alt=&amp;#34;Erreur sur la caméra 1&amp;#34; width=&amp;#34;300&amp;#34; &amp;gt; &amp;lt;figcaption&amp;gt;CAMERA 1 : Streaming&amp;lt;/figcaption&amp;gt; &amp;lt;/figure&amp;gt; &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; &amp;lt;a class=&amp;#34;buttonLigne&amp;#34; href=&amp;#34;/camera/stream_AllCam/&amp;#34;&amp;gt;Direct 3 Caméras&amp;lt;/a&amp;gt; &amp;lt;a class=&amp;#34;buttonLigne&amp;#34; href=&amp;#34;/camera/&amp;#34;&amp;gt;Accueil&amp;lt;/a&amp;gt; {% endblock %}</description></item><item><title>nuit.html</title><link>https://djangocamera.netlify.app/script/nuit_html/</link><pubDate>Sun, 24 Jan 2021 16:29:17 +0100</pubDate><guid>https://djangocamera.netlify.app/script/nuit_html/</guid><description>{% extends &amp;#34;camera/base.html&amp;#34; %} {% load static %} {% block header %} &amp;lt;h1 class=&amp;#34;monh1&amp;#34;&amp;gt;Photos de nuit&amp;lt;/h1&amp;gt; &amp;lt;pre&amp;gt; Coucher : {% if horaire %}{{ horaire.3 }} - le {{horaire.4}}/{{horaire.5}}{% endif %} Lever : {% if horaire %}{{ horaire.0 }} - le {{horaire.1}}/{{horaire.2}}{% endif %} &amp;lt;/pre&amp;gt; {% endblock %} {% block content %} &amp;lt;table&amp;gt; &amp;lt;tr&amp;gt; {% for photo in night_photo_list_oneoutofN %} &amp;lt;td&amp;gt; &amp;lt;a href=&amp;#34;{% static photo.file_photo_jpg %}&amp;#34;&amp;gt; &amp;lt;img class=&amp;#34;centre-image imgresponsive&amp;#34; src=&amp;#34;{% static photo.</description></item><item><title>historique.html</title><link>https://djangocamera.netlify.app/script/historique_html/</link><pubDate>Sun, 24 Jan 2021 16:29:06 +0100</pubDate><guid>https://djangocamera.netlify.app/script/historique_html/</guid><description>{% extends &amp;#34;camera/base.html&amp;#34; %} {% load static %} {% block header %} &amp;lt;h1 class=&amp;#34;monh1&amp;#34;&amp;gt;Historique Général&amp;lt;/h1&amp;gt; {% endblock %} {% block content %} &amp;lt;table&amp;gt; &amp;lt;tr&amp;gt; {% for photo in latest_photo_list_group %} &amp;lt;td&amp;gt; &amp;lt;a href=&amp;#34;{% static photo.file_photo_jpg %}&amp;#34;&amp;gt; &amp;lt;img class=&amp;#34;centre-image imgresponsive&amp;#34; src=&amp;#34;{% static photo.file_photo_jpg %}&amp;#34; height=&amp;#34;150&amp;#34; width=&amp;#34;225&amp;#34; alt=&amp;#34;photo non disponible&amp;#34; loading=&amp;#34;lazy&amp;#34;/&amp;gt;&amp;lt;figcaption&amp;gt;{{photo.name}} - {{photo.appareil}}&amp;lt;/figcaption&amp;gt; &amp;lt;/a&amp;gt; &amp;lt;/td&amp;gt; {% if forloop.last %} &amp;lt;/tr&amp;gt; {% else %} {% if forloop.counter|divisibleby:&amp;#34;3&amp;#34; %} &amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt; {% endif %} {% endif %} {% endfor %} &amp;lt;/table&amp;gt; {% endblock %}</description></item><item><title>accueil.html</title><link>https://djangocamera.netlify.app/script/accueil_html/</link><pubDate>Sun, 24 Jan 2021 16:28:53 +0100</pubDate><guid>https://djangocamera.netlify.app/script/accueil_html/</guid><description>{% extends &amp;#34;camera/base.html&amp;#34; %} {% block content %} &amp;lt;div class=&amp;#34;grid-One&amp;#34;&amp;gt; &amp;lt;div&amp;gt;Bienvenue sur le site de X&amp;amp;Y !!&amp;lt;br&amp;gt; Choisissez la page que vous souhaitez consulter. &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;a href=&amp;#34;/camera/stream_AllCam/&amp;#34; class=&amp;#34;button&amp;#34;&amp;gt;En direct&amp;lt;/a&amp;gt;&amp;lt;br&amp;gt; &amp;lt;a href=&amp;#34;/camera/nuit/&amp;#34; class=&amp;#34;button&amp;#34;&amp;gt;Nuit&amp;lt;/a&amp;gt;&amp;lt;br&amp;gt; &amp;lt;a href=&amp;#34;/camera/historique/&amp;#34; class=&amp;#34;button&amp;#34;&amp;gt;Historique&amp;lt;/a&amp;gt;&amp;lt;br&amp;gt; &amp;lt;a href=&amp;#34;/camera/parHeure/&amp;#34; class=&amp;#34;button&amp;#34;&amp;gt;Heure par Heure&amp;lt;/a&amp;gt;&amp;lt;br&amp;gt; {% endblock %}</description></item><item><title>base.html</title><link>https://djangocamera.netlify.app/script/base_html/</link><pubDate>Sun, 24 Jan 2021 16:22:37 +0100</pubDate><guid>https://djangocamera.netlify.app/script/base_html/</guid><description>{% load static %} &amp;lt;!DOCTYPE html&amp;gt; &amp;lt;html lang=&amp;#34;fr&amp;#34;&amp;gt; &amp;lt;head&amp;gt; {% block title %}&amp;lt;title&amp;gt;X &amp;amp; Y&amp;lt;/title&amp;gt;{% endblock %} &amp;lt;meta charset=&amp;#34;utf-8&amp;#34; name=&amp;#34;viewport&amp;#34; content=&amp;#34;width=device-width, initial-scale=1.0&amp;#34;&amp;gt; &amp;lt;link rel=&amp;#34;shortcut icon&amp;#34; href=&amp;#34;{% static &amp;#39;camera/logo/logo.png&amp;#39; %}&amp;#34; type=&amp;#34;image/x-icon&amp;#34; /&amp;gt; &amp;lt;link rel=&amp;#34;stylesheet&amp;#34; href=&amp;#34;https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css&amp;#34;&amp;gt; &amp;lt;link rel=&amp;#34;stylesheet&amp;#34; href=&amp;#34;{% static &amp;#39;camera/css/global.css&amp;#39; %}&amp;#34;&amp;gt; &amp;lt;/head&amp;gt; &amp;lt;script&amp;gt; function myFunction() { var x = document.getElementById(&amp;#34;myNavbar&amp;#34;); if (x.className === &amp;#34;navbar&amp;#34;) { x.className += &amp;#34; responsive&amp;#34;; } else { x.className = &amp;#34;navbar&amp;#34;; } } &amp;lt;/script&amp;gt; &amp;lt;body&amp;gt; {% block navebar %} &amp;lt;div class=&amp;#39;navbar&amp;#39; id=&amp;#34;myNavbar&amp;#34;&amp;gt; &amp;lt;ul&amp;gt; &amp;lt;li&amp;gt;&amp;lt;a href=&amp;#34;/camera/&amp;#34; &amp;gt;Accueil&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt; &amp;lt;li class=&amp;#34;dropdown&amp;#34;&amp;gt;&amp;lt;a class=&amp;#34;dropbtn&amp;#34; href=&amp;#34;/camera/stream_AllCam/&amp;#34;&amp;gt;En Direct &amp;amp;ensp;&amp;lt;/a&amp;gt; &amp;lt;div class=&amp;#34;dropdown-content&amp;#34;&amp;gt; &amp;lt;a href=&amp;#34;/camera/stream_AllCam/&amp;#34;&amp;gt;Les 3 Caméras&amp;lt;/a&amp;gt; &amp;lt;a href=&amp;#34;/camera/stream_py/&amp;#34;&amp;gt;Caméra Py&amp;lt;/a&amp;gt; &amp;lt;a href=&amp;#34;/camera/stream_1/&amp;#34;&amp;gt;Caméra 1&amp;lt;/a&amp;gt; &amp;lt;a href=&amp;#34;/camera/stream_2/&amp;#34;&amp;gt;Caméra 2&amp;lt;/a&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/li&amp;gt; &amp;lt;li&amp;gt;&amp;lt;a href=&amp;#34;/camera/nuit/&amp;#34;&amp;gt;La Nuit&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt; &amp;lt;li&amp;gt;&amp;lt;a href=&amp;#34;/camera/historique/&amp;#34;&amp;gt;Historique&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt; &amp;lt;li&amp;gt;&amp;lt;a href=&amp;#34;/camera/parHeure/&amp;#34;&amp;gt;Par Heures&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt; &amp;lt;div class=&amp;#39;icon&amp;#39;&amp;gt; &amp;lt;li&amp;gt;&amp;lt;a href=&amp;#34;javascript:void(0);&amp;#34; onclick=&amp;#34;myFunction()&amp;#34;&amp;gt; &amp;lt;i class=&amp;#34;fa fa-bars&amp;#34;&amp;gt;&amp;lt;/i&amp;gt; &amp;lt;/a&amp;gt; &amp;lt;/li&amp;gt;&amp;lt;/div&amp;gt; &amp;lt;/ul&amp;gt; &amp;lt;/div &amp;gt; {% endblock %} &amp;lt;div class= &amp;#34;item_header&amp;#34;&amp;gt; {% block header %} {% endblock %} &amp;lt;/div&amp;gt; &amp;lt;div class=&amp;#34;item_main&amp;#34;&amp;gt; {% block content %} {% endblock %} &amp;lt;/div&amp;gt; &amp;lt;table class=&amp;#34;item_footer&amp;#34;&amp;gt; &amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;&amp;lt;img src=&amp;#34;{% static &amp;#39;camera/logo/logo.</description></item><item><title>pagination.css</title><link>https://djangocamera.netlify.app/script/pagination_css/</link><pubDate>Sun, 24 Jan 2021 11:46:27 +0100</pubDate><guid>https://djangocamera.netlify.app/script/pagination_css/</guid><description>/* pagination */ .pagination a { color: white; float: left; /* padding: 8px 16px; */ padding: 5px; font-family: var(--main-ft-family); text-decoration: none; margin-bottom: 8px; } .liActive { background-color: #aaa; } .spanPage { display: block; /* padding: 8px 16px; */ margin-left: 40px; margin-top: 40px; color: #8A104D; } .pagination a:hover:not(.active) { background-color: gray; color:#8A104D; } .pagination li { display: inline; } .pagination a:not(active) { background-color: #8A104D; } .pagination a:active { background-color: #aaa; }</description></item><item><title>header_footer.css</title><link>https://djangocamera.netlify.app/script/header_footer_css/</link><pubDate>Sun, 24 Jan 2021 11:46:14 +0100</pubDate><guid>https://djangocamera.netlify.app/script/header_footer_css/</guid><description>.header { background-color: #8A104D; color: var(--main-color); padding: 15px; text-align: center; font-size: 25px; } .footer { text-align: left; background: var(--main-bg-color); color:#8A104D; font-size: 12px; /* position: fixed; */ margin-top: 54px; margin-left: 100px; /* left:80px; */ bottom:0px; height:54px; width: 100%; }</description></item><item><title>disposition.css</title><link>https://djangocamera.netlify.app/script/disposition_css/</link><pubDate>Sun, 24 Jan 2021 11:45:53 +0100</pubDate><guid>https://djangocamera.netlify.app/script/disposition_css/</guid><description>:root { --main-bg-color: #f5efe0; --main-bg-color2: #4A4A4A; --main-bg-color3: #EAEAEA; --main-ft-family: &amp;#39;Pacifico&amp;#39;; --main-ft-size: 16px; --main-color: #cd2653; --main-color2: #a21e42; } * { box-sizing: border-box; } body { background-color: #ffdf9f9; } .row:after{ content: &amp;#34;&amp;#34;; display: table; clear: both; } /* pour avoir deux colonnes (notamment pour les photos doubles) */ .column2{ float: left; width: 50%; padding: 10px; } .grid-container { display: grid; grid-template-columns: 1fr; } .item_menu { grid-row: 1 ; grid-column: 1 / 2; background-color: #fdf9f9; } .</description></item><item><title>menu.css</title><link>https://djangocamera.netlify.app/script/menu_css/</link><pubDate>Sun, 24 Jan 2021 11:45:42 +0100</pubDate><guid>https://djangocamera.netlify.app/script/menu_css/</guid><description>.navbar ul { list-style-type: none; margin: 0; padding: 0; overflow: hidden; background-color: #8A104D; } .navbar li { float: left; } .navbar li a{ display: block; text-align: center; padding: 14px 16px; text-decoration: none; font-size:18px; font-weight: bold; color: #bebebe; background-color: #8A104D; } .icon { display:none; } .icon:hover{ color : pink; } .dropbtn { display: inline-block; color: green; text-align: left; padding: 14px 16px; text-decoration: none; } .navbar li a:hover, .dropdown:hover .dropbtn { background-color: #A6A6A6; color: white; } .</description></item><item><title>bouton.css</title><link>https://djangocamera.netlify.app/script/bouton_css/</link><pubDate>Sun, 24 Jan 2021 11:45:19 +0100</pubDate><guid>https://djangocamera.netlify.app/script/bouton_css/</guid><description>.button { display: table-cell; background-color: #8A104D; border: none; color: white; padding: 12px 12px; text-align: center; vertical-align: middle; text-decoration: none; display: inline-block; font-size: 15px; font-family: var(--main-ft-family); margin-bottom: 10px; margin-top: 10px; margin-left: 100px; cursor: pointer; width: 200px; height: 40px; } .buttonLigne { background-color: #8A104D; border: none; color: white; /* padding: 12px 12px; */ padding: 6px; text-align: center; vertical-align: middle; text-decoration: none; display: inline-block; font-size: 15px; font-family: var(--main-ft-family); margin-bottom: 10px; margin-top: 12px; margin-left: 8px; cursor: pointer; width: 200px; height: 35px; }</description></item><item><title>general.css</title><link>https://djangocamera.netlify.app/script/general_css/</link><pubDate>Sun, 24 Jan 2021 11:39:10 +0100</pubDate><guid>https://djangocamera.netlify.app/script/general_css/</guid><description>/* pour les fontes en fonction du type d&amp;#39;élément */ p { font-size: 18px; } pre { font-size: 18px; color: #8A104D; } h1 { font-size: 44px; color: #8A104D; } .monh1 { font-size: 25px; color: #8A104D; text-align: left; } .monh2 { font-size:16px; color: #8A104D; text-align: left; font-weight: bold; } /* traitement des images : centrer, ajuster... */ .centre-image { display: block; margin-left: auto; margin-right: auto; } .imgresponsive { width: 100%; max-width: 750px; height: auto; } .</description></item><item><title>Views.py (V1)</title><link>https://djangocamera.netlify.app/script/views_py_V1/</link><pubDate>Sun, 24 Jan 2021 10:41:11 +0100</pubDate><guid>https://djangocamera.netlify.app/script/views_py_V1/</guid><description>from django.shortcuts import render, redirect from django.http import HttpResponse from django.core.paginator import Paginator from django.template.response import TemplateResponse from datetime import datetime, timedelta from django.utils import timezone import pytz #pour régler les problèmes d&amp;#39;heure naïve et consciente from pytz import timezone from suntimes import SunTimes from configparser import ConfigParser from .models import Photo, Appareil config_file = &amp;#34;/etc/camera/configuration.ini&amp;#34; parser = ConfigParser() parser.read(config_file) longitude = float(parser.get(&amp;#34;locate&amp;#34;, &amp;#34;longitude&amp;#34;)) latitude = float(parser.get(&amp;#34;locate&amp;#34;, &amp;#34;latitude&amp;#34;)) altitude = float(parser.</description></item><item><title>urls.py (camera)</title><link>https://djangocamera.netlify.app/script/urls_py_camera/</link><pubDate>Sun, 24 Jan 2021 10:32:54 +0100</pubDate><guid>https://djangocamera.netlify.app/script/urls_py_camera/</guid><description>from django.urls import path from . import views urlpatterns = [ path(&amp;#39;&amp;#39;, views.accueil, name=&amp;#39;accueil&amp;#39;), path(&amp;#39;historique/&amp;#39;, views.historique, name=&amp;#39;historique&amp;#39;), path(&amp;#39;nuit/&amp;#39;, views.nuit, name=&amp;#39;nuit&amp;#39;), path(&amp;#39;parHeure/&amp;#39;, views.parheure, name=&amp;#39;parHeure&amp;#39;), path(&amp;#39;stream_py/&amp;#39;, views.stream_py, name=&amp;#34;stream_py&amp;#34;), path(&amp;#39;stream_1/&amp;#39;, views.stream_1, name=&amp;#34;stream_1&amp;#34;), path(&amp;#39;stream_2/&amp;#39;, views.stream_2, name=&amp;#34;stream_2&amp;#34;), path(&amp;#39;stream_AllCam/&amp;#39;, views.stream_AllCam, name=&amp;#34;stream_AllCam&amp;#34;) ]</description></item><item><title>urls.py (project)</title><link>https://djangocamera.netlify.app/script/urls_py_project/</link><pubDate>Sun, 24 Jan 2021 10:28:12 +0100</pubDate><guid>https://djangocamera.netlify.app/script/urls_py_project/</guid><description>from django.contrib import admin from django.urls import path, include urlpatterns = [ path(&amp;#39;camera/&amp;#39;, include(&amp;#39;camera.urls&amp;#39;)), path(&amp;#39;admin/&amp;#39;, admin.site.urls), ]</description></item><item><title>models.py</title><link>https://djangocamera.netlify.app/script/models_py/</link><pubDate>Sun, 24 Jan 2021 09:39:20 +0100</pubDate><guid>https://djangocamera.netlify.app/script/models_py/</guid><description>from django.db import models from datetime import datetime class Appareil(models.Model): name = models.CharField(max_length=30) def __str__(self): return self.name class Photo(models.Model): appareil = models.ForeignKey(Appareil, on_delete=models.CASCADE) date = models.DateTimeField() #date de la photo : annee jour mois heure minute name = models.CharField(max_length=30) #nom de la photo tel que dans les dossiers de stockage /stock/camera_xxx path = models.CharField(max_length=100) #nom du dossier où est stockée la photo : camera_xxx ; chemin depuis stock/ (pour être reconnu par Django dans les fichiers static) def name_photo_jpg(self): return &amp;#34;{}.</description></item><item><title>RunCamera_py.py</title><link>https://djangocamera.netlify.app/script/runCamera_py_py/</link><pubDate>Sat, 23 Jan 2021 23:20:18 +0100</pubDate><guid>https://djangocamera.netlify.app/script/runCamera_py_py/</guid><description>&amp;#34;&amp;#34;&amp;#34;Script python qui va lancer la caméra py et permettre à mjpg-streamer de générer les flux et les images statiques A indiquer dans le crontab en @reboot&amp;#34;&amp;#34;&amp;#34; import subprocess from time import sleep from configparser import ConfigParser parser_file = &amp;#34;/etc/camera/configuration.ini&amp;#34; parser = ConfigParser() parser.read(parser_file) cam_py_W = parser.get(&amp;#34;camera&amp;#34;, &amp;#34;cam_py_W&amp;#34;) cam_py_H = parser.get(&amp;#34;camera&amp;#34;, &amp;#34;cam_py_H&amp;#34;) cam_py_quality = parser.get(&amp;#34;camera&amp;#34;, &amp;#34;cam_py_quality&amp;#34;) cam_py_port = parser.get(&amp;#34;camera&amp;#34;, &amp;#34;cam_py_port&amp;#34;) cam_py_fps = parser.get(&amp;#34;camera&amp;#34;, &amp;#34;cam_py_fps&amp;#34;) mjpg_path = parser.get(&amp;#34;paths&amp;#34;, &amp;#34;mjpg&amp;#34;) delay_run=int(parser.get(&amp;#34;frequences&amp;#34;, &amp;#34;delay_run_Cam_py&amp;#34;)) sleep(delay_run) #attente avant de lancer les commandes command_py = &amp;#34;cd {} &amp;amp;&amp;amp; export LD_LIBRARY_PATH=.</description></item><item><title>RunCamera_2.py</title><link>https://djangocamera.netlify.app/script/runCamera_2_py/</link><pubDate>Sat, 23 Jan 2021 23:20:11 +0100</pubDate><guid>https://djangocamera.netlify.app/script/runCamera_2_py/</guid><description>&amp;#34;&amp;#34;&amp;#34;Script python qui va lancer la caméra 2 et permettre à mjpg-streamer de générer les flux et les images statiques A indiquer dans le crontab en @reboot&amp;#34;&amp;#34;&amp;#34; import subprocess from time import sleep from configparser import ConfigParser parser_file = &amp;#34;/etc/camera/configuration.ini&amp;#34; parser = ConfigParser() parser.read(parser_file) cam_2_name = parser.get(&amp;#34;camera&amp;#34;, &amp;#34;cam_2_name&amp;#34;) cam_2_port = parser.get(&amp;#34;camera&amp;#34;, &amp;#34;cam_2_port&amp;#34;) cam_2_resol = parser.get(&amp;#34;camera&amp;#34;, &amp;#34;cam_2_resol&amp;#34;) mjpg_path = parser.get(&amp;#34;paths&amp;#34;, &amp;#34;mjpg&amp;#34;) delay_run=int(parser.get(&amp;#34;frequences&amp;#34;, &amp;#34;delay_run_Cam_2&amp;#34;)) sleep(delay_run) #attente avant de lancer les commandes command_2 = &amp;#34;cd {} &amp;amp;&amp;amp; export LD_LIBRARY_PATH=.</description></item><item><title>RunCamera_1.py</title><link>https://djangocamera.netlify.app/script/runCamera_1_py/</link><pubDate>Sat, 23 Jan 2021 23:09:33 +0100</pubDate><guid>https://djangocamera.netlify.app/script/runCamera_1_py/</guid><description>&amp;#34;&amp;#34;&amp;#34;Script python qui va lancer la caméra 1 et permettre à mjpg-streamer de générer les flux et les images statiques A indiquer dans le crontab en @reboot&amp;#34;&amp;#34;&amp;#34; import subprocess from time import sleep from configparser import ConfigParser parser_file = &amp;#34;/etc/camera/configuration.ini&amp;#34; parser = ConfigParser() parser.read(parser_file) cam_1_name = parser.get(&amp;#34;camera&amp;#34;, &amp;#34;cam_1_name&amp;#34;) cam_1_port = parser.get(&amp;#34;camera&amp;#34;, &amp;#34;cam_1_port&amp;#34;) cam_1_resol = parser.get(&amp;#34;camera&amp;#34;, &amp;#34;cam_1_resol&amp;#34;) cam_1_fps = parser.get(&amp;#34;camera&amp;#34;, &amp;#34;cam_1_fps&amp;#34;) mjpg_path = parser.get(&amp;#34;paths&amp;#34;, &amp;#34;mjpg&amp;#34;) delay_run=int(parser.get(&amp;#34;frequences&amp;#34;, &amp;#34;delay_run_Cam_1&amp;#34;)) sleep(delay_run) #attente avant de lancer les commandes #command_cp = [&amp;#34;cp&amp;#34;, f&amp;#39;{path_db}{baseName}&amp;#39;, f&amp;#39;{path_db}/{baseBackUp}&amp;#39;] #command_1 = [&amp;#34;cd&amp;#34;, f&amp;#39;{mjpg_path}&amp;#39;, &amp;#34;&amp;amp;&amp;amp;&amp;#34;, &amp;#34;export&amp;#34;, f&amp;#39;LD_LIBRARY_PATH=.</description></item><item><title>Configuration.ini</title><link>https://djangocamera.netlify.app/script/configuration_ini/</link><pubDate>Sat, 23 Jan 2021 20:19:31 +0100</pubDate><guid>https://djangocamera.netlify.app/script/configuration_ini/</guid><description>;Fichier ini. A placer dans /etc/camera ;ini file, to set in /etc/camera [locate] ;par défaut : le centre de la France selon l'IGN, Corse non comprise ;remplacer les valeurs par celles de votre localisation ;default : centre of France according IGN, Corse not included ;replace the values with those of your location longitude=2.430278 latitude=46.539722 altitude=326 zone=Europe/Paris [hosts] local=127.0.0.1 ;ip locale Raspberry - port du serveur Django ;MODIFIER L'IP LOCALE DE LA RASPBERRY (raspIP) EN FONCTION DE VOTRE VALEUR ;local ip Raspberry - Django server port ;CHANGE THE LOCAL IP OF THE RASPBERRY (raspIP) ACCORDING TO YOUR VALUE raspIP=&amp;lt;local IP Raspberry&amp;gt; ;port du serveur Django ;Django server port django_port=8000 ;proxy pour accès extérieur ;proxy for outdoor internet access proxy_1=Rp1 proxy_2=Rp2 proxy_py=Rpi [mails] ;mail du site (celui avec lequel on crée un compte chez le fournisseur DynDNS) ;ce mail peut être le même que le mail personnel ; mais il vaut mieux en créer un ;VOUS DEVEZ RENSEIGNER LES DONNNEES DES DEUX MAILS AVEC VOS VALEURS ;site email (the one with which we create an account with the DynDNS provider) ;this email can be the same as the personal email; but it is better to create one ;YOU MUST FILL IN THE DATA OF BOTH EMAILS WITH YOUR VALUES mail_site=&amp;lt;user1&amp;gt;@&amp;lt;provider1&amp;gt; ;mot de passe du mail_site ;password mail_site mail_site_mdp=&amp;lt;password&amp;gt; ;mail personnel (celui auquel vont être envoyées diverses alertes et informations) ;personal email (the one to which various alerts and information will be sent) mail_perso=&amp;lt;user2&amp;gt;@&amp;lt;provider2&amp;gt; ;port du smtp.</description></item></channel></rss>