🚧 Une installation sans fioriture, avec tablette murale (Fully kiosk)

C’est un tableau secondaire, nous n’avons pas passĂ© le consuel. Le tableau Primaire avait Ă©tĂ© acceptĂ© Ă  la construction. Nous n’avons pas encore fait les dĂ©marches pour le secondaire, nous verrons avec l’assureur si un certificat de conformitĂ© Ă©lectrique est suffisant.

Bonjour fgtoul,
te connaissant, aucun doute que le tableau secondaire passe le Consuel sans problĂšme, si il devait y en avoir un.

Bonne journée

2 « J'aime »

Bonjour Grocrabe,
il pourrait peut-ĂȘtre trouver Ă  redire sur l’entrĂ©e des gaines dans le tableau, mais comme cette partie de GTL ne peut pas ĂȘtre ouverte sans outil (placo vissĂ©) , il ne devrait pas y avoir de pb. Les cĂąbles et gaines ne peuvent pas subir de frictions, ils sont bloquĂ©s dans la planche perforĂ©e.

Chez moi les conducteurs nus sont simplement dans la GTL goulotte alors que le couvercle n’est que clipsĂ© (dĂ©montage sans outil)

Ok merci. Je pose toutes ses questions car je suis dans un projet de construction et j’hĂ©sites tjrs entre faire une GTL « fait maison Â» ou une prendre une goulotte. Le consuel me fait peur :sweat_smile:

Bonjour widc4rd,

je vous rassure, j’ai chez moi une GTL maison en mĂ©laminĂ© blanc ouvrable sans outil et c’est passĂ©.

Voici ce que dit Promotelec : La GTL peut ĂȘtre rĂ©alisĂ©e dans les matĂ©riaux autorisĂ©s pour les locaux d’habitation (en bois, en PVC, maçonnĂ©e
), l’épaisseur des parois de la GTL doit ĂȘtre suffisante pour permettre la fixation de tout le matĂ©riel. Les parois internes doivent ĂȘtre planes, sans dĂ©crochement, sans obstacles et sans aspĂ©ritĂ© importante.

Bonne journée

1 « J'aime »

pour les risques de feu électriques et aussi pour sa dureté accrue, en fait le proprio a utilisé des plaques de gypse durci, classé M1. Les 2 tableaux pÚsent trÚs lourd, sans oublier la baie réseau suspendue elle aussi, avec son grand porte-à-faux.

1 « J'aime »

@fgtoul

Pour le mode kiosque il y aussi pour le NRX800 (ou sur ton pi avec jeedom :wink: )

je laisse ça aux geek qui ont envie de mettre les mains dans le cambouis. :slight_smile:

Bonjour,

Un immense merci pour ce code qui m’a enfin offert une vrai solution de visualisation des camĂ©ras sur le liveview de l’Alarme.

J’ai un peu trifouillĂ© pour coller au besoin et vous propose une version “amĂ©liorĂ©e” du code :

  • Gestion de la taille des bouttons en width : X% pour ĂȘtre adaptatif PC/smartphone
  • Ajout d’un paramĂštre “channel” pour ceux qui comme moi ont une camĂ©ra Ă  2 canaux
  • Ajout d’une fenĂȘtre modale et des fonctions overlay show/hide pour garder le principe de la miniature qui s’agrandit mais en supprimant le problĂšme de rafraichissement (on conserve un rafraichissement toute les 2s mĂȘme en image plein Ă©cran)

N’hĂ©sitez pas Ă  me faire vos retours.

<style>
  .buttons { margin: auto; }
  button {
    background: #444;
    color: #fff;
    border: none;
    width: 23%;
    margin: auto;
    font-size: auto;
    border-radius: auto;
  }
  button:hover { background: #666; }

  /* Overlay plein écran pour image agrandie */
  .overlay {
     position: fixed !important;
     z-index: 2147483647 !important; /* max int, pour ĂȘtre sĂ»r */
     top: 0; left: 0;
     width: 100vw; height: 100vh;
    background: rgba(0,0,0,0.85);
     display: none;
     justify-content: center;
     align-items: center;
  }

  .overlay img {
    max-width: 95%;
    max-height: 95%;
    border-radius: 10px;
    box-shadow: 0 0 20px #000;
  }
</style>

<div class="buttons">
  <button onclick="loadCam('IP','PORT','0','USER','PASSWORD')">AtelierG</button>
  <button onclick="loadCam('IP','PORT','1','USER','PASSWORD')">AtelierD</button>
  <button onclick="loadCam('IP','PORT','0','USER','PASSWORD')">Nord</button>
  <button onclick="loadCam('IP','PORT','0','USER','PASSWORD')">Sud</button>
</div>

<img src="" id="snapImg" width="100%" alt="snapshot en cours" onclick="showOverlay()">

<!-- FenĂȘtre modale -->
<div class="overlay" id="overlay" onclick="hideOverlay()">
  <img src="" id="overlayImg" alt="snapshot HD">
</div>

<script>
  let baseLowRes = "";
  let baseHighRes = "";
  let overlayInterval = null;

  function loadCam(camip, camport, channel, user, pwd) {
    baseLowRes = `http://${camip}:${camport}/api.cgi?cmd=Snap&channel=${channel}&user=${user}&password=${pwd}&width=640&height=480`;
    baseHighRes = `http://${camip}:${camport}/api.cgi?cmd=Snap&channel=${channel}&user=${user}&password=${pwd}&width=2560&height=1920`;
    refreshImg();
  }

  function refreshImg() {
    const img = document.getElementById("snapImg");
    if (baseLowRes) img.src = baseLowRes + `&t=${Date.now()}`;
  }

  function showOverlay() {
    const overlay = document.getElementById("overlay");
    const overlayImg = document.getElementById("overlayImg");
    overlay.style.display = "flex";
    overlayImg.src = baseHighRes + `&t=${Date.now()}`;
    overlayInterval = setInterval(() => {
      overlayImg.src = baseHighRes + `&t=${Date.now()}`;
    }, 2000);
  }

  function hideOverlay() {
    document.getElementById("overlay").style.display = "none";
    clearInterval(overlayInterval);
  }

  setInterval(refreshImg, 2000);
</script>
1 « J'aime »

Afin de faciliter les connexions sur le NVR, conception d’un boitier avec modules Keystone qui permet de dĂ©porter la connectique principale situĂ©e sur la face arriĂšre.

  • HDMI pour console,

  • Alim USB C pour alim Ă©cran,

  • USB 3.0 pour souris,

  • Bananes 2mm pour bornier entrĂ©es alarme (pour tester un capteur par exemple),

  • Bananes 2mm pour bornier sortie alarme (pour tester un dispositif IOT),

  • RCA Audio Out,

  • RCA Audio In,

  • POE pour 1 camĂ©ra en cas de test.

Les modules avec fiches bananes ont Ă©tĂ© rĂ©alisĂ©es avec un obturateur que j’ai percĂ© pour y coller 2 prises 2mm.

Ce boitier servira tant pour les tests que pour le branchement d’un Ă©cran console de temps en temps en cas d’intervention sur la configuration du NVR.

2 « J'aime »

Bonjour Mistoukwak,

ton widget fonctionne trĂšs bien.

J’avais effectivement Ă©crit un widget avec channel en paramĂštre, mais oubliĂ© de partager.
Lorsque le Liveview est consultĂ© hors rĂ©seau local, il faut que les IP soient publiques (sauf VPN). Au lieu d’exposer toutes les camĂ©ras et ouvrir un port spĂ©cifique pour chacune d’elles, il est possible de crĂ©er une redirection vers le NVR. Dans ce cas le paramĂštre channel est alors utile pour sĂ©lectionner la camĂ©ra.

Merci pour ce partage.

Bonne journée

1 « J'aime »

Voici un exemple de code complet pour un un widget caméra sur DASHBOARD
Le positionnement n’est pas le mĂȘme que sur Liveview, l’overlay modal est alors créé dynamiquement par le script pour contourner le problĂšme de rattachement Ă  Body.

<style>
  #snapImg { 
    max-width: 100%; 
    border: 1px solid #ddd; 
    margin: 10px; 
    background: #000;
  }

  .overlay {
    position: fixed ;
    z-index: 2147483647 ;
    top: 0; left: 0;
    width: 100vw; height: 100vh;
    background: rgba(0,0,0,0.85);
    display: flex;
    justify-content: center;
    align-items: center;
  }

  .overlay img {
    max-width: 95%;
    max-height: 95%;
    border-radius: 10px;
    box-shadow: 0 0 20px #000;
  }
</style>

<img src="" id="snapImg" width="100%" alt="snapshot en cours" onclick="showOverlay()">

<script>
  // Configuration
  var camIp = 'IP_CAM';
  var camPort='IP_PORT'
  var myAdmin = 'admin';
  var myPass = 'password';
  var refreshInterval = 2800;
  var snapImg;
  var url;
  let overlayInterval = null;

  function createOverlay() {
    if (document.getElementById("overlay")) return;

    const overlay = document.createElement("div");
    overlay.className = "overlay";
    overlay.id = "overlay";
    overlay.onclick = hideOverlay;

    const img = document.createElement("img");
    img.id = "overlayImg";
    img.alt = "snapshot HD";

    overlay.appendChild(img);
    document.body.appendChild(overlay);
  }

  function showOverlay() {
    createOverlay();

    url = `http://${camIp}:${camPort}/cgi-bin/api.cgi?cmd=Snap&channel=1&${getCacheBuster()}&user=${myAdmin}&password=${myPass}`;
    const overlay = document.getElementById("overlay");
    const overlayImg = document.getElementById("overlayImg");

    overlay.style.display = "flex";
    overlayImg.src = url + '&width=1920&height=1080';

    overlayInterval = setInterval(() => {
      overlayImg.src = url + '&width=1920&height=1080';
    }, refreshInterval);
  }

  function hideOverlay() {
    const overlay = document.getElementById("overlay");
    if (overlay) overlay.style.display = "none";
    clearInterval(overlayInterval);
  }

  function getCacheBuster() {
    return 'rs=' + Date.now().toString(36) + Math.random().toString(36).substr(2, 8);
  }

  function fetchNewImage() {
    snapImg = document.getElementById('snapImg');
    url = `http://${camIp}:${camPort}/cgi-bin/api.cgi?cmd=Snap&channel=1&${getCacheBuster()}&user=${myAdmin}&password=${myPass}`;

    fetch(url, { mode: 'no-cors' })
      .then(() => {
        snapImg.src = url + '&width=640&height=480';
      })
      .catch(e => console.log('Erreur de chargement:', e));
  }

  setInterval(fetchNewImage, refreshInterval);
  setTimeout(fetchNewImage, 500);
</script>

Bonjour Ă  tous,
j’ai dĂ©jĂ  prĂ©sentĂ© plusieurs mĂ©thodes pour crĂ©er un simulateur de prĂ©sence sur IPX800.
Voici la méthode optée pour cette installation:

Le simulateur dĂ©marre automatiquement Ă  partir du lever du soleil (variable [Weather]Day/Night). Il repose sur deux Faders cycliques, l’un oscillant entre 0 et 3000 sur 27 secondes, l’autre entre 0 et 3500 sur 31 secondes. Ces deux rampes tournent en continu. Un objet Fonction calcule la somme de leur valeur. Cette somme est dynamique et imprĂ©visible Ă  chaque instant.

Un clignotant dĂ©synchronisĂ©, avec une pĂ©riode totale de 57 secondes (TA = 28 s, TB = 29 s), sert de dĂ©clencheur. À chaque front montant du clignotant, une rĂšgle est activĂ©e. Elle injecte le rĂ©sultat de la fonction Somme dans l’entrĂ©e analogique TA d’un objet impulsion selon la formule :
Délai = FaderA + FaderB + 7200 secondes
7200s sont ajoutées pour faire la grùce mat :rofl:. Cette valeur est réglable sur dashboard avec un objet slider.

La variable TA est affectĂ©e en fonction d’un compteur incrĂ©mentĂ© Ă  chaque front montant.

exemple simplifié de rÚgles pour 10 actions:
clignotantETIO_Simulateuroncpt.inc
CPT.value==valeur 1SetVAL[Fct somme faders]Result[PulseVR1]TAON[PulseVR1]start
CPT.value==valeur 2SetVAL[Fct somme faders]Result[PulseVR2]TAON[PulseVR2]start

autres actions
CPT.value==valeur 11ONCPT.Reset

Ce délai est utilisé pour démarrer une action spécifique (VR ou éclairage). Chaque action possÚde son propre objet impulsion. Si le systÚme pilote 5 volets roulants et 5 éclairages, alors 10 objets impulsion sont créés, chacun avec son propre déclenchement différé.
par exemple :
pulse 1 pour VR1
pulse2 pour VR2
pulse3 pour eclairage1
pulse4 pour eclairage2

Pour les VR, l’impulsion est remise Ă  OFF par le moteur de scĂšnarios dĂšs que l’action est exĂ©cutĂ©e.
Pour l’éclairage, la durĂ©e de l’impulsion est calculĂ©e avec TB=somme FaderA+FaderB, elle repasse Off automatiquement.

Ce mĂ©canisme garantit que les actions ne se produisent jamais dans le mĂȘme ordre ni Ă  la mĂȘme heure. Le chaos est contrĂŽlĂ© par la dĂ©synchronisation des cycles, assurant une simulation rĂ©aliste et non rĂ©pĂ©titive de la prĂ©sence..

Exemple : imaginons que les 2 faders ont Ă©tĂ© dĂ©marrĂ©s aujourd’hui Ă  minuit. Voici un tableau prĂ©sentant 2 jours de relevĂ©s sur front montant du clignotant, avec l’heure de relevĂ© et les valeurs de Faders Ă  ce moment. On observe que les actions se produiront Ă  horaires diffĂ©rents et jamais dans le mĂȘme ordre. La sĂ©quence d’évĂ©nements demeure alĂ©atoire et non reproductible sur plusieurs centaines de jours, autant dire que c’est invisible Ă  l’oeil mĂȘme pour un observateur exercĂ©.

Relevé Date Heure front montant Fader A Fader B Délai (s)
A+B+7200
Heure d’action
1 26/08/2025 06:00:00 1200 2100 10500 08:55:00
2 26/08/2025 06:00:57 3000 3500 13700 09:49:17
3 26/08/2025 06:01:54 1800 500 9500 08:37:34
4 26/08/2025 06:02:51 2700 3200 12900 09:38:51
5 26/08/2025 06:03:48 600 1500 9300 08:59:48
6 26/08/2025 06:04:45 2400 2900 12500 09:52:05
7 27/08/2025 06:00:00 3100 800 11100 09:05:00
8 27/08/2025 06:00:57 1500 2700 11400 09:10:57
9 27/08/2025 06:01:54 900 3300 11400 09:15:54
10 27/08/2025 06:02:51 2000 2500 11700 09:21:51
11 27/08/2025 06:03:48 2800 1000 11000 09:16:48
12 27/08/2025 06:04:45 3500 3500 14200 10:01:05

Les diffĂ©rentes actions sont conditionnĂ©es par des IO modifiables sur le dashboard. Cela permet de retoucher Ă  volontĂ© la configuration du simulateur. Il est possible d’exclure ou ajouter un volet roulant, un point lumineux, ..
Un widget pour chaque piĂšce permet de conditionner les actions sur VR ou Ă©clairage. Un toggle « VR 100% Â» permet d’autoriser ou interdire l’ouverture complĂšte en journĂ©e ( par exemple, un VR au RDC ne s’ouvrira jamais complĂštement mais suffisamment pour laisser passer la lumiĂšre intĂ©rieure Ă  l’aube ou au crĂ©puscule de maniĂšre Ă  ĂȘtre observable de l’extĂ©rieur). Cette valeur d’ouverture partielle est fixĂ©e par une analogique liĂ©e au widget Dimmer.

Le simulateur est conditionnĂ© par l’armement de l’alarme.

NB : les pĂ©riodes 27s, 31s et 57s sont des nombres premiers, non diviseurs de 60 ou 1440, elles ont Ă©tĂ© dĂ©terminĂ©es pour engendrer un chaos complexe afin de simuler des prĂ©sences variĂ©es, non linĂ©aires, et jamais identiques, en exploitant les propriĂ©tĂ©s mathĂ©matiques de cycles non multiples. Les amplitudes 3000 et 3500 ont Ă©tĂ© dĂ©terminĂ©es pour permettre d’obtenir une somme variable comprise entre 0 et 6500s soit prĂšs de 2 heures.
Les actions se dĂ©roulent alĂ©atoirement pendant les 2 heures qui suivent l’horaire dĂ©terminĂ© (lever + 7200), ou pendant 2 heures aprĂšs le coucher de soleil (dĂ©calĂ© de 7200s Ă©galement).
Bonne journée

2 « J'aime »

Bonjour fgtoul,

encore une belle implémentation, merci pour le partage.

Une remarque sur le fait de lier le simulateur au lever et coucher de soleil, il faut bien choisir (et/ou conditionner) l’action faite.
Un exemple : en hiver, coucher de soleil à 18h30, on pourrait se retrouver avec un VR qui se ferme un peu tÎt par rapport à une heure logique de coucher du propriétaire.
Il peut ĂȘtre vraiment utile de jouer sur la pĂ©riode de 7200s, soit par le DashBoard, soit grĂące Ă  un calendrier.

Bonne journée

Hello
l’offset 7200 sert Ă©galement aux dĂ©calages saisonniers. Il est rĂ©glable sur dashboard de 0 Ă  14400.
Il est clair qu’il faut coller au plus prùs des habitudes.

dans ce cas j’ai prĂ©vu :

  • vr entrouverts (ou ouverts) le matin (selon consigne programmĂ©e), Ă©clairages alĂ©atoires.

  • ouverture complĂšte des vr autorisĂ©s progressivement dans la matinĂ©e

  • fermeture partielle des vr le soir

  • Ă©clairages alĂ©atoires jusqu’à fermeture complĂšte.

  • la nuit, quelques rares Ă©clairages alĂ©atoires dans les piĂšces sans VR autorisĂ©es (sdb, wc, cellier).
    Ces événements nocturnes sont enclenchés par le croisement du clignotant de 57s avec un autre de période 143s (3 à 4 croisements pendant la nuit). Les valeurs TA et TB sont alors calculées sur les Faders A et B en divisant leur somme par 3 (ce qui génÚre des durées ou retards entre 0 et 36 minutes)

bonne journée

Bonjour fgtoul‚

Est-il possible de bancher plusieurs détecteurs sur 1 meme entrée digitale ?

Bonjour,

  1. Entrées opto-isolées
    il est effectivement possible de connecter plusieurs capteurs en parallÚle sur une entrée opto-isolée, mais il y a des conditions.
    • Les capteurs doivent avoir une sortie Ă  contact sec. S’ils ont une sortie active et qu’ils gĂ©nĂšrent eux-mĂȘmes la tension de sortie, il faut vĂ©rifier s’ils peuvent ĂȘtre mis en parallĂšle.
    • Ils doivent ĂȘtre alimentĂ©s par la mĂȘme alim, ou bien par 2 alim similaires avec gnd en commun.
  2. Entrées digitales
    Pour les entrées digitales, les capteurs doivent impérativement avoir des sorties à contact sec (pas de tension). Aucune contrainte pour les installer en parallÚle.

NB : si vous mettez vos capteurs en //, il ne sera plus possible de savoir lequel est en détection.
Bonne journée

Bonjour wildcard,

attention pour les entrĂ©s opto, l’utilisation de 2 alims demande quelques prĂ©cautions. La solution avec une seule alimentation est Ă  privilĂ©gier.

Bonne journée

Bonjour et merci pour votre retour,

Effectivement ils ont une sortie en 24v. je vais relire le manuel pour trouver l’info. Je pense que c’est sur ce point que ma config pourrait ne pas etre possible.

Oui on est d’accord. Pour moi l’important c’est de signaler l’effraction.

Toutes les dĂ©tecteurs sont branchĂ©s sur la mĂȘme alimentation