esc pour fermer

Explorateur de canaux Wi-Fi

Recherchez, analysez et visualisez les canaux Wi-Fi sur les bandes 2,4 GHz, 5 GHz et 6 GHz. Trouvez des canaux par numéro ou par fréquence dans différentes notations et consultez les largeurs de bande de 20 à 320 MHz.

Aide à la recherche rapide

Recherchez des canaux de plusieurs façons :

  • Canaux de base : Entrez le numéro de canal (ex. « 36 » ou « 1 »)
  • Canaux liés : Entrez la notation complète (ex. « 42[36] » ou « 1+5 »)
  • Canaux centraux : Entrez uniquement le canal central (ex. « 42 »)
  • Canaux primaires : Ajoutez des crochets pour rechercher par canal primaire (ex. « [36] »)
Canaux Wi-Fi
Canal Largeur de bande Fréquence Remarque

Visualisation des canaux

Bandes et canaux Wi-Fi

Bandes de fréquence

  • Bande 2,4 GHz (802.11b/g/n) : Très utilisée, interférences élevées, meilleure pénétration des murs.
  • Bande 5 GHz (802.11a/n/ac/ax) : Moins d'interférences, débits plus élevés, portée réduite à travers les murs.
  • Bande 6 GHz (802.11ax/be) : Introduite avec Wi-Fi 6E, moins encombrée, débits élevés, courte portée.

Dénomination et notation des canaux

  • Bande 2,4 GHz : Les canaux liés sont nommés en combinant les canaux primaire et secondaire (ex. « 1+5 »)
  • Bandes 5 GHz et 6 GHz : Les canaux liés sont nommés par fréquence centrale et canal primaire (ex. « 42[36] »)
  • La notation alternative (ex. « 36+40 ») s'affiche au survol des canaux liés
  • Le canal primaire détermine le canal de contrôle pour les trames de gestion
Informations techniques
  • Largeur de canal : Des canaux plus larges (40/80/160/320 MHz) offrent des débits plus élevés mais sont plus sensibles aux interférences.
  • DFS (Sélection dynamique de fréquence) : Détecte les radars et change automatiquement de canal si nécessaire.
  • TPC (Contrôle de puissance d'émission) : Ajustement automatique de la puissance de transmission.
  • BFWA (Accès sans fil fixe à large bande) : Canaux hors des bandes U-NII standard, généralement utilisés pour des liaisons point à point coordonnées ou sous licence (ex. canal 169 à 5845 MHz).
  • Restrictions régionales : Différentes régions (UE, États-Unis, etc.) autorisent différents canaux, en particulier dans la bande 6 GHz.
  • Fonctionnalités Wi-Fi 7 : Prise en charge des canaux 320 MHz dans la bande 6 GHz, offrant un débit extrêmement élevé.

`); printWindow.document.close(); } // Update the band info function updateBandInfo() { const bandInfoText = getBandInfo(aktuellesBand); calculatorForm.bandInfo.textContent = bandInfoText; calculatorForm.bandInfo.style.display = bandInfoText ? 'block' : 'none'; } // Update the bandwidth info function updateBandbreiteInfo() { const bandbreiteInfoText = getBandbreiteInfo(aktuelleBandbreite); calculatorForm.bandbreiteInfo.textContent = bandbreiteInfoText; calculatorForm.bandbreiteInfo.style.display = bandbreiteInfoText ? 'block' : 'none'; } // Update the frequency field depending on band function updateFrequenzFeld() { const anzeigeband = aktuellesBand === 'auto' ? (aktuellesSuchergebnis ? aktuellesSuchergebnis.band : '2.4GHz') : aktuellesBand; calculatorForm.frequenzLabel.textContent = `Fréquence :`; // Update placeholder based on selected unit updateFrequenzPlaceholder(); // Set appropriate unit for the band updateFrequenzEinheit(); } // Update frequency placeholder based on selected unit and band function updateFrequenzPlaceholder() { const anzeigeband = aktuellesBand === 'auto' ? (aktuellesSuchergebnis ? aktuellesSuchergebnis.band : '2.4GHz') : aktuellesBand; const unit = calculatorForm.frequenzUnit.value; if (unit === 'GHz') { /* 60GHz-Bedingung auskommentiert if (anzeigeband === '60GHz') { calculatorForm.frequenz.placeholder = "e.g. 60.48 or 58.32"; } else */ if (anzeigeband === '6GHz') { calculatorForm.frequenz.placeholder = "ex. 5,955 ou 6,105"; } else if (anzeigeband.startsWith('5GHz')) { calculatorForm.frequenz.placeholder = "ex. 5,18 ou 5,5"; } else { calculatorForm.frequenz.placeholder = "ex. 2,412 ou 2,462"; } } else { /* 60GHz-Bedingung auskommentiert if (anzeigeband === '60GHz') { calculatorForm.frequenz.placeholder = "e.g. 60480 or 58320"; } else { */ calculatorForm.frequenz.placeholder = "ex. 2412 ou 5180"; /* Schließende Klammer auskommentiert } */ } } // Set appropriate frequency unit based on band function updateFrequenzEinheit() { const anzeigeband = aktuellesBand === 'auto' ? (aktuellesSuchergebnis ? aktuellesSuchergebnis.band : '2.4GHz') : aktuellesBand; // Auto-select GHz for 60GHz band, MHz for others /* 60GHz-Bedingung auskommentiert if (anzeigeband === '60GHz' && calculatorForm.frequenzUnit.value !== 'GHz') { calculatorForm.frequenzUnit.value = 'GHz'; } else */ if (calculatorForm.frequenzUnit.value === '') { calculatorForm.frequenzUnit.value = 'MHz'; } updateFrequenzPlaceholder(); } // Handle frequency unit change function handleFrequenzUnitChange() { updateFrequenzPlaceholder(); // If there's a value in the frequency field, convert it if (calculatorForm.frequenz.value) { const oldUnit = calculatorForm.frequenzUnit.value === 'MHz' ? 'GHz' : 'MHz'; const oldValue = parseFloat(calculatorForm.frequenz.value); if (!isNaN(oldValue)) { let newValue; if (oldUnit === 'GHz' && calculatorForm.frequenzUnit.value === 'MHz') { // Convert from GHz to MHz newValue = (oldValue * 1000).toFixed(0); } else if (oldUnit === 'MHz' && calculatorForm.frequenzUnit.value === 'GHz') { // Convert from MHz to GHz newValue = (oldValue / 1000).toFixed(3); // Remove trailing zeros newValue = newValue.replace(/\.?0+$/, ''); } calculatorForm.frequenz.value = newValue; } } } // Show or hide error function setzeError(inputElement, errorElement, message) { const inputContainer = inputElement.parentElement; if (message) { inputContainer.classList.add('error'); errorElement.style.display = 'block'; errorElement.textContent = message; } else { inputContainer.classList.remove('error'); errorElement.style.display = 'none'; } } // Combined function for band information function getBandInfo(bandName) { switch (bandName) { case 'auto': return 'La sélection de la bande s\'effectue automatiquement en fonction de la fréquence ou du numéro de canal saisi.'; case '2.4GHz': return 'Max. 100 mW (20 dBm). Bande très encombrée, canaux recommandés : 1, 6, 11 (sans chevauchement) pour 20 MHz ou 1+5 (lié) pour 40 MHz.'; case '5GHz-U-NII-1': return 'Usage intérieur uniquement. Pas de DFS/TPC requis. Max. 200 mW (23 dBm). Plage de fréquence : 5150-5250 MHz.'; case '5GHz-U-NII-2': return 'Usage intérieur uniquement. DFS/TPC requis (détection radar). Max. 200 mW (23 dBm). Plage de fréquence : 5250-5350 MHz.'; case '5GHz-U-NII-2E': return 'Usage extérieur autorisé. DFS/TPC requis (détection radar). Max. 1000 mW (30 dBm). Plage de fréquence : 5470-5725 MHz.'; case '5GHz-BFWA': return 'Usage extérieur autorisé. DFS/TPC requis (pas de DFS à partir de 5850 MHz). Max. 4 W (36 dBm). Réservé aux utilisateurs commerciaux enregistrés ! Plage de fréquence : 5725-5875 MHz.'; case '6GHz': return 'Nouvelle bande pour Wi-Fi 6E et Wi-Fi 7. Réglementation variable selon les régions. Débits très élevés, portée limitée, faibles interférences.'; /* 60GHz-Fall auskommentiert case '60GHz': return 'Indoor and outdoor allowed. Max. 10W, with >30dBi antenna gain up to 316W (only outdoor fixed installations). Multi-gigabit speeds. Frequency range: 57-71 GHz.'; */ default: return ''; } } // Combined function for bandwidth information function getBandbreiteInfo(bandbreite) { switch (bandbreite) { case 'all': return 'Affichage de toutes les largeurs de canal disponibles.'; case '20': return 'Largeur de canal standard pour les réseaux existants. Compatible avec tous les appareils Wi-Fi.'; case '40': return 'Introduit avec 802.11n. Double le débit par rapport à 20 MHz.'; case '80': return 'Introduit avec 802.11ac. Débit élevé, mais nombre limité de canaux sans chevauchement.'; case '160': return 'Largeur de canal maximale pour 802.11ac/ax. Débit très élevé, nombre de canaux très limité.'; case '320': return 'Nouveau pour Wi-Fi 7 (802.11be). Débit ultra-élevé, disponible uniquement dans la bande 6 GHz.'; /* 60GHz-Bandbreiten auskommentiert case '2160': return 'Standard channel width for 802.11ad in 60 GHz band. Multi-gigabit speeds.'; case '4320': return 'Channel bonding for 802.11ay in 60 GHz band. Even higher speeds.'; case '6480': return 'Triple channel bonding for 802.11ay in 60 GHz band.'; case '8640': return 'Quadruple channel bonding for 802.11ay in 60 GHz band. Maximum throughput.'; */ default: return ''; } } // Combined function for channel notes function getKanalHinweis(band, kanalNum, bandbreite) { // 2.4 GHz Band if (band === '2.4GHz') { if (typeof kanalNum === 'string' && kanalNum.includes('+')) { // Notes for 40 MHz channels const kanalTeile = kanalNum.split('+'); if (kanalTeile[0] === '1' || kanalTeile[0] === '2' || kanalTeile[0] === '3') { return 'Canal lié recommandé pour réduire les interférences'; } else if (kanalTeile[0] === '7' || kanalTeile[0] === '8' || kanalTeile[0] === '9') { return 'Peut provoquer des interférences avec les réseaux voisins'; } return 'Canal 40 MHz (deux canaux 20 MHz combinés)'; } else { // Notes for 20 MHz channels if (kanalNum === 1 || kanalNum === 6 || kanalNum === 11) { return 'Canal sans chevauchement recommandé'; } else if (kanalNum === 9) { return 'La plupart des fours à micro-ondes fonctionnent à 2 455 GHz et peuvent interférer avec ce canal !'; } else if (kanalNum === 12 || kanalNum === 13) { return 'Autorisé uniquement dans l\'UE'; } else if (kanalNum === 14) { return 'Autorisé uniquement au Japon'; } } } // 5 GHz U-NII-1 Band else if (band === '5GHz-U-NII-1') { if (bandbreite === '20') { return 'Usage intérieur uniquement, pas de DFS requis'; } else if (bandbreite === '40') { return 'Usage intérieur uniquement, agrégation 40 MHz (deux canaux 20 MHz)'; } else if (bandbreite === '80') { return 'Usage intérieur uniquement, agrégation 80 MHz (quatre canaux 20 MHz)'; } else if (bandbreite === '160') { return 'Usage intérieur uniquement, agrégation 160 MHz (huit canaux 20 MHz), couvre U-NII-1 et U-NII-2'; } } // 5 GHz U-NII-2 Band else if (band === '5GHz-U-NII-2') { const dfsHinweis = 'DFS et TPC requis. Détection radar météorologique.'; if (bandbreite === '20') { return dfsHinweis; } else if (bandbreite === '40') { return dfsHinweis + ' Agrégation 40 MHz (deux canaux 20 MHz).'; } else if (bandbreite === '80') { return dfsHinweis + ' Agrégation 80 MHz (quatre canaux 20 MHz).'; } } // 5 GHz U-NII-2E Band else if (band === '5GHz-U-NII-2E') { let basisHinweis = 'DFS et TPC requis. '; // Special notes for certain channels if (kanalNum === 120 || kanalNum === 124 || kanalNum === 128 || (typeof kanalNum === 'string' && kanalNum.includes('120'))) { basisHinweis += 'Zone radar. '; } else if (kanalNum === 116 || kanalNum === 132 || (typeof kanalNum === 'string' && (kanalNum.includes('116') || kanalNum.includes('132')))) { basisHinweis += 'Zone limite radar. '; } // Bandwidth notes if (bandbreite === '40') { basisHinweis += 'Agrégation 40 MHz (deux canaux 20 MHz).'; } else if (bandbreite === '80') { basisHinweis += 'Agrégation 80 MHz (quatre canaux 20 MHz).'; } else if (bandbreite === '160') { basisHinweis += 'Agrégation 160 MHz (huit canaux 20 MHz).'; } return basisHinweis; } // 5 GHz BFWA Band else if (band === '5GHz-BFWA') { let hinweis = ''; // No DFS required from 5850MHz if (kanalNum === 169 || kanalNum === 173 || (typeof kanalNum === 'string' && kanalNum.includes('169'))) { hinweis = 'Pas de DFS requis à partir de 5850 MHz. '; } else { hinweis = 'DFS/TPC requis. '; } // Note on commercial use hinweis += 'Réservé aux utilisateurs commerciaux enregistrés ! '; // Bandwidth notes if (bandbreite === '40') { hinweis += 'Agrégation 40 MHz (deux canaux 20 MHz).'; } else if (bandbreite === '80') { hinweis += 'Agrégation 80 MHz (quatre canaux 20 MHz).'; } return hinweis; } // 6 GHz Band else if (band === '6GHz') { let hinweis = 'Wi-Fi 6E/7 uniquement. '; // Check if this is a Wi-Fi 7 channel (320 MHz) if (bandbreite === '320') { hinweis = 'Wi-Fi 7 uniquement. Débit ultra-élevé. '; // Add regional restrictions if (kanalNum === '31[1]' || kanalNum === '63[33]' || kanalNum === '95[63]' || (typeof kanalNum === 'string' && (kanalNum.includes('1-61') || kanalNum.includes('33-93') || kanalNum.includes('63-127')))) { hinweis += 'Disponible aux États-Unis, pas dans l\'UE. '; } } else { // Add regional restrictions for other bandwidths if (parseInt(bandbreite) >= 160) { if (kanalNum === '15[1]' || kanalNum === '1-29') { hinweis += 'Disponible aux États-Unis et dans l\'UE. '; } else { hinweis += 'Disponible aux États-Unis, pas dans l\'UE. '; } } } // Bandwidth specific notes if (bandbreite === '40') { hinweis += 'Agrégation 40 MHz (deux canaux 20 MHz).'; } else if (bandbreite === '80') { hinweis += 'Agrégation 80 MHz (quatre canaux 20 MHz).'; } else if (bandbreite === '160') { hinweis += 'Agrégation 160 MHz (huit canaux 20 MHz).'; } else if (bandbreite === '320') { hinweis += 'Agrégation 320 MHz (seize canaux 20 MHz).'; } return hinweis; } /* 60GHz-Bedingung auskommentiert // 60 GHz Band else if (band === '60GHz') { let hinweis = 'Ultra-short range. Line-of-sight required. '; // Bandwidth notes if (bandbreite === '2160') { hinweis += 'Standard 802.11ad channel.'; } else if (bandbreite === '4320') { hinweis += 'Bonded 802.11ay channel (2x 2160 MHz).'; } else if (bandbreite === '6480') { hinweis += 'Bonded 802.11ay channel (3x 2160 MHz).'; } else if (bandbreite === '8640') { hinweis += 'Bonded 802.11ay channel (4x 2160 MHz).'; } return hinweis; } */ return null; } // Show the search result function zeigeErgebnis(ergebnis) { if (!ergebnis) { calculatorForm.suchergebnis.style.display = 'none'; return; } calculatorForm.suchergebnis.style.display = 'block'; // Show main result calculatorForm.ergebnisBand.textContent = ergebnis.band; calculatorForm.ergebnisKanal.textContent = ergebnis.kanal; // Show bandwidth const bandbreitenText = ergebnis.band === '60GHz' ? `${(ergebnis.bandbreite / 1000).toFixed(2)} GHz` : `${ergebnis.bandbreite} MHz`; calculatorForm.ergebnisBandbreite.textContent = bandbreitenText; // Format frequency based on user's selected unit const unit = calculatorForm.frequenzUnit.value; if (unit === 'GHz') { calculatorForm.ergebnisFrequenz.textContent = `${(ergebnis.exakteFrequenz / 1000).toFixed(3).replace(/\.?0+$/, '')} GHz`; } else { calculatorForm.ergebnisFrequenz.textContent = `${ergebnis.exakteFrequenz} MHz`; } // Show note if available const hinweis = getKanalHinweis(ergebnis.band, ergebnis.kanal, ergebnis.bandbreite.toString()); if (hinweis) { calculatorForm.hinweisText.textContent = hinweis; calculatorForm.ergebnisHinweis.style.display = 'block'; } else { calculatorForm.ergebnisHinweis.style.display = 'none'; } // Show other matches if available if (ergebnis.alleErgebnisse && ergebnis.alleErgebnisse.length > 1) { calculatorForm.weitereTreeffer.style.display = 'block'; // Clear list calculatorForm.trefferListe.innerHTML = ''; // Add other matches (from the second match) ergebnis.alleErgebnisse.slice(1).forEach(treffer => { const listItem = document.createElement('li'); const bandbreitenText = treffer.band === '60GHz' ? `${(treffer.bandbreite / 1000).toFixed(2)} GHz` : `${treffer.bandbreite} MHz`; listItem.textContent = `Bande : ${treffer.band}, Canal : ${treffer.kanal}, Largeur de bande : ${bandbreitenText}, Fréquence : ${ treffer.band === '60GHz' ? `${(treffer.frequenz / 1000).toFixed(2)} GHz` : `${treffer.frequenz} MHz` }`; calculatorForm.trefferListe.appendChild(listItem); }); } else { calculatorForm.weitereTreeffer.style.display = 'none'; } // Update visualization if on visualization tab if (document.getElementById('visualization-tab').classList.contains('active')) { renderChannelVisualization(); } } // Render the channel table function renderKanalTabelle() { // Determine current band const anzeigeband = aktuellesBand === 'auto' ? (aktuellesSuchergebnis ? aktuellesSuchergebnis.band : '2.4GHz') : aktuellesBand; // Determine channels to display based on bandwidth and band let anzuzeigende_kanäle = []; // Get all available bandwidths for the current band const verfügbareBandbreiten = Object.keys(kanalDaten[anzeigeband]); if (aktuelleBandbreite === 'all') { // Show all bandwidths verfügbareBandbreiten.forEach(bandbreite => { kanalDaten[anzeigeband][bandbreite].forEach(kanal => { anzuzeigende_kanäle.push({ ...kanal, bandbreite: parseInt(bandbreite) }); }); }); } else { // Show only specific bandwidth const bandbreitenKey = `${aktuelleBandbreite}MHz`; if (kanalDaten[anzeigeband][bandbreitenKey]) { anzuzeigende_kanäle = kanalDaten[anzeigeband][bandbreitenKey].map(kanal => ({ ...kanal, bandbreite: parseInt(aktuelleBandbreite) })); } } // Clear table calculatorForm.kanalTabelle.innerHTML = ''; // If no channels to display if (anzuzeigende_kanäle.length === 0) { const row = document.createElement('tr'); const cell = document.createElement('td'); cell.colSpan = 4; cell.textContent = 'Aucun canal disponible pour cette largeur de bande dans la bande sélectionnée.'; cell.style.textAlign = 'center'; row.appendChild(cell); calculatorForm.kanalTabelle.appendChild(row); return; } // Sort channels by number anzuzeigende_kanäle.sort((a, b) => { // Primary by bandwidth (larger first) const bandbreitenDiff = b.bandbreite - a.bandbreite; if (bandbreitenDiff !== 0) return bandbreitenDiff; // Secondary by channel number (numeric or string) if (typeof a.kanal === 'number' && typeof b.kanal === 'number') { return a.kanal - b.kanal; } else if (typeof a.kanal === 'string' && typeof b.kanal === 'string') { // Extract first number from string (e.g. "36+40" -> 36) const aNum = parseInt(a.kanal.split(/[+\-]/)[0]); const bNum = parseInt(b.kanal.split(/[+\-]/)[0]); return aNum - bNum; } else { // Mixed types, number before string return typeof a.kanal === 'number' ? -1 : 1; } }); // Add channels anzuzeigende_kanäle.forEach(kanal => { const row = document.createElement('tr'); // Highlight selected channel if (aktuellesSuchergebnis && aktuellesSuchergebnis.band === anzeigeband && aktuellesSuchergebnis.kanal.toString() === kanal.kanal.toString() && aktuellesSuchergebnis.bandbreite === kanal.bandbreite) { row.classList.add('highlight'); } // Add Wi-Fi 7 class if applicable if (kanal.wifi7) { row.classList.add('wifi7-channel'); } // Channel const kanalCell = document.createElement('td'); kanalCell.textContent = kanal.kanal; // Add tooltip for alternative notation if available if (kanal.altNotation) { kanalCell.title = `Notation alternative : ${kanal.altNotation}`; kanalCell.style.cursor = 'help'; } row.appendChild(kanalCell); // Bandwidth const bandbreiteCell = document.createElement('td'); if (anzeigeband === '60GHz') { bandbreiteCell.textContent = `${(kanal.bandbreite / 1000).toFixed(2)} GHz`; } else { bandbreiteCell.textContent = `${kanal.bandbreite} MHz`; } // Add Wi-Fi 7 badge for 320 MHz if (kanal.bandbreite === 320) { const badge = document.createElement('span'); badge.textContent = ' (Wi-Fi 7)'; badge.style.color = 'var(--wifi7-color)'; badge.style.fontSize = '0.9em'; bandbreiteCell.appendChild(badge); } row.appendChild(bandbreiteCell); // Frequency const frequenzCell = document.createElement('td'); const unit = calculatorForm.frequenzUnit.value; if (unit === 'GHz') { frequenzCell.textContent = `${(kanal.frequenz / 1000).toFixed(3).replace(/\.?0+$/, '')} GHz`; } else { frequenzCell.textContent = `${kanal.frequenz} MHz`; } row.appendChild(frequenzCell); // Note const hinweisCell = document.createElement('td'); const hinweis = getKanalHinweis(anzeigeband, kanal.kanal, kanal.bandbreite.toString()); hinweisCell.textContent = hinweis || '-'; row.appendChild(hinweisCell); calculatorForm.kanalTabelle.appendChild(row); }); } // Search for channels based on frequency function sucheKanalPerFrequenz(freq) { if (!freq) { aktuellesSuchergebnis = null; zeigeErgebnis(null); return; } // Convert input to MHz let frequenzNum; const unit = calculatorForm.frequenzUnit.value; if (unit === 'GHz') { // GHz format (e.g. 5.18 or 60.48) - convert to MHz frequenzNum = Math.round(parseFloat(freq) * 1000); } else { // MHz format (e.g. 5180 or 2412) frequenzNum = parseInt(freq, 10); } if (isNaN(frequenzNum)) { setzeError(calculatorForm.frequenz, calculatorForm.frequenzError, `Veuillez saisir une fréquence valide en ${unit}`); aktuellesSuchergebnis = null; zeigeErgebnis(null); return; } // Automatically determine band and update UI let gefundenesBand = bestimmeBandAusFrequenz(frequenzNum); // Update band dropdown aktuellesBand = gefundenesBand; calculatorForm.band.value = aktuellesBand; updateBandInfo(); updateFrequenzFeld(); // Update bandwidth dropdown aktualisiereBandbreitenDropdown(); // Search for matching channel let allesuchErgebnisse = sucheKanalInAllenBändern(frequenzNum, gefundenesBand); if (allesuchErgebnisse.length > 0) { const gefundenerKanal = allesuchErgebnisse[0]; // Update bandwidth if (aktuelleBandbreite === 'all' || aktuelleBandbreite !== gefundenerKanal.bandbreite.toString()) { aktuelleBandbreite = gefundenerKanal.bandbreite.toString(); calculatorForm.bandbreite.value = aktuelleBandbreite; updateBandbreiteInfo(); } // Update channel field calculatorForm.kanal.value = gefundenerKanal.kanal; // Save search result aktuellesSuchergebnis = { exakteFrequenz: gefundenerKanal.frequenz, kanal: gefundenerKanal.kanal, band: gefundenerKanal.band, bandbreite: gefundenerKanal.bandbreite, alleErgebnisse: allesuchErgebnisse.slice(0, 5), // Top 5 matches wifi7: gefundenerKanal.wifi7, altNotation: gefundenerKanal.altNotation }; // Show result zeigeErgebnis(aktuellesSuchergebnis); renderKanalTabelle(); } else { setzeError(calculatorForm.frequenz, calculatorForm.frequenzError, `Aucun canal trouvé pour la fréquence ${freq} ${unit}`); aktuellesSuchergebnis = null; zeigeErgebnis(null); } } // Function to determine band from frequency function bestimmeBandAusFrequenz(frequenzNum) { if (frequenzNum >= 2400 && frequenzNum < 2500) { return '2.4GHz'; } else if (frequenzNum >= 5150 && frequenzNum < 5250) { return '5GHz-U-NII-1'; } else if (frequenzNum >= 5250 && frequenzNum < 5350) { return '5GHz-U-NII-2'; } else if (frequenzNum >= 5470 && frequenzNum < 5725) { return '5GHz-U-NII-2E'; } else if (frequenzNum >= 5725 && frequenzNum < 5875) { return '5GHz-BFWA'; } else if (frequenzNum >= 5925 && frequenzNum < 7125) { return '6GHz'; } /* 60GHz-Bedingung auskommentiert else if (frequenzNum >= 57000 && frequenzNum < 71000) { return '60GHz'; } */ return 'auto'; } // Function to search channels in all bands function sucheKanalInAllenBändern(frequenzNum, gefundenesBand) { const toleranz = 10; // Tolerance in MHz let allesuchErgebnisse = []; // Determine which bands to search const suchBänder = gefundenesBand !== 'auto' ? [gefundenesBand] : Object.keys(kanalDaten); suchBänder.forEach(bandName => { Object.keys(kanalDaten[bandName]).forEach(bandbreite => { // Skip if specific bandwidth is chosen and not this one if (aktuelleBandbreite !== 'all' && parseInt(aktuelleBandbreite) !== parseInt(bandbreite)) { return; } const kanäle = kanalDaten[bandName][bandbreite]; kanäle.forEach(kanal => { const abweichung = Math.abs(kanal.frequenz - frequenzNum); if (abweichung <= toleranz) { allesuchErgebnisse.push({ band: bandName, kanal: kanal.kanal, frequenz: kanal.frequenz, bandbreite: parseInt(bandbreite), abweichung: abweichung, wifi7: kanal.wifi7, altNotation: kanal.altNotation }); } }); }); }); // Sort by smallest deviation return allesuchErgebnisse.sort((a, b) => a.abweichung - b.abweichung); } // Event handler for frequency change function handleFrequenzChange(event) { const neuFrequenz = event.target.value; // Reset error field setzeError(calculatorForm.frequenz, calculatorForm.frequenzError, null); if (suchTimeout) { clearTimeout(suchTimeout); } if (neuFrequenz) { // Delayed call of the search function suchTimeout = setTimeout(() => { sucheKanalPerFrequenz(neuFrequenz); }, 500); } else { // Empty field, reset search result aktuellesSuchergebnis = null; zeigeErgebnis(null); renderKanalTabelle(); } } // Hilfsfunktion, um zu prüfen, ob ein Kanal mit der Suchanfrage übereinstimmt function matchesChannelSearch(kanalObj, suchKanal) { let matchPriority = 0; // Higher is better match // Exact string match (highest priority) if (kanalObj.kanal === suchKanal) { if (typeof suchKanal === 'string' && (suchKanal.includes('[') || suchKanal.includes('+'))) { return { match: true, priority: 4 }; // Exact notation match gets highest priority } return { match: true, priority: 3 }; // Exact match but not notation } // String in Zahl konvertieren, falls möglich const numSuchKanal = typeof suchKanal === 'string' ? parseInt(suchKanal, 10) : suchKanal; // Für numerische Suche (z.B. 47) in Mittenfrequenzformaten (z.B. "47[33]") if (!isNaN(numSuchKanal) && typeof kanalObj.kanal === 'string') { // Format "47[33]" - extrahiere Mittenfrequenz if (kanalObj.kanal.includes('[')) { const centerChannel = parseInt(kanalObj.kanal.split('[')[0], 10); if (centerChannel === numSuchKanal) { return { match: true, priority: 2 }; // Center channel match } } } // Suche nach Primärkanal mit []-Notation (z.B. "[36]") if (typeof suchKanal === 'string' && suchKanal.startsWith('[') && suchKanal.endsWith(']')) { const primaryChannelSearch = parseInt(suchKanal.replace(/[\[\]]/g, ''), 10); // Prüfe, ob das Objekt eine primärkanal-Eigenschaft hat if (kanalObj.primärkanal && kanalObj.primärkanal === primaryChannelSearch) { return { match: true, priority: 3 }; // Primary channel match with bracket notation } // Oder check im String-Format wie "47[36]" if (typeof kanalObj.kanal === 'string' && kanalObj.kanal.includes('[')) { const primaryChannelPart = kanalObj.kanal.split('[')[1].split(']')[0]; const primaryChannel = parseInt(primaryChannelPart, 10); if (primaryChannel === primaryChannelSearch) { return { match: true, priority: 3 }; // Primary channel match with bracket notation } } } return { match: false, priority: 0 }; } function sucheFrequenzPerKanal(kanalNum) { if (!kanalNum) { aktuellesSuchergebnis = null; zeigeErgebnis(null); return; } // Check for special notations first before trying to convert to number let suchKanal; if (typeof kanalNum === 'string' && (kanalNum.includes('+') || kanalNum.includes('['))) { // It's a special notation - keep as string suchKanal = kanalNum; } else { // Try to convert to number suchKanal = parseInt(kanalNum, 10); if (isNaN(suchKanal)) { suchKanal = kanalNum; } } // Check if it's a valid search if (typeof suchKanal === 'string' && !suchKanal.includes('[') && !suchKanal.includes('+') && isNaN(parseInt(suchKanal, 10))) { setzeError(calculatorForm.kanal, calculatorForm.kanalError, 'Veuillez saisir un numéro ou un format de canal valide'); aktuellesSuchergebnis = null; zeigeErgebnis(null); return; } // Search in all bands for the channel let gefundeneKanäle = []; // First search in the current band if (aktuellesBand !== 'auto') { // Search in selected band Object.keys(kanalDaten[aktuellesBand]).forEach(bandbreite => { // Skip if specific bandwidth is chosen and not this one if (aktuelleBandbreite !== 'all' && parseInt(aktuelleBandbreite) !== parseInt(bandbreite)) { return; } const kanäle = kanalDaten[aktuellesBand][bandbreite]; kanäle.forEach(k => { const matchResult = matchesChannelSearch(k, suchKanal); if (matchResult.match) { gefundeneKanäle.push({ band: aktuellesBand, kanal: k.kanal, frequenz: k.frequenz, bandbreite: parseInt(bandbreite), abweichung: 0, wifi7: k.wifi7, altNotation: k.altNotation, priority: matchResult.priority }); } }); }); } // If nothing found in current band or "auto", search in all bands if (gefundeneKanäle.length === 0 || aktuellesBand === 'auto') { // Search in all bands Object.keys(kanalDaten).forEach(band => { if (band !== aktuellesBand || aktuellesBand === 'auto') { Object.keys(kanalDaten[band]).forEach(bandbreite => { // Skip if specific bandwidth is chosen and not this one if (aktuelleBandbreite !== 'all' && parseInt(aktuelleBandbreite) !== parseInt(bandbreite)) { return; } const kanäle = kanalDaten[band][bandbreite]; kanäle.forEach(k => { const matchResult = matchesChannelSearch(k, suchKanal); if (matchResult.match) { gefundeneKanäle.push({ band: band, kanal: k.kanal, frequenz: k.frequenz, bandbreite: parseInt(bandbreite), abweichung: 0, wifi7: k.wifi7, altNotation: k.altNotation, priority: matchResult.priority }); } }); }); } }); } // If at least one channel was found if (gefundeneKanäle.length > 0) { // Sort first by whether it matches the selected band, then by priority gefundeneKanäle.sort((a, b) => { // First sort by whether it matches the selected band (if not in auto mode) if (aktuellesBand !== 'auto') { if (a.band === aktuellesBand && b.band !== aktuellesBand) return -1; if (a.band !== aktuellesBand && b.band === aktuellesBand) return 1; } // Then sort by priority return b.priority - a.priority; }); const besterTreffer = gefundeneKanäle[0]; // Always update band to that of the found channel // This is the key change - update always, not just in auto mode aktuellesBand = besterTreffer.band; calculatorForm.band.value = aktuellesBand; updateBandInfo(); updateFrequenzFeld(); // Update bandwidth dropdown aktualisiereBandbreitenDropdown(); // Set bandwidth to match the found channel if (aktuelleBandbreite === 'all' || aktuelleBandbreite !== besterTreffer.bandbreite.toString()) { aktuelleBandbreite = besterTreffer.bandbreite.toString(); calculatorForm.bandbreite.value = aktuelleBandbreite; updateBandbreiteInfo(); } // Update frequency field based on the selected unit const unit = calculatorForm.frequenzUnit.value; if (unit === 'GHz') { calculatorForm.frequenz.value = (besterTreffer.frequenz / 1000).toFixed(3).replace(/\.?0+$/, ''); } else { calculatorForm.frequenz.value = besterTreffer.frequenz; } // Save search result aktuellesSuchergebnis = { exakteFrequenz: besterTreffer.frequenz, kanal: besterTreffer.kanal, band: besterTreffer.band, bandbreite: besterTreffer.bandbreite, alleErgebnisse: gefundeneKanäle, wifi7: besterTreffer.wifi7, altNotation: besterTreffer.altNotation }; // Show result zeigeErgebnis(aktuellesSuchergebnis); renderKanalTabelle(); } else { setzeError(calculatorForm.kanal, calculatorForm.kanalError, `Le canal ${kanalNum} est introuvable dans toutes les bandes de fréquence avec la largeur de bande sélectionnée`); aktuellesSuchergebnis = null; zeigeErgebnis(null); } } // Tab-Funktionalität function setupTabs() { const tabButtons = document.querySelectorAll('.tab-button'); tabButtons.forEach(button => { button.addEventListener('click', () => { // Aktiven Tab deaktivieren const activeButton = document.querySelector('.tab-button.active'); const activeContent = document.querySelector('.tab-content.active'); if (activeButton) activeButton.classList.remove('active'); if (activeContent) activeContent.classList.remove('active'); // Neuen Tab aktivieren button.classList.add('active'); const tabId = button.getAttribute('data-tab'); const tabContent = document.getElementById(`${tabId}-tab`); if (tabContent) { tabContent.classList.add('active'); // Bei Wechsel zur Visualisierung aktualisieren if (tabId === 'visualization') { renderChannelVisualization(); } } }); }); } // Initialize the app init(); });

Chargement de la note de la page...
Dernière mise à jour le 14 avril 2026
Auteur : IBL-Editors Team
Analyse technique : Daniel Lenhardt - CEO & Owner | IB-Lenhardt AG
Donner votre avis sur cet article
ILAC-MRA DAkkS-01 ILAC-MRA DAkkS-01