{"id":7,"date":"2025-11-24T07:15:29","date_gmt":"2025-11-24T07:15:29","guid":{"rendered":"https:\/\/sacred-boxes.com\/?page_id=7"},"modified":"2026-05-07T12:48:45","modified_gmt":"2026-05-07T12:48:45","slug":"set-time","status":"publish","type":"page","link":"https:\/\/sacred-boxes.com\/en\/adhan-boxes\/set-time\/","title":{"rendered":"Adhan Boxes &#8211; R\u00e9glage de l&rsquo;heure"},"content":{"rendered":"<div class=\"wp-block-columns alignfull is-layout-flex wp-container-core-columns-is-layout-930d3512 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:40%\">\n<div class=\"wp-block-cover is-light\" style=\"min-height:600px;aspect-ratio:unset;\"><span aria-hidden=\"true\" class=\"wp-block-cover__background has-background-dim-100 has-background-dim\" style=\"background-color:#f6f6f6\"><\/span><div class=\"wp-block-cover__inner-container is-layout-flow wp-block-cover-is-layout-flow\">\n<figure class=\"wp-block-image alignleft size-medium\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"200\" src=\"https:\/\/sacred-boxes.com\/wp-content\/uploads\/2025\/12\/IMG_8221-300x200.webp\" alt=\"\" class=\"wp-image-100\" srcset=\"https:\/\/sacred-boxes.com\/wp-content\/uploads\/2025\/12\/IMG_8221-300x200.webp 300w, https:\/\/sacred-boxes.com\/wp-content\/uploads\/2025\/12\/IMG_8221-768x512.webp 768w, https:\/\/sacred-boxes.com\/wp-content\/uploads\/2025\/12\/IMG_8221-980x654.webp 980w, https:\/\/sacred-boxes.com\/wp-content\/uploads\/2025\/12\/IMG_8221-480x320.webp 480w, https:\/\/sacred-boxes.com\/wp-content\/uploads\/2025\/12\/IMG_8221.webp 1000w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/figure>\n<\/div><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow\" style=\"padding-top:1em;padding-right:1em;padding-bottom:1em;padding-left:1em\">\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-930d3512 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:70%\">\n<p class=\"wp-block-paragraph\" style=\"line-height:1.6\">Il peut arriver que l&rsquo;heure de votre Adhan Box se d\u00e9synchronise, que ce cela soit d\u00fb au passage \u00e0 l&rsquo;heure d&rsquo;\u00e9t\u00e9, ou \u00e0 une alimentation instable.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si cela se produit, <strong>vous pouvez r\u00e9gler l&rsquo;heure en suivant les \u00e9tapes ci-dessous.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"line-height:1.6\">1. Ouvrez cette page uniquement dans le navigateur Chrome (cela ne fonctionne pas avec Firefox ou Safari).<br>2. Connectez votre Adhan Box \u00e0 votre ordinateur via une entr\u00e9e USB.<br>3. Cliquez sur SYNC <br>4. Une fen\u00eatre s&rsquo;ouvre et vous devez s\u00e9lectionner le port auquel votre Adhan Box est connect\u00e9e (il contient g\u00e9n\u00e9ralement les termes \u00ab\u00a0USB-Serial\u00a0\u00bb)<br>5. C&rsquo;est tout ! Le programme se connecte \u00e0 votre Adhan Box et lui transmet l&rsquo;heure de votre ordinateur.<\/p>\n\n\n\n<div style=\"font-family:Arial; text-align:left; max-width:600px;\">\n<h2>Synchronisation Adhan Box<\/h2>\n\n<button id=\"syncBtn\" style=\"padding:10px 20px; font-size:16px; border:none; border-radius:5px; background:#777; color:white; cursor:pointer;\">\n  SYNC\n<\/button>\n\n<div id=\"status\" style=\"margin-top:10px; font-weight:bold;\">En attente&#8230;<\/div>\n\n<div id=\"log\" style=\"margin-top:10px; white-space:pre-line; font-size:13px;\"><\/div>\n<\/div>\n\n<script>\nlet port;\nlet writer;\nlet reader;\nlet isReading = false;\n\nconst btn = document.getElementById(\"syncBtn\");\nconst statusDiv = document.getElementById(\"status\");\nconst logDiv = document.getElementById(\"log\");\n\nconst log = (msg) => {\n  logDiv.innerText += msg + \"\\n\";\n  logDiv.scrollTop = logDiv.scrollHeight;\n};\n\nfunction setStatus(text) {\n  statusDiv.innerText = text;\n}\n\nfunction setButton(state) {\n  btn.style.backgroundColor = \"#777\";\n  if(state === \"loading\") btn.style.backgroundColor = \"#2196F3\";\n  if(state === \"success\") btn.style.backgroundColor = \"#4CAF50\";\n  if(state === \"error\") btn.style.backgroundColor = \"#f44336\";\n}\n\nfunction getCurrentDateTime() {\n  const now = new Date();\n  const pad = n => n.toString().padStart(2,'0');\n  return now.getFullYear() + \"-\" +\n         pad(now.getMonth()+1) + \"-\" +\n         pad(now.getDate()) + \" \" +\n         pad(now.getHours()) + \":\" +\n         pad(now.getMinutes()) + \":\" +\n         pad(now.getSeconds());\n}\n\n\/\/ CLICK SYNC\nbtn.addEventListener(\"click\", async () => {\n  try {\n    btn.disabled = true;\n    setButton(\"loading\");\n    setStatus(\"Connexion \u00e0 l'Adhan Box...\");\n    logDiv.innerText = \"\";\n\n    port = await navigator.serial.requestPort();\n    await port.open({ baudRate: 9600 });\n\n    const textDecoder = new TextDecoderStream();\n    port.readable.pipeTo(textDecoder.writable);\n    reader = textDecoder.readable.getReader();\n\n    const textEncoder = new TextEncoderStream();\n    textEncoder.readable.pipeTo(port.writable);\n    writer = textEncoder.writable.getWriter();\n\n    if(!isReading) {\n      isReading = true;\n      readSerial();\n    }\n\n  } catch(err) {\n    log(\"\u274c Erreur : \" + err);\n    setStatus(\"Erreur de connexion\");\n    setButton(\"error\");\n    btn.disabled = false;\n  }\n});\n\n\/\/ Lecture s\u00e9rie simplifi\u00e9e\nasync function readSerial() {\n  let buffer = \"\";\n\n  while(true) {\n    const {value, done} = await reader.read();\n    if(done) break;\n\n    buffer += value;\n    let lines = buffer.split(\"\\n\");\n    buffer = lines.pop();\n\n    for(let line of lines) {\n      line = line.trim();\n      if(!line) continue;\n\n      \/\/ On remplace \"Arduino\" par \"Adhan Box\"\n      line = line.replace(\/^Arduino:\/, \"Adhan Box:\");\n\n      \/\/ Afficher seulement les lignes importantes\n      if(line.includes(\"Welcome\") ||\n         line.includes(\"Set to time\") ||\n         line.includes(\"Now in s\") ||\n         line.includes(\"Date and time\") ||\n         line.match(\/^\\d{4}:\\d{1,2}:\\d{1,2}:\\d{1,2}:\\d{1,2}$\/) ||\n         line.includes(\"Setup RTC ok\") ||\n         line.includes(\"Attention\") ||\n         line.includes(\"READY\") ||\n         line.includes(\"Re\u00e7u\") ||\n         line.includes(\"RTC_OK\")) {\n\n        \/\/ Format de l'heure\n        if(line.match(\/^\\d{4}:\\d{1,2}:\\d{1,2}:\\d{1,2}:\\d{1,2}$\/)) {\n          line = \"Heure actuelle : \" + line.replace(\/:\/g,\" \/ \");\n        }\n\n        log(line);\n      }\n\n      \/\/ READY \u2192 auto sync\n      if(line.includes(\"READY\")) {\n        setStatus(\"Synchronisation en cours...\");\n        log(\"Synchronisation automatique...\");\n\n        setTimeout(async () => {\n          try {\n            const datetime = getCurrentDateTime();\n            await writer.write(datetime + \"\\n\");\n            log(\"Envoy\u00e9: \" + datetime);\n          } catch(err) {\n            log(\"\u274c Erreur envoi: \" + err);\n            setButton(\"error\");\n            setStatus(\"Erreur d'envoi\");\n            btn.disabled = false;\n          }\n        }, 1000);\n      }\n\n      \/\/ Confirmation OK\n      if(line.includes(\"RTC_OK\")) {\n        log(\"Adhan Box: RTC_OK\");\n        log(\"Heure synchronis\u00e9e !\");\n        setStatus(\"Synchronisation r\u00e9ussie !\");\n        setButton(\"success\");\n        btn.disabled = false;\n      }\n    }\n  }\n}\n<\/script>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>","protected":false},"excerpt":{"rendered":"<p>Il peut arriver que l&rsquo;heure de votre Adhan Box se d\u00e9synchronise, que ce cela soit d\u00fb au passage \u00e0 l&rsquo;heure d&rsquo;\u00e9t\u00e9, ou \u00e0 une alimentation instable. Si cela se produit, vous pouvez r\u00e9gler l&rsquo;heure en suivant les \u00e9tapes ci-dessous. 1. Ouvrez cette page uniquement dans le navigateur Chrome (cela ne fonctionne pas avec Firefox ou [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":141,"parent":130,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"sacred-pages","meta":{"_eb_attr":"","_themeisle_gutenberg_block_has_review":false,"footnotes":""},"class_list":["post-7","page","type-page","status-publish","has-post-thumbnail","hentry"],"featured_media_urls":{"thumbnail":["https:\/\/sacred-boxes.com\/wp-content\/uploads\/2025\/12\/cropped-IMG_8221-150x150.webp",150,150,true],"medium":["https:\/\/sacred-boxes.com\/wp-content\/uploads\/2025\/12\/cropped-IMG_8221-300x180.webp",300,180,true],"medium_large":["https:\/\/sacred-boxes.com\/wp-content\/uploads\/2025\/12\/cropped-IMG_8221.webp",768,461,false],"large":["https:\/\/sacred-boxes.com\/wp-content\/uploads\/2025\/12\/cropped-IMG_8221-1024x614.webp",1024,614,true],"1536x1536":["https:\/\/sacred-boxes.com\/wp-content\/uploads\/2025\/12\/cropped-IMG_8221-1536x922.webp",1536,922,true],"2048x2048":["https:\/\/sacred-boxes.com\/wp-content\/uploads\/2025\/12\/cropped-IMG_8221.webp",2000,1200,false],"trp-custom-language-flag":["https:\/\/sacred-boxes.com\/wp-content\/uploads\/2025\/12\/cropped-IMG_8221.webp",18,12,false],"portfolio_item-thumbnail":["https:\/\/sacred-boxes.com\/wp-content\/uploads\/2025\/12\/cropped-IMG_8221-600x400.webp",600,400,true],"portfolio_item-thumbnail@2x":["https:\/\/sacred-boxes.com\/wp-content\/uploads\/2025\/12\/cropped-IMG_8221-1200x800.webp",1200,800,true],"portfolio_item-masonry":["https:\/\/sacred-boxes.com\/wp-content\/uploads\/2025\/12\/cropped-IMG_8221-600x360.webp",600,360,true],"portfolio_item-masonry@2x":["https:\/\/sacred-boxes.com\/wp-content\/uploads\/2025\/12\/cropped-IMG_8221-1200x720.webp",1200,720,true],"portfolio_item-thumbnail_cinema":["https:\/\/sacred-boxes.com\/wp-content\/uploads\/2025\/12\/cropped-IMG_8221-800x335.webp",800,335,true],"portfolio_item-thumbnail_portrait":["https:\/\/sacred-boxes.com\/wp-content\/uploads\/2025\/12\/cropped-IMG_8221-600x900.webp",600,900,true],"portfolio_item-thumbnail_portrait@2x":["https:\/\/sacred-boxes.com\/wp-content\/uploads\/2025\/12\/cropped-IMG_8221-1200x1200.webp",1200,1200,true],"portfolio_item-thumbnail_square":["https:\/\/sacred-boxes.com\/wp-content\/uploads\/2025\/12\/cropped-IMG_8221-800x800.webp",800,800,true]},"_links":{"self":[{"href":"https:\/\/sacred-boxes.com\/en\/wp-json\/wp\/v2\/pages\/7","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sacred-boxes.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/sacred-boxes.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/sacred-boxes.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sacred-boxes.com\/en\/wp-json\/wp\/v2\/comments?post=7"}],"version-history":[{"count":44,"href":"https:\/\/sacred-boxes.com\/en\/wp-json\/wp\/v2\/pages\/7\/revisions"}],"predecessor-version":[{"id":7553,"href":"https:\/\/sacred-boxes.com\/en\/wp-json\/wp\/v2\/pages\/7\/revisions\/7553"}],"up":[{"embeddable":true,"href":"https:\/\/sacred-boxes.com\/en\/wp-json\/wp\/v2\/pages\/130"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sacred-boxes.com\/en\/wp-json\/wp\/v2\/media\/141"}],"wp:attachment":[{"href":"https:\/\/sacred-boxes.com\/en\/wp-json\/wp\/v2\/media?parent=7"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}