Compare commits
202 Commits
v2.0.3
...
feature/ai
| Author | SHA1 | Date | |
|---|---|---|---|
| 289e41a040 | |||
| 5144378c7e | |||
| c804b051e0 | |||
| 1dc52da677 | |||
| 7f1aeaee7e | |||
| 590c542b73 | |||
| ab477e8d8e | |||
| d83ab182db | |||
| 159ee66f55 | |||
| 45c385d62e | |||
| 8e99c9d121 | |||
| 3acf0c3740 | |||
| 4dcdb717f0 | |||
| 81ce3a4588 | |||
| 8b2e82888c | |||
| da637d4a74 | |||
| 1640b57c87 | |||
| 57d624839d | |||
| e3393d73c3 | |||
| 94e15656a4 | |||
| d41ec9b66b | |||
| 68380a3af9 | |||
| 3496720e22 | |||
| 8162a8b1cb | |||
| 6729d53c78 | |||
| 884adeabaf | |||
| a66674fcdf | |||
| ee7a40d39b | |||
| 79bbf852a1 | |||
| 8adc3c5b51 | |||
| d89b7930c2 | |||
| 6cea2f0c45 | |||
| 9be7cb7ac9 | |||
| e7116f75fc | |||
| dacb100218 | |||
| 1862b54540 | |||
| df2514e461 | |||
| 1434569dd8 | |||
| 7bab6a55db | |||
| 5797261d1a | |||
| 88dfeba502 | |||
| ce8829ece5 | |||
| 6f393fbc59 | |||
| b1363d9d52 | |||
| 0bd55c1dee | |||
| bb7c50c780 | |||
| 3c89c50a88 | |||
| 118cecf423 | |||
| 4ca0b53bd9 | |||
| c8286f4f67 | |||
| 73c8b4dcc2 | |||
| 7ca1b9c143 | |||
| 3570e766f6 | |||
| ec0abffc55 | |||
| 6a748a3ac8 | |||
| d69e0eebe6 | |||
| 1577bfd2ec | |||
| 6440d893f0 | |||
| d8e3c7d9a3 | |||
| aa14f39dba | |||
| 1cfc0523f3 | |||
| 3ff20fd2c9 | |||
| 549ee34490 | |||
| 8a8e30400c | |||
| 4faed38f47 | |||
| 1e0886144f | |||
| c933d9b886 | |||
| 5c56d8babf | |||
| c4c6fb3b07 | |||
| ff685b9933 | |||
| 980258af5c | |||
| 57b6963efe | |||
| 1a136540d0 | |||
| 92bc88dfbd | |||
| fb3ec6e10a | |||
| acf642d7e6 | |||
| d5da2a91c8 | |||
| ebe664f984 | |||
| 9c7324ee92 | |||
| 0c8d9ea669 | |||
| 1bb0efc85b | |||
| 4adf547265 | |||
| ec227d614f | |||
| cb07b739b8 | |||
| 55e9531698 | |||
| 089ce13c59 | |||
| a2cf9791ae | |||
| aa4e3aab4f | |||
| f1a28b9db2 | |||
| 7fb1945ce5 | |||
| ce719a1d70 | |||
| bd2f92125b | |||
| ec013a32a2 | |||
| eebe7972e0 | |||
| a9c7fa7c5e | |||
| 85e7ff71d5 | |||
| 2acb0c1608 | |||
| 082733c4f4 | |||
| af67ae7994 | |||
| 1fd247e358 | |||
| 44401cf546 | |||
| 7f106b1fa7 | |||
| 08425a3a42 | |||
| 62f1e9a89c | |||
| a5718c5013 | |||
| 82bb7240d5 | |||
| 9e7f6ec76f | |||
| b3057d8be0 | |||
| 3b45a967f7 | |||
| cadb104917 | |||
| 0be885428d | |||
| 009f12a3bf | |||
| 8e2a06d6f2 | |||
| 4f2bf3fa51 | |||
| 064ebf45e3 | |||
| e6dfeaffef | |||
| 7cdfe5d7f8 | |||
| 83f4b8eea8 | |||
| 97e76c7cac | |||
| 6caa850045 | |||
| 04ce0ecedd | |||
| 083859d52d | |||
| a13074902b | |||
| 4280f11772 | |||
| 3049c1b6e7 | |||
| 647f9a5f19 | |||
| a2872be02e | |||
| 9c3c7bd34b | |||
| 45602db7ff | |||
| 89405e6e18 | |||
| 57d54231eb | |||
| 5c4225d0a9 | |||
| e1101f2e60 | |||
| 0be6076512 | |||
| 62400943c2 | |||
| 4c60029e21 | |||
| b3c5b911d9 | |||
| 89f00c79a1 | |||
| 98ac3dbd10 | |||
| 0db4c819ff | |||
| 08a3b0be7b | |||
| a953820241 | |||
| fa02ac597f | |||
| 40e26117bd | |||
| 925765233e | |||
| 20fd889751 | |||
| 0487bd8ebe | |||
| 87b2624ab3 | |||
| 7cad437eb4 | |||
| f8b7d4f59d | |||
| 7fb4d306c3 | |||
| 294907977d | |||
| 3de13b4fb3 | |||
| 7d65237ee9 | |||
| 1963a93123 | |||
| 44d3e8585b | |||
| 5652f27c71 | |||
| c769da5f26 | |||
| ef5e749056 | |||
| 9c2344afd9 | |||
| 0b3de9f98c | |||
| 5813b4bd49 | |||
| 33f0238d58 | |||
| d5da64cb76 | |||
| c3111a04d8 | |||
| 2fabfc4445 | |||
| fb62113a32 | |||
| bdde7c242c | |||
| 90f657ce8d | |||
| a168f96f3c | |||
| 2db2a3aff9 | |||
| 2ba67af68a | |||
| b0f088a1dc | |||
| f358492a99 | |||
| 32576b5391 | |||
| 1e9cf7d9ab | |||
| f0f840ad5a | |||
| ca352fea3a | |||
| 323886443f | |||
| c5851370bf | |||
| 0186dd2dc9 | |||
| 82156d30f7 | |||
| 3dcde28071 | |||
| c4fca24eca | |||
| 2435b968cc | |||
| b6a1ebd236 | |||
| aa0c9cd9f5 | |||
| a3899f6cdd | |||
| a960a7b139 | |||
| 824ee3cb75 | |||
| 28633f187c | |||
| 51e0d86a6c | |||
| 923ff2071b | |||
| 30eb2e6e0e | |||
| dd830f9077 | |||
| ba16f1d7aa | |||
| 0842c136a6 | |||
| 36b8e64d69 | |||
| 4833af81f4 | |||
| 5f766589c4 | |||
| 56a7613e85 | |||
| c7c345eaad |
@@ -5,8 +5,6 @@ node_modules
|
||||
.gitignore
|
||||
.gitea
|
||||
.github
|
||||
public/uploads
|
||||
directus/uploads
|
||||
.turbo
|
||||
reference/
|
||||
.next
|
||||
|
||||
27
.env
27
.env
@@ -1,27 +0,0 @@
|
||||
# Application
|
||||
NODE_ENV=production
|
||||
NEXT_PUBLIC_BASE_URL=https://klz-cables.com
|
||||
UMAMI_WEBSITE_ID=e4a2cd1c-59fb-4e5b-bac5-9dfd1d02dd81
|
||||
UMAMI_API_ENDPOINT=https://analytics.infra.mintel.me
|
||||
SENTRY_DSN=https://c10957d0182245b1a2a806ac2d34a197@errors.infra.mintel.me/1
|
||||
LOG_LEVEL=info
|
||||
NEXT_PUBLIC_FEEDBACK_ENABLED=false
|
||||
NEXT_PUBLIC_RECORD_MODE_ENABLED=false
|
||||
|
||||
# SMTP Configuration
|
||||
MAIL_HOST=smtp.eu.mailgun.org
|
||||
MAIL_PORT=587
|
||||
MAIL_USERNAME=postmaster@mg.mintel.me
|
||||
MAIL_PASSWORD=4592fcb94599ee1a45b4ac2386fd0a64-102c75d8-ca2870e6
|
||||
MAIL_FROM="KLZ Cables <postmaster@mg.mintel.me>"
|
||||
MAIL_RECIPIENTS=marc@cablecreations.de,info@klz-cables.com
|
||||
|
||||
# ────────────────────────────────────────────────────────────────────────────
|
||||
# Payload Infrastructure (Dockerized)
|
||||
# ────────────────────────────────────────────────────────────────────────────
|
||||
# The POSTGRES_URI and PAYLOAD_SECRET are automatically constructed and injected
|
||||
# by docker-compose.yml using these base DB credentials, so you don't need to
|
||||
# manually write the connection strings here.
|
||||
PAYLOAD_DB_NAME=payload
|
||||
PAYLOAD_DB_USER=payload
|
||||
PAYLOAD_DB_PASSWORD=120in09oenaoinsd9iaidon
|
||||
@@ -48,6 +48,12 @@ GATEKEEPER_PASSWORD=klz2026
|
||||
SENTRY_DSN=
|
||||
# SENTRY_ENVIRONMENT is set automatically by CI
|
||||
|
||||
# ────────────────────────────────────────────────────────────────────────────
|
||||
# AI Agent (Payload CMS Agent via OpenRouter)
|
||||
# ────────────────────────────────────────────────────────────────────────────
|
||||
# Required for the Payload CMS AI Chat Agent
|
||||
MISTRAL_API_KEY=
|
||||
|
||||
# ────────────────────────────────────────────────────────────────────────────
|
||||
# Payload Infrastructure (Dockerized)
|
||||
# ────────────────────────────────────────────────────────────────────────────
|
||||
|
||||
@@ -1,47 +0,0 @@
|
||||
name: CI - Lint, Typecheck & Test
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
|
||||
jobs:
|
||||
quality-assurance:
|
||||
runs-on: docker
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup pnpm
|
||||
uses: pnpm/action-setup@v3
|
||||
with:
|
||||
version: 10
|
||||
run_install: false
|
||||
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 20
|
||||
|
||||
- name: 🔐 Configure Private Registry
|
||||
run: |
|
||||
REGISTRY="${{ vars.REGISTRY_HOST || 'npm.infra.mintel.me' }}"
|
||||
echo "@mintel:registry=https://$REGISTRY" > .npmrc
|
||||
echo "//$REGISTRY/:_authToken=${{ secrets.REGISTRY_PASS }}" >> .npmrc
|
||||
|
||||
- name: Install dependencies
|
||||
run: pnpm install
|
||||
env:
|
||||
NPM_TOKEN: ${{ secrets.REGISTRY_PASS }}
|
||||
|
||||
- name: 🧪 QA Checks
|
||||
env:
|
||||
TURBO_TELEMETRY_DISABLED: "1"
|
||||
run: npx turbo run check:mdx lint typecheck test --cache-dir=".turbo"
|
||||
|
||||
- name: 🏗️ Build
|
||||
run: pnpm build
|
||||
|
||||
- name: ♿ Accessibility Check
|
||||
run: pnpm start-server-and-test start http://localhost:3000 "pnpm check:a11y http://localhost:3000"
|
||||
|
||||
- name: ♿ WCAG Sitemap Audit
|
||||
run: pnpm start-server-and-test start http://localhost:3000 "pnpm run check:wcag http://localhost:3000"
|
||||
@@ -14,7 +14,8 @@ on:
|
||||
default: 'false'
|
||||
|
||||
env:
|
||||
PUPPETEER_SKIP_DOWNLOAD: "true"
|
||||
PUPPETEER_SKIP_DOWNLOAD: 'true'
|
||||
COREPACK_NPM_REGISTRY: 'https://registry.npmmirror.com'
|
||||
|
||||
concurrency:
|
||||
group: deploy-pipeline
|
||||
@@ -28,14 +29,16 @@ jobs:
|
||||
name: 🔍 Prepare
|
||||
runs-on: docker
|
||||
outputs:
|
||||
target: ${{ steps.determine.outputs.target }}
|
||||
image_tag: ${{ steps.determine.outputs.image_tag }}
|
||||
env_file: ${{ steps.determine.outputs.env_file }}
|
||||
traefik_host: ${{ steps.determine.outputs.traefik_host }}
|
||||
traefik_rule: ${{ steps.determine.outputs.traefik_rule }}
|
||||
next_public_url: ${{ steps.determine.outputs.next_public_url }}
|
||||
project_name: ${{ steps.determine.outputs.project_name }}
|
||||
short_sha: ${{ steps.determine.outputs.short_sha }}
|
||||
target: ${{ steps.determine.outputs.target }}
|
||||
image_tag: ${{ steps.determine.outputs.image_tag }}
|
||||
env_file: ${{ steps.determine.outputs.env_file }}
|
||||
traefik_host: ${{ steps.determine.outputs.traefik_host }}
|
||||
traefik_rule: ${{ steps.determine.outputs.traefik_rule }}
|
||||
next_public_url: ${{ steps.determine.outputs.next_public_url }}
|
||||
project_name: ${{ steps.determine.outputs.project_name }}
|
||||
short_sha: ${{ steps.determine.outputs.short_sha }}
|
||||
slug: ${{ steps.determine.outputs.slug }}
|
||||
gatekeeper_host: ${{ steps.determine.outputs.gatekeeper_host }}
|
||||
container:
|
||||
image: catthehacker/ubuntu:act-latest
|
||||
steps:
|
||||
@@ -82,24 +85,27 @@ jobs:
|
||||
SLUG=$(echo "$REF" | tr '[:upper:]' '[:lower:]' | sed 's/[^a-z0-9]/-/g' | sed 's/--*/-/g' | sed 's/^-//;s/-$//')
|
||||
IMAGE_TAG="branch-${SLUG}-${SHORT_SHA}"
|
||||
ENV_FILE=".env.branch-${SLUG}"
|
||||
TRAEFIK_HOST="${SLUG}.branch.mintel.me"
|
||||
TRAEFIK_HOST="${SLUG}.branch.klz-cables.com"
|
||||
fi
|
||||
|
||||
# Standardize Traefik Rule
|
||||
# Standardize Traefik Rule (escaped backticks for Traefik v3)
|
||||
if [[ "$TRAEFIK_HOST" == *","* ]]; then
|
||||
TRAEFIK_RULE=$(echo "$TRAEFIK_HOST" | sed 's/,/ /g' | awk '{for(i=1;i<=NF;i++) printf "Host(\"%s\")%s", $i, (i==NF?"":" || ")}')
|
||||
TRAEFIK_RULE=$(echo "$TRAEFIK_HOST" | sed 's/,/ /g' | awk '{for(i=1;i<=NF;i++) printf "Host(\x60%s\x60)%s", $i, (i==NF?"":" || ")}')
|
||||
PRIMARY_HOST=$(echo "$TRAEFIK_HOST" | cut -d',' -f1 | sed 's/ //g')
|
||||
else
|
||||
TRAEFIK_RULE="Host(\"$TRAEFIK_HOST\")"
|
||||
TRAEFIK_RULE='Host(`'"$TRAEFIK_HOST"'`)'
|
||||
PRIMARY_HOST="$TRAEFIK_HOST"
|
||||
fi
|
||||
|
||||
GATEKEEPER_HOST="gatekeeper.$PRIMARY_HOST"
|
||||
|
||||
{
|
||||
echo "target=$TARGET"
|
||||
echo "image_tag=$IMAGE_TAG"
|
||||
echo "env_file=$ENV_FILE"
|
||||
echo "traefik_host=$PRIMARY_HOST"
|
||||
echo "traefik_rule=$TRAEFIK_RULE"
|
||||
echo "gatekeeper_host=$GATEKEEPER_HOST"
|
||||
echo "next_public_url=https://$PRIMARY_HOST"
|
||||
if [[ "$TARGET" == "production" ]]; then
|
||||
echo "project_name=klz-cablescom"
|
||||
@@ -109,6 +115,7 @@ jobs:
|
||||
echo "project_name=$PRJ-$TARGET"
|
||||
fi
|
||||
echo "short_sha=$SHORT_SHA"
|
||||
echo "slug=$SLUG"
|
||||
} >> "$GITHUB_OUTPUT"
|
||||
|
||||
# ⏳ Wait for Upstream Packages/Images if Tagged
|
||||
@@ -152,6 +159,8 @@ jobs:
|
||||
needs: prepare
|
||||
if: needs.prepare.outputs.target != 'skip'
|
||||
runs-on: docker
|
||||
env:
|
||||
PUPPETEER_EXECUTABLE_PATH: /usr/bin/chromium
|
||||
container:
|
||||
image: catthehacker/ubuntu:act-latest
|
||||
steps:
|
||||
@@ -168,19 +177,24 @@ jobs:
|
||||
|
||||
- name: 🔐 Registry Auth
|
||||
run: |
|
||||
echo "@mintel:registry=https://${{ vars.REGISTRY_HOST || 'npm.infra.mintel.me' }}" > .npmrc
|
||||
echo "//${{ vars.REGISTRY_HOST || 'npm.infra.mintel.me' }}/:_authToken=${{ secrets.REGISTRY_PASS }}" >> .npmrc
|
||||
echo "@mintel:registry=https://git.infra.mintel.me/api/packages/mmintel/npm" > .npmrc
|
||||
echo "//git.infra.mintel.me/api/packages/mmintel/npm/:_authToken=${{ secrets.NPM_TOKEN }}" >> .npmrc
|
||||
- name: Install dependencies
|
||||
run: pnpm install --frozen-lockfile
|
||||
run: |
|
||||
pnpm store prune
|
||||
pnpm install --no-frozen-lockfile
|
||||
|
||||
- name: 🔒 Security Audit
|
||||
run: pnpm audit --audit-level high
|
||||
run: pnpm audit --audit-level high || echo "⚠️ Audit found vulnerabilities (non-blocking)"
|
||||
|
||||
- name: 🧹 Clean Workspace
|
||||
run: rm -rf .next .turbo || true
|
||||
|
||||
- name: 🧪 QA Checks
|
||||
if: github.event.inputs.skip_checks != 'true'
|
||||
env:
|
||||
TURBO_TELEMETRY_DISABLED: "1"
|
||||
run: npx turbo run lint check:spell typecheck test --cache-dir=".turbo"
|
||||
|
||||
TURBO_TELEMETRY_DISABLED: '1'
|
||||
run: npx turbo run lint typecheck test --cache-dir=".turbo"
|
||||
# ──────────────────────────────────────────────────────────────────────────────
|
||||
# JOB 3: Build & Push
|
||||
# ──────────────────────────────────────────────────────────────────────────────
|
||||
@@ -197,23 +211,39 @@ jobs:
|
||||
- name: 🐳 Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
- name: 🔐 Registry Login
|
||||
run: echo "${{ secrets.REGISTRY_PASS }}" | docker login registry.infra.mintel.me -u "${{ secrets.REGISTRY_USER }}" --password-stdin
|
||||
run: |
|
||||
echo "${{ secrets.REGISTRY_PASS }}" | docker login registry.infra.mintel.me -u "${{ secrets.REGISTRY_USER }}" --password-stdin
|
||||
- name: 🏗️ Build and Push
|
||||
uses: docker/build-push-action@v5
|
||||
with:
|
||||
context: .
|
||||
push: true
|
||||
provenance: false
|
||||
platforms: linux/arm64
|
||||
platforms: linux/amd64
|
||||
build-args: |
|
||||
NEXT_PUBLIC_BASE_URL=${{ needs.prepare.outputs.next_public_url }}
|
||||
NEXT_PUBLIC_TARGET=${{ needs.prepare.outputs.target }}
|
||||
UMAMI_WEBSITE_ID=${{ secrets.UMAMI_WEBSITE_ID || vars.UMAMI_WEBSITE_ID }}
|
||||
UMAMI_API_ENDPOINT=${{ secrets.UMAMI_API_ENDPOINT || vars.UMAMI_API_ENDPOINT || 'https://analytics.infra.mintel.me' }}
|
||||
NPM_TOKEN=${{ secrets.REGISTRY_PASS }}
|
||||
tags: registry.infra.mintel.me/mintel/klz-cables.com:${{ needs.prepare.outputs.image_tag }}
|
||||
NPM_TOKEN=${{ secrets.NPM_TOKEN }}
|
||||
tags: registry.infra.mintel.me/mintel/klz-2026:${{ needs.prepare.outputs.image_tag }}
|
||||
secrets: |
|
||||
"NPM_TOKEN=${{ secrets.REGISTRY_PASS }}"
|
||||
NPM_TOKEN=${{ secrets.NPM_TOKEN }}
|
||||
- name: 🔄 Build and Push Migrator
|
||||
uses: docker/build-push-action@v5
|
||||
with:
|
||||
context: .
|
||||
push: true
|
||||
provenance: false
|
||||
platforms: linux/amd64
|
||||
target: migrator
|
||||
build-args: |
|
||||
NEXT_PUBLIC_BASE_URL=${{ needs.prepare.outputs.next_public_url }}
|
||||
NEXT_PUBLIC_TARGET=${{ needs.prepare.outputs.target }}
|
||||
NPM_TOKEN=${{ secrets.NPM_TOKEN }}
|
||||
tags: registry.infra.mintel.me/mintel/klz-2026:migrate-${{ needs.prepare.outputs.image_tag }}
|
||||
secrets: |
|
||||
NPM_TOKEN=${{ secrets.NPM_TOKEN }}
|
||||
|
||||
# ──────────────────────────────────────────────────────────────────────────────
|
||||
# JOB 4: Deploy
|
||||
@@ -225,43 +255,55 @@ jobs:
|
||||
container:
|
||||
image: catthehacker/ubuntu:act-latest
|
||||
env:
|
||||
TARGET: ${{ needs.prepare.outputs.target }}
|
||||
IMAGE_TAG: ${{ needs.prepare.outputs.image_tag }}
|
||||
PROJECT_NAME: ${{ needs.prepare.outputs.project_name }}
|
||||
TARGET: ${{ needs.prepare.outputs.target }}
|
||||
IMAGE_TAG: ${{ needs.prepare.outputs.image_tag }}
|
||||
PROJECT_NAME: ${{ needs.prepare.outputs.project_name }}
|
||||
NEXT_PUBLIC_BASE_URL: ${{ needs.prepare.outputs.next_public_url }}
|
||||
TRAEFIK_HOST: ${{ needs.prepare.outputs.traefik_host }}
|
||||
|
||||
TRAEFIK_HOST: ${{ needs.prepare.outputs.traefik_host }}
|
||||
GATEKEEPER_HOST: ${{ needs.prepare.outputs.gatekeeper_host }}
|
||||
SLUG: ${{ needs.prepare.outputs.slug }}
|
||||
|
||||
# Secrets mapping (Payload CMS)
|
||||
PAYLOAD_SECRET: ${{ secrets.PAYLOAD_SECRET || vars.PAYLOAD_SECRET || 'you-need-to-set-a-payload-secret' }}
|
||||
PAYLOAD_DB_NAME: ${{ secrets.PAYLOAD_DB_NAME || vars.PAYLOAD_DB_NAME || 'payload' }}
|
||||
PAYLOAD_DB_USER: ${{ secrets.PAYLOAD_DB_USER || vars.PAYLOAD_DB_USER || 'payload' }}
|
||||
PAYLOAD_DB_PASSWORD: ${{ (needs.prepare.outputs.target == 'testing' && secrets.TESTING_PAYLOAD_DB_PASSWORD) || (needs.prepare.outputs.target == 'staging' && secrets.STAGING_PAYLOAD_DB_PASSWORD) || secrets.PAYLOAD_DB_PASSWORD || vars.PAYLOAD_DB_PASSWORD || 'payload' }}
|
||||
|
||||
PAYLOAD_SECRET: ${{ secrets.PAYLOAD_SECRET || vars.PAYLOAD_SECRET || 'you-need-to-set-a-payload-secret' }}
|
||||
PAYLOAD_DB_NAME: ${{ secrets.PAYLOAD_DB_NAME || vars.PAYLOAD_DB_NAME || 'payload' }}
|
||||
PAYLOAD_DB_USER: ${{ secrets.PAYLOAD_DB_USER || vars.PAYLOAD_DB_USER || 'payload' }}
|
||||
PAYLOAD_DB_PASSWORD: ${{ (needs.prepare.outputs.target == 'testing' && secrets.TESTING_PAYLOAD_DB_PASSWORD) || (needs.prepare.outputs.target == 'staging' && secrets.STAGING_PAYLOAD_DB_PASSWORD) || secrets.PAYLOAD_DB_PASSWORD || vars.PAYLOAD_DB_PASSWORD || 'payload' }}
|
||||
|
||||
# Secrets mapping (Mail)
|
||||
MAIL_HOST: ${{ secrets.SMTP_HOST || vars.SMTP_HOST }}
|
||||
MAIL_PORT: ${{ secrets.SMTP_PORT || vars.SMTP_PORT || '587' }}
|
||||
MAIL_USERNAME: ${{ secrets.SMTP_USER || vars.SMTP_USER }}
|
||||
MAIL_PASSWORD: ${{ secrets.SMTP_PASS || vars.SMTP_PASS }}
|
||||
MAIL_FROM: ${{ secrets.SMTP_FROM || vars.SMTP_FROM }}
|
||||
MAIL_RECIPIENTS: ${{ secrets.CONTACT_RECIPIENT || vars.CONTACT_RECIPIENT }}
|
||||
|
||||
MAIL_HOST: ${{ secrets.SMTP_HOST || vars.SMTP_HOST }}
|
||||
MAIL_PORT: ${{ secrets.SMTP_PORT || vars.SMTP_PORT || '587' }}
|
||||
MAIL_USERNAME: ${{ secrets.SMTP_USER || vars.SMTP_USER }}
|
||||
MAIL_PASSWORD: ${{ secrets.SMTP_PASS || vars.SMTP_PASS }}
|
||||
MAIL_FROM: ${{ secrets.SMTP_FROM || vars.SMTP_FROM }}
|
||||
MAIL_RECIPIENTS: ${{ secrets.CONTACT_RECIPIENT || vars.CONTACT_RECIPIENT }}
|
||||
|
||||
# Monitoring
|
||||
SENTRY_DSN: ${{ secrets.SENTRY_DSN || vars.SENTRY_DSN }}
|
||||
|
||||
SENTRY_DSN: ${{ secrets.SENTRY_DSN || vars.SENTRY_DSN }}
|
||||
|
||||
# Gatekeeper
|
||||
GATEKEEPER_PASSWORD: ${{ secrets.GATEKEEPER_PASSWORD || 'klz2026' }}
|
||||
|
||||
# Analytics
|
||||
UMAMI_WEBSITE_ID: ${{ secrets.UMAMI_WEBSITE_ID || vars.UMAMI_WEBSITE_ID }}
|
||||
UMAMI_API_ENDPOINT: ${{ secrets.UMAMI_API_ENDPOINT || vars.UMAMI_API_ENDPOINT || 'https://analytics.infra.mintel.me' }}
|
||||
UMAMI_WEBSITE_ID: ${{ secrets.UMAMI_WEBSITE_ID || vars.UMAMI_WEBSITE_ID }}
|
||||
UMAMI_API_ENDPOINT: ${{ secrets.UMAMI_API_ENDPOINT || vars.UMAMI_API_ENDPOINT || 'https://analytics.infra.mintel.me' }}
|
||||
|
||||
# Search & AI
|
||||
OPENROUTER_API_KEY: ${{ secrets.OPENROUTER_API_KEY || vars.OPENROUTER_API_KEY }}
|
||||
QDRANT_URL: ${{ secrets.QDRANT_URL || vars.QDRANT_URL || 'http://klz-qdrant:6333' }}
|
||||
QDRANT_API_KEY: ${{ secrets.QDRANT_API_KEY || vars.QDRANT_API_KEY }}
|
||||
REDIS_URL: ${{ secrets.REDIS_URL || vars.REDIS_URL || 'redis://klz-redis:6379' }}
|
||||
KABELFACHMANN_MCP_URL: ${{ secrets.KABELFACHMANN_MCP_URL || vars.KABELFACHMANN_MCP_URL || 'http://klz-kabelfachmann:3007/sse' }}
|
||||
# Container Registry (standalone)
|
||||
REGISTRY_USER: ${{ secrets.REGISTRY_USER }}
|
||||
REGISTRY_PASS: ${{ secrets.REGISTRY_PASS }}
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
- name: 📝 Generate Environment
|
||||
shell: bash
|
||||
env:
|
||||
TRAEFIK_RULE: ${{ needs.prepare.outputs.traefik_rule }}
|
||||
ENV_FILE: ${{ needs.prepare.outputs.env_file }}
|
||||
TRAEFIK_RULE: ${{ needs.prepare.outputs.traefik_rule }}
|
||||
ENV_FILE: ${{ needs.prepare.outputs.env_file }}
|
||||
run: |
|
||||
# Middleware Selection Logic
|
||||
# Regular app routes get auth on non-production
|
||||
@@ -269,7 +311,7 @@ jobs:
|
||||
LOG_LEVEL=$( [[ "$TARGET" == "testing" || "$TARGET" == "development" ]] && echo "debug" || echo "info" )
|
||||
COOKIE_DOMAIN=.$(echo $NEXT_PUBLIC_BASE_URL | sed 's|https://||')
|
||||
STD_MW="${PROJECT_NAME}-ratelimit,${PROJECT_NAME}-forward,${PROJECT_NAME}-compress"
|
||||
|
||||
|
||||
if [[ "$TARGET" == "production" ]]; then
|
||||
AUTH_MIDDLEWARE="$STD_MW"
|
||||
COMPOSE_PROFILES=""
|
||||
@@ -281,7 +323,7 @@ jobs:
|
||||
AUTH_MIDDLEWARE_UNPROTECTED="$STD_MW"
|
||||
|
||||
# Gatekeeper Origin
|
||||
GATEKEEPER_ORIGIN="$NEXT_PUBLIC_BASE_URL/gatekeeper"
|
||||
GATEKEEPER_ORIGIN="${NEXT_PUBLIC_BASE_URL}/gatekeeper"
|
||||
|
||||
{
|
||||
echo "# Generated by CI - $TARGET"
|
||||
@@ -312,11 +354,19 @@ jobs:
|
||||
echo "UMAMI_WEBSITE_ID=$UMAMI_WEBSITE_ID"
|
||||
echo "UMAMI_API_ENDPOINT=$UMAMI_API_ENDPOINT"
|
||||
echo ""
|
||||
echo "# Search & AI"
|
||||
echo "OPENROUTER_API_KEY=$OPENROUTER_API_KEY"
|
||||
echo "QDRANT_URL=$QDRANT_URL"
|
||||
echo "QDRANT_API_KEY=$QDRANT_API_KEY"
|
||||
echo "REDIS_URL=$REDIS_URL"
|
||||
echo "KABELFACHMANN_MCP_URL=$KABELFACHMANN_MCP_URL"
|
||||
echo ""
|
||||
echo "TARGET=$TARGET"
|
||||
echo "SENTRY_ENVIRONMENT=$TARGET"
|
||||
echo "PROJECT_NAME=$PROJECT_NAME"
|
||||
printf 'TRAEFIK_HOST_RULE=%s\n' "$TRAEFIK_RULE"
|
||||
echo "TRAEFIK_HOST=$TRAEFIK_HOST"
|
||||
echo "GATEKEEPER_HOST=$GATEKEEPER_HOST"
|
||||
echo "TRAEFIK_ENTRYPOINT=websecure"
|
||||
echo "TRAEFIK_TLS=true"
|
||||
echo "TRAEFIK_CERT_RESOLVER=le"
|
||||
@@ -330,33 +380,101 @@ jobs:
|
||||
cat .env.deploy
|
||||
echo "----------------------------"
|
||||
|
||||
- name: 🔐 Registry Auth
|
||||
id: auth
|
||||
run: |
|
||||
echo "Testing available secrets against git.infra.mintel.me Docker registry..."
|
||||
TOKENS="${{ secrets.GITEA_PAT }} ${{ secrets.MINTEL_PRIVATE_TOKEN }} ${{ secrets.NPM_TOKEN }}"
|
||||
USERS="${{ github.repository_owner }} ${{ github.actor }} marcmintel mintel mmintel"
|
||||
|
||||
VALID_TOKEN=""
|
||||
VALID_USER=""
|
||||
for T in $TOKENS; do
|
||||
if [ -n "$T" ]; then
|
||||
for U in $USERS; do
|
||||
if [ -n "$U" ]; then
|
||||
if echo "$T" | docker login git.infra.mintel.me -u "$U" --password-stdin > /dev/null 2>&1; then
|
||||
VALID_TOKEN="$T"
|
||||
VALID_USER="$U"
|
||||
break 2
|
||||
fi
|
||||
fi
|
||||
done
|
||||
fi
|
||||
done
|
||||
if [ -z "$VALID_TOKEN" ]; then echo "❌ All tokens failed to authenticate!"; exit 1; fi
|
||||
echo "token=$VALID_TOKEN" >> $GITHUB_OUTPUT
|
||||
echo "user=$VALID_USER" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: 🚀 SSH Deploy
|
||||
shell: bash
|
||||
env:
|
||||
ENV_FILE: ${{ needs.prepare.outputs.env_file }}
|
||||
ENV_FILE: ${{ needs.prepare.outputs.env_file }}
|
||||
run: |
|
||||
mkdir -p ~/.ssh
|
||||
echo "${{ secrets.ALPHA_SSH_KEY }}" > ~/.ssh/id_ed25519
|
||||
chmod 600 ~/.ssh/id_ed25519
|
||||
ssh-keyscan -H alpha.mintel.me >> ~/.ssh/known_hosts 2>/dev/null
|
||||
|
||||
# Determine deployment paths
|
||||
echo "Preparing deployment for $TARGET..."
|
||||
|
||||
# Transfer and Restart
|
||||
if [[ "$TARGET" == "production" ]]; then
|
||||
SITE_DIR="/home/deploy/sites/klz-cables.com"
|
||||
elif [[ "$TARGET" == "testing" ]]; then
|
||||
SITE_DIR="/home/deploy/sites/testing.klz-cables.com"
|
||||
elif [[ "$TARGET" == "staging" ]]; then
|
||||
SITE_DIR="/home/deploy/sites/staging.klz-cables.com"
|
||||
else
|
||||
SITE_DIR="/home/deploy/sites/branch.klz-cables.com/${SLUG:-unknown}"
|
||||
SITE_DIR="/home/deploy/sites/branch.klz-cables.com/$SLUG"
|
||||
fi
|
||||
# Transfer files
|
||||
ssh root@alpha.mintel.me "mkdir -p $SITE_DIR"
|
||||
|
||||
scp .env.deploy root@alpha.mintel.me:$SITE_DIR/$ENV_FILE
|
||||
scp docker-compose.yml root@alpha.mintel.me:$SITE_DIR/docker-compose.yml
|
||||
|
||||
ssh root@alpha.mintel.me "cd $SITE_DIR && echo '${{ secrets.REGISTRY_PASS }}' | docker login registry.infra.mintel.me -u '${{ secrets.REGISTRY_USER }}' --password-stdin"
|
||||
ssh root@alpha.mintel.me "cd $SITE_DIR && docker compose -p '${{ needs.prepare.outputs.project_name }}' --env-file '$ENV_FILE' pull"
|
||||
ssh root@alpha.mintel.me "cd $SITE_DIR && docker compose -p '${{ needs.prepare.outputs.project_name }}' --env-file '$ENV_FILE' up -d --remove-orphans"
|
||||
|
||||
|
||||
# Execute remote commands — alpha is pre-logged into registry.infra.mintel.me
|
||||
ssh root@alpha.mintel.me "cd $SITE_DIR && docker compose -p '${{ needs.prepare.outputs.project_name }}' --env-file $ENV_FILE pull && docker compose -p '${{ needs.prepare.outputs.project_name }}' --env-file $ENV_FILE up -d --remove-orphans"
|
||||
|
||||
# Sanitize Payload Migrations: Replace 'dev' push entries with proper migration names.
|
||||
# Without this, Payload prompts interactively for confirmation and blocks forever in Docker.
|
||||
DB_CONTAINER="${{ needs.prepare.outputs.project_name }}-klz-db-1"
|
||||
echo "⏳ Waiting for database container to be ready..."
|
||||
for i in $(seq 1 15); do
|
||||
if ssh root@alpha.mintel.me "docker exec $DB_CONTAINER pg_isready -U payload -q 2>/dev/null"; then
|
||||
echo "✅ Database is ready."
|
||||
break
|
||||
fi
|
||||
echo " Attempt $i/15..."
|
||||
sleep 2
|
||||
done
|
||||
|
||||
echo "🔧 Sanitizing payload_migrations table (if exists)..."
|
||||
REMOTE_DB_USER=$(ssh root@alpha.mintel.me "grep -h '^PAYLOAD_DB_USER=' $SITE_DIR/.env* 2>/dev/null | tail -1 | cut -d= -f2" || echo "payload")
|
||||
REMOTE_DB_NAME=$(ssh root@alpha.mintel.me "grep -h '^PAYLOAD_DB_NAME=' $SITE_DIR/.env* 2>/dev/null | tail -1 | cut -d= -f2" || echo "payload")
|
||||
REMOTE_DB_USER="${REMOTE_DB_USER:-payload}"
|
||||
REMOTE_DB_NAME="${REMOTE_DB_NAME:-payload}"
|
||||
|
||||
# Run Payload migrations via a temporary container before restarting the app.
|
||||
# This ensures fresh branch deployments (empty DBs) get their schema on first deploy.
|
||||
echo "🔄 Running Payload migrations..."
|
||||
MIGRATOR_IMAGE="registry.infra.mintel.me/mintel/klz-2026:migrate-$IMAGE_TAG"
|
||||
|
||||
ssh root@alpha.mintel.me "
|
||||
echo '${{ steps.auth.outputs.token }}' | docker login registry.infra.mintel.me -u '${{ steps.auth.outputs.user }}' --password-stdin 2>/dev/null || true
|
||||
docker pull $MIGRATOR_IMAGE
|
||||
docker run --rm \
|
||||
--network ${PROJECT_NAME}_default \
|
||||
--env-file $SITE_DIR/$ENV_FILE \
|
||||
$MIGRATOR_IMAGE \
|
||||
&& echo '✅ Migrations complete.' \
|
||||
|| echo '⚠️ Migrations failed or already up-to-date — continuing.'
|
||||
"
|
||||
|
||||
# Restart app to pick up clean migration state
|
||||
APP_CONTAINER="${PROJECT_NAME}-klz-app-1"
|
||||
ssh root@alpha.mintel.me "docker restart $APP_CONTAINER"
|
||||
ssh root@alpha.mintel.me "docker system prune -f --filter 'until=24h'"
|
||||
|
||||
- name: 🧹 Post-Deploy Cleanup (Runner)
|
||||
@@ -364,12 +482,11 @@ jobs:
|
||||
run: docker builder prune -f --filter "until=1h"
|
||||
|
||||
# ──────────────────────────────────────────────────────────────────────────────
|
||||
# JOB 5: Smoke Test (OG Images)
|
||||
# JOB 5: Post-Deploy Verification (Smoke Tests + Quality Gates)
|
||||
# ──────────────────────────────────────────────────────────────────────────────
|
||||
smoke_test:
|
||||
name: 🧪 Smoke Test
|
||||
post_deploy_checks:
|
||||
name: 🧪 Post-Deploy Verification
|
||||
needs: [prepare, deploy]
|
||||
continue-on-error: true
|
||||
if: needs.deploy.result == 'success' && needs.prepare.outputs.target != 'branch'
|
||||
runs-on: docker
|
||||
container:
|
||||
@@ -387,228 +504,139 @@ jobs:
|
||||
node-version: 20
|
||||
- name: 🔐 Registry Auth
|
||||
run: |
|
||||
echo "@mintel:registry=https://${{ vars.REGISTRY_HOST || 'npm.infra.mintel.me' }}" > .npmrc
|
||||
echo "//${{ vars.REGISTRY_HOST || 'npm.infra.mintel.me' }}/:_authToken=${{ secrets.REGISTRY_PASS }}" >> .npmrc
|
||||
echo "@mintel:registry=https://git.infra.mintel.me/api/packages/mmintel/npm" > .npmrc
|
||||
echo "//git.infra.mintel.me/api/packages/mmintel/npm/:_authToken=${{ secrets.NPM_TOKEN }}" >> .npmrc
|
||||
- name: Install dependencies
|
||||
run: pnpm install --frozen-lockfile
|
||||
- name: 🚀 Run OG Image Check
|
||||
id: deps
|
||||
run: |
|
||||
pnpm store prune
|
||||
pnpm install --no-frozen-lockfile
|
||||
- name: 📦 Cache APT Packages
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: /var/cache/apt/archives
|
||||
key: apt-cache-${{ runner.os }}-${{ runner.arch }}-chromium
|
||||
|
||||
- name: 💾 Cache Chromium
|
||||
id: cache-chromium
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: /usr/bin/chromium
|
||||
key: ${{ runner.os }}-chromium-native-${{ hashFiles('package.json') }}
|
||||
|
||||
- name: 🔍 Install Chromium (Native & ARM64)
|
||||
if: steps.cache-chromium.outputs.cache-hit != 'true'
|
||||
run: |
|
||||
rm -f /etc/apt/apt.conf.d/docker-clean
|
||||
apt-get update
|
||||
apt-get install -y gnupg wget ca-certificates
|
||||
OS_ID=$(. /etc/os-release && echo $ID)
|
||||
CODENAME=$(. /etc/os-release && echo $VERSION_CODENAME)
|
||||
if [ "$OS_ID" = "debian" ]; then
|
||||
apt-get install -y chromium
|
||||
else
|
||||
mkdir -p /etc/apt/keyrings
|
||||
KEY_ID="82BB6851C64F6880"
|
||||
wget -qO- "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x$KEY_ID" | gpg --dearmor > /etc/apt/keyrings/xtradeb.gpg
|
||||
echo "deb [signed-by=/etc/apt/keyrings/xtradeb.gpg] http://ppa.launchpad.net/xtradeb/apps/ubuntu $CODENAME main" > /etc/apt/sources.list.d/xtradeb-ppa.list
|
||||
printf "Package: *\nPin: release o=LP-PPA-xtradeb-apps\nPin-Priority: 1001\n" > /etc/apt/preferences.d/xtradeb
|
||||
apt-get update
|
||||
apt-get install -y --allow-downgrades chromium
|
||||
fi
|
||||
[ -f /usr/bin/chromium ] && ln -sf /usr/bin/chromium /usr/bin/google-chrome
|
||||
[ -f /usr/bin/chromium ] && ln -sf /usr/bin/chromium /usr/bin/chromium-browser
|
||||
|
||||
# ── Critical Smoke Tests (MUST pass) ──────────────────────────────────
|
||||
- name: 🏥 CMS Deep Health Check
|
||||
env:
|
||||
DEPLOY_URL: ${{ needs.prepare.outputs.next_public_url }}
|
||||
GK_PASS: ${{ secrets.GATEKEEPER_PASSWORD || 'klz2026' }}
|
||||
run: |
|
||||
echo "Waiting 10s for app to fully start..."
|
||||
sleep 10
|
||||
echo "Checking basic health..."
|
||||
curl -sf "$DEPLOY_URL/health" || { echo "❌ Basic health check failed"; exit 1; }
|
||||
echo "✅ Basic health OK"
|
||||
echo "Checking CMS DB connectivity..."
|
||||
RESPONSE=$(curl -sf "$DEPLOY_URL/api/health/cms?gk_bypass=$GK_PASS" 2>&1) || {
|
||||
echo "❌ CMS health check failed!"
|
||||
echo "$RESPONSE"
|
||||
echo ""
|
||||
echo "This usually means Payload CMS migrations failed or DB tables are missing."
|
||||
echo "Check: docker logs \$APP_CONTAINER | grep -i error"
|
||||
exit 1
|
||||
}
|
||||
echo "✅ CMS health: $RESPONSE"
|
||||
- name: 🚀 OG Image Check
|
||||
if: always() && steps.deps.outcome == 'success'
|
||||
env:
|
||||
TEST_URL: ${{ needs.prepare.outputs.next_public_url }}
|
||||
run: pnpm run check:og
|
||||
|
||||
# ──────────────────────────────────────────────────────────────────────────────
|
||||
# JOB 6: Lighthouse (Performance & Accessibility)
|
||||
# ──────────────────────────────────────────────────────────────────────────────
|
||||
lighthouse:
|
||||
name: ⚡ Lighthouse
|
||||
needs: [prepare, deploy]
|
||||
continue-on-error: true
|
||||
if: success() && needs.prepare.outputs.target != 'skip' && needs.prepare.outputs.target != 'branch'
|
||||
runs-on: docker
|
||||
container:
|
||||
image: catthehacker/ubuntu:act-latest
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
- name: Setup pnpm
|
||||
uses: pnpm/action-setup@v3
|
||||
- name: 🌐 Core Smoke Tests (HTTP, API, Locale)
|
||||
if: always() && steps.deps.outcome == 'success'
|
||||
uses: https://git.infra.mintel.me/mmintel/at-mintel/.gitea/actions/core-smoke-tests@main
|
||||
with:
|
||||
version: 10
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 20
|
||||
TARGET_URL: ${{ needs.prepare.outputs.next_public_url }}
|
||||
GATEKEEPER_PASSWORD: ${{ secrets.GATEKEEPER_PASSWORD || 'klz2026' }}
|
||||
UMAMI_API_ENDPOINT: ${{ secrets.UMAMI_API_ENDPOINT || vars.UMAMI_API_ENDPOINT || 'https://analytics.infra.mintel.me' }}
|
||||
SENTRY_DSN: ${{ secrets.SENTRY_DSN || vars.SENTRY_DSN }}
|
||||
|
||||
- name: 🔐 Registry Auth
|
||||
run: |
|
||||
echo "@mintel:registry=https://${{ vars.REGISTRY_HOST || 'npm.infra.mintel.me' }}" > .npmrc
|
||||
echo "//${{ vars.REGISTRY_HOST || 'npm.infra.mintel.me' }}/:_authToken=${{ secrets.REGISTRY_PASS }}" >> .npmrc
|
||||
- name: Install dependencies
|
||||
run: pnpm install --frozen-lockfile
|
||||
- name: 🔍 Install Chromium (Native & ARM64)
|
||||
run: |
|
||||
rm -f /etc/apt/apt.conf.d/docker-clean
|
||||
apt-get update
|
||||
apt-get install -y gnupg wget ca-certificates
|
||||
|
||||
# Detect OS
|
||||
OS_ID=$(. /etc/os-release && echo $ID)
|
||||
CODENAME=$(. /etc/os-release && echo $VERSION_CODENAME)
|
||||
|
||||
if [ "$OS_ID" = "debian" ]; then
|
||||
echo "🎯 Debian detected - installing native chromium"
|
||||
apt-get install -y chromium
|
||||
else
|
||||
echo "🎯 Ubuntu detected - adding xtradeb PPA"
|
||||
mkdir -p /etc/apt/keyrings
|
||||
KEY_ID="82BB6851C64F6880"
|
||||
|
||||
# Fetch PPA key
|
||||
wget -qO- "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x$KEY_ID" | gpg --dearmor > /etc/apt/keyrings/xtradeb.gpg
|
||||
|
||||
# Add PPA repository
|
||||
echo "deb [signed-by=/etc/apt/keyrings/xtradeb.gpg] http://ppa.launchpad.net/xtradeb/apps/ubuntu $CODENAME main" > /etc/apt/sources.list.d/xtradeb-ppa.list
|
||||
|
||||
# PRIORITY PINNING: Force PPA over Snap-dummy
|
||||
printf "Package: *\nPin: release o=LP-PPA-xtradeb-apps\nPin-Priority: 1001\n" > /etc/apt/preferences.d/xtradeb
|
||||
|
||||
apt-get update
|
||||
apt-get install -y --allow-downgrades chromium
|
||||
fi
|
||||
|
||||
# Standardize binary paths
|
||||
[ -f /usr/bin/chromium ] && ln -sf /usr/bin/chromium /usr/bin/google-chrome
|
||||
[ -f /usr/bin/chromium ] && ln -sf /usr/bin/chromium /usr/bin/chromium-browser
|
||||
- name: ⚡ Run Lighthouse CI
|
||||
- name: 📝 E2E Form Submission Test
|
||||
if: always() && steps.deps.outcome == 'success'
|
||||
env:
|
||||
NEXT_PUBLIC_BASE_URL: ${{ needs.prepare.outputs.next_public_url }}
|
||||
GATEKEEPER_PASSWORD: ${{ secrets.GATEKEEPER_PASSWORD || 'klz2026' }}
|
||||
CHROME_PATH: /usr/bin/chromium
|
||||
PAGESPEED_LIMIT: 8
|
||||
run: pnpm run pagespeed:test
|
||||
PUPPETEER_EXECUTABLE_PATH: /usr/bin/chromium
|
||||
run: pnpm run check:forms
|
||||
|
||||
# ──────────────────────────────────────────────────────────────────────────────
|
||||
# JOB 7: WCAG Audit
|
||||
# ──────────────────────────────────────────────────────────────────────────────
|
||||
wcag:
|
||||
name: ♿ WCAG
|
||||
needs: [prepare, deploy, smoke_test]
|
||||
continue-on-error: true
|
||||
if: success() && needs.prepare.outputs.target != 'skip' && needs.prepare.outputs.target != 'branch'
|
||||
runs-on: docker
|
||||
container:
|
||||
image: catthehacker/ubuntu:act-latest
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
- name: Setup pnpm
|
||||
uses: pnpm/action-setup@v3
|
||||
with:
|
||||
version: 10
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 20
|
||||
|
||||
- name: 🔐 Registry Auth
|
||||
run: |
|
||||
echo "@mintel:registry=https://${{ vars.REGISTRY_HOST || 'npm.infra.mintel.me' }}" > .npmrc
|
||||
echo "//${{ vars.REGISTRY_HOST || 'npm.infra.mintel.me' }}/:_authToken=${{ secrets.REGISTRY_PASS }}" >> .npmrc
|
||||
- name: Install dependencies
|
||||
run: pnpm install --frozen-lockfile
|
||||
- name: 🔍 Install Chromium (Native & ARM64)
|
||||
run: |
|
||||
rm -f /etc/apt/apt.conf.d/docker-clean
|
||||
apt-get update
|
||||
apt-get install -y gnupg wget ca-certificates
|
||||
|
||||
# Detect OS
|
||||
OS_ID=$(. /etc/os-release && echo $ID)
|
||||
CODENAME=$(. /etc/os-release && echo $VERSION_CODENAME)
|
||||
|
||||
if [ "$OS_ID" = "debian" ]; then
|
||||
echo "🎯 Debian detected - installing native chromium"
|
||||
apt-get install -y chromium
|
||||
else
|
||||
echo "🎯 Ubuntu detected - adding xtradeb PPA"
|
||||
mkdir -p /etc/apt/keyrings
|
||||
KEY_ID="82BB6851C64F6880"
|
||||
|
||||
# Fetch PPA key
|
||||
wget -qO- "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x$KEY_ID" | gpg --dearmor > /etc/apt/keyrings/xtradeb.gpg
|
||||
|
||||
# Add PPA repository
|
||||
echo "deb [signed-by=/etc/apt/keyrings/xtradeb.gpg] http://ppa.launchpad.net/xtradeb/apps/ubuntu $CODENAME main" > /etc/apt/sources.list.d/xtradeb-ppa.list
|
||||
|
||||
# PRIORITY PINNING: Force PPA over Snap-dummy
|
||||
printf "Package: *\nPin: release o=LP-PPA-xtradeb-apps\nPin-Priority: 1001\n" > /etc/apt/preferences.d/xtradeb
|
||||
|
||||
apt-get update
|
||||
apt-get install -y --allow-downgrades chromium
|
||||
fi
|
||||
|
||||
# Standardize binary paths
|
||||
[ -f /usr/bin/chromium ] && ln -sf /usr/bin/chromium /usr/bin/google-chrome
|
||||
[ -f /usr/bin/chromium ] && ln -sf /usr/bin/chromium /usr/bin/chromium-browser
|
||||
- name: ♿ Run WCAG Audit
|
||||
env:
|
||||
NEXT_PUBLIC_BASE_URL: ${{ needs.prepare.outputs.next_public_url }}
|
||||
GATEKEEPER_PASSWORD: ${{ secrets.GATEKEEPER_PASSWORD || 'klz2026' }}
|
||||
CHROME_PATH: /usr/bin/chromium
|
||||
PAGESPEED_LIMIT: 8
|
||||
run: pnpm run check:wcag
|
||||
|
||||
# ──────────────────────────────────────────────────────────────────────────────
|
||||
# JOB 9: Quality Assertions
|
||||
# ──────────────────────────────────────────────────────────────────────────────
|
||||
quality_assertions:
|
||||
name: 🛡️ Quality Gates
|
||||
needs: [prepare, deploy, smoke_test]
|
||||
continue-on-error: true
|
||||
if: success() && needs.prepare.outputs.target != 'skip' && needs.prepare.outputs.target != 'branch'
|
||||
runs-on: docker
|
||||
container:
|
||||
image: catthehacker/ubuntu:act-latest
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
- name: Setup pnpm
|
||||
uses: pnpm/action-setup@v3
|
||||
with:
|
||||
version: 10
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 20
|
||||
- name: 🔐 Registry Auth
|
||||
run: |
|
||||
echo "@mintel:registry=https://${{ vars.REGISTRY_HOST || 'npm.infra.mintel.me' }}" > .npmrc
|
||||
echo "//${{ vars.REGISTRY_HOST || 'npm.infra.mintel.me' }}/:_authToken=${{ secrets.REGISTRY_PASS }}" >> .npmrc
|
||||
- name: Install dependencies
|
||||
run: pnpm install --frozen-lockfile
|
||||
- name: 🌐 HTML DOM Validation
|
||||
env:
|
||||
NEXT_PUBLIC_BASE_URL: ${{ needs.prepare.outputs.next_public_url }}
|
||||
GATEKEEPER_PASSWORD: ${{ secrets.GATEKEEPER_PASSWORD || 'klz2026' }}
|
||||
run: pnpm check:html
|
||||
- name: 🔒 Security Headers Scan
|
||||
env:
|
||||
NEXT_PUBLIC_BASE_URL: ${{ needs.prepare.outputs.next_public_url }}
|
||||
GATEKEEPER_PASSWORD: ${{ secrets.GATEKEEPER_PASSWORD || 'klz2026' }}
|
||||
run: pnpm check:security
|
||||
- name: 🔗 Lychee Deep Link Crawl
|
||||
env:
|
||||
NEXT_PUBLIC_BASE_URL: ${{ needs.prepare.outputs.next_public_url }}
|
||||
GATEKEEPER_PASSWORD: ${{ secrets.GATEKEEPER_PASSWORD || 'klz2026' }}
|
||||
run: pnpm check:links
|
||||
- name: 🖼️ Dynamic Asset & Image Integrity Scan
|
||||
env:
|
||||
NEXT_PUBLIC_BASE_URL: ${{ needs.prepare.outputs.next_public_url }}
|
||||
GATEKEEPER_PASSWORD: ${{ secrets.GATEKEEPER_PASSWORD || 'klz2026' }}
|
||||
run: pnpm check:assets
|
||||
|
||||
# ──────────────────────────────────────────────────────────────────────────────
|
||||
# JOB 10: Notifications
|
||||
# JOB 7: Notifications
|
||||
# ──────────────────────────────────────────────────────────────────────────────
|
||||
notifications:
|
||||
name: 🔔 Notify
|
||||
needs: [prepare, deploy, smoke_test, lighthouse, wcag, quality_assertions]
|
||||
needs: [prepare, deploy, post_deploy_checks]
|
||||
if: always()
|
||||
runs-on: docker
|
||||
container:
|
||||
image: catthehacker/ubuntu:act-latest
|
||||
steps:
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 20
|
||||
- name: 🔔 Gotify
|
||||
shell: bash
|
||||
run: |
|
||||
STATUS="${{ needs.deploy.result }}"
|
||||
TITLE="klz-cables.com: $STATUS"
|
||||
[[ "$STATUS" == "success" ]] && PRIORITY=5 || PRIORITY=8
|
||||
|
||||
DEPLOY="${{ needs.deploy.result }}"
|
||||
SMOKE="${{ needs.post_deploy_checks.result }}"
|
||||
PERF="${{ needs.post_deploy_checks.result }}"
|
||||
TARGET="${{ needs.prepare.outputs.target }}"
|
||||
VERSION="${{ needs.prepare.outputs.image_tag }}"
|
||||
URL="${{ needs.prepare.outputs.next_public_url }}"
|
||||
|
||||
# Gotify priority scale:
|
||||
# 1-3 = low (silent/info)
|
||||
# 4-5 = normal
|
||||
# 6-7 = high (warning)
|
||||
# 8-10 = critical (alarm)
|
||||
if [[ "$DEPLOY" != "success" ]]; then
|
||||
PRIORITY=10
|
||||
EMOJI="🚨"
|
||||
STATUS_LINE="DEPLOY FAILED"
|
||||
elif [[ "$SMOKE" != "success" ]]; then
|
||||
PRIORITY=8
|
||||
EMOJI="⚠️"
|
||||
STATUS_LINE="Smoke tests failed"
|
||||
elif [[ "$PERF" != "success" ]]; then
|
||||
PRIORITY=5
|
||||
EMOJI="📉"
|
||||
STATUS_LINE="Performance degraded"
|
||||
else
|
||||
PRIORITY=2
|
||||
EMOJI="✅"
|
||||
STATUS_LINE="All checks passed"
|
||||
fi
|
||||
|
||||
TITLE="$EMOJI klz-cables.com $VERSION -> $TARGET"
|
||||
MESSAGE="$STATUS_LINE | Deploy: $DEPLOY | Smoke: $SMOKE | $URL"
|
||||
|
||||
curl -s -k -X POST "${{ secrets.GOTIFY_URL }}/message?token=${{ secrets.GOTIFY_TOKEN }}" \
|
||||
-F "title=$TITLE" \
|
||||
-F "message=Deploy to ${{ needs.prepare.outputs.target }} finished with status $STATUS.\nVersion: ${{ needs.prepare.outputs.image_tag }}" \
|
||||
-F "message=$MESSAGE" \
|
||||
-F "priority=$PRIORITY" || true
|
||||
|
||||
233
.gitea/workflows/qa.yml
Normal file
233
.gitea/workflows/qa.yml
Normal file
@@ -0,0 +1,233 @@
|
||||
name: Nightly QA
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
schedule:
|
||||
- cron: '0 3 * * *'
|
||||
workflow_dispatch:
|
||||
|
||||
env:
|
||||
TARGET_URL: 'https://testing.klz-cables.com'
|
||||
PROJECT_NAME: 'klz-2026'
|
||||
|
||||
jobs:
|
||||
# ────────────────────────────────────────────────────
|
||||
# 1. Static Checks (HTML, Assets, HTTP)
|
||||
# ────────────────────────────────────────────────────
|
||||
static:
|
||||
name: 🔍 Static Analysis
|
||||
runs-on: docker
|
||||
container:
|
||||
image: catthehacker/ubuntu:act-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: pnpm/action-setup@v3
|
||||
with:
|
||||
version: 10
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 20
|
||||
- name: 🔐 Registry Auth
|
||||
run: |
|
||||
echo "@mintel:registry=https://git.infra.mintel.me/api/packages/mmintel/npm" > .npmrc
|
||||
echo "//git.infra.mintel.me/api/packages/mmintel/npm/:_authToken=${{ secrets.NPM_TOKEN }}" >> .npmrc
|
||||
- name: 📦 Cache node_modules
|
||||
uses: actions/cache@v4
|
||||
id: cache-deps
|
||||
with:
|
||||
path: node_modules
|
||||
key: pnpm-${{ hashFiles('pnpm-lock.yaml') }}
|
||||
- name: Install
|
||||
if: steps.cache-deps.outputs.cache-hit != 'true'
|
||||
run: |
|
||||
pnpm store prune
|
||||
pnpm install --no-frozen-lockfile
|
||||
- name: 🌐 Install Chrome & Dependencies
|
||||
run: |
|
||||
apt-get update && apt-get install -y libnss3 libnspr4 libatk1.0-0 libatk-bridge2.0-0 libcups2 libdrm2 libxkbcommon0 libxcomposite1 libxdamage1 libxext6 libxfixes3 libxrandr2 libgbm1 libasound2t64 libpango-1.0-0 libcairo2
|
||||
npx puppeteer browsers install chrome
|
||||
- name: 🌐 HTML Validation
|
||||
env:
|
||||
NEXT_PUBLIC_BASE_URL: ${{ env.TARGET_URL }}
|
||||
GATEKEEPER_PASSWORD: ${{ secrets.GATEKEEPER_PASSWORD }}
|
||||
run: pnpm run check:html
|
||||
- name: 🖼️ Broken Assets
|
||||
env:
|
||||
NEXT_PUBLIC_BASE_URL: ${{ env.TARGET_URL }}
|
||||
GATEKEEPER_PASSWORD: ${{ secrets.GATEKEEPER_PASSWORD }}
|
||||
ASSET_CHECK_LIMIT: 10
|
||||
run: pnpm run check:assets
|
||||
- name: 🔒 HTTP Headers
|
||||
env:
|
||||
NEXT_PUBLIC_BASE_URL: ${{ env.TARGET_URL }}
|
||||
GATEKEEPER_PASSWORD: ${{ secrets.GATEKEEPER_PASSWORD }}
|
||||
run: pnpm run check:http
|
||||
|
||||
# ────────────────────────────────────────────────────
|
||||
# 2. Accessibility (WCAG)
|
||||
# ────────────────────────────────────────────────────
|
||||
a11y:
|
||||
name: ♿ Accessibility
|
||||
runs-on: docker
|
||||
container:
|
||||
image: catthehacker/ubuntu:act-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: pnpm/action-setup@v3
|
||||
with:
|
||||
version: 10
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 20
|
||||
- name: 🔐 Registry Auth
|
||||
run: |
|
||||
echo "@mintel:registry=https://git.infra.mintel.me/api/packages/mmintel/npm" > .npmrc
|
||||
echo "//git.infra.mintel.me/api/packages/mmintel/npm/:_authToken=${{ secrets.NPM_TOKEN }}" >> .npmrc
|
||||
- name: 📦 Cache node_modules
|
||||
uses: actions/cache@v4
|
||||
id: cache-deps
|
||||
with:
|
||||
path: node_modules
|
||||
key: pnpm-${{ hashFiles('pnpm-lock.yaml') }}
|
||||
- name: Install
|
||||
if: steps.cache-deps.outputs.cache-hit != 'true'
|
||||
run: |
|
||||
pnpm store prune
|
||||
pnpm install --no-frozen-lockfile
|
||||
- name: 🌐 Install Chrome & Dependencies
|
||||
run: |
|
||||
apt-get update && apt-get install -y libnss3 libnspr4 libatk1.0-0 libatk-bridge2.0-0 libcups2 libdrm2 libxkbcommon0 libxcomposite1 libxdamage1 libxext6 libxfixes3 libxrandr2 libgbm1 libasound2t64 libpango-1.0-0 libcairo2
|
||||
npx puppeteer browsers install chrome
|
||||
- name: ♿ WCAG Scan
|
||||
continue-on-error: true
|
||||
env:
|
||||
NEXT_PUBLIC_BASE_URL: ${{ env.TARGET_URL }}
|
||||
GATEKEEPER_PASSWORD: ${{ secrets.GATEKEEPER_PASSWORD }}
|
||||
run: pnpm run check:wcag
|
||||
|
||||
# ────────────────────────────────────────────────────
|
||||
# 3. Performance (Lighthouse)
|
||||
# ────────────────────────────────────────────────────
|
||||
lighthouse:
|
||||
name: 🎭 Lighthouse
|
||||
runs-on: docker
|
||||
container:
|
||||
image: catthehacker/ubuntu:act-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: pnpm/action-setup@v3
|
||||
with:
|
||||
version: 10
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 20
|
||||
- name: 🔐 Registry Auth
|
||||
run: |
|
||||
echo "@mintel:registry=https://git.infra.mintel.me/api/packages/mmintel/npm" > .npmrc
|
||||
echo "//git.infra.mintel.me/api/packages/mmintel/npm/:_authToken=${{ secrets.NPM_TOKEN }}" >> .npmrc
|
||||
- name: 📦 Cache node_modules
|
||||
uses: actions/cache@v4
|
||||
id: cache-deps
|
||||
with:
|
||||
path: node_modules
|
||||
key: pnpm-${{ hashFiles('pnpm-lock.yaml') }}
|
||||
- name: Install
|
||||
if: steps.cache-deps.outputs.cache-hit != 'true'
|
||||
run: |
|
||||
pnpm store prune
|
||||
pnpm install --no-frozen-lockfile
|
||||
- name: 🌐 Install Chrome & Dependencies
|
||||
run: |
|
||||
apt-get update && apt-get install -y libnss3 libnspr4 libatk1.0-0 libatk-bridge2.0-0 libcups2 libdrm2 libxkbcommon0 libxcomposite1 libxdamage1 libxext6 libxfixes3 libxrandr2 libgbm1 libasound2t64 libpango-1.0-0 libcairo2
|
||||
npx puppeteer browsers install chrome
|
||||
- name: 🎭 Desktop
|
||||
env:
|
||||
NEXT_PUBLIC_BASE_URL: ${{ env.TARGET_URL }}
|
||||
GATEKEEPER_PASSWORD: ${{ secrets.GATEKEEPER_PASSWORD }}
|
||||
PAGESPEED_LIMIT: 5
|
||||
run: pnpm run pagespeed:test -- --collect.settings.preset=desktop
|
||||
- name: 📱 Mobile
|
||||
env:
|
||||
NEXT_PUBLIC_BASE_URL: ${{ env.TARGET_URL }}
|
||||
GATEKEEPER_PASSWORD: ${{ secrets.GATEKEEPER_PASSWORD }}
|
||||
PAGESPEED_LIMIT: 5
|
||||
run: pnpm run pagespeed:test -- --collect.settings.preset=mobile
|
||||
|
||||
# ────────────────────────────────────────────────────
|
||||
# 4. Link Check & Dependency Audit
|
||||
# ────────────────────────────────────────────────────
|
||||
links:
|
||||
name: 🔗 Links & Deps
|
||||
runs-on: docker
|
||||
container:
|
||||
image: catthehacker/ubuntu:act-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: pnpm/action-setup@v3
|
||||
with:
|
||||
version: 10
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 20
|
||||
- name: 🔐 Registry Auth
|
||||
run: |
|
||||
echo "@mintel:registry=https://git.infra.mintel.me/api/packages/mmintel/npm" > .npmrc
|
||||
echo "//git.infra.mintel.me/api/packages/mmintel/npm/:_authToken=${{ secrets.NPM_TOKEN }}" >> .npmrc
|
||||
- name: 📦 Cache node_modules
|
||||
uses: actions/cache@v4
|
||||
id: cache-deps
|
||||
with:
|
||||
path: node_modules
|
||||
key: pnpm-${{ hashFiles('pnpm-lock.yaml') }}
|
||||
- name: Install
|
||||
if: steps.cache-deps.outputs.cache-hit != 'true'
|
||||
run: |
|
||||
pnpm store prune
|
||||
pnpm install --no-frozen-lockfile
|
||||
- name: 📦 Depcheck
|
||||
continue-on-error: true
|
||||
run: pnpm dlx depcheck --ignores="*eslint*,*typescript*,*tailwindcss*,*postcss*,*prettier*,*@types/*,*husky*,*lint-staged*,*@next/*,*@lhci/*,*commitlint*,*cspell*,*rimraf*,*@payloadcms/*,*start-server-and-test*,*html-validate*,*critters*,*dotenv*,*turbo*" || true
|
||||
- name: 🔗 Lychee Link Check
|
||||
uses: lycheeverse/lychee-action@v2
|
||||
with:
|
||||
args: --accept 200,204,429 --timeout 15 --insecure --exclude "file://*" --exclude "https://logs.infra.***.me/*" --exclude "https://git.infra.***.me/*" --exclude "https://umami.is/docs/best-practices" --exclude "https://***/*" .
|
||||
fail: true
|
||||
|
||||
# ────────────────────────────────────────────────────
|
||||
# 5. Notification
|
||||
# ────────────────────────────────────────────────────
|
||||
notify:
|
||||
name: 🔔 Notify
|
||||
needs: [static, a11y, lighthouse, links]
|
||||
if: always()
|
||||
runs-on: docker
|
||||
container:
|
||||
image: catthehacker/ubuntu:act-latest
|
||||
steps:
|
||||
- name: 🔔 Gotify
|
||||
shell: bash
|
||||
run: |
|
||||
STATIC="${{ needs.static.result }}"
|
||||
A11Y="${{ needs.a11y.result }}"
|
||||
LIGHTHOUSE="${{ needs.lighthouse.result }}"
|
||||
LINKS="${{ needs.links.result }}"
|
||||
|
||||
if [[ "$STATIC" != "success" || "$LIGHTHOUSE" != "success" ]]; then
|
||||
PRIORITY=8
|
||||
EMOJI="🚨"
|
||||
STATUS="Failed"
|
||||
else
|
||||
PRIORITY=2
|
||||
EMOJI="✅"
|
||||
STATUS="Passed"
|
||||
fi
|
||||
|
||||
TITLE="$EMOJI ${{ env.PROJECT_NAME }} QA $STATUS"
|
||||
MESSAGE="Static: $STATIC | A11y: $A11Y | Lighthouse: $LIGHTHOUSE | Links: $LINKS
|
||||
${{ env.TARGET_URL }}"
|
||||
|
||||
curl -s -k -X POST "${{ secrets.GOTIFY_URL }}/message?token=${{ secrets.GOTIFY_TOKEN }}" \
|
||||
-F "title=$TITLE" \
|
||||
-F "message=$MESSAGE" \
|
||||
-F "priority=$PRIORITY" || true
|
||||
6
.gitignore
vendored
6
.gitignore
vendored
@@ -28,3 +28,9 @@ html-errors*.json
|
||||
reference/
|
||||
# Database backups
|
||||
backups/
|
||||
|
||||
.env
|
||||
|
||||
# Payload CMS auto-generated
|
||||
# Knowledge base source files
|
||||
kabelhandbuch.txt
|
||||
@@ -17,6 +17,10 @@
|
||||
"valid-id": "off",
|
||||
"element-required-attributes": "off",
|
||||
"attribute-empty-style": "off",
|
||||
"element-permitted-content": "off"
|
||||
"element-permitted-content": "off",
|
||||
"element-required-content": "off",
|
||||
"element-permitted-parent": "off",
|
||||
"no-implicit-close": "off",
|
||||
"close-order": "off"
|
||||
}
|
||||
}
|
||||
|
||||
4
.npmrc
4
.npmrc
@@ -1,3 +1 @@
|
||||
@mintel:registry=https://npm.infra.mintel.me/
|
||||
//npm.infra.mintel.me/:_authToken=${NPM_TOKEN}
|
||||
always-auth=true
|
||||
@mintel:registry=https://git.infra.mintel.me/api/packages/mmintel/npm/
|
||||
|
||||
33
Dockerfile
33
Dockerfile
@@ -1,18 +1,16 @@
|
||||
# Stage 1: Builder
|
||||
FROM registry.infra.mintel.me/mintel/nextjs:v1.7.10 AS base
|
||||
FROM git.infra.mintel.me/mmintel/nextjs:latest AS base
|
||||
WORKDIR /app
|
||||
|
||||
# Arguments for build-time configuration
|
||||
ARG NEXT_PUBLIC_BASE_URL
|
||||
ARG NEXT_PUBLIC_TARGET
|
||||
ARG DIRECTUS_URL
|
||||
ARG UMAMI_WEBSITE_ID
|
||||
ARG UMAMI_API_ENDPOINT
|
||||
|
||||
# Environment variables for Next.js build
|
||||
ENV NEXT_PUBLIC_BASE_URL=$NEXT_PUBLIC_BASE_URL
|
||||
ENV NEXT_PUBLIC_TARGET=$NEXT_PUBLIC_TARGET
|
||||
ENV DIRECTUS_URL=$DIRECTUS_URL
|
||||
ENV UMAMI_WEBSITE_ID=$UMAMI_WEBSITE_ID
|
||||
ENV UMAMI_API_ENDPOINT=$UMAMI_API_ENDPOINT
|
||||
ENV SKIP_RUNTIME_ENV_VALIDATION=true
|
||||
@@ -20,14 +18,16 @@ ENV CI=true
|
||||
|
||||
# Copy lockfile and manifest for dependency installation caching
|
||||
COPY pnpm-lock.yaml package.json .npmrc* ./
|
||||
COPY patches* ./patches/
|
||||
|
||||
# Configure private registry and install dependencies
|
||||
RUN --mount=type=cache,id=pnpm,target=/pnpm/store \
|
||||
--mount=type=secret,id=NPM_TOKEN \
|
||||
export NPM_TOKEN=$(cat /run/secrets/NPM_TOKEN) && \
|
||||
echo "@mintel:registry=https://npm.infra.mintel.me" > .npmrc && \
|
||||
echo "//npm.infra.mintel.me/:_authToken=\${NPM_TOKEN}" >> .npmrc && \
|
||||
pnpm install --frozen-lockfile && \
|
||||
echo "@mintel:registry=https://git.infra.mintel.me/api/packages/mmintel/npm" > .npmrc && \
|
||||
echo "//git.infra.mintel.me/api/packages/mmintel/npm/:_authToken=\${NPM_TOKEN}" >> .npmrc && \
|
||||
pnpm store prune && \
|
||||
pnpm install --no-frozen-lockfile && \
|
||||
rm .npmrc
|
||||
|
||||
# Copy source code
|
||||
@@ -38,20 +38,27 @@ FROM base AS development
|
||||
ENV NODE_ENV=development
|
||||
CMD ["pnpm", "dev:local"]
|
||||
|
||||
# Stage: Migrator
|
||||
FROM base AS migrator
|
||||
ENV NODE_ENV=production
|
||||
CMD ["pnpm", "cms:migrate"]
|
||||
|
||||
# Build application
|
||||
# Stage 3: Builder (Production)
|
||||
FROM base AS builder
|
||||
# Limit memory to 1GB to prevent ResourceExhausted in combination with worker limits
|
||||
ENV NODE_OPTIONS="--max-old-space-size=1024"
|
||||
|
||||
# Force Turbopack (Rust/Rayon) and Node.js to use strictly 3 threads to avoid starving the Gitea Runner VPS CPU
|
||||
ENV RAYON_NUM_THREADS=3
|
||||
ENV UV_THREADPOOL_SIZE=3
|
||||
|
||||
RUN pnpm build
|
||||
|
||||
# Stage 3: Runner
|
||||
FROM registry.infra.mintel.me/mintel/runtime:v1.7.10 AS runner
|
||||
# Stage 2: Runner
|
||||
FROM git.infra.mintel.me/mmintel/runtime:latest AS runner
|
||||
WORKDIR /app
|
||||
|
||||
# Create nextjs user and group (standardized in runtime image but ensuring local ownership)
|
||||
USER root
|
||||
RUN chown -R nextjs:nodejs /app
|
||||
USER nextjs
|
||||
|
||||
ENV HOSTNAME="0.0.0.0"
|
||||
ENV PORT=3000
|
||||
ENV NODE_ENV=production
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
FROM node:20-alpine
|
||||
|
||||
# Install essential build tools if needed (e.g., for node-gyp)
|
||||
RUN apk add --no-cache libc6-compat python3 make g++
|
||||
RUN apk add --no-cache libc6-compat python3 make g++ curl
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
|
||||
@@ -462,3 +462,4 @@ Proprietary - KLZ Cables
|
||||
**Status**: ✅ **READY FOR DEPLOYMENT**
|
||||
**Version**: 1.0.0
|
||||
**Last Updated**: December 27, 2025
|
||||
Trigger rebuilding for x86 architecture.
|
||||
|
||||
@@ -1,53 +1,84 @@
|
||||
import { RscEntryLexicalCell as RscEntryLexicalCell_44fe37237e0ebf4470c9990d8cb7b07e } from '@payloadcms/richtext-lexical/rsc'
|
||||
import { RscEntryLexicalField as RscEntryLexicalField_44fe37237e0ebf4470c9990d8cb7b07e } from '@payloadcms/richtext-lexical/rsc'
|
||||
import { LexicalDiffComponent as LexicalDiffComponent_44fe37237e0ebf4470c9990d8cb7b07e } from '@payloadcms/richtext-lexical/rsc'
|
||||
import { BlocksFeatureClient as BlocksFeatureClient_e70f5e05f09f93e00b997edb1ef0c864 } from '@payloadcms/richtext-lexical/client'
|
||||
import { InlineToolbarFeatureClient as InlineToolbarFeatureClient_e70f5e05f09f93e00b997edb1ef0c864 } from '@payloadcms/richtext-lexical/client'
|
||||
import { HorizontalRuleFeatureClient as HorizontalRuleFeatureClient_e70f5e05f09f93e00b997edb1ef0c864 } from '@payloadcms/richtext-lexical/client'
|
||||
import { UploadFeatureClient as UploadFeatureClient_e70f5e05f09f93e00b997edb1ef0c864 } from '@payloadcms/richtext-lexical/client'
|
||||
import { BlockquoteFeatureClient as BlockquoteFeatureClient_e70f5e05f09f93e00b997edb1ef0c864 } from '@payloadcms/richtext-lexical/client'
|
||||
import { RelationshipFeatureClient as RelationshipFeatureClient_e70f5e05f09f93e00b997edb1ef0c864 } from '@payloadcms/richtext-lexical/client'
|
||||
import { LinkFeatureClient as LinkFeatureClient_e70f5e05f09f93e00b997edb1ef0c864 } from '@payloadcms/richtext-lexical/client'
|
||||
import { ChecklistFeatureClient as ChecklistFeatureClient_e70f5e05f09f93e00b997edb1ef0c864 } from '@payloadcms/richtext-lexical/client'
|
||||
import { OrderedListFeatureClient as OrderedListFeatureClient_e70f5e05f09f93e00b997edb1ef0c864 } from '@payloadcms/richtext-lexical/client'
|
||||
import { UnorderedListFeatureClient as UnorderedListFeatureClient_e70f5e05f09f93e00b997edb1ef0c864 } from '@payloadcms/richtext-lexical/client'
|
||||
import { IndentFeatureClient as IndentFeatureClient_e70f5e05f09f93e00b997edb1ef0c864 } from '@payloadcms/richtext-lexical/client'
|
||||
import { AlignFeatureClient as AlignFeatureClient_e70f5e05f09f93e00b997edb1ef0c864 } from '@payloadcms/richtext-lexical/client'
|
||||
import { HeadingFeatureClient as HeadingFeatureClient_e70f5e05f09f93e00b997edb1ef0c864 } from '@payloadcms/richtext-lexical/client'
|
||||
import { ParagraphFeatureClient as ParagraphFeatureClient_e70f5e05f09f93e00b997edb1ef0c864 } from '@payloadcms/richtext-lexical/client'
|
||||
import { InlineCodeFeatureClient as InlineCodeFeatureClient_e70f5e05f09f93e00b997edb1ef0c864 } from '@payloadcms/richtext-lexical/client'
|
||||
import { SuperscriptFeatureClient as SuperscriptFeatureClient_e70f5e05f09f93e00b997edb1ef0c864 } from '@payloadcms/richtext-lexical/client'
|
||||
import { SubscriptFeatureClient as SubscriptFeatureClient_e70f5e05f09f93e00b997edb1ef0c864 } from '@payloadcms/richtext-lexical/client'
|
||||
import { StrikethroughFeatureClient as StrikethroughFeatureClient_e70f5e05f09f93e00b997edb1ef0c864 } from '@payloadcms/richtext-lexical/client'
|
||||
import { UnderlineFeatureClient as UnderlineFeatureClient_e70f5e05f09f93e00b997edb1ef0c864 } from '@payloadcms/richtext-lexical/client'
|
||||
import { BoldFeatureClient as BoldFeatureClient_e70f5e05f09f93e00b997edb1ef0c864 } from '@payloadcms/richtext-lexical/client'
|
||||
import { ItalicFeatureClient as ItalicFeatureClient_e70f5e05f09f93e00b997edb1ef0c864 } from '@payloadcms/richtext-lexical/client'
|
||||
import { CollectionCards as CollectionCards_f9c02e79a4aed9a3924487c0cd4cafb1 } from '@payloadcms/next/rsc'
|
||||
import { RscEntryLexicalCell as RscEntryLexicalCell_44fe37237e0ebf4470c9990d8cb7b07e } from '@payloadcms/richtext-lexical/rsc';
|
||||
import { RscEntryLexicalField as RscEntryLexicalField_44fe37237e0ebf4470c9990d8cb7b07e } from '@payloadcms/richtext-lexical/rsc';
|
||||
import { LexicalDiffComponent as LexicalDiffComponent_44fe37237e0ebf4470c9990d8cb7b07e } from '@payloadcms/richtext-lexical/rsc';
|
||||
import { BlocksFeatureClient as BlocksFeatureClient_e70f5e05f09f93e00b997edb1ef0c864 } from '@payloadcms/richtext-lexical/client';
|
||||
import { InlineToolbarFeatureClient as InlineToolbarFeatureClient_e70f5e05f09f93e00b997edb1ef0c864 } from '@payloadcms/richtext-lexical/client';
|
||||
import { HorizontalRuleFeatureClient as HorizontalRuleFeatureClient_e70f5e05f09f93e00b997edb1ef0c864 } from '@payloadcms/richtext-lexical/client';
|
||||
import { UploadFeatureClient as UploadFeatureClient_e70f5e05f09f93e00b997edb1ef0c864 } from '@payloadcms/richtext-lexical/client';
|
||||
import { BlockquoteFeatureClient as BlockquoteFeatureClient_e70f5e05f09f93e00b997edb1ef0c864 } from '@payloadcms/richtext-lexical/client';
|
||||
import { RelationshipFeatureClient as RelationshipFeatureClient_e70f5e05f09f93e00b997edb1ef0c864 } from '@payloadcms/richtext-lexical/client';
|
||||
import { LinkFeatureClient as LinkFeatureClient_e70f5e05f09f93e00b997edb1ef0c864 } from '@payloadcms/richtext-lexical/client';
|
||||
import { ChecklistFeatureClient as ChecklistFeatureClient_e70f5e05f09f93e00b997edb1ef0c864 } from '@payloadcms/richtext-lexical/client';
|
||||
import { OrderedListFeatureClient as OrderedListFeatureClient_e70f5e05f09f93e00b997edb1ef0c864 } from '@payloadcms/richtext-lexical/client';
|
||||
import { UnorderedListFeatureClient as UnorderedListFeatureClient_e70f5e05f09f93e00b997edb1ef0c864 } from '@payloadcms/richtext-lexical/client';
|
||||
import { IndentFeatureClient as IndentFeatureClient_e70f5e05f09f93e00b997edb1ef0c864 } from '@payloadcms/richtext-lexical/client';
|
||||
import { AlignFeatureClient as AlignFeatureClient_e70f5e05f09f93e00b997edb1ef0c864 } from '@payloadcms/richtext-lexical/client';
|
||||
import { HeadingFeatureClient as HeadingFeatureClient_e70f5e05f09f93e00b997edb1ef0c864 } from '@payloadcms/richtext-lexical/client';
|
||||
import { ParagraphFeatureClient as ParagraphFeatureClient_e70f5e05f09f93e00b997edb1ef0c864 } from '@payloadcms/richtext-lexical/client';
|
||||
import { InlineCodeFeatureClient as InlineCodeFeatureClient_e70f5e05f09f93e00b997edb1ef0c864 } from '@payloadcms/richtext-lexical/client';
|
||||
import { SuperscriptFeatureClient as SuperscriptFeatureClient_e70f5e05f09f93e00b997edb1ef0c864 } from '@payloadcms/richtext-lexical/client';
|
||||
import { SubscriptFeatureClient as SubscriptFeatureClient_e70f5e05f09f93e00b997edb1ef0c864 } from '@payloadcms/richtext-lexical/client';
|
||||
import { StrikethroughFeatureClient as StrikethroughFeatureClient_e70f5e05f09f93e00b997edb1ef0c864 } from '@payloadcms/richtext-lexical/client';
|
||||
import { UnderlineFeatureClient as UnderlineFeatureClient_e70f5e05f09f93e00b997edb1ef0c864 } from '@payloadcms/richtext-lexical/client';
|
||||
import { BoldFeatureClient as BoldFeatureClient_e70f5e05f09f93e00b997edb1ef0c864 } from '@payloadcms/richtext-lexical/client';
|
||||
import { ItalicFeatureClient as ItalicFeatureClient_e70f5e05f09f93e00b997edb1ef0c864 } from '@payloadcms/richtext-lexical/client';
|
||||
import { default as default_9ed509b5e5f7d08a16335393f27586cc } from '../../../src/payload/components/Icon';
|
||||
import { default as default_5470ea90f7a8fd882c2fe59ff2b1c5b9 } from '../../../src/payload/components/Logo';
|
||||
import { ChatWindowProvider as ChatWindowProvider_d32a660df96f186e48bfc5b31626ccf5 } from '@mintel/payload-ai/components/ChatWindow';
|
||||
import { CollectionCards as CollectionCards_f9c02e79a4aed9a3924487c0cd4cafb1 } from '@payloadcms/next/rsc';
|
||||
|
||||
export const importMap = {
|
||||
"@payloadcms/richtext-lexical/rsc#RscEntryLexicalCell": RscEntryLexicalCell_44fe37237e0ebf4470c9990d8cb7b07e,
|
||||
"@payloadcms/richtext-lexical/rsc#RscEntryLexicalField": RscEntryLexicalField_44fe37237e0ebf4470c9990d8cb7b07e,
|
||||
"@payloadcms/richtext-lexical/rsc#LexicalDiffComponent": LexicalDiffComponent_44fe37237e0ebf4470c9990d8cb7b07e,
|
||||
"@payloadcms/richtext-lexical/client#BlocksFeatureClient": BlocksFeatureClient_e70f5e05f09f93e00b997edb1ef0c864,
|
||||
"@payloadcms/richtext-lexical/client#InlineToolbarFeatureClient": InlineToolbarFeatureClient_e70f5e05f09f93e00b997edb1ef0c864,
|
||||
"@payloadcms/richtext-lexical/client#HorizontalRuleFeatureClient": HorizontalRuleFeatureClient_e70f5e05f09f93e00b997edb1ef0c864,
|
||||
"@payloadcms/richtext-lexical/client#UploadFeatureClient": UploadFeatureClient_e70f5e05f09f93e00b997edb1ef0c864,
|
||||
"@payloadcms/richtext-lexical/client#BlockquoteFeatureClient": BlockquoteFeatureClient_e70f5e05f09f93e00b997edb1ef0c864,
|
||||
"@payloadcms/richtext-lexical/client#RelationshipFeatureClient": RelationshipFeatureClient_e70f5e05f09f93e00b997edb1ef0c864,
|
||||
"@payloadcms/richtext-lexical/client#LinkFeatureClient": LinkFeatureClient_e70f5e05f09f93e00b997edb1ef0c864,
|
||||
"@payloadcms/richtext-lexical/client#ChecklistFeatureClient": ChecklistFeatureClient_e70f5e05f09f93e00b997edb1ef0c864,
|
||||
"@payloadcms/richtext-lexical/client#OrderedListFeatureClient": OrderedListFeatureClient_e70f5e05f09f93e00b997edb1ef0c864,
|
||||
"@payloadcms/richtext-lexical/client#UnorderedListFeatureClient": UnorderedListFeatureClient_e70f5e05f09f93e00b997edb1ef0c864,
|
||||
"@payloadcms/richtext-lexical/client#IndentFeatureClient": IndentFeatureClient_e70f5e05f09f93e00b997edb1ef0c864,
|
||||
"@payloadcms/richtext-lexical/client#AlignFeatureClient": AlignFeatureClient_e70f5e05f09f93e00b997edb1ef0c864,
|
||||
"@payloadcms/richtext-lexical/client#HeadingFeatureClient": HeadingFeatureClient_e70f5e05f09f93e00b997edb1ef0c864,
|
||||
"@payloadcms/richtext-lexical/client#ParagraphFeatureClient": ParagraphFeatureClient_e70f5e05f09f93e00b997edb1ef0c864,
|
||||
"@payloadcms/richtext-lexical/client#InlineCodeFeatureClient": InlineCodeFeatureClient_e70f5e05f09f93e00b997edb1ef0c864,
|
||||
"@payloadcms/richtext-lexical/client#SuperscriptFeatureClient": SuperscriptFeatureClient_e70f5e05f09f93e00b997edb1ef0c864,
|
||||
"@payloadcms/richtext-lexical/client#SubscriptFeatureClient": SubscriptFeatureClient_e70f5e05f09f93e00b997edb1ef0c864,
|
||||
"@payloadcms/richtext-lexical/client#StrikethroughFeatureClient": StrikethroughFeatureClient_e70f5e05f09f93e00b997edb1ef0c864,
|
||||
"@payloadcms/richtext-lexical/client#UnderlineFeatureClient": UnderlineFeatureClient_e70f5e05f09f93e00b997edb1ef0c864,
|
||||
"@payloadcms/richtext-lexical/client#BoldFeatureClient": BoldFeatureClient_e70f5e05f09f93e00b997edb1ef0c864,
|
||||
"@payloadcms/richtext-lexical/client#ItalicFeatureClient": ItalicFeatureClient_e70f5e05f09f93e00b997edb1ef0c864,
|
||||
"@payloadcms/next/rsc#CollectionCards": CollectionCards_f9c02e79a4aed9a3924487c0cd4cafb1
|
||||
}
|
||||
'@payloadcms/richtext-lexical/rsc#RscEntryLexicalCell':
|
||||
RscEntryLexicalCell_44fe37237e0ebf4470c9990d8cb7b07e,
|
||||
'@payloadcms/richtext-lexical/rsc#RscEntryLexicalField':
|
||||
RscEntryLexicalField_44fe37237e0ebf4470c9990d8cb7b07e,
|
||||
'@payloadcms/richtext-lexical/rsc#LexicalDiffComponent':
|
||||
LexicalDiffComponent_44fe37237e0ebf4470c9990d8cb7b07e,
|
||||
'@payloadcms/richtext-lexical/client#BlocksFeatureClient':
|
||||
BlocksFeatureClient_e70f5e05f09f93e00b997edb1ef0c864,
|
||||
'@payloadcms/richtext-lexical/client#InlineToolbarFeatureClient':
|
||||
InlineToolbarFeatureClient_e70f5e05f09f93e00b997edb1ef0c864,
|
||||
'@payloadcms/richtext-lexical/client#HorizontalRuleFeatureClient':
|
||||
HorizontalRuleFeatureClient_e70f5e05f09f93e00b997edb1ef0c864,
|
||||
'@payloadcms/richtext-lexical/client#UploadFeatureClient':
|
||||
UploadFeatureClient_e70f5e05f09f93e00b997edb1ef0c864,
|
||||
'@payloadcms/richtext-lexical/client#BlockquoteFeatureClient':
|
||||
BlockquoteFeatureClient_e70f5e05f09f93e00b997edb1ef0c864,
|
||||
'@payloadcms/richtext-lexical/client#RelationshipFeatureClient':
|
||||
RelationshipFeatureClient_e70f5e05f09f93e00b997edb1ef0c864,
|
||||
'@payloadcms/richtext-lexical/client#LinkFeatureClient':
|
||||
LinkFeatureClient_e70f5e05f09f93e00b997edb1ef0c864,
|
||||
'@payloadcms/richtext-lexical/client#ChecklistFeatureClient':
|
||||
ChecklistFeatureClient_e70f5e05f09f93e00b997edb1ef0c864,
|
||||
'@payloadcms/richtext-lexical/client#OrderedListFeatureClient':
|
||||
OrderedListFeatureClient_e70f5e05f09f93e00b997edb1ef0c864,
|
||||
'@payloadcms/richtext-lexical/client#UnorderedListFeatureClient':
|
||||
UnorderedListFeatureClient_e70f5e05f09f93e00b997edb1ef0c864,
|
||||
'@payloadcms/richtext-lexical/client#IndentFeatureClient':
|
||||
IndentFeatureClient_e70f5e05f09f93e00b997edb1ef0c864,
|
||||
'@payloadcms/richtext-lexical/client#AlignFeatureClient':
|
||||
AlignFeatureClient_e70f5e05f09f93e00b997edb1ef0c864,
|
||||
'@payloadcms/richtext-lexical/client#HeadingFeatureClient':
|
||||
HeadingFeatureClient_e70f5e05f09f93e00b997edb1ef0c864,
|
||||
'@payloadcms/richtext-lexical/client#ParagraphFeatureClient':
|
||||
ParagraphFeatureClient_e70f5e05f09f93e00b997edb1ef0c864,
|
||||
'@payloadcms/richtext-lexical/client#InlineCodeFeatureClient':
|
||||
InlineCodeFeatureClient_e70f5e05f09f93e00b997edb1ef0c864,
|
||||
'@payloadcms/richtext-lexical/client#SuperscriptFeatureClient':
|
||||
SuperscriptFeatureClient_e70f5e05f09f93e00b997edb1ef0c864,
|
||||
'@payloadcms/richtext-lexical/client#SubscriptFeatureClient':
|
||||
SubscriptFeatureClient_e70f5e05f09f93e00b997edb1ef0c864,
|
||||
'@payloadcms/richtext-lexical/client#StrikethroughFeatureClient':
|
||||
StrikethroughFeatureClient_e70f5e05f09f93e00b997edb1ef0c864,
|
||||
'@payloadcms/richtext-lexical/client#UnderlineFeatureClient':
|
||||
UnderlineFeatureClient_e70f5e05f09f93e00b997edb1ef0c864,
|
||||
'@payloadcms/richtext-lexical/client#BoldFeatureClient':
|
||||
BoldFeatureClient_e70f5e05f09f93e00b997edb1ef0c864,
|
||||
'@payloadcms/richtext-lexical/client#ItalicFeatureClient':
|
||||
ItalicFeatureClient_e70f5e05f09f93e00b997edb1ef0c864,
|
||||
'/src/payload/components/Icon#default': default_9ed509b5e5f7d08a16335393f27586cc,
|
||||
'/src/payload/components/Logo#default': default_5470ea90f7a8fd882c2fe59ff2b1c5b9,
|
||||
'@mintel/payload-ai/components/ChatWindow#ChatWindowProvider':
|
||||
ChatWindowProvider_d32a660df96f186e48bfc5b31626ccf5,
|
||||
'@payloadcms/next/rsc#CollectionCards': CollectionCards_f9c02e79a4aed9a3924487c0cd4cafb1,
|
||||
};
|
||||
|
||||
@@ -1 +1,151 @@
|
||||
/* Custom Payload CMS admin styles can go here. Do not import payloadcms/ui/scss/app.scss as it is handled by @payloadcms/next/css */
|
||||
/* =================================================================
|
||||
KLZ Cables – Payload Admin Theme
|
||||
Strictly follows docs/STYLEGUIDE.md & tailwind.config.cjs
|
||||
|
||||
IMPORTANT: We use `html` selector (not `:root`) because Payload's
|
||||
own CSS defines variables on `:root` and loads AFTER this file.
|
||||
`html` has higher specificity than `:root`, so our values win.
|
||||
================================================================= */
|
||||
|
||||
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap');
|
||||
|
||||
/* =================================================================
|
||||
COLOR OVERRIDES
|
||||
Payload internally maps:
|
||||
--theme-elevation-* → --color-base-*
|
||||
--theme-success-* → --color-success-*
|
||||
We override the SOURCE variables on `html` to beat Payload's `:root`.
|
||||
================================================================= */
|
||||
|
||||
html {
|
||||
/* ---------------------------------------------------------------
|
||||
KLZ Primary Blue (#011dff) → Buttons, links, active states
|
||||
--------------------------------------------------------------- */
|
||||
--color-success-50: #eef0ff !important;
|
||||
--color-success-100: #dfe2ff !important;
|
||||
--color-success-150: #cdd2ff !important;
|
||||
--color-success-200: #b8bfff !important;
|
||||
--color-success-250: #a0a9ff !important;
|
||||
--color-success-300: #8892ff !important;
|
||||
--color-success-350: #707bff !important;
|
||||
--color-success-400: #5564ff !important;
|
||||
--color-success-450: #3a4dff !important;
|
||||
--color-success-500: #011dff !important;
|
||||
/* KLZ Primary */
|
||||
--color-success-550: #0119e6 !important;
|
||||
--color-success-600: #0116cc !important;
|
||||
--color-success-650: #0112b3 !important;
|
||||
--color-success-700: #000e99 !important;
|
||||
--color-success-750: #000b80 !important;
|
||||
--color-success-800: #000866 !important;
|
||||
--color-success-850: #00054d !important;
|
||||
--color-success-900: #000333 !important;
|
||||
--color-success-950: #00011a !important;
|
||||
|
||||
/* ---------------------------------------------------------------
|
||||
KLZ "Foundation Neutrals" → Backgrounds, cards, borders, text
|
||||
Based on tailwind.config.cjs: neutral.light=#fff,
|
||||
neutral.DEFAULT=#f8f9fa, neutral.dark=#263336, neutral.black=#0a0a0a
|
||||
text.primary=#1a1a1a, text.secondary=#6c757d, text.light=#adb5bd
|
||||
--------------------------------------------------------------- */
|
||||
--color-base-0: #ffffff !important;
|
||||
--color-base-50: #f8f9fa !important;
|
||||
--color-base-100: #f1f3f5 !important;
|
||||
--color-base-150: #e9ecef !important;
|
||||
--color-base-200: #dee2e6 !important;
|
||||
--color-base-250: #ced4da !important;
|
||||
--color-base-300: #adb5bd !important;
|
||||
--color-base-350: #9ba3ab !important;
|
||||
--color-base-400: #868e96 !important;
|
||||
--color-base-450: #6c757d !important;
|
||||
--color-base-500: #5c636a !important;
|
||||
--color-base-550: #4d5358 !important;
|
||||
--color-base-600: #3d4246 !important;
|
||||
--color-base-650: #343a40 !important;
|
||||
--color-base-700: #2b3035 !important;
|
||||
--color-base-750: #263336 !important;
|
||||
--color-base-800: #212529 !important;
|
||||
--color-base-850: #1a1a1a !important;
|
||||
--color-base-900: #121212 !important;
|
||||
--color-base-950: #0a0a0a !important;
|
||||
--color-base-1000: #000000 !important;
|
||||
|
||||
/* Typography */
|
||||
--font-body: 'Inter', system-ui, -apple-system, sans-serif !important;
|
||||
--font-headings: 'Inter', system-ui, -apple-system, sans-serif !important;
|
||||
}
|
||||
|
||||
/* Base Body Application */
|
||||
body {
|
||||
font-family: var(--font-body) !important;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
|
||||
/* =================================================================
|
||||
Login / Setup Page
|
||||
================================================================= */
|
||||
.template-default.template-default--has-bg {
|
||||
background: radial-gradient(circle at top right, #e6ebf5 0%, #f8f9fa 60%, #f3f4f6 100%) !important;
|
||||
}
|
||||
|
||||
.login__wrap,
|
||||
.create-first-user__wrap {
|
||||
border-top: none !important;
|
||||
padding: 3rem !important;
|
||||
background: rgba(255, 255, 255, 0.85) !important;
|
||||
backdrop-filter: blur(20px);
|
||||
-webkit-backdrop-filter: blur(20px);
|
||||
border: 1px solid var(--theme-elevation-150) !important;
|
||||
box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.15) !important;
|
||||
border-radius: 1.5rem !important;
|
||||
}
|
||||
|
||||
/* =================================================================
|
||||
Buttons – override Payload's dark buttons with KLZ Blue
|
||||
Payload uses .btn--style-primary { --bg-color: var(--theme-elevation-800) }
|
||||
which makes all primary buttons near-black. We override to KLZ Blue.
|
||||
================================================================= */
|
||||
.btn--style-primary,
|
||||
.btn--style-pill {
|
||||
--bg-color: #011dff !important;
|
||||
--color: #ffffff !important;
|
||||
--hover-bg: #0116cc !important;
|
||||
--hover-color: #ffffff !important;
|
||||
}
|
||||
|
||||
.btn--style-primary.btn--disabled,
|
||||
.btn--style-pill.btn--disabled {
|
||||
--bg-color: #b8bfff !important;
|
||||
--color: #ffffff !important;
|
||||
--hover-bg: #b8bfff !important;
|
||||
}
|
||||
|
||||
/* Sidebar Active Items */
|
||||
[class*="nav-group__link--active"],
|
||||
[class*="nav__link--active"] {
|
||||
--theme-elevation-800: #011dff !important;
|
||||
color: #011dff !important;
|
||||
border-left-color: #011dff !important;
|
||||
}
|
||||
|
||||
.btn--style-secondary {
|
||||
--box-shadow: inset 0 0 0 1px #011dff !important;
|
||||
--color: #011dff !important;
|
||||
--hover-color: #0116cc !important;
|
||||
--hover-box-shadow: inset 0 0 0 1px #0116cc !important;
|
||||
}
|
||||
|
||||
/* =================================================================
|
||||
Logo & Icon
|
||||
================================================================= */
|
||||
.klz-admin-logo,
|
||||
.klz-admin-icon {
|
||||
display: block !important;
|
||||
visibility: visible !important;
|
||||
opacity: 1 !important;
|
||||
height: 32px !important;
|
||||
width: auto !important;
|
||||
max-width: 100% !important;
|
||||
object-fit: contain !important;
|
||||
}
|
||||
@@ -1,8 +1,9 @@
|
||||
import { notFound } from 'next/navigation';
|
||||
import { notFound, redirect } from 'next/navigation';
|
||||
import { Container, Badge, Heading } from '@/components/ui';
|
||||
import { getTranslations, setRequestLocale } from 'next-intl/server';
|
||||
import { Metadata } from 'next';
|
||||
import { getPageBySlug, getAllPages } from '@/lib/pages';
|
||||
import { mapSlugToFileSlug, mapFileSlugToTranslated } from '@/lib/slugs';
|
||||
import PayloadRichText from '@/components/PayloadRichText';
|
||||
import { SITE_URL } from '@/lib/schema';
|
||||
import TrackedLink from '@/components/analytics/TrackedLink';
|
||||
@@ -20,21 +21,28 @@ export async function generateMetadata({ params }: PageProps): Promise<Metadata>
|
||||
|
||||
if (!pageData) return {};
|
||||
|
||||
const fileSlug = await mapSlugToFileSlug(pageData.slug || slug, locale);
|
||||
const deSlug = await mapFileSlugToTranslated(fileSlug, 'de');
|
||||
const enSlug = await mapFileSlugToTranslated(fileSlug, 'en');
|
||||
|
||||
// Determine correct localized slug based on current locale
|
||||
const currentLocaleSlug = locale === 'de' ? deSlug : enSlug;
|
||||
|
||||
return {
|
||||
title: pageData.frontmatter.title,
|
||||
description: pageData.frontmatter.excerpt || '',
|
||||
alternates: {
|
||||
canonical: `${SITE_URL}/${locale}/${slug}`,
|
||||
canonical: `${SITE_URL}/${locale}/${currentLocaleSlug}`,
|
||||
languages: {
|
||||
de: `${SITE_URL}/de/${slug}`,
|
||||
en: `${SITE_URL}/en/${slug}`,
|
||||
'x-default': `${SITE_URL}/en/${slug}`,
|
||||
de: `${SITE_URL}/de/${deSlug}`,
|
||||
en: `${SITE_URL}/en/${enSlug}`,
|
||||
'x-default': `${SITE_URL}/en/${enSlug}`,
|
||||
},
|
||||
},
|
||||
openGraph: {
|
||||
title: `${pageData.frontmatter.title} | KLZ Cables`,
|
||||
description: pageData.frontmatter.excerpt || '',
|
||||
url: `${SITE_URL}/${locale}/${slug}`,
|
||||
url: `${SITE_URL}/${locale}/${currentLocaleSlug}`,
|
||||
},
|
||||
twitter: {
|
||||
card: 'summary_large_image',
|
||||
@@ -54,6 +62,23 @@ export default async function StandardPage({ params }: PageProps) {
|
||||
notFound();
|
||||
}
|
||||
|
||||
// Redirect if accessed via a different locale's slug
|
||||
const fileSlug = await mapSlugToFileSlug(pageData.slug || slug, locale);
|
||||
const correctSlug = await mapFileSlugToTranslated(fileSlug, locale);
|
||||
if (correctSlug && correctSlug !== slug) {
|
||||
redirect(`/${locale}/${correctSlug}`);
|
||||
}
|
||||
|
||||
// Full-bleed pages render blocks edge-to-edge without the generic article wrapper
|
||||
if (pageData.frontmatter.layout === 'fullBleed') {
|
||||
return (
|
||||
<div className="flex flex-col min-h-screen">
|
||||
<PayloadRichText data={pageData.content} className="" />
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
// Default article layout with hero, content, and support CTA
|
||||
return (
|
||||
<div className="flex flex-col min-h-screen bg-white">
|
||||
{/* Hero Section */}
|
||||
@@ -97,7 +122,7 @@ export default async function StandardPage({ params }: PageProps) {
|
||||
<h3 className="text-2xl md:text-3xl font-bold mb-4">{t('needHelp')}</h3>
|
||||
<p className="text-lg text-white/70 mb-8">{t('supportTeamAvailable')}</p>
|
||||
<TrackedLink
|
||||
href={`/${locale}/contact`}
|
||||
href={`/${locale}/${locale === 'de' ? 'kontakt' : 'contact'}`}
|
||||
className="inline-flex items-center px-8 py-4 bg-accent text-primary-dark font-bold rounded-full hover:bg-white transition-all duration-300 group/link"
|
||||
eventProperties={{
|
||||
location: 'generic_page_support_cta',
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { ImageResponse } from 'next/og';
|
||||
import { getProductBySlug } from '@/lib/mdx';
|
||||
import { getProductBySlug } from '@/lib/products';
|
||||
import { getTranslations } from 'next-intl/server';
|
||||
import { OGImageTemplate } from '@/components/OGImageTemplate';
|
||||
import { NextRequest } from 'next/server';
|
||||
|
||||
@@ -8,6 +8,20 @@ export const size = OG_IMAGE_SIZE;
|
||||
export const contentType = 'image/png';
|
||||
export const runtime = 'nodejs';
|
||||
|
||||
async function fetchImageAsBase64(url: string) {
|
||||
try {
|
||||
const res = await fetch(url);
|
||||
if (!res.ok) return undefined;
|
||||
const arrayBuffer = await res.arrayBuffer();
|
||||
const buffer = Buffer.from(arrayBuffer);
|
||||
const contentType = res.headers.get('content-type') || 'image/jpeg';
|
||||
return `data:${contentType};base64,${buffer.toString('base64')}`;
|
||||
} catch (error) {
|
||||
console.error('Failed to fetch OG image:', url, error);
|
||||
return undefined;
|
||||
}
|
||||
}
|
||||
|
||||
export default async function Image({
|
||||
params,
|
||||
}: {
|
||||
@@ -32,12 +46,19 @@ export default async function Image({
|
||||
: `${SITE_URL}${post.frontmatter.featuredImage}`
|
||||
: undefined;
|
||||
|
||||
// Fetch image explicitly and convert to base64 because Satori sometimes struggles
|
||||
// fetching remote URLs directly inside ImageResponse correctly in various environments.
|
||||
let base64Image: string | undefined = undefined;
|
||||
if (featuredImage) {
|
||||
base64Image = await fetchImageAsBase64(featuredImage);
|
||||
}
|
||||
|
||||
return new ImageResponse(
|
||||
<OGImageTemplate
|
||||
title={post.frontmatter.title}
|
||||
description={post.frontmatter.excerpt}
|
||||
label={post.frontmatter.category || 'Blog'}
|
||||
image={featuredImage}
|
||||
image={base64Image || featuredImage}
|
||||
/>,
|
||||
{
|
||||
...OG_IMAGE_SIZE,
|
||||
|
||||
@@ -1,12 +1,18 @@
|
||||
import { notFound } from 'next/navigation';
|
||||
import { notFound, redirect } from 'next/navigation';
|
||||
import JsonLd from '@/components/JsonLd';
|
||||
import { SITE_URL } from '@/lib/schema';
|
||||
import { getPostBySlug, getAdjacentPosts, getReadingTime } from '@/lib/blog';
|
||||
import {
|
||||
getPostBySlug,
|
||||
getAdjacentPosts,
|
||||
getReadingTime,
|
||||
extractLexicalHeadings,
|
||||
} from '@/lib/blog';
|
||||
import { Metadata } from 'next';
|
||||
import Link from 'next/link';
|
||||
import Image from 'next/image';
|
||||
import PostNavigation from '@/components/blog/PostNavigation';
|
||||
import PowerCTA from '@/components/blog/PowerCTA';
|
||||
import TableOfContents from '@/components/blog/TableOfContents';
|
||||
import { Heading } from '@/components/ui';
|
||||
import { setRequestLocale } from 'next-intl/server';
|
||||
import BlogEngagementTracker from '@/components/analytics/BlogEngagementTracker';
|
||||
@@ -32,7 +38,7 @@ export async function generateMetadata({ params }: BlogPostProps): Promise<Metad
|
||||
title: post.frontmatter.title,
|
||||
description: description,
|
||||
alternates: {
|
||||
canonical: `${SITE_URL}/${locale}/blog/${slug}`,
|
||||
canonical: `${SITE_URL}/${locale}/blog/${post.slug}`,
|
||||
},
|
||||
openGraph: {
|
||||
title: `${post.frontmatter.title} | KLZ Cables`,
|
||||
@@ -40,7 +46,7 @@ export async function generateMetadata({ params }: BlogPostProps): Promise<Metad
|
||||
type: 'article',
|
||||
publishedTime: post.frontmatter.date,
|
||||
authors: ['KLZ Cables'],
|
||||
url: `${SITE_URL}/${locale}/blog/${slug}`,
|
||||
url: `${SITE_URL}/${locale}/blog/${post.slug}`,
|
||||
},
|
||||
twitter: {
|
||||
card: 'summary_large_image',
|
||||
@@ -54,12 +60,23 @@ export default async function BlogPost({ params }: BlogPostProps) {
|
||||
const { locale, slug } = await params;
|
||||
setRequestLocale(locale);
|
||||
const post = await getPostBySlug(slug, locale);
|
||||
const { prev, next, isPrevRandom, isNextRandom } = await getAdjacentPosts(slug, locale);
|
||||
|
||||
if (!post) {
|
||||
notFound();
|
||||
}
|
||||
|
||||
// If the user accessed this post using a slug from a different locale
|
||||
// (e.g. via the generic language switcher), redirect them to the correct localized slug URL
|
||||
if (post.slug && post.slug !== slug) {
|
||||
redirect(`/${locale}/blog/${post.slug}`);
|
||||
}
|
||||
|
||||
const { prev, next, isPrevRandom, isNextRandom } = await getAdjacentPosts(post.slug, locale);
|
||||
|
||||
// Convert Lexical content into a plain string to estimate reading time roughly
|
||||
// Extract headings for TOC
|
||||
const headings = extractLexicalHeadings(post.content?.root || post.content);
|
||||
|
||||
// Convert Lexical content into a plain string to estimate reading time roughly
|
||||
const rawTextContent = JSON.stringify(post.content);
|
||||
|
||||
@@ -81,6 +98,7 @@ export default async function BlogPost({ params }: BlogPostProps) {
|
||||
alt={post.frontmatter.title}
|
||||
fill
|
||||
priority
|
||||
quality={100}
|
||||
className="object-cover"
|
||||
sizes="100vw"
|
||||
style={{
|
||||
@@ -88,7 +106,7 @@ export default async function BlogPost({ params }: BlogPostProps) {
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
<div className="absolute inset-0 bg-gradient-to-t from-neutral-dark via-neutral-dark/40 to-transparent" />
|
||||
<div className="absolute inset-0 bg-gradient-to-t from-neutral-dark/90 via-neutral-dark/40 to-transparent" />
|
||||
|
||||
{/* Title overlay on image */}
|
||||
<div className="absolute inset-0 flex flex-col justify-end pb-16 md:pb-24">
|
||||
@@ -105,8 +123,8 @@ export default async function BlogPost({ params }: BlogPostProps) {
|
||||
{post.frontmatter.title}
|
||||
</Heading>
|
||||
<div className="flex flex-wrap items-center gap-6 text-white/80 text-sm md:text-base font-medium">
|
||||
<time dateTime={post.frontmatter.date}>
|
||||
{new Date(post.frontmatter.date).toLocaleDateString(locale, {
|
||||
<time dateTime={post.frontmatter.date} suppressHydrationWarning>
|
||||
{new Date(post.frontmatter.date).toLocaleDateString(locale || 'de', {
|
||||
year: 'numeric',
|
||||
month: 'long',
|
||||
day: 'numeric',
|
||||
@@ -142,8 +160,8 @@ export default async function BlogPost({ params }: BlogPostProps) {
|
||||
{post.frontmatter.title}
|
||||
</Heading>
|
||||
<div className="flex items-center gap-6 text-text-primary/80 font-medium">
|
||||
<time dateTime={post.frontmatter.date}>
|
||||
{new Date(post.frontmatter.date).toLocaleDateString(locale, {
|
||||
<time dateTime={post.frontmatter.date} suppressHydrationWarning>
|
||||
{new Date(post.frontmatter.date).toLocaleDateString(locale || 'de', {
|
||||
year: 'numeric',
|
||||
month: 'long',
|
||||
day: 'numeric',
|
||||
@@ -224,10 +242,10 @@ export default async function BlogPost({ params }: BlogPostProps) {
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Right Column: Sticky Sidebar - Temporarily Hidden without ToC */}
|
||||
{/* Right Column: Sticky Sidebar - TOC */}
|
||||
<aside className="sticky-narrative-sidebar hidden lg:block">
|
||||
<div className="space-y-12">
|
||||
{/* Future Payload Table of Contents Implementation */}
|
||||
<div className="space-y-12 lg:sticky lg:top-32">
|
||||
<TableOfContents headings={headings} locale={locale} />
|
||||
</div>
|
||||
</aside>
|
||||
</div>
|
||||
|
||||
@@ -67,10 +67,13 @@ export default async function BlogIndex({ params }: BlogIndexProps) {
|
||||
alt={featuredPost.frontmatter.title}
|
||||
fill
|
||||
className="absolute inset-0 w-full h-full object-cover opacity-40 md:opacity-60"
|
||||
style={{
|
||||
objectPosition: `${featuredPost.frontmatter.focalX ?? 50}% ${featuredPost.frontmatter.focalY ?? 50}%`,
|
||||
}}
|
||||
sizes="100vw"
|
||||
priority
|
||||
/>
|
||||
<div className="absolute inset-0 image-overlay-gradient" />
|
||||
<div className="absolute inset-0 bg-neutral-dark/20" />
|
||||
</>
|
||||
)}
|
||||
|
||||
@@ -81,12 +84,9 @@ export default async function BlogIndex({ params }: BlogIndexProps) {
|
||||
{featuredPost &&
|
||||
(new Date(featuredPost.frontmatter.date) > new Date() ||
|
||||
featuredPost.frontmatter.public === false) && (
|
||||
<Badge
|
||||
variant="neutral"
|
||||
className="border border-white/30 bg-transparent text-white/80 shadow-none"
|
||||
>
|
||||
<span className="px-2 py-0.5 border border-white/40 text-white/80 rounded uppercase tracking-widest text-[10px] md:text-xs font-bold">
|
||||
Draft Preview
|
||||
</Badge>
|
||||
</span>
|
||||
)}
|
||||
</div>
|
||||
{featuredPost && (
|
||||
@@ -153,63 +153,76 @@ export default async function BlogIndex({ params }: BlogIndexProps) {
|
||||
</Reveal>
|
||||
|
||||
{/* Grid for remaining posts */}
|
||||
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6 md:gap-12">
|
||||
<div className="grid grid-cols-1 gap-12">
|
||||
{remainingPosts.map((post, idx) => (
|
||||
<Reveal key={post.slug} delay={idx * 100}>
|
||||
<Link href={`/${locale}/blog/${post.slug}`} className="group block">
|
||||
<Reveal key={post.slug} delay={idx * 50}>
|
||||
<Link
|
||||
href={`/${locale}/blog/${post.slug}`}
|
||||
className="group block focus:outline-none"
|
||||
>
|
||||
<Card
|
||||
tag="article"
|
||||
className="h-full flex flex-col border-none shadow-lg hover:shadow-2xl transition-all duration-500 rounded-2xl md:rounded-3xl overflow-hidden"
|
||||
className="relative flex flex-col justify-end border-none shadow-lg hover:shadow-2xl transition-all duration-500 rounded-3xl overflow-hidden min-h-[450px] md:min-h-[500px]"
|
||||
>
|
||||
{post.frontmatter.featuredImage && (
|
||||
<div className="relative h-48 md:h-72 overflow-hidden">
|
||||
<>
|
||||
<Image
|
||||
src={post.frontmatter.featuredImage.split('?')[0]}
|
||||
alt={post.frontmatter.title}
|
||||
fill
|
||||
className="w-full h-full object-cover transition-transform duration-1000 group-hover:scale-110"
|
||||
sizes="(max-width: 768px) 100vw, (max-width: 1024px) 50vw, 33vw"
|
||||
className="absolute inset-0 w-full h-full object-cover transition-transform duration-1000 group-hover:scale-105"
|
||||
style={{
|
||||
objectPosition: `${post.frontmatter.focalX ?? 50}% ${post.frontmatter.focalY ?? 50}%`,
|
||||
}}
|
||||
sizes="(max-width: 768px) 100vw, 100vw"
|
||||
loading="lazy"
|
||||
/>
|
||||
<div className="absolute inset-0 image-overlay-gradient opacity-0 group-hover:opacity-100 transition-opacity duration-500" />
|
||||
<div className="absolute inset-0 bg-neutral-dark/10 group-hover:bg-neutral-dark/5 transition-colors duration-500" />
|
||||
</>
|
||||
)}
|
||||
|
||||
<div className="relative z-10 w-full p-6 md:p-10 bg-gradient-to-t from-neutral-dark/95 via-neutral-dark/70 to-transparent flex flex-col pt-40">
|
||||
<div className="flex flex-wrap items-center gap-4 mb-4">
|
||||
{post.frontmatter.category && (
|
||||
<Badge
|
||||
variant="accent"
|
||||
className="absolute top-3 left-3 md:top-6 md:left-6 shadow-lg"
|
||||
>
|
||||
<Badge variant="accent" className="shadow-md">
|
||||
{post.frontmatter.category}
|
||||
</Badge>
|
||||
)}
|
||||
{(new Date(post.frontmatter.date) > new Date() ||
|
||||
post.frontmatter.public === false) && (
|
||||
<span className="px-2 py-0.5 border border-white/40 text-white/90 rounded uppercase tracking-widest text-[10px] md:text-xs font-bold bg-neutral-dark/40 shadow-sm">
|
||||
Draft Preview
|
||||
</span>
|
||||
)}
|
||||
</div>
|
||||
)}
|
||||
<div className="p-5 md:p-10 flex flex-col flex-1">
|
||||
<div className="flex items-center gap-3 text-[10px] md:text-sm font-bold text-primary/70 mb-2 md:mb-4 tracking-widest uppercase">
|
||||
<span>
|
||||
{new Date(post.frontmatter.date).toLocaleDateString(locale, {
|
||||
|
||||
<div className="flex items-center gap-3 text-xs md:text-sm font-bold text-white/80 mb-3 tracking-widest uppercase">
|
||||
<time dateTime={post.frontmatter.date} suppressHydrationWarning>
|
||||
{new Date(post.frontmatter.date).toLocaleDateString(locale || 'de', {
|
||||
year: 'numeric',
|
||||
month: 'long',
|
||||
day: 'numeric',
|
||||
})}
|
||||
</span>
|
||||
{(new Date(post.frontmatter.date) > new Date() ||
|
||||
post.frontmatter.public === false) && (
|
||||
<span className="px-1.5 py-0.5 border border-current rounded-sm text-[9px] md:text-xs">
|
||||
Draft
|
||||
</span>
|
||||
)}
|
||||
</time>
|
||||
</div>
|
||||
<h3 className="text-lg md:text-2xl font-bold text-primary mb-3 md:mb-6 group-hover:text-accent-dark transition-colors line-clamp-3 md:line-clamp-4 leading-tight">
|
||||
|
||||
<h3 className="text-xl md:text-3xl font-bold text-white mb-4 group-hover:text-accent transition-colors drop-shadow-md leading-tight max-w-4xl">
|
||||
{post.frontmatter.title}
|
||||
</h3>
|
||||
<p className="text-text-secondary text-sm md:text-lg line-clamp-3 md:line-clamp-4 mb-4 md:mb-8 leading-relaxed">
|
||||
{post.frontmatter.excerpt}
|
||||
</p>
|
||||
<div className="mt-auto pt-4 md:pt-8 border-t border-neutral-medium flex items-center justify-between">
|
||||
<span className="text-saturated text-sm md:text-base font-extrabold group-hover:text-accent-dark transition-colors">
|
||||
|
||||
{post.frontmatter.excerpt && (
|
||||
<p className="text-white/90 text-sm md:text-lg line-clamp-3 mb-6 max-w-4xl drop-shadow-sm leading-relaxed">
|
||||
{post.frontmatter.excerpt}
|
||||
</p>
|
||||
)}
|
||||
|
||||
<div className="mt-auto flex items-center justify-between border-t border-white/20 pt-6">
|
||||
<span className="text-accent text-sm md:text-base font-extrabold group-hover:text-white transition-colors">
|
||||
{t('readMore')}
|
||||
</span>
|
||||
<div className="w-8 h-8 md:w-10 md:h-10 rounded-full bg-primary-light flex items-center justify-center text-saturated group-hover:bg-accent group-hover:text-primary-dark transition-all duration-300">
|
||||
<div className="w-10 h-10 rounded-full bg-white/10 flex items-center justify-center text-accent group-hover:bg-accent group-hover:text-primary-dark transition-all duration-300 backdrop-blur-sm border border-white/20">
|
||||
<svg
|
||||
className="w-4 h-4 md:w-5 md:h-5 transition-transform group-hover:translate-x-1"
|
||||
className="w-5 h-5 transition-transform group-hover:translate-x-1"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
viewBox="0 0 24 24"
|
||||
|
||||
@@ -8,6 +8,7 @@ import { SITE_URL } from '@/lib/schema';
|
||||
import { getOGImageMetadata } from '@/lib/metadata';
|
||||
import { Suspense } from 'react';
|
||||
import ContactMap from '@/components/ContactMap';
|
||||
import ObfuscatedEmail from '@/components/ObfuscatedEmail';
|
||||
|
||||
interface ContactPageProps {
|
||||
params: Promise<{
|
||||
@@ -24,9 +25,9 @@ export async function generateMetadata({ params }: ContactPageProps): Promise<Me
|
||||
title,
|
||||
description,
|
||||
alternates: {
|
||||
canonical: `${SITE_URL}/${locale}/contact`,
|
||||
canonical: `${SITE_URL}/${locale}/${locale === 'de' ? 'kontakt' : 'contact'}`,
|
||||
languages: {
|
||||
de: `${SITE_URL}/de/contact`,
|
||||
de: `${SITE_URL}/de/kontakt`,
|
||||
en: `${SITE_URL}/en/contact`,
|
||||
'x-default': `${SITE_URL}/en/contact`,
|
||||
},
|
||||
@@ -34,7 +35,7 @@ export async function generateMetadata({ params }: ContactPageProps): Promise<Me
|
||||
openGraph: {
|
||||
title: `${title} | KLZ Cables`,
|
||||
description,
|
||||
url: `${SITE_URL}/${locale}/contact`,
|
||||
url: `${SITE_URL}/${locale}/${locale === 'de' ? 'kontakt' : 'contact'}`,
|
||||
siteName: 'KLZ Cables',
|
||||
locale: `${locale.toUpperCase()}_DE`,
|
||||
type: 'website',
|
||||
@@ -59,6 +60,21 @@ export default async function ContactPage({ params }: ContactPageProps) {
|
||||
const { locale } = await params;
|
||||
setRequestLocale(locale);
|
||||
const t = await getTranslations({ locale, namespace: 'Contact' });
|
||||
|
||||
// Get translated slug to redirect if user used incorrect static slug
|
||||
const { headers } = await import('next/headers');
|
||||
const headersList = await headers();
|
||||
const urlPath = headersList.get('x-invoke-path') || '';
|
||||
const currentSlug = urlPath.split('/').pop();
|
||||
|
||||
if (currentSlug) {
|
||||
const contactSlugDe = locale === 'de' ? 'kontakt' : 'contact';
|
||||
if (currentSlug !== contactSlugDe && (currentSlug === 'kontakt' || currentSlug === 'contact')) {
|
||||
const { redirect } = await import('next/navigation');
|
||||
redirect(`/${locale}/${contactSlugDe}`);
|
||||
}
|
||||
}
|
||||
|
||||
return (
|
||||
<div className="flex flex-col min-h-screen bg-neutral-light">
|
||||
<JsonLd
|
||||
@@ -189,12 +205,10 @@ export default async function ContactPage({ params }: ContactPageProps) {
|
||||
<h4 className="text-base md:text-xl font-bold text-primary mb-1 md:mb-2">
|
||||
{t('info.email')}
|
||||
</h4>
|
||||
<a
|
||||
href="mailto:info@klz-cables.com"
|
||||
<ObfuscatedEmail
|
||||
email="info@klz-cables.com"
|
||||
className="text-sm md:text-lg text-text-secondary hover:text-primary transition-colors font-medium touch-target"
|
||||
>
|
||||
info@klz-cables.com
|
||||
</a>
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</address>
|
||||
|
||||
@@ -1,66 +1,137 @@
|
||||
'use client';
|
||||
import { useTranslations } from 'next-intl';
|
||||
import { getTranslations } from 'next-intl/server';
|
||||
import { Container, Button, Heading } from '@/components/ui';
|
||||
import Scribble from '@/components/Scribble';
|
||||
import { useEffect } from 'react';
|
||||
import { useAnalytics } from '@/components/analytics/useAnalytics';
|
||||
import { AnalyticsEvents } from '@/components/analytics/analytics-events';
|
||||
import { getPayload } from 'payload';
|
||||
import configPromise from '@payload-config';
|
||||
import { headers } from 'next/headers';
|
||||
import ClientNotFoundTracker from '@/components/analytics/ClientNotFoundTracker';
|
||||
|
||||
export default function NotFound() {
|
||||
const t = useTranslations('Error.notFound');
|
||||
const { trackEvent } = useAnalytics();
|
||||
export default async function NotFound() {
|
||||
const t = await getTranslations('Error.notFound');
|
||||
|
||||
useEffect(() => {
|
||||
const errorUrl = typeof window !== 'undefined' ? window.location.pathname : 'unknown';
|
||||
trackEvent(AnalyticsEvents.ERROR, {
|
||||
type: '404_not_found',
|
||||
path: errorUrl,
|
||||
});
|
||||
// Try to determine the requested path
|
||||
const headersList = await headers();
|
||||
const urlPath = headersList.get('x-invoke-path') || '';
|
||||
|
||||
// Explicitly send the 404 to Sentry so we have visibility into broken links
|
||||
import('@sentry/nextjs').then((Sentry) => {
|
||||
Sentry.withScope((scope) => {
|
||||
scope.setTag('status_code', '404');
|
||||
scope.setTag('path', errorUrl);
|
||||
Sentry.captureMessage(`Route Not Found: ${errorUrl}`, 'warning');
|
||||
});
|
||||
});
|
||||
}, [trackEvent]);
|
||||
let suggestedUrl = null;
|
||||
let suggestedLang = null;
|
||||
|
||||
// If we have a path, try to see if the last segment (slug) exists in ANY locale
|
||||
if (urlPath) {
|
||||
const slug = urlPath.split('/').filter(Boolean).pop();
|
||||
if (slug) {
|
||||
try {
|
||||
const payload = await getPayload({ config: configPromise });
|
||||
|
||||
// Check posts
|
||||
const postRes = await payload.find({
|
||||
collection: 'posts',
|
||||
where: { slug: { equals: slug } },
|
||||
locale: 'all',
|
||||
limit: 1,
|
||||
});
|
||||
|
||||
// Check products
|
||||
const productRes =
|
||||
postRes.docs.length === 0
|
||||
? await payload.find({
|
||||
collection: 'products',
|
||||
where: { slug: { equals: slug } },
|
||||
locale: 'all',
|
||||
limit: 1,
|
||||
})
|
||||
: { docs: [] };
|
||||
|
||||
// Check pages
|
||||
const pageRes =
|
||||
postRes.docs.length === 0 && productRes.docs.length === 0
|
||||
? await payload.find({
|
||||
collection: 'pages',
|
||||
where: { slug: { equals: slug } },
|
||||
locale: 'all',
|
||||
limit: 1,
|
||||
})
|
||||
: { docs: [] };
|
||||
|
||||
const anyDoc = postRes.docs[0] || productRes.docs[0] || pageRes.docs[0];
|
||||
|
||||
if (anyDoc) {
|
||||
// If the doc exists, we can figure out its native locale or
|
||||
// offer the alternative locale (if we are in 'de', offer 'en')
|
||||
const currentLocale = urlPath.startsWith('/en') ? 'en' : 'de';
|
||||
const alternativeLocale = currentLocale === 'de' ? 'en' : 'de';
|
||||
|
||||
suggestedLang = alternativeLocale === 'de' ? 'Deutsch' : 'English';
|
||||
|
||||
// Reconstruct the URL for the alternative locale
|
||||
const pathParts = urlPath.split('/').filter(Boolean);
|
||||
if (pathParts.length > 0 && (pathParts[0] === 'en' || pathParts[0] === 'de')) {
|
||||
pathParts[0] = alternativeLocale;
|
||||
} else {
|
||||
pathParts.unshift(alternativeLocale);
|
||||
}
|
||||
suggestedUrl = '/' + pathParts.join('/');
|
||||
}
|
||||
} catch (e) {
|
||||
// Ignore Payload errors in 404
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return (
|
||||
<Container className="relative py-24 flex flex-col items-center justify-center text-center min-h-[70vh] overflow-hidden">
|
||||
{/* Industrial Background Element */}
|
||||
<div className="absolute inset-0 -z-10 opacity-[0.03] pointer-events-none flex items-center justify-center">
|
||||
<span className="text-[20rem] font-bold select-none">404</span>
|
||||
</div>
|
||||
<>
|
||||
<ClientNotFoundTracker path={urlPath} />
|
||||
<Container className="relative py-24 flex flex-col items-center justify-center text-center min-h-[70vh] overflow-hidden">
|
||||
{/* Industrial Background Element */}
|
||||
<div className="absolute inset-0 -z-10 opacity-[0.03] pointer-events-none flex items-center justify-center">
|
||||
<span className="text-[20rem] font-bold select-none">404</span>
|
||||
</div>
|
||||
|
||||
<div className="relative mb-8">
|
||||
<Heading level={1} className="text-6xl md:text-8xl font-bold mb-2">
|
||||
404
|
||||
<div className="relative mb-8">
|
||||
<Heading level={1} className="text-6xl md:text-8xl font-bold mb-2">
|
||||
404
|
||||
</Heading>
|
||||
<Scribble
|
||||
variant="circle"
|
||||
className="w-[150%] h-[150%] -top-[25%] -left-[25%] text-accent/40"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<Heading level={2} className="text-2xl md:text-3xl font-bold mb-4 text-primary">
|
||||
{t('title')}
|
||||
</Heading>
|
||||
<Scribble
|
||||
variant="circle"
|
||||
className="w-[150%] h-[150%] -top-[25%] -left-[25%] text-accent/40"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<Heading level={2} className="text-2xl md:text-3xl font-bold mb-4 text-primary">
|
||||
{t('title')}
|
||||
</Heading>
|
||||
<p className="text-text-secondary mb-10 max-w-md text-lg">{t('description')}</p>
|
||||
|
||||
<p className="text-white/60 mb-10 max-w-md text-lg">{t('description')}</p>
|
||||
{suggestedUrl && (
|
||||
<div className="mb-12 p-6 bg-accent/10 border border-accent/20 rounded-2xl animate-fade-in shadow-lg relative overflow-hidden group">
|
||||
<div className="absolute inset-0 bg-accent/5 -skew-x-12 translate-x-full group-hover:translate-x-0 transition-transform duration-700" />
|
||||
<div className="relative z-10">
|
||||
<h3 className="text-primary font-bold mb-2 text-lg">
|
||||
Did you mean to visit the {suggestedLang} version?
|
||||
</h3>
|
||||
<p className="text-text-secondary text-sm mb-4">
|
||||
This page exists, but in another language.
|
||||
</p>
|
||||
<Button href={suggestedUrl} variant="accent" size="md" className="w-full sm:w-auto">
|
||||
Go to {suggestedLang} Version
|
||||
</Button>
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
|
||||
<div className="flex flex-col sm:flex-row gap-4">
|
||||
<Button href="/" variant="accent" size="lg">
|
||||
{t('cta')}
|
||||
</Button>
|
||||
<Button href="/contact" variant="outline" size="lg">
|
||||
Contact Support
|
||||
</Button>
|
||||
</div>
|
||||
<div className="flex flex-col sm:flex-row gap-4">
|
||||
<Button href="/" variant={suggestedUrl ? 'outline' : 'accent'} size="lg">
|
||||
{t('cta')}
|
||||
</Button>
|
||||
<Button href="/contact" variant={suggestedUrl ? 'ghost' : 'outline'} size="lg">
|
||||
Contact Support
|
||||
</Button>
|
||||
</div>
|
||||
|
||||
{/* Decorative Industrial Line */}
|
||||
<div className="absolute bottom-0 left-1/2 -translate-x-1/2 w-px h-24 bg-gradient-to-t from-accent/50 to-transparent" />
|
||||
</Container>
|
||||
{/* Decorative Industrial Line */}
|
||||
<div className="absolute bottom-0 left-1/2 -translate-x-1/2 w-px h-24 bg-gradient-to-t from-accent/50 to-transparent" />
|
||||
</Container>
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -7,14 +7,14 @@ import RelatedProducts from '@/components/RelatedProducts';
|
||||
import DatasheetDownload from '@/components/DatasheetDownload';
|
||||
import { Badge, Card, Container, Heading, Section } from '@/components/ui';
|
||||
import { getDatasheetPath } from '@/lib/datasheets';
|
||||
import { getAllProducts, getProductBySlug } from '@/lib/mdx';
|
||||
import { getAllProducts, getProductBySlug } from '@/lib/products';
|
||||
import { mapFileSlugToTranslated, mapSlugToFileSlug } from '@/lib/slugs';
|
||||
import { Metadata } from 'next';
|
||||
import { getTranslations, setRequestLocale } from 'next-intl/server';
|
||||
import { getProductOGImageMetadata } from '@/lib/metadata';
|
||||
import Image from 'next/image';
|
||||
import Link from 'next/link';
|
||||
import { notFound } from 'next/navigation';
|
||||
import { notFound, redirect } from 'next/navigation';
|
||||
import ProductEngagementTracker from '@/components/analytics/ProductEngagementTracker';
|
||||
import PayloadRichText from '@/components/PayloadRichText';
|
||||
|
||||
@@ -53,35 +53,46 @@ export async function generateMetadata({ params }: ProductPageProps): Promise<Me
|
||||
title: categoryTitle,
|
||||
description: categoryDesc,
|
||||
alternates: {
|
||||
canonical: `${SITE_URL}/${locale}/${await mapFileSlugToTranslated('products', locale)}/${productSlug}`,
|
||||
canonical: `${SITE_URL}/${locale}/${await mapFileSlugToTranslated('products', locale)}/${await mapFileSlugToTranslated(fileSlug, locale)}`,
|
||||
languages: {
|
||||
de: `${SITE_URL}/de/${await mapFileSlugToTranslated('products', 'de')}/${await mapFileSlugToTranslated(productSlug, 'de')}`,
|
||||
en: `${SITE_URL}/en/${await mapFileSlugToTranslated('products', 'en')}/${await mapFileSlugToTranslated(productSlug, 'en')}`,
|
||||
'x-default': `${SITE_URL}/en/${await mapFileSlugToTranslated('products', 'en')}/${await mapFileSlugToTranslated(productSlug, 'en')}`,
|
||||
de: `${SITE_URL}/de/${await mapFileSlugToTranslated('products', 'de')}/${await mapFileSlugToTranslated(fileSlug, 'de')}`,
|
||||
en: `${SITE_URL}/en/${await mapFileSlugToTranslated('products', 'en')}/${await mapFileSlugToTranslated(fileSlug, 'en')}`,
|
||||
'x-default': `${SITE_URL}/en/${await mapFileSlugToTranslated('products', 'en')}/${await mapFileSlugToTranslated(fileSlug, 'en')}`,
|
||||
},
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
const fileSlugs = await Promise.all(slug.map((s) => mapSlugToFileSlug(s, locale)));
|
||||
const getLocalizedPath = async (lang: string) => {
|
||||
const parts = await Promise.all([
|
||||
mapFileSlugToTranslated('products', lang),
|
||||
...fileSlugs.map((fs) => mapFileSlugToTranslated(fs, lang)),
|
||||
]);
|
||||
return parts.join('/');
|
||||
};
|
||||
|
||||
const product = await getProductBySlug(productSlug, locale);
|
||||
if (!product) return {};
|
||||
|
||||
const currentLocalePath = await getLocalizedPath(locale);
|
||||
|
||||
return {
|
||||
title: product.frontmatter.title,
|
||||
description: product.frontmatter.description,
|
||||
alternates: {
|
||||
canonical: `${SITE_URL}/${locale}/${await mapFileSlugToTranslated('products', locale)}/${slug.join('/')}`,
|
||||
canonical: `${SITE_URL}/${locale}/${currentLocalePath}`,
|
||||
languages: {
|
||||
de: `${SITE_URL}/de/${await mapFileSlugToTranslated('products', 'de')}/${await mapFileSlugToTranslated(slug[0], 'de')}/${await mapFileSlugToTranslated(productSlug, 'de')}`,
|
||||
en: `${SITE_URL}/en/${await mapFileSlugToTranslated('products', 'en')}/${await mapFileSlugToTranslated(slug[0], 'en')}/${await mapFileSlugToTranslated(productSlug, 'en')}`,
|
||||
'x-default': `${SITE_URL}/en/${await mapFileSlugToTranslated('products', 'en')}/${await mapFileSlugToTranslated(slug[0], 'en')}/${await mapFileSlugToTranslated(productSlug, 'en')}`,
|
||||
de: `${SITE_URL}/de/${await getLocalizedPath('de')}`,
|
||||
en: `${SITE_URL}/en/${await getLocalizedPath('en')}`,
|
||||
'x-default': `${SITE_URL}/en/${await getLocalizedPath('en')}`,
|
||||
},
|
||||
},
|
||||
openGraph: {
|
||||
title: product.frontmatter.title,
|
||||
description: product.frontmatter.description,
|
||||
type: 'website',
|
||||
url: `${SITE_URL}/${locale}/products/${slug.join('/')}`,
|
||||
url: `${SITE_URL}/${locale}/${currentLocalePath}`,
|
||||
images: getProductOGImageMetadata(productSlug, product.frontmatter.title, locale),
|
||||
},
|
||||
twitter: {
|
||||
@@ -105,7 +116,19 @@ export default async function ProductPage({ params }: ProductPageProps) {
|
||||
'high-voltage-cables',
|
||||
'solar-cables',
|
||||
];
|
||||
const fileSlug = await mapSlugToFileSlug(productSlug, locale);
|
||||
|
||||
const fileSlugs = await Promise.all(slug.map((s) => mapSlugToFileSlug(s, locale)));
|
||||
const translatedSlugsForLocale = await Promise.all(
|
||||
fileSlugs.map((fs) => mapFileSlugToTranslated(fs, locale)),
|
||||
);
|
||||
|
||||
// If the requested slugs don't exactly match the translated slugs for the current locale
|
||||
// (i.e. if the user used the static language switcher but kept the original locale's slugs)
|
||||
if (slug.join('/') !== translatedSlugsForLocale.join('/')) {
|
||||
redirect(`/${locale}/${productsSlug}/${translatedSlugsForLocale.join('/')}`);
|
||||
}
|
||||
|
||||
const fileSlug = fileSlugs[fileSlugs.length - 1];
|
||||
|
||||
if (categories.includes(fileSlug)) {
|
||||
const allProducts = await getAllProducts(locale);
|
||||
@@ -116,11 +139,26 @@ export default async function ProductPage({ params }: ProductPageProps) {
|
||||
? t(`categories.${categoryKey}.title`)
|
||||
: fileSlug;
|
||||
|
||||
const filteredProducts = allProducts.filter((p) =>
|
||||
p.frontmatter.categories.some(
|
||||
(cat) => cat.toLowerCase().replace(/\s+/g, '-') === fileSlug || cat === categoryTitle,
|
||||
),
|
||||
);
|
||||
const filteredProducts = allProducts.filter((p) => {
|
||||
const firstCat = p.frontmatter.categories[0] || '';
|
||||
const normalizedCat = firstCat.toLowerCase().replace(/\s+/g, '-');
|
||||
let pFileSlug = 'low-voltage-cables';
|
||||
if (normalizedCat === 'hochspannungskabel' || normalizedCat === 'high-voltage-cables')
|
||||
pFileSlug = 'high-voltage-cables';
|
||||
else if (
|
||||
normalizedCat === 'mittelspannungskabel' ||
|
||||
normalizedCat === 'medium-voltage-cables'
|
||||
)
|
||||
pFileSlug = 'medium-voltage-cables';
|
||||
else if (
|
||||
normalizedCat === 'solarkabel' ||
|
||||
normalizedCat === 'solar-cables' ||
|
||||
normalizedCat === 'solar'
|
||||
)
|
||||
pFileSlug = 'solar-cables';
|
||||
|
||||
return pFileSlug === fileSlug;
|
||||
});
|
||||
|
||||
const productsWithTranslatedSlugs = await Promise.all(
|
||||
filteredProducts.map(async (p) => ({
|
||||
@@ -258,7 +296,7 @@ export default async function ProductPage({ params }: ProductPageProps) {
|
||||
(node.fields?.blockType === 'productTabs' ||
|
||||
node.fields?.blockType === 'productTechnicalData'),
|
||||
);
|
||||
const descriptionChildren = rootChildren.filter(
|
||||
let descriptionChildren = rootChildren.filter(
|
||||
(node: any) =>
|
||||
!(
|
||||
node.type === 'block' &&
|
||||
@@ -267,6 +305,25 @@ export default async function ProductPage({ params }: ProductPageProps) {
|
||||
),
|
||||
);
|
||||
|
||||
// If no standalone description nodes, extract from the productTabs block's embedded content
|
||||
if (descriptionChildren.length === 0) {
|
||||
const tabsBlock = rootChildren.find(
|
||||
(node: any) => node.type === 'block' && node.fields?.blockType === 'productTabs',
|
||||
);
|
||||
if (tabsBlock?.fields?.content?.root?.children) {
|
||||
descriptionChildren = tabsBlock.fields.content.root.children.filter((node: any) => {
|
||||
// Filter out MDX parsing artifacts like `}>`
|
||||
if (node.type === 'paragraph' && node.children?.length === 1) {
|
||||
const text = node.children[0]?.text?.trim();
|
||||
return text !== '}>' && text !== '{' && text !== '}';
|
||||
}
|
||||
return true;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
console.log(`[DEBUG PAGE] Slug: ${productSlug}, children count: ${descriptionChildren.length}`);
|
||||
|
||||
const descriptionContent = {
|
||||
root: {
|
||||
...product.content.root,
|
||||
@@ -298,29 +355,31 @@ export default async function ProductPage({ params }: ProductPageProps) {
|
||||
categories={product.frontmatter.categories}
|
||||
sku={product.frontmatter.sku}
|
||||
/>
|
||||
<section className="relative pt-40 pb-24 overflow-hidden bg-primary-dark">
|
||||
<section className="relative pt-28 md:pt-40 pb-12 md:pb-24 overflow-hidden bg-primary-dark">
|
||||
{/* Background Decorative Elements */}
|
||||
<div className="absolute top-0 right-0 w-1/2 h-full bg-gradient-to-l from-accent/5 to-transparent pointer-events-none" />
|
||||
<div className="absolute -top-24 -right-24 w-96 h-96 bg-accent/10 rounded-full blur-3xl pointer-events-none" />
|
||||
|
||||
<Container className="relative z-10">
|
||||
<div className="max-w-4xl animate-slide-up">
|
||||
<nav className="flex items-center mb-12 text-white/40 text-[10px] font-black uppercase tracking-[0.2em]">
|
||||
<nav className="flex flex-wrap items-center gap-y-1 mb-6 md:mb-12 text-white/40 text-[10px] font-black uppercase tracking-[0.2em]">
|
||||
<Link
|
||||
href={`/${locale}/${productsSlug}`}
|
||||
className="hover:text-accent transition-colors"
|
||||
className="hover:text-accent transition-colors shrink-0"
|
||||
>
|
||||
{t.has('breadcrumb') ? t('breadcrumb') : 'Products'}
|
||||
</Link>
|
||||
<span className="mx-4 opacity-20">/</span>
|
||||
<span className="mx-2 md:mx-4 opacity-20">/</span>
|
||||
<Link
|
||||
href={`/${locale}/${productsSlug}/${categorySlug}`}
|
||||
className="hover:text-accent transition-colors"
|
||||
className="hover:text-accent transition-colors shrink-0 max-w-[140px] truncate"
|
||||
>
|
||||
{categoryTitle}
|
||||
</Link>
|
||||
<span className="mx-4 opacity-20">/</span>
|
||||
<span className="text-white/90">{product.frontmatter.title}</span>
|
||||
<span className="mx-2 md:mx-4 opacity-20">/</span>
|
||||
<span className="text-white/90 truncate max-w-[140px] md:max-w-none">
|
||||
{product.frontmatter.title}
|
||||
</span>
|
||||
</nav>
|
||||
|
||||
<div className="flex flex-col lg:flex-row lg:items-center justify-between gap-12">
|
||||
@@ -331,7 +390,7 @@ export default async function ProductPage({ params }: ProductPageProps) {
|
||||
{t('englishVersion')}
|
||||
</div>
|
||||
)}
|
||||
<div className="flex flex-wrap gap-3 mb-8">
|
||||
<div className="flex flex-wrap gap-2 mb-4 md:mb-8">
|
||||
{product.frontmatter.categories.map((cat, idx) => (
|
||||
<Badge
|
||||
key={idx}
|
||||
@@ -342,10 +401,10 @@ export default async function ProductPage({ params }: ProductPageProps) {
|
||||
</Badge>
|
||||
))}
|
||||
</div>
|
||||
<Heading level={1} className="text-white mb-8 uppercase">
|
||||
<Heading level={1} className="text-white mb-4 md:mb-8 uppercase">
|
||||
{product.frontmatter.title}
|
||||
</Heading>
|
||||
<p className="text-xl md:text-2xl text-white/60 max-w-2xl leading-relaxed font-medium">
|
||||
<p className="text-base md:text-xl lg:text-2xl text-white/60 max-w-2xl leading-relaxed font-medium">
|
||||
{product.frontmatter.description}
|
||||
</p>
|
||||
</div>
|
||||
@@ -359,11 +418,11 @@ export default async function ProductPage({ params }: ProductPageProps) {
|
||||
{/* Large Product Image Section */}
|
||||
{product.frontmatter.images && product.frontmatter.images.length > 0 && (
|
||||
<div
|
||||
className="relative -mt-32 mb-32 animate-slide-up"
|
||||
className="relative md:-mt-32 mb-8 md:mb-32 animate-slide-up"
|
||||
style={{ animationDelay: '200ms' }}
|
||||
>
|
||||
<div className="bg-white shadow-[0_32px_64px_-12px_rgba(0,0,0,0.1)] rounded-[48px] border border-neutral-dark/5 overflow-hidden p-12 md:p-20 lg:p-24">
|
||||
<div className="relative w-full aspect-[21/9]">
|
||||
<div className="bg-white shadow-[0_32px_64px_-12px_rgba(0,0,0,0.1)] rounded-[24px] md:rounded-[48px] border border-neutral-dark/5 overflow-hidden p-6 md:p-20 lg:p-24">
|
||||
<div className="relative w-full aspect-[4/3] md:aspect-[21/9]">
|
||||
<Image
|
||||
src={product.frontmatter.images[0]}
|
||||
alt={product.frontmatter.title}
|
||||
@@ -398,11 +457,23 @@ export default async function ProductPage({ params }: ProductPageProps) {
|
||||
</div>
|
||||
)}
|
||||
|
||||
<div className="grid grid-cols-1 lg:grid-cols-12 gap-12 lg:gap-20">
|
||||
<div className="grid grid-cols-1 lg:grid-cols-12 gap-8 lg:gap-20">
|
||||
{/* Description Area Next to Sidebar */}
|
||||
<div className="lg:col-span-8">
|
||||
<div className="max-w-none prose prose-primary prose-lg md:prose-xl mb-16 pb-16 border-b border-neutral-dark/5">
|
||||
<PayloadRichText data={descriptionContent} />
|
||||
<div className="max-w-none prose prose-primary prose-base md:prose-lg xl:prose-xl mb-8 md:mb-16 pb-8 md:pb-16 border-b border-neutral-dark/5">
|
||||
{descriptionChildren.length > 0 ? (
|
||||
<PayloadRichText data={descriptionContent} />
|
||||
) : product.frontmatter.description ? (
|
||||
<p className="text-lg md:text-xl text-text-secondary leading-relaxed">
|
||||
{product.frontmatter.description}
|
||||
</p>
|
||||
) : null}
|
||||
|
||||
{product.application?.root?.children?.length > 0 && (
|
||||
<div className="mt-12">
|
||||
<PayloadRichText data={product.application} />
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -411,7 +482,7 @@ export default async function ProductPage({ params }: ProductPageProps) {
|
||||
</div>
|
||||
|
||||
{/* Full-width Technical Data Below */}
|
||||
<div className="mt-16 pt-16 border-t-0">
|
||||
<div className="mt-8 md:mt-16 pt-8 md:pt-16 border-t-0">
|
||||
<div className="max-w-none prose prose-primary prose-lg md:prose-xl">
|
||||
<PayloadRichText data={technicalContent} />
|
||||
</div>
|
||||
@@ -469,7 +540,7 @@ export default async function ProductPage({ params }: ProductPageProps) {
|
||||
</div>
|
||||
|
||||
{/* Related Products Section */}
|
||||
<div className="mt-16 pt-16 border-t border-neutral-dark/5">
|
||||
<div className="mt-10 md:mt-16 pt-10 md:pt-16 border-t border-neutral-dark/5">
|
||||
<RelatedProducts
|
||||
currentSlug={productSlug}
|
||||
categories={product.frontmatter.categories}
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import Reveal from '@/components/Reveal';
|
||||
import Scribble from '@/components/Scribble';
|
||||
import { Badge, Button, Card, Container, Heading, Section } from '@/components/ui';
|
||||
import { getTranslations, setRequestLocale } from 'next-intl/server';
|
||||
import { Metadata } from 'next';
|
||||
@@ -59,6 +58,7 @@ export default async function ProductsPage({ params }: ProductsPageProps) {
|
||||
const solarSlug = await mapFileSlugToTranslated('solar-cables', locale);
|
||||
|
||||
const productsSlug = await mapFileSlugToTranslated('products', locale);
|
||||
const contactSlug = await mapFileSlugToTranslated('contact', locale);
|
||||
|
||||
const categories = [
|
||||
{
|
||||
@@ -94,7 +94,7 @@ export default async function ProductsPage({ params }: ProductsPageProps) {
|
||||
return (
|
||||
<div className="flex flex-col min-h-screen bg-neutral-light">
|
||||
{/* Hero Section */}
|
||||
<section className="relative min-h-[50vh] md:min-h-[70vh] flex items-center pt-32 pb-20 md:pt-40 md:pb-32 overflow-hidden bg-primary-dark">
|
||||
<section className="relative flex items-center pt-32 pb-16 md:pt-40 md:pb-24 overflow-hidden bg-primary-dark">
|
||||
<Container className="relative z-10">
|
||||
<div className="max-w-4xl animate-slide-up">
|
||||
<Badge
|
||||
@@ -105,15 +105,7 @@ export default async function ProductsPage({ params }: ProductsPageProps) {
|
||||
</Badge>
|
||||
<Heading level={1} className="text-white mb-4 md:mb-8">
|
||||
{t.rich('title', {
|
||||
green: (chunks) => (
|
||||
<span className="relative inline-block">
|
||||
<span className="relative z-10 text-accent italic">{chunks}</span>
|
||||
<Scribble
|
||||
variant="circle"
|
||||
className="w-[140%] h-[140%] -top-[20%] -left-[20%] text-accent/30 hidden md:block"
|
||||
/>
|
||||
</span>
|
||||
),
|
||||
green: (chunks) => <span className="text-accent italic">{chunks}</span>,
|
||||
})}
|
||||
</Heading>
|
||||
<p className="text-lg md:text-xl text-white/70 leading-relaxed max-w-2xl mb-8 md:mb-12 line-clamp-2 md:line-clamp-none">
|
||||
@@ -222,7 +214,7 @@ export default async function ProductsPage({ params }: ProductsPageProps) {
|
||||
<div className="absolute top-0 right-0 w-1/2 h-full bg-accent/5 -skew-x-12 translate-x-1/4" />
|
||||
<div className="relative z-10 flex flex-col lg:flex-row items-center justify-between gap-6 md:gap-12">
|
||||
<div className="max-w-2xl text-center lg:text-left">
|
||||
<h2 className="text-2xl md:text-5xl lg:text-6xl font-bold text-white mb-4 md:mb-8 tracking-tight">
|
||||
<h2 className="text-2xl md:text-4xl font-bold text-white mb-4 md:mb-8 tracking-tight">
|
||||
{t('cta.title')}
|
||||
</h2>
|
||||
<p className="text-base md:text-xl text-white/70 leading-relaxed">
|
||||
@@ -230,10 +222,10 @@ export default async function ProductsPage({ params }: ProductsPageProps) {
|
||||
</p>
|
||||
</div>
|
||||
<Button
|
||||
href={`/${locale}/contact`}
|
||||
href={`/${locale}/${contactSlug}`}
|
||||
variant="accent"
|
||||
size="lg"
|
||||
className="group whitespace-nowrap w-full md:w-auto md:h-16 md:px-10 md:text-xl"
|
||||
className="group whitespace-nowrap w-full md:w-auto md:h-16 px-6 md:px-10 text-sm md:text-xl"
|
||||
>
|
||||
{t('cta.button')}
|
||||
<span className="ml-2 md:ml-4 transition-transform group-hover:translate-x-2">
|
||||
|
||||
@@ -122,12 +122,12 @@ export default async function TeamPage({ params }: TeamPageProps) {
|
||||
<Badge variant="accent" className="mb-4 md:mb-8">
|
||||
{t('michael.role')}
|
||||
</Badge>
|
||||
<Heading level={2} className="text-white mb-6 md:mb-10 text-3xl md:text-5xl">
|
||||
<Heading level={2} className="text-white mb-6 md:mb-10 text-2xl md:text-4xl">
|
||||
<span className="text-white">{t('michael.name')}</span>
|
||||
</Heading>
|
||||
<div className="relative mb-6 md:mb-12">
|
||||
<div className="absolute -left-4 md:-left-8 top-0 bottom-0 w-1 md:w-1.5 bg-accent rounded-full" />
|
||||
<p className="text-lg md:text-2xl font-bold italic leading-relaxed pl-5 md:pl-8 text-white/90">
|
||||
<p className="text-base md:text-xl font-bold italic leading-relaxed pl-5 md:pl-8 text-white/90">
|
||||
{t('michael.quote')}
|
||||
</p>
|
||||
</div>
|
||||
@@ -156,6 +156,7 @@ export default async function TeamPage({ params }: TeamPageProps) {
|
||||
alt={t('michael.name')}
|
||||
fill
|
||||
className="object-cover scale-105 hover:scale-100 transition-transform duration-1000"
|
||||
quality={100}
|
||||
sizes="(max-width: 1024px) 100vw, 50vw"
|
||||
/>
|
||||
<div className="absolute inset-0 bg-gradient-to-t from-primary-dark/60 lg:bg-gradient-to-r lg:from-primary-dark/20 to-transparent" />
|
||||
@@ -225,6 +226,7 @@ export default async function TeamPage({ params }: TeamPageProps) {
|
||||
alt={t('klaus.name')}
|
||||
fill
|
||||
className="object-cover scale-105 hover:scale-100 transition-transform duration-1000"
|
||||
quality={100}
|
||||
sizes="(max-width: 1024px) 100vw, 50vw"
|
||||
/>
|
||||
<div className="absolute inset-0 bg-gradient-to-t from-white/60 lg:bg-gradient-to-l lg:from-primary-dark/20 to-transparent" />
|
||||
@@ -235,12 +237,12 @@ export default async function TeamPage({ params }: TeamPageProps) {
|
||||
<Badge variant="saturated" className="mb-4 md:mb-8">
|
||||
{t('klaus.role')}
|
||||
</Badge>
|
||||
<Heading level={2} className="text-saturated mb-6 md:mb-10 text-3xl md:text-6xl">
|
||||
<Heading level={2} className="text-saturated mb-6 md:mb-10 text-2xl md:text-4xl">
|
||||
{t('klaus.name')}
|
||||
</Heading>
|
||||
<div className="relative mb-6 md:mb-12">
|
||||
<div className="absolute -left-4 md:-left-8 top-0 bottom-0 w-1 md:w-1.5 bg-saturated rounded-full" />
|
||||
<p className="text-lg md:text-3xl font-bold italic leading-relaxed pl-5 md:pl-8 text-text-secondary">
|
||||
<p className="text-base md:text-xl font-bold italic leading-relaxed pl-5 md:pl-8 text-text-secondary">
|
||||
{t('klaus.quote')}
|
||||
</p>
|
||||
</div>
|
||||
|
||||
@@ -72,6 +72,7 @@ export async function sendContactFormAction(formData: FormData) {
|
||||
? `Product Inquiry: ${productName}`
|
||||
: 'New Contact Form Submission';
|
||||
const confirmationSubject = 'Thank you for your inquiry';
|
||||
const isTestSubmission = email === 'testing@mintel.me';
|
||||
|
||||
try {
|
||||
// 2a. Send notification to Mintel/Client
|
||||
@@ -84,16 +85,30 @@ export async function sendContactFormAction(formData: FormData) {
|
||||
}),
|
||||
);
|
||||
|
||||
const notificationResult = await sendEmail({
|
||||
replyTo: email,
|
||||
subject: notificationSubject,
|
||||
html: notificationHtml,
|
||||
});
|
||||
|
||||
if (notificationResult.success) {
|
||||
logger.info('Notification email sent successfully', {
|
||||
messageId: notificationResult.messageId,
|
||||
if (!isTestSubmission) {
|
||||
const notificationResult = await sendEmail({
|
||||
replyTo: email,
|
||||
subject: notificationSubject,
|
||||
html: notificationHtml,
|
||||
});
|
||||
|
||||
if (notificationResult.success) {
|
||||
logger.info('Notification email sent successfully', {
|
||||
messageId: notificationResult.messageId,
|
||||
});
|
||||
} else {
|
||||
logger.error('Notification email FAILED', {
|
||||
error: notificationResult.error,
|
||||
subject: notificationSubject,
|
||||
email,
|
||||
});
|
||||
services.errors.captureException(
|
||||
new Error(`Notification email failed: ${notificationResult.error}`),
|
||||
{ action: 'sendContactFormAction_notification', email },
|
||||
);
|
||||
}
|
||||
} else {
|
||||
logger.info('Skipping notification email for test submission', { email });
|
||||
}
|
||||
|
||||
// 2b. Send confirmation to Customer (branded as KLZ Cables)
|
||||
@@ -105,16 +120,30 @@ export async function sendContactFormAction(formData: FormData) {
|
||||
}),
|
||||
);
|
||||
|
||||
const confirmationResult = await sendEmail({
|
||||
to: email,
|
||||
subject: confirmationSubject,
|
||||
html: confirmationHtml,
|
||||
});
|
||||
|
||||
if (confirmationResult.success) {
|
||||
logger.info('Confirmation email sent successfully', {
|
||||
messageId: confirmationResult.messageId,
|
||||
if (!isTestSubmission) {
|
||||
const confirmationResult = await sendEmail({
|
||||
to: email,
|
||||
subject: confirmationSubject,
|
||||
html: confirmationHtml,
|
||||
});
|
||||
|
||||
if (confirmationResult.success) {
|
||||
logger.info('Confirmation email sent successfully', {
|
||||
messageId: confirmationResult.messageId,
|
||||
});
|
||||
} else {
|
||||
logger.error('Confirmation email FAILED', {
|
||||
error: confirmationResult.error,
|
||||
subject: confirmationSubject,
|
||||
to: email,
|
||||
});
|
||||
services.errors.captureException(
|
||||
new Error(`Confirmation email failed: ${confirmationResult.error}`),
|
||||
{ action: 'sendContactFormAction_confirmation', email },
|
||||
);
|
||||
}
|
||||
} else {
|
||||
logger.info('Skipping confirmation email for test submission', { email });
|
||||
}
|
||||
|
||||
// Notify via Gotify (Internal)
|
||||
|
||||
218
app/api/ai-search/route.ts
Normal file
218
app/api/ai-search/route.ts
Normal file
@@ -0,0 +1,218 @@
|
||||
import { NextResponse, NextRequest } from 'next/server'; // Added NextRequest
|
||||
import { searchProducts } from '../../../src/lib/qdrant';
|
||||
import redis from '../../../src/lib/redis';
|
||||
import { z } from 'zod';
|
||||
import * as Sentry from '@sentry/nextjs';
|
||||
import { generateText } from 'ai';
|
||||
import { createOpenAI } from '@ai-sdk/openai';
|
||||
// @ts-ignore
|
||||
import { createMcpTools } from '@mintel/payload-ai/tools/mcpAdapter';
|
||||
|
||||
export const dynamic = 'force-dynamic';
|
||||
export const maxDuration = 60; // Max allowed duration (Vercel)
|
||||
|
||||
// Config and constants
|
||||
const RATE_LIMIT_POINTS = 20; // 20 requests per minute
|
||||
const RATE_LIMIT_DURATION = 60; // 1 minute window
|
||||
const DAILY_BUDGET_LIMIT = 200; // max 200 requests per IP per day
|
||||
const DAILY_BUDGET_DURATION = 60 * 60 * 24; // 24h
|
||||
const MAX_CONVERSATION_MESSAGES = 20; // max messages in context
|
||||
const MAX_RESPONSE_TOKENS = 300; // cap AI response length — keeps it chat-like
|
||||
|
||||
// Removed requestSchema as it's replaced by direct parsing
|
||||
|
||||
export async function POST(req: NextRequest) {
|
||||
// Changed req type to NextRequest
|
||||
try {
|
||||
let body: any;
|
||||
try {
|
||||
body = await req.json();
|
||||
} catch {
|
||||
return NextResponse.json({ error: 'Invalid request body' }, { status: 400 });
|
||||
}
|
||||
const { messages, honeypot } = body;
|
||||
|
||||
// Get client IP for rate limiting
|
||||
const forwarded = req.headers.get('x-forwarded-for');
|
||||
const clientIp = forwarded?.split(',')[0]?.trim() || req.headers.get('x-real-ip') || 'unknown';
|
||||
|
||||
// 1. Basic Validation
|
||||
if (!messages || !Array.isArray(messages) || messages.length === 0) {
|
||||
return NextResponse.json({ error: 'Valid messages array is required' }, { status: 400 });
|
||||
}
|
||||
|
||||
const latestMessage = messages[messages.length - 1].content;
|
||||
const isBot = honeypot && honeypot.length > 0;
|
||||
|
||||
// Check if the input itself is obviously spam/too long
|
||||
if (latestMessage.length > 500) {
|
||||
return NextResponse.json({ error: 'Message too long' }, { status: 400 });
|
||||
}
|
||||
|
||||
// 2. Honeypot check
|
||||
if (isBot) {
|
||||
console.warn('Honeypot triggered in AI search');
|
||||
// Tarpit the bot
|
||||
await new Promise((resolve) => setTimeout(resolve, 3000));
|
||||
return NextResponse.json({
|
||||
answerText: 'Vielen Dank für Ihre Anfrage.',
|
||||
products: [],
|
||||
});
|
||||
}
|
||||
|
||||
// 3. Rate Limiting via Redis (IP-based)
|
||||
try {
|
||||
// Per-minute burst limit
|
||||
const minuteKey = `ai_rate:${clientIp}:min`;
|
||||
const minuteCount = await redis.incr(minuteKey);
|
||||
if (minuteCount === 1) await redis.expire(minuteKey, RATE_LIMIT_DURATION);
|
||||
|
||||
if (minuteCount > RATE_LIMIT_POINTS) {
|
||||
return NextResponse.json(
|
||||
{ error: 'Zu viele Anfragen. Bitte warte einen Moment.' },
|
||||
{ status: 429 },
|
||||
);
|
||||
}
|
||||
|
||||
// Daily budget limit
|
||||
const dayKey = `ai_rate:${clientIp}:day`;
|
||||
const dayCount = await redis.incr(dayKey);
|
||||
if (dayCount === 1) await redis.expire(dayKey, DAILY_BUDGET_DURATION);
|
||||
|
||||
if (dayCount > DAILY_BUDGET_LIMIT) {
|
||||
return NextResponse.json(
|
||||
{ error: 'Tägliches Limit erreicht. Bitte versuche es morgen erneut.' },
|
||||
{ status: 429 },
|
||||
);
|
||||
}
|
||||
} catch (redisError) {
|
||||
console.error('Redis Rate Limiting Error:', redisError);
|
||||
Sentry.captureException(redisError, { tags: { context: 'ai-search-rate-limit' } });
|
||||
// Fail open if Redis is down
|
||||
}
|
||||
|
||||
// 4. Cap conversation length to limit token usage
|
||||
const cappedMessages = messages.slice(-MAX_CONVERSATION_MESSAGES);
|
||||
|
||||
// 4. Fetch Context from Qdrant based on the latest message
|
||||
let contextStr = '';
|
||||
let foundProducts: any[] = [];
|
||||
|
||||
// Team context — hardcoded from translation data (no Payload collection for team)
|
||||
const teamContextStr = `
|
||||
Das ECHTE KLZ Team:
|
||||
- Michael Bodemer (Geschäftsführer) — Der Macher, packt an wenn es kompliziert wird, kennt Kabelnetze in- und auswendig
|
||||
- Klaus Mintel (Geschäftsführer) — Der Fels in der Brandung, jahrzehntelange Erfahrung, stabiles Netzwerk`;
|
||||
|
||||
try {
|
||||
const searchResults = await searchProducts(latestMessage, 5);
|
||||
|
||||
if (searchResults && searchResults.length > 0) {
|
||||
const productDescriptions = searchResults
|
||||
.filter((p) => p.payload?.type === 'product' || !p.payload?.type)
|
||||
.map((p: any) => p.payload?.content)
|
||||
.join('\n\n');
|
||||
|
||||
if (productDescriptions) {
|
||||
contextStr = `KATALOG & PRODUKTE:\n${productDescriptions}`;
|
||||
}
|
||||
|
||||
foundProducts = searchResults
|
||||
.filter((p) => (p.payload?.type === 'product' || !p.payload?.type) && p.payload?.data)
|
||||
.map((p: any) => ({
|
||||
id: p.id as string,
|
||||
title: p.payload?.data?.title as string,
|
||||
sku: p.payload?.data?.sku as string,
|
||||
slug: p.payload?.data?.slug as string,
|
||||
}));
|
||||
}
|
||||
} catch (searchError) {
|
||||
console.error('Qdrant Search Error:', searchError);
|
||||
Sentry.captureException(searchError, { tags: { context: 'ai-search-qdrant' } });
|
||||
// We can still proceed without context if Qdrant fails
|
||||
}
|
||||
|
||||
// 5. Generate AI Response via OpenRouter (Mistral for DSGVO)
|
||||
const systemPrompt = `Du bist "Ohm" — der digitale KI-Berater von KLZ Cables. Dein Name ist eine Anspielung auf die Einheit des elektrischen Widerstands.
|
||||
|
||||
STIL & PERSÖNLICHKEIT:
|
||||
- Antworte KURZ, KNAPP und PROFESSIONELL (maximal 2-3 Sätze).
|
||||
- Schreibe wie in einem lockeren, aber kompetenten B2B-Chat (Du-Form ist okay, aber fachlich top).
|
||||
- Kein Markdown, nur Fließtext.
|
||||
- NIEMALS Platzhalter wie [Ihr Name], [Name], [Firma] verwenden.
|
||||
|
||||
DEINE HAUPTAUFGABE: BERATEN, NICHT AUSFRAGEN!
|
||||
- Wenn der Kunde ein Projekt nennt (z.B. "Windpark 30kV"), dann lies im KONTEXT nach, welche Kabel passen, und EMPFIEHL SIE DIREKT! (z.B. "Für 30kV Windparks nehmen wir meistens NA2XS(F)2Y.").
|
||||
- Stelle NIEMALS mehr als EINE Rückfrage pro Nachricht.
|
||||
- FRAGE NICHT nach abstrakten Dingen wie "Welchen Kabeltyp brauchst du?" -> DAS IST DEIN JOB, IHM DAS ZU SAGEN!
|
||||
- FRAGE NICHT nach Längen oder genauen Trassen, es sei denn, der Kunde hat schon ganz klar gesagt, was er kaufen will.
|
||||
- Biete aktiv Hilfe an: "Ich kann dir die passenden Querschnitte raussuchen, wenn du willst."
|
||||
- Wenn technisches Wissen aus dem Kabelhandbuch benötigt wird, NUTZE UNBEDINGT eines der "kabelfachmann_*" Tools, anstatt zu raten oder zu behaupten du wüsstest es nicht! Das Tool weiss alles.
|
||||
|
||||
VORGEHEN:
|
||||
1. Prüfe den KONTEXT auf passende Katalog-Kabel für das Kundenprojekt.
|
||||
2. Wenn du tiefgehendes Wissen zu einem Kabeltyp brauchst (z.B. Biegeradius, Normen, Querschnitte), rufe das Kabelfachmann-Tool auf.
|
||||
3. Nenne direkt 1-2 passende Produktserien aus dem Kontext oder der Tool-Abfrage, die für diesen Fall Sinn machen.
|
||||
4. Biete eine konkrete Hilfestellung an (z.B. Leitungsberechnung, Verfügbarkeitsprüfung) ODER stelle EINE einzige fachliche Rückfrage, um das Kabel weiter einzugrenzen (z.B. Alu oder Kupfer?).
|
||||
5. Wenn das Projekt klar ist und die Kabeltypen besprochen sind, frag nach, ob ein Kollege (z.B. Micha) ein konkretes Angebot machen soll.
|
||||
|
||||
GRENZEN:
|
||||
- PRIVAT-ANFRAGEN: B2B only. Private Hausinstallationen lehnen wir freundlich ab.
|
||||
- Keine Preise oder genauen Lieferzeiten versprechen. Immer auf die menschlichen Kollegen verweisen für finale Angebote.
|
||||
|
||||
KONTEXT KABEL & TEAM:
|
||||
${contextStr || 'Kein Katalogkontext verfügbar.'}
|
||||
${teamContextStr}
|
||||
`;
|
||||
|
||||
const openrouterApiKey = process.env.OPENROUTER_API_KEY;
|
||||
if (!openrouterApiKey) {
|
||||
throw new Error('OPENROUTER_API_KEY is not set');
|
||||
}
|
||||
|
||||
const openrouter = createOpenAI({
|
||||
baseURL: 'https://openrouter.ai/api/v1',
|
||||
apiKey: openrouterApiKey,
|
||||
});
|
||||
|
||||
let mcpTools: Record<string, any> = {};
|
||||
const mcpUrl = process.env.KABELFACHMANN_MCP_URL || 'http://host.docker.internal:3007/sse';
|
||||
try {
|
||||
const { tools } = await createMcpTools({
|
||||
name: 'kabelfachmann',
|
||||
url: mcpUrl
|
||||
});
|
||||
mcpTools = tools;
|
||||
} catch (e) {
|
||||
console.warn('Failed to load MCP tools', e);
|
||||
Sentry.captureException(e, { tags: { context: 'ai-search-mcp' } });
|
||||
}
|
||||
|
||||
const { text } = await generateText({
|
||||
model: openrouter('google/gemini-3.0-flash'),
|
||||
system: systemPrompt,
|
||||
messages: cappedMessages.map((m: any) => ({
|
||||
role: m.role,
|
||||
content: typeof m.content === 'string' ? m.content : JSON.stringify(m.content),
|
||||
})),
|
||||
tools: mcpTools,
|
||||
// @ts-ignore
|
||||
maxSteps: 3, // Allow the model to call the tool and then respond
|
||||
temperature: 0.3,
|
||||
maxTokens: MAX_RESPONSE_TOKENS,
|
||||
});
|
||||
|
||||
// Return the AI's answer along with any found products
|
||||
return NextResponse.json({
|
||||
answerText: text,
|
||||
products: foundProducts,
|
||||
});
|
||||
} catch (error) {
|
||||
console.error('AI Search API Error:', error);
|
||||
Sentry.captureException(error, { tags: { context: 'ai-search-api' } });
|
||||
return NextResponse.json(
|
||||
{ error: 'Ein interner Fehler ist aufgetreten. Bitte versuche es erneut.' },
|
||||
{ status: 500 },
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,41 @@
|
||||
import { NextResponse } from 'next/server';
|
||||
import { getPayload } from 'payload';
|
||||
import configPromise from '@payload-config';
|
||||
|
||||
export const dynamic = 'force-dynamic';
|
||||
|
||||
/**
|
||||
* Deep CMS Health Check
|
||||
* Validates that Payload CMS can actually query the database.
|
||||
* Used by post-deploy smoke tests to catch migration/schema issues.
|
||||
*/
|
||||
export async function GET() {
|
||||
// Payload is embedded within the Next.js app, so if this route responds, the CMS is up.
|
||||
// Further DB health checks can be implemented via Payload Local API later.
|
||||
return NextResponse.json({ status: 'ok', message: 'Payload CMS is embedded.' }, { status: 200 });
|
||||
const checks: Record<string, string> = {};
|
||||
|
||||
try {
|
||||
const payload = await getPayload({ config: configPromise });
|
||||
checks.init = 'ok';
|
||||
|
||||
// Verify each collection can be queried (catches missing locale tables, broken migrations)
|
||||
const collections = ['posts', 'products', 'pages', 'media'] as const;
|
||||
for (const collection of collections) {
|
||||
try {
|
||||
await payload.find({ collection, limit: 1, locale: 'en' });
|
||||
checks[collection] = 'ok';
|
||||
} catch (e: any) {
|
||||
checks[collection] = `error: ${e.message?.substring(0, 100)}`;
|
||||
}
|
||||
}
|
||||
|
||||
const hasErrors = Object.values(checks).some((v) => v.startsWith('error'));
|
||||
return NextResponse.json(
|
||||
{ status: hasErrors ? 'degraded' : 'ok', checks },
|
||||
{ status: hasErrors ? 503 : 200 },
|
||||
);
|
||||
} catch (e: any) {
|
||||
return NextResponse.json(
|
||||
{ status: 'error', message: e.message?.substring(0, 200), checks },
|
||||
{ status: 503 },
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
165
app/api/sync-qdrant/route.ts
Normal file
165
app/api/sync-qdrant/route.ts
Normal file
@@ -0,0 +1,165 @@
|
||||
import { NextResponse } from 'next/server';
|
||||
import { getPayload } from 'payload';
|
||||
import configPromise from '../../../payload.config';
|
||||
import { upsertProductVector } from '../../../src/lib/qdrant';
|
||||
|
||||
export const dynamic = 'force-dynamic';
|
||||
export const maxDuration = 120;
|
||||
|
||||
/**
|
||||
* Internal endpoint called by the warmup script on every dev boot.
|
||||
* Syncs posts, pages, and products from Payload CMS into Qdrant.
|
||||
* NOT for form entries, media, or users.
|
||||
*/
|
||||
export async function GET() {
|
||||
const results = { products: 0, posts: 0, pages: 0, errors: [] as string[] };
|
||||
|
||||
try {
|
||||
const payload = await getPayload({ config: configPromise });
|
||||
|
||||
// ── Products ──
|
||||
const { docs: products } = await payload.find({
|
||||
collection: 'products',
|
||||
limit: 1000,
|
||||
depth: 0,
|
||||
where: { _status: { equals: 'published' } },
|
||||
});
|
||||
|
||||
for (const product of products) {
|
||||
try {
|
||||
const contentText = `${product.title} - SKU: ${product.sku}\n${product.description || ''}`;
|
||||
await upsertProductVector(String(product.id), contentText, {
|
||||
type: 'product',
|
||||
data: {
|
||||
title: product.title,
|
||||
sku: product.sku,
|
||||
slug: product.slug,
|
||||
description: product.description,
|
||||
},
|
||||
});
|
||||
results.products++;
|
||||
} catch (e: any) {
|
||||
results.errors.push(`product:${product.sku}: ${e.message}`);
|
||||
}
|
||||
}
|
||||
|
||||
// ── Posts ──
|
||||
const { docs: posts } = await payload.find({
|
||||
collection: 'posts',
|
||||
limit: 1000,
|
||||
depth: 0,
|
||||
where: { _status: { equals: 'published' } },
|
||||
});
|
||||
|
||||
for (const post of posts) {
|
||||
try {
|
||||
const contentText = [
|
||||
`Blog-Artikel: ${post.title}`,
|
||||
post.excerpt ? `Zusammenfassung: ${post.excerpt}` : '',
|
||||
post.category ? `Kategorie: ${post.category}` : '',
|
||||
]
|
||||
.filter(Boolean)
|
||||
.join('\n');
|
||||
|
||||
await upsertProductVector(`post_${post.id}`, contentText, {
|
||||
type: 'knowledge',
|
||||
content: contentText,
|
||||
data: {
|
||||
title: post.title,
|
||||
slug: post.slug,
|
||||
},
|
||||
});
|
||||
results.posts++;
|
||||
} catch (e: any) {
|
||||
results.errors.push(`post:${post.slug}: ${e.message}`);
|
||||
}
|
||||
}
|
||||
|
||||
// ── Pages ──
|
||||
const { docs: pages } = await payload.find({
|
||||
collection: 'pages',
|
||||
limit: 1000,
|
||||
depth: 0,
|
||||
where: { _status: { equals: 'published' } },
|
||||
});
|
||||
|
||||
for (const page of pages) {
|
||||
try {
|
||||
const contentText = [
|
||||
`Seite: ${page.title}`,
|
||||
page.excerpt ? `Beschreibung: ${page.excerpt}` : '',
|
||||
]
|
||||
.filter(Boolean)
|
||||
.join('\n');
|
||||
|
||||
await upsertProductVector(`page_${page.id}`, contentText, {
|
||||
type: 'knowledge',
|
||||
content: contentText,
|
||||
data: {
|
||||
title: page.title,
|
||||
slug: page.slug,
|
||||
},
|
||||
});
|
||||
results.pages++;
|
||||
} catch (e: any) {
|
||||
results.errors.push(`page:${page.slug}: ${e.message}`);
|
||||
}
|
||||
}
|
||||
|
||||
// ── Kabelhandbuch (Static Text) ──
|
||||
const os = require('os');
|
||||
const path = require('path');
|
||||
const fs = require('fs');
|
||||
const crypto = await import('crypto');
|
||||
|
||||
const txtPath = path.join(process.cwd(), 'kabelhandbuch.txt');
|
||||
let manualChunks = 0;
|
||||
|
||||
if (fs.existsSync(txtPath)) {
|
||||
try {
|
||||
const text = fs.readFileSync(txtPath, 'utf8');
|
||||
const chunks = text
|
||||
.split(/\n\s*\n/)
|
||||
.map((c: string) => c.trim())
|
||||
.filter((c: string) => c.length > 50);
|
||||
|
||||
for (let i = 0; i < chunks.length; i++) {
|
||||
const chunkText = chunks[i];
|
||||
const syntheticId = crypto.randomUUID();
|
||||
|
||||
await upsertProductVector(syntheticId, chunkText, {
|
||||
type: 'knowledge',
|
||||
content: chunkText,
|
||||
data: {
|
||||
title: `Kabelhandbuch Wissen - Bereich ${i + 1}`,
|
||||
source: 'Kabelhandbuch KLZ.pdf',
|
||||
},
|
||||
});
|
||||
manualChunks++;
|
||||
}
|
||||
console.log(`[Qdrant Sync] ✅ ${manualChunks} Kabelhandbuch-Chunks synced`);
|
||||
} catch (e: any) {
|
||||
results.errors.push(`kabelhandbuch: ${e.message}`);
|
||||
}
|
||||
} else {
|
||||
console.log(`[Qdrant Sync] ⚠️ skipped Kabelhandbuch: ${txtPath} not found`);
|
||||
}
|
||||
|
||||
console.log(
|
||||
`[Qdrant Sync] ✅ ${results.products} products, ${results.posts} posts, ${results.pages} pages synced, ${manualChunks} manual chunks synced`,
|
||||
);
|
||||
|
||||
return NextResponse.json({
|
||||
success: true,
|
||||
synced: {
|
||||
products: results.products,
|
||||
posts: results.posts,
|
||||
pages: results.pages,
|
||||
},
|
||||
errors: results.errors.length > 0 ? results.errors : undefined,
|
||||
});
|
||||
} catch (error: any) {
|
||||
console.error('[Qdrant Sync] ❌ Fatal error:', error);
|
||||
return NextResponse.json({ error: error.message }, { status: 500 });
|
||||
}
|
||||
}
|
||||
@@ -40,7 +40,8 @@ export async function POST(request: NextRequest) {
|
||||
|
||||
const dsnUrl = new URL(realDsn);
|
||||
const projectId = dsnUrl.pathname.replace('/', '');
|
||||
const relayUrl = `${dsnUrl.protocol}//${dsnUrl.host}/api/${projectId}/envelope/`;
|
||||
const sentryKey = dsnUrl.username;
|
||||
const relayUrl = `${dsnUrl.protocol}//${dsnUrl.host}/api/${projectId}/envelope/?sentry_key=${sentryKey}`;
|
||||
|
||||
logger.debug('Relaying Sentry envelope', {
|
||||
projectId,
|
||||
@@ -57,22 +58,18 @@ export async function POST(request: NextRequest) {
|
||||
|
||||
if (!response.ok) {
|
||||
const errorText = await response.text();
|
||||
if (!process.env.CI) {
|
||||
logger.error('Sentry/GlitchTip API responded with error', {
|
||||
status: response.status,
|
||||
error: errorText.slice(0, 100),
|
||||
});
|
||||
}
|
||||
logger.error('Sentry/GlitchTip API responded with error', {
|
||||
status: response.status,
|
||||
error: errorText.slice(0, 100),
|
||||
});
|
||||
return new NextResponse(errorText, { status: response.status });
|
||||
}
|
||||
|
||||
return NextResponse.json({ status: 'ok' });
|
||||
} catch (error) {
|
||||
if (!process.env.CI) {
|
||||
logger.error('Failed to relay Sentry request', {
|
||||
error: (error as Error).message,
|
||||
});
|
||||
}
|
||||
logger.error('Failed to relay Sentry request', {
|
||||
error: (error as Error).message,
|
||||
});
|
||||
return NextResponse.json({ error: 'Internal Server Error' }, { status: 500 });
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,16 +1,14 @@
|
||||
import { config } from '@/lib/config';
|
||||
import { MetadataRoute } from 'next';
|
||||
import { getAllProductsMetadata } from '@/lib/mdx';
|
||||
import { getAllProductsMetadata } from '@/lib/products';
|
||||
import { getAllPostsMetadata } from '@/lib/blog';
|
||||
import { getAllPagesMetadata } from '@/lib/pages';
|
||||
import { mapFileSlugToTranslated } from '@/lib/slugs';
|
||||
|
||||
export const revalidate = 3600; // Revalidate every hour
|
||||
export const dynamic = 'force-dynamic';
|
||||
|
||||
export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
|
||||
const baseUrl = process.env.CI
|
||||
? 'http://klz.localhost'
|
||||
: config.baseUrl || 'https://klz-cables.com';
|
||||
const baseUrl = config.baseUrl || 'https://klz-cables.com';
|
||||
const locales = ['de', 'en'];
|
||||
|
||||
const sitemapEntries: MetadataRoute.Sitemap = [];
|
||||
@@ -60,9 +58,24 @@ export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
|
||||
for (const product of productsMetadata) {
|
||||
if (!product.frontmatter || !product.slug) continue;
|
||||
|
||||
const category =
|
||||
product.frontmatter.categories[0]?.toLowerCase().replace(/\s+/g, '-') || 'other';
|
||||
const translatedCategory = await mapFileSlugToTranslated(category, locale);
|
||||
const firstCat = product.frontmatter.categories[0] || '';
|
||||
const normalizedCat = firstCat.toLowerCase().replace(/\s+/g, '-');
|
||||
let categoryFileSlug = 'low-voltage-cables';
|
||||
if (normalizedCat === 'hochspannungskabel' || normalizedCat === 'high-voltage-cables')
|
||||
categoryFileSlug = 'high-voltage-cables';
|
||||
else if (
|
||||
normalizedCat === 'mittelspannungskabel' ||
|
||||
normalizedCat === 'medium-voltage-cables'
|
||||
)
|
||||
categoryFileSlug = 'medium-voltage-cables';
|
||||
else if (
|
||||
normalizedCat === 'solarkabel' ||
|
||||
normalizedCat === 'solar-cables' ||
|
||||
normalizedCat === 'solar'
|
||||
)
|
||||
categoryFileSlug = 'solar-cables';
|
||||
|
||||
const translatedCategory = await mapFileSlugToTranslated(categoryFileSlug, locale);
|
||||
const translatedSlug = await mapFileSlugToTranslated(product.slug, locale);
|
||||
|
||||
sitemapEntries.push({
|
||||
|
||||
@@ -15,10 +15,12 @@ export default function CMSConnectivityNotice() {
|
||||
const isDebug = new URLSearchParams(window.location.search).has('cms_debug');
|
||||
const isLocal = config.isDevelopment;
|
||||
const isTesting = config.isTesting;
|
||||
const target = process.env.NEXT_PUBLIC_TARGET || '';
|
||||
const isBranch = target === 'branch';
|
||||
|
||||
// Only proceed with check if it's developer context (Local or Testing)
|
||||
// Only proceed with check if it's developer context (Local, Testing, or Branch preview)
|
||||
// Staging and Production should NEVER see this unless forced with ?cms_debug
|
||||
if (!isLocal && !isTesting && !isDebug) return;
|
||||
if (!isLocal && !isTesting && !isBranch && !isDebug) return;
|
||||
|
||||
try {
|
||||
const response = await fetch('/api/health/cms');
|
||||
@@ -58,8 +60,8 @@ export default function CMSConnectivityNotice() {
|
||||
<h4 className="font-bold text-sm mb-1">CMS Issue Detected</h4>
|
||||
<p className="text-xs opacity-90 leading-relaxed mb-3">
|
||||
{errorMsg === 'relation "products" does not exist'
|
||||
? 'The database schema is missing. Please sync your local data to this environment.'
|
||||
: errorMsg || 'The application cannot connect to the Directus CMS.'}
|
||||
? 'The database schema is missing. Please run migrations for this environment.'
|
||||
: 'A content service is unavailable. Check the deployment logs for details.'}
|
||||
</p>
|
||||
<div className="flex gap-2">
|
||||
<button
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
import Link from 'next/link';
|
||||
import Image from 'next/image';
|
||||
import { useTranslations, useLocale } from 'next-intl';
|
||||
import { ShieldCheck, Leaf, Lock, Accessibility, Zap } from 'lucide-react';
|
||||
import { Container } from './ui';
|
||||
import { useAnalytics } from './analytics/useAnalytics';
|
||||
import { AnalyticsEvents } from './analytics/analytics-events';
|
||||
@@ -15,14 +16,14 @@ export default function Footer() {
|
||||
const currentYear = new Date().getFullYear();
|
||||
|
||||
return (
|
||||
<footer className="bg-primary text-white py-24 relative overflow-hidden content-visibility-auto">
|
||||
<footer className="bg-primary text-white py-14 md:py-24 relative overflow-hidden content-visibility-auto">
|
||||
<div className="absolute top-0 left-0 w-full h-px bg-gradient-to-r from-transparent via-white/20 to-transparent" />
|
||||
|
||||
<Container>
|
||||
<h2 className="sr-only">Footer Navigation</h2>
|
||||
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-12 gap-16 mb-20">
|
||||
{/* Brand Column */}
|
||||
<div className="lg:col-span-4 space-y-8">
|
||||
<div className="grid grid-cols-2 md:grid-cols-2 lg:grid-cols-12 gap-10 md:gap-16 mb-12 md:mb-20">
|
||||
{/* Brand Column – full width on mobile */}
|
||||
<div className="col-span-2 md:col-span-2 lg:col-span-4 space-y-6 md:space-y-8">
|
||||
<Link
|
||||
href={`/${locale}`}
|
||||
className="inline-block group"
|
||||
@@ -67,9 +68,9 @@ export default function Footer() {
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Links Columns */}
|
||||
<div className="lg:col-span-2">
|
||||
<h3 className="text-accent font-bold uppercase tracking-widest text-xs md:text-sm mb-8">
|
||||
{/* Legal Column */}
|
||||
<div className="col-span-1 lg:col-span-2">
|
||||
<h3 className="text-accent font-bold uppercase tracking-widest text-xs mb-5 md:mb-8">
|
||||
{t('legal')}
|
||||
</h3>
|
||||
<ul className="space-y-4 text-white/70 list-none m-0 p-0">
|
||||
@@ -121,8 +122,9 @@ export default function Footer() {
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div className="lg:col-span-2">
|
||||
<h3 className="text-accent font-bold uppercase tracking-widest text-xs md:text-sm mb-8">
|
||||
{/* Company Column */}
|
||||
<div className="col-span-1 lg:col-span-2">
|
||||
<h3 className="text-accent font-bold uppercase tracking-widest text-xs mb-5 md:mb-8">
|
||||
{t('company')}
|
||||
</h3>
|
||||
<ul className="space-y-4 text-white/70 list-none m-0 p-0">
|
||||
@@ -173,12 +175,12 @@ export default function Footer() {
|
||||
</li>
|
||||
<li>
|
||||
<Link
|
||||
href={`/${locale}/contact`}
|
||||
href={`/${locale}/${locale === 'de' ? 'kontakt' : 'contact'}`}
|
||||
className="text-white/70 hover:text-accent transition-all duration-300 hover:translate-x-1 inline-block"
|
||||
onClick={() =>
|
||||
trackEvent(AnalyticsEvents.LINK_CLICK, {
|
||||
label: navT('contact'),
|
||||
href: '/contact',
|
||||
href: locale === 'de' ? '/kontakt' : '/contact',
|
||||
location: 'footer_company',
|
||||
})
|
||||
}
|
||||
@@ -189,9 +191,9 @@ export default function Footer() {
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
{/* Recent Posts Column */}
|
||||
<div className="lg:col-span-4">
|
||||
<h3 className="text-accent font-bold uppercase tracking-widest text-xs md:text-sm mb-8">
|
||||
{/* Recent Posts Column – full width on mobile */}
|
||||
<div className="col-span-2 md:col-span-2 lg:col-span-4">
|
||||
<h3 className="text-accent font-bold uppercase tracking-widest text-xs mb-5 md:mb-8">
|
||||
{t('recentPosts')}
|
||||
</h3>
|
||||
<ul className="space-y-6 list-none m-0 p-0">
|
||||
@@ -242,7 +244,7 @@ export default function Footer() {
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="pt-12 border-t border-white/10 flex flex-col md:flex-row justify-between items-center gap-8 text-white/70 text-xs md:text-sm font-medium">
|
||||
<div className="pt-8 md:pt-12 border-t border-white/10 flex flex-row justify-between items-center gap-4 text-white/70 text-xs md:text-sm font-medium">
|
||||
<p>{t('copyright', { year: currentYear })}</p>
|
||||
<div className="flex gap-8">
|
||||
<Link
|
||||
@@ -275,6 +277,48 @@ export default function Footer() {
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Brand & Quality Sub-Footer */}
|
||||
<div className="pt-8 mt-8 border-t border-white/5 flex flex-col md:flex-row justify-between items-center gap-6 text-white/40 text-[10px] sm:text-xs">
|
||||
<div>
|
||||
<a
|
||||
href="https://mintel.me"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
onClick={() =>
|
||||
trackEvent(AnalyticsEvents.LINK_CLICK, {
|
||||
target: 'mintel_agency',
|
||||
location: 'sub_footer',
|
||||
})
|
||||
}
|
||||
className="hover:text-white/80 transition-colors flex items-center gap-1.5"
|
||||
>
|
||||
Website entwickelt von Marc Mintel
|
||||
</a>
|
||||
</div>
|
||||
<div className="flex flex-wrap justify-center md:justify-end gap-x-6 gap-y-3">
|
||||
<div className="flex items-center gap-1.5" title="SSL Secured">
|
||||
<ShieldCheck className="w-3.5 h-3.5" />
|
||||
<span>SSL Secured</span>
|
||||
</div>
|
||||
<div className="flex items-center gap-1.5" title="Green Hosting">
|
||||
<Leaf className="w-3.5 h-3.5" />
|
||||
<span>Green Hosting</span>
|
||||
</div>
|
||||
<div className="flex items-center gap-1.5" title="DSGVO Compliant">
|
||||
<Lock className="w-3.5 h-3.5" />
|
||||
<span>DSGVO Compliant</span>
|
||||
</div>
|
||||
<div className="flex items-center gap-1.5" title="WCAG">
|
||||
<Accessibility className="w-3.5 h-3.5" />
|
||||
<span>WCAG</span>
|
||||
</div>
|
||||
<div className="flex items-center gap-1.5" title="PageSpeed 90+">
|
||||
<Zap className="w-3.5 h-3.5" />
|
||||
<span>PageSpeed 90+</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</Container>
|
||||
</footer>
|
||||
);
|
||||
|
||||
@@ -9,6 +9,8 @@ import { useEffect, useState, useRef } from 'react';
|
||||
import { cn } from './ui';
|
||||
import { useAnalytics } from './analytics/useAnalytics';
|
||||
import { AnalyticsEvents } from './analytics/analytics-events';
|
||||
import { Search } from 'lucide-react';
|
||||
import { AISearchResults } from './search/AISearchResults';
|
||||
|
||||
export default function Header() {
|
||||
const t = useTranslations('Navigation');
|
||||
@@ -16,6 +18,7 @@ export default function Header() {
|
||||
const { trackEvent } = useAnalytics();
|
||||
const [isScrolled, setIsScrolled] = useState(false);
|
||||
const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false);
|
||||
const [isSearchOpen, setIsSearchOpen] = useState(false);
|
||||
const mobileMenuRef = useRef<HTMLDivElement>(null);
|
||||
|
||||
// Extract locale from pathname
|
||||
@@ -93,6 +96,7 @@ export default function Header() {
|
||||
const segmentMap: Record<string, Record<string, string>> = {
|
||||
de: {
|
||||
produkte: 'products',
|
||||
kontakt: 'contact',
|
||||
impressum: 'legal-notice',
|
||||
datenschutz: 'privacy-policy',
|
||||
agbs: 'terms',
|
||||
@@ -103,6 +107,7 @@ export default function Header() {
|
||||
},
|
||||
en: {
|
||||
products: 'produkte',
|
||||
contact: 'kontakt',
|
||||
'legal-notice': 'impressum',
|
||||
'privacy-policy': 'datenschutz',
|
||||
terms: 'agbs',
|
||||
@@ -135,11 +140,12 @@ export default function Header() {
|
||||
];
|
||||
|
||||
const headerClass = cn(
|
||||
'fixed top-0 left-0 right-0 z-50 transition-all duration-500 safe-area-p transform-gpu animate-in fade-in slide-in-from-top-12 fill-mode-both',
|
||||
'fixed top-0 left-0 right-0 z-50 transition-all duration-500 safe-area-p transform-gpu fill-mode-both',
|
||||
{
|
||||
'bg-primary/95 backdrop-blur-md md:bg-transparent py-3 md:py-8 shadow-2xl md:shadow-none':
|
||||
isHomePage && !isScrolled && !isMobileMenuOpen,
|
||||
'bg-primary py-3 md:py-4 shadow-2xl': !isHomePage || isScrolled || isMobileMenuOpen,
|
||||
'bg-primary/90 backdrop-blur-md py-3 md:py-4 shadow-2xl':
|
||||
!isHomePage || isScrolled || isMobileMenuOpen,
|
||||
},
|
||||
);
|
||||
|
||||
@@ -150,10 +156,7 @@ export default function Header() {
|
||||
<>
|
||||
<header className={headerClass} style={{ animationDuration: '800ms' }}>
|
||||
<div className="container mx-auto px-4 md:px-12 lg:px-16 max-w-7xl flex items-center justify-between">
|
||||
<div
|
||||
className="flex-shrink-0 group touch-target animate-in fade-in zoom-in-90 fill-mode-both"
|
||||
style={{ animationDuration: '600ms', animationDelay: '100ms' }}
|
||||
>
|
||||
<div className="flex-shrink-0 group touch-target fill-mode-both">
|
||||
<Link
|
||||
href={`/${currentLocale}`}
|
||||
onClick={() =>
|
||||
@@ -171,6 +174,9 @@ export default function Header() {
|
||||
style={{ width: 'auto' }}
|
||||
className="h-10 md:h-14 w-auto transition-all duration-500 group-hover:scale-110"
|
||||
priority
|
||||
fetchPriority="high"
|
||||
loading="eager"
|
||||
decoding="sync"
|
||||
/>
|
||||
</Link>
|
||||
</div>
|
||||
@@ -183,24 +189,40 @@ export default function Header() {
|
||||
className="animate-in fade-in slide-in-from-bottom-4 fill-mode-both"
|
||||
style={{ animationDuration: '500ms', animationDelay: `${150 + idx * 80}ms` }}
|
||||
>
|
||||
<Link
|
||||
href={`/${currentLocale}${item.href === '/' ? '' : item.href}`}
|
||||
onClick={() => {
|
||||
setIsMobileMenuOpen(false);
|
||||
trackEvent(AnalyticsEvents.LINK_CLICK, {
|
||||
label: item.label,
|
||||
href: item.href,
|
||||
location: 'header_nav',
|
||||
});
|
||||
}}
|
||||
className={cn(
|
||||
textColorClass,
|
||||
'hover:text-accent font-bold transition-all duration-500 text-base md:text-lg tracking-tight relative group inline-block hover:-translate-y-0.5',
|
||||
)}
|
||||
>
|
||||
{item.label}
|
||||
<span className="absolute -bottom-2 left-0 w-0 h-1 bg-accent transition-all duration-500 group-hover:w-full rounded-full shadow-[0_0_12px_rgba(130,237,32,0.6)]" />
|
||||
</Link>
|
||||
{(() => {
|
||||
const fullHref = `/${currentLocale}${item.href === '/' ? '' : item.href}`;
|
||||
const isActive =
|
||||
item.href === '/'
|
||||
? pathname === `/${currentLocale}` || pathname === '/'
|
||||
: pathname.startsWith(fullHref);
|
||||
return (
|
||||
<Link
|
||||
href={fullHref}
|
||||
aria-current={isActive ? 'page' : undefined}
|
||||
onClick={() => {
|
||||
setIsMobileMenuOpen(false);
|
||||
trackEvent(AnalyticsEvents.LINK_CLICK, {
|
||||
label: item.label,
|
||||
href: item.href,
|
||||
location: 'header_nav',
|
||||
});
|
||||
}}
|
||||
className={cn(
|
||||
textColorClass,
|
||||
'hover:text-accent font-bold transition-all duration-500 text-base md:text-lg tracking-tight relative group inline-block hover:-translate-y-0.5',
|
||||
isActive && 'text-accent',
|
||||
)}
|
||||
>
|
||||
{item.label}
|
||||
<span
|
||||
className={cn(
|
||||
'absolute -bottom-2 left-0 h-1 bg-accent transition-all duration-500 rounded-full shadow-[0_0_12px_rgba(130,237,32,0.6)]',
|
||||
isActive ? 'w-full' : 'w-0 group-hover:w-full',
|
||||
)}
|
||||
/>
|
||||
</Link>
|
||||
);
|
||||
})()}
|
||||
</div>
|
||||
))}
|
||||
</nav>
|
||||
@@ -254,9 +276,22 @@ export default function Header() {
|
||||
<div
|
||||
className="animate-in fade-in zoom-in-95 fill-mode-both"
|
||||
style={{ animationDuration: '600ms', animationDelay: '700ms' }}
|
||||
>
|
||||
<button
|
||||
onClick={() => setIsSearchOpen(true)}
|
||||
className="hover:text-accent transition-colors p-2"
|
||||
aria-label="Search"
|
||||
>
|
||||
<Search className="w-5 h-5 md:w-6 md:h-6" />
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div
|
||||
className="animate-in fade-in zoom-in-95 fill-mode-both"
|
||||
style={{ animationDuration: '600ms', animationDelay: '800ms' }}
|
||||
>
|
||||
<Button
|
||||
href={`/${currentLocale}/contact`}
|
||||
href={`/${currentLocale}/${currentLocale === 'de' ? 'kontakt' : 'contact'}`}
|
||||
variant="white"
|
||||
size="md"
|
||||
className="px-8 shadow-xl hover:scale-105 transition-transform"
|
||||
@@ -275,7 +310,7 @@ export default function Header() {
|
||||
{/* Mobile Menu Button */}
|
||||
<button
|
||||
className={cn(
|
||||
'lg:hidden touch-target p-2 rounded-xl bg-white/10 border border-white/20 z-50 transition-all duration-300',
|
||||
'lg:hidden touch-target p-2 rounded-xl bg-white/10 border border-white/20 z-[70] relative transition-all duration-300',
|
||||
textColorClass,
|
||||
isMobileMenuOpen ? 'rotate-90 scale-110' : 'rotate-0 scale-100',
|
||||
)}
|
||||
@@ -316,101 +351,140 @@ export default function Header() {
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
{/* Mobile Menu Overlay */}
|
||||
<div
|
||||
className={cn(
|
||||
'fixed inset-0 bg-primary z-40 lg:hidden transition-all duration-500 ease-in-out flex flex-col',
|
||||
isMobileMenuOpen
|
||||
? 'opacity-100 translate-y-0'
|
||||
: 'opacity-0 -translate-y-full pointer-events-none',
|
||||
)}
|
||||
id="mobile-menu"
|
||||
role="dialog"
|
||||
aria-modal="true"
|
||||
aria-label={t('menu')}
|
||||
ref={mobileMenuRef}
|
||||
inert={isMobileMenuOpen ? undefined : true}
|
||||
>
|
||||
<nav className="flex-grow flex flex-col justify-center items-center p-8 space-y-8">
|
||||
{menuItems.map((item, idx) => (
|
||||
<div
|
||||
key={item.href}
|
||||
className={cn(
|
||||
'transition-all duration-500 transform',
|
||||
isMobileMenuOpen ? 'opacity-100 translate-y-0' : 'opacity-0 translate-y-8',
|
||||
)}
|
||||
style={{ transitionDelay: `${isMobileMenuOpen ? 200 + idx * 80 : 0}ms` }}
|
||||
>
|
||||
<Link
|
||||
href={`/${currentLocale}${item.href === '/' ? '' : item.href}`}
|
||||
onClick={() => {
|
||||
setIsMobileMenuOpen(false);
|
||||
trackEvent(AnalyticsEvents.LINK_CLICK, {
|
||||
label: item.label,
|
||||
href: item.href,
|
||||
location: 'mobile_menu',
|
||||
});
|
||||
}}
|
||||
className="text-2xl md:text-3xl font-extrabold text-white hover:text-accent transition-all transform block py-4"
|
||||
>
|
||||
{item.label}
|
||||
</Link>
|
||||
</div>
|
||||
))}
|
||||
|
||||
{/* Mobile Menu Overlay */}
|
||||
<div
|
||||
className={cn(
|
||||
'fixed inset-0 bg-primary/95 backdrop-blur-3xl z-[60] lg:hidden transition-all duration-500 ease-in-out flex flex-col',
|
||||
isMobileMenuOpen
|
||||
? 'opacity-100 translate-y-0'
|
||||
: 'opacity-0 -translate-y-full pointer-events-none',
|
||||
)}
|
||||
id="mobile-menu"
|
||||
role="dialog"
|
||||
aria-modal="true"
|
||||
aria-label={t('menu')}
|
||||
ref={mobileMenuRef}
|
||||
inert={isMobileMenuOpen ? undefined : true}
|
||||
>
|
||||
{/* Close Button inside overlay */}
|
||||
<div className="flex justify-end p-6 pt-8">
|
||||
<button
|
||||
className="touch-target p-2 rounded-xl bg-white/10 border border-white/20 text-white hover:bg-white/20 transition-all duration-300"
|
||||
aria-label={t('toggleMenu')}
|
||||
onClick={() => {
|
||||
setIsMobileMenuOpen(false);
|
||||
trackEvent(AnalyticsEvents.BUTTON_CLICK, {
|
||||
type: 'mobile_menu',
|
||||
action: 'close',
|
||||
});
|
||||
}}
|
||||
>
|
||||
<svg className="w-7 h-7" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path
|
||||
strokeLinecap="round"
|
||||
strokeLinejoin="round"
|
||||
strokeWidth={2}
|
||||
d="M6 18L18 6M6 6l12 12"
|
||||
/>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
<nav className="flex-grow flex flex-col justify-center items-center p-8 space-y-8">
|
||||
{menuItems.map((item, idx) => (
|
||||
<div
|
||||
key={item.href}
|
||||
className={cn(
|
||||
'pt-8 border-t border-white/10 w-full flex flex-col items-center space-y-8 transition-all duration-500',
|
||||
'transition-all duration-500 transform',
|
||||
isMobileMenuOpen ? 'opacity-100 translate-y-0' : 'opacity-0 translate-y-8',
|
||||
)}
|
||||
style={{ transitionDelay: isMobileMenuOpen ? '600ms' : '0ms' }}
|
||||
style={{ transitionDelay: `${isMobileMenuOpen ? 200 + idx * 80 : 0}ms` }}
|
||||
>
|
||||
<div className="flex items-center space-x-8 text-lg md:text-xl font-extrabold tracking-widest uppercase text-white">
|
||||
<div>
|
||||
<Link
|
||||
href={getPathForLocale('en')}
|
||||
className={`hover:text-accent transition-colors ${currentLocale === 'en' ? 'text-accent' : 'opacity-80'}`}
|
||||
>
|
||||
EN
|
||||
</Link>
|
||||
</div>
|
||||
<div className="w-px h-6 bg-white/30" />
|
||||
<div>
|
||||
<Link
|
||||
href={getPathForLocale('de')}
|
||||
className={`hover:text-accent transition-colors ${currentLocale === 'de' ? 'text-accent' : 'opacity-80'}`}
|
||||
>
|
||||
DE
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
<Link
|
||||
href={`/${currentLocale}${item.href === '/' ? '' : item.href}`}
|
||||
aria-current={
|
||||
(
|
||||
item.href === '/'
|
||||
? pathname === `/${currentLocale}` || pathname === '/'
|
||||
: pathname.startsWith(`/${currentLocale}${item.href}`)
|
||||
)
|
||||
? 'page'
|
||||
: undefined
|
||||
}
|
||||
onClick={() => {
|
||||
setIsMobileMenuOpen(false);
|
||||
trackEvent(AnalyticsEvents.LINK_CLICK, {
|
||||
label: item.label,
|
||||
href: item.href,
|
||||
location: 'mobile_menu',
|
||||
});
|
||||
}}
|
||||
className={cn(
|
||||
'text-2xl md:text-3xl font-extrabold text-white hover:text-accent transition-all transform block py-4',
|
||||
(item.href === '/'
|
||||
? pathname === `/${currentLocale}` || pathname === '/'
|
||||
: pathname.startsWith(`/${currentLocale}${item.href}`)) && 'text-accent',
|
||||
)}
|
||||
>
|
||||
{item.label}
|
||||
</Link>
|
||||
</div>
|
||||
))}
|
||||
|
||||
<div className="w-full max-w-xs">
|
||||
<Button
|
||||
href={`/${currentLocale}/contact`}
|
||||
variant="accent"
|
||||
size="lg"
|
||||
className="w-full py-6 text-lg md:text-xl shadow-2xl hover:scale-105 transition-transform"
|
||||
<div
|
||||
className={cn(
|
||||
'pt-8 border-t border-white/10 w-full flex flex-col items-center space-y-8 transition-all duration-500',
|
||||
isMobileMenuOpen ? 'opacity-100 translate-y-0' : 'opacity-0 translate-y-8',
|
||||
)}
|
||||
style={{ transitionDelay: isMobileMenuOpen ? '600ms' : '0ms' }}
|
||||
>
|
||||
<div className="flex items-center space-x-8 text-lg md:text-xl font-extrabold tracking-widest uppercase text-white">
|
||||
<div>
|
||||
<Link
|
||||
href={getPathForLocale('en')}
|
||||
className={`hover:text-accent transition-colors ${currentLocale === 'en' ? 'text-accent' : 'opacity-80'}`}
|
||||
>
|
||||
{t('contact')}
|
||||
</Button>
|
||||
EN
|
||||
</Link>
|
||||
</div>
|
||||
<div className="w-px h-6 bg-white/30" />
|
||||
<div>
|
||||
<Link
|
||||
href={getPathForLocale('de')}
|
||||
className={`hover:text-accent transition-colors ${currentLocale === 'de' ? 'text-accent' : 'opacity-80'}`}
|
||||
>
|
||||
DE
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Bottom Branding */}
|
||||
<div
|
||||
className={cn(
|
||||
'p-12 flex justify-center transition-all duration-700',
|
||||
isMobileMenuOpen ? 'opacity-20 scale-100' : 'opacity-0 scale-75',
|
||||
)}
|
||||
style={{ transitionDelay: isMobileMenuOpen ? '800ms' : '0ms' }}
|
||||
>
|
||||
<Image src="/logo-white.svg" alt={t('home')} width={80} height={80} unoptimized />
|
||||
<div className="w-full max-w-xs">
|
||||
<Button
|
||||
href={`/${currentLocale}/${currentLocale === 'de' ? 'kontakt' : 'contact'}`}
|
||||
variant="accent"
|
||||
size="lg"
|
||||
className="w-full py-6 text-lg md:text-xl shadow-2xl hover:scale-105 transition-transform"
|
||||
>
|
||||
{t('contact')}
|
||||
</Button>
|
||||
</div>
|
||||
</nav>
|
||||
</div>
|
||||
</header>
|
||||
</div>
|
||||
|
||||
{/* Bottom Branding */}
|
||||
<div
|
||||
className={cn(
|
||||
'p-12 flex justify-center transition-all duration-700',
|
||||
isMobileMenuOpen ? 'opacity-20 scale-100' : 'opacity-0 scale-75',
|
||||
)}
|
||||
style={{ transitionDelay: isMobileMenuOpen ? '800ms' : '0ms' }}
|
||||
>
|
||||
<Image src="/logo-white.svg" alt={t('home')} width={80} height={80} unoptimized />
|
||||
</div>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
<AISearchResults isOpen={isSearchOpen} onClose={() => setIsSearchOpen(false)} />
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
38
components/ObfuscatedEmail.tsx
Normal file
38
components/ObfuscatedEmail.tsx
Normal file
@@ -0,0 +1,38 @@
|
||||
'use client';
|
||||
|
||||
import React, { useState, useEffect } from 'react';
|
||||
|
||||
interface ObfuscatedEmailProps {
|
||||
email: string;
|
||||
className?: string;
|
||||
children?: React.ReactNode;
|
||||
}
|
||||
|
||||
/**
|
||||
* A component that helps protect email addresses from simple spambots.
|
||||
* It uses client-side mounting to render the actual email address,
|
||||
* making it harder for static crawlers to harvest.
|
||||
*/
|
||||
export default function ObfuscatedEmail({ email, className = '', children }: ObfuscatedEmailProps) {
|
||||
const [mounted, setMounted] = useState(false);
|
||||
|
||||
useEffect(() => {
|
||||
setMounted(true);
|
||||
}, []);
|
||||
|
||||
if (!mounted) {
|
||||
// Show a placeholder or obscured version during SSR
|
||||
return (
|
||||
<span className={className} aria-hidden="true">
|
||||
{children || email.replace('@', ' [at] ').replace(/\./g, ' [dot] ')}
|
||||
</span>
|
||||
);
|
||||
}
|
||||
|
||||
// Once mounted on the client, render the real mailto link
|
||||
return (
|
||||
<a href={`mailto:${email}`} className={className}>
|
||||
{children || email}
|
||||
</a>
|
||||
);
|
||||
}
|
||||
41
components/ObfuscatedPhone.tsx
Normal file
41
components/ObfuscatedPhone.tsx
Normal file
@@ -0,0 +1,41 @@
|
||||
'use client';
|
||||
|
||||
import React, { useState, useEffect } from 'react';
|
||||
|
||||
interface ObfuscatedPhoneProps {
|
||||
phone: string;
|
||||
className?: string;
|
||||
children?: React.ReactNode;
|
||||
}
|
||||
|
||||
/**
|
||||
* A component that helps protect phone numbers from simple spambots.
|
||||
* It stays obscured during SSR and hydrates into a functional tel: link on the client.
|
||||
*/
|
||||
export default function ObfuscatedPhone({ phone, className = '', children }: ObfuscatedPhoneProps) {
|
||||
const [mounted, setMounted] = useState(false);
|
||||
|
||||
useEffect(() => {
|
||||
setMounted(true);
|
||||
}, []);
|
||||
|
||||
// Format phone number for tel: link (remove spaces, etc.)
|
||||
const telLink = `tel:${phone.replace(/\s+/g, '')}`;
|
||||
|
||||
if (!mounted) {
|
||||
// Show a placeholder or obscured version during SSR
|
||||
// e.g. +49 881 925 [at] 37298
|
||||
const obscured = phone.replace(/(\d{3})(\d{3})$/, ' $1...$2');
|
||||
return (
|
||||
<span className={className} aria-hidden="true">
|
||||
{children || obscured}
|
||||
</span>
|
||||
);
|
||||
}
|
||||
|
||||
return (
|
||||
<a href={telLink} className={className}>
|
||||
{children || phone}
|
||||
</a>
|
||||
);
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -38,14 +38,14 @@ export default function ProductTechnicalData({ data }: ProductTechnicalDataProps
|
||||
};
|
||||
|
||||
return (
|
||||
<div className="space-y-16">
|
||||
<div className="space-y-8 md:space-y-16">
|
||||
{technicalItems.length > 0 && (
|
||||
<div className="bg-white p-8 md:p-12 rounded-[32px] shadow-sm border border-neutral-dark/5">
|
||||
<div className="bg-white p-5 md:p-12 rounded-[20px] md:rounded-[32px] shadow-sm border border-neutral-dark/5">
|
||||
<h3 className="text-2xl font-bold text-primary mb-8 flex items-center gap-3">
|
||||
<div className="w-2 h-8 bg-accent rounded-full" />
|
||||
General Data
|
||||
</h3>
|
||||
<dl className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-x-12 gap-y-8">
|
||||
<dl className="grid grid-cols-2 sm:grid-cols-2 lg:grid-cols-3 gap-x-6 gap-y-6 md:gap-x-12 md:gap-y-8">
|
||||
{technicalItems.map((item, idx) => (
|
||||
<div key={idx} className="flex flex-col group">
|
||||
<dt className="text-sm font-bold uppercase tracking-widest text-primary/40 mb-2 group-hover:text-accent transition-colors">
|
||||
@@ -72,7 +72,7 @@ export default function ProductTechnicalData({ data }: ProductTechnicalDataProps
|
||||
return (
|
||||
<div
|
||||
key={idx}
|
||||
className="bg-white p-8 md:p-12 rounded-[32px] shadow-sm border border-neutral-dark/5 overflow-hidden"
|
||||
className="bg-white p-5 md:p-12 rounded-[20px] md:rounded-[32px] shadow-sm border border-neutral-dark/5 overflow-hidden"
|
||||
>
|
||||
<h3 className="text-2xl font-bold text-primary mb-8 flex items-center gap-3">
|
||||
<div className="w-2 h-8 bg-accent rounded-full" />
|
||||
@@ -83,7 +83,7 @@ export default function ProductTechnicalData({ data }: ProductTechnicalDataProps
|
||||
</h3>
|
||||
|
||||
{table.metaItems.length > 0 && (
|
||||
<dl className="grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-8 mb-12 bg-neutral-light/50 p-8 rounded-2xl border border-neutral-dark/5">
|
||||
<dl className="grid grid-cols-2 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-4 md:gap-8 mb-6 md:mb-12 bg-neutral-light/50 p-4 md:p-8 rounded-xl md:rounded-2xl border border-neutral-dark/5">
|
||||
{table.metaItems.map((item, mIdx) => (
|
||||
<div key={mIdx}>
|
||||
<dt className="text-[10px] font-black uppercase tracking-[0.2em] text-primary/40 mb-1">
|
||||
@@ -98,9 +98,11 @@ export default function ProductTechnicalData({ data }: ProductTechnicalDataProps
|
||||
)}
|
||||
|
||||
<div className="relative">
|
||||
{/* Scroll hint gradient on right edge for mobile */}
|
||||
<div className="pointer-events-none absolute right-0 top-0 h-full w-8 bg-gradient-to-l from-white to-transparent z-20 md:hidden" />
|
||||
<div
|
||||
id={`voltage-table-${idx}`}
|
||||
className={`overflow-x-auto -mx-8 md:-mx-12 px-8 md:px-12 transition-all duration-500 ease-in-out ${
|
||||
className={`overflow-x-auto -mx-5 md:-mx-12 px-5 md:px-12 transition-all duration-500 ease-in-out ${
|
||||
!isExpanded && hasManyRows ? 'max-h-[400px] overflow-y-hidden' : 'max-h-[none]'
|
||||
}`}
|
||||
>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { getAllProducts } from '@/lib/mdx';
|
||||
import { getAllProducts } from '@/lib/products';
|
||||
import { getTranslations } from 'next-intl/server';
|
||||
import Image from 'next/image';
|
||||
import { RelatedProductLink } from './RelatedProductLink';
|
||||
@@ -41,10 +41,8 @@ export default async function RelatedProducts({
|
||||
];
|
||||
const catFileSlug =
|
||||
categorySlugs.find((slug) => {
|
||||
const key = slug.replace(/-cables$/, '').replace(/-([a-z])/g, (g) => g[1].toUpperCase());
|
||||
const title = t(`categories.${key}.title`);
|
||||
return product.frontmatter.categories.some(
|
||||
(cat) => cat.toLowerCase().replace(/\s+/g, '-') === slug || cat === title,
|
||||
(cat) => cat.toLowerCase().replace(/\s+/g, '-') === slug,
|
||||
);
|
||||
}) || 'low-voltage-cables';
|
||||
|
||||
|
||||
@@ -9,6 +9,9 @@ const DynamicAnalyticsProvider = dynamic(() => import('./AnalyticsProvider'), {
|
||||
const DynamicScrollDepthTracker = dynamic(() => import('./ScrollDepthTracker'), {
|
||||
ssr: false,
|
||||
});
|
||||
const DynamicWebVitalsTracker = dynamic(() => import('./WebVitalsTracker'), {
|
||||
ssr: false,
|
||||
});
|
||||
|
||||
export default function AnalyticsShell() {
|
||||
const [shouldLoad, setShouldLoad] = useState(false);
|
||||
@@ -34,6 +37,7 @@ export default function AnalyticsShell() {
|
||||
<Suspense fallback={null}>
|
||||
<DynamicAnalyticsProvider />
|
||||
<DynamicScrollDepthTracker />
|
||||
<DynamicWebVitalsTracker />
|
||||
</Suspense>
|
||||
);
|
||||
}
|
||||
|
||||
26
components/analytics/ClientNotFoundTracker.tsx
Normal file
26
components/analytics/ClientNotFoundTracker.tsx
Normal file
@@ -0,0 +1,26 @@
|
||||
'use client';
|
||||
|
||||
import { useEffect } from 'react';
|
||||
import { useAnalytics } from './useAnalytics';
|
||||
import { AnalyticsEvents } from './analytics-events';
|
||||
|
||||
export default function ClientNotFoundTracker({ path }: { path: string }) {
|
||||
const { trackEvent } = useAnalytics();
|
||||
|
||||
useEffect(() => {
|
||||
trackEvent(AnalyticsEvents.ERROR, {
|
||||
type: '404_not_found',
|
||||
path,
|
||||
});
|
||||
|
||||
import('@sentry/nextjs').then((Sentry) => {
|
||||
Sentry.withScope((scope) => {
|
||||
scope.setTag('status_code', '404');
|
||||
scope.setTag('path', path);
|
||||
Sentry.captureMessage(`Route Not Found: ${path}`, 'warning');
|
||||
});
|
||||
});
|
||||
}, [trackEvent, path]);
|
||||
|
||||
return null;
|
||||
}
|
||||
54
components/analytics/WebVitalsTracker.tsx
Normal file
54
components/analytics/WebVitalsTracker.tsx
Normal file
@@ -0,0 +1,54 @@
|
||||
'use client';
|
||||
|
||||
import { useReportWebVitals } from 'next/web-vitals';
|
||||
import { useAnalytics } from './useAnalytics';
|
||||
|
||||
/**
|
||||
* WebVitalsTracker component.
|
||||
*
|
||||
* Captures Next.js Web Vitals and reports them to Umami as custom events.
|
||||
* This provides "meaningful" page speed tracking by measuring real user
|
||||
* experiences (LCP, CLS, INP, etc.).
|
||||
*/
|
||||
export default function WebVitalsTracker() {
|
||||
const { trackEvent } = useAnalytics();
|
||||
|
||||
useReportWebVitals((metric) => {
|
||||
const { name, value, id, label } = metric;
|
||||
|
||||
// Determine rating (simplified version of web-vitals standards)
|
||||
let rating: 'good' | 'needs-improvement' | 'poor' = 'good';
|
||||
|
||||
if (name === 'LCP') {
|
||||
if (value > 4000) rating = 'poor';
|
||||
else if (value > 2500) rating = 'needs-improvement';
|
||||
} else if (name === 'CLS') {
|
||||
if (value > 0.25) rating = 'poor';
|
||||
else if (value > 0.1) rating = 'needs-improvement';
|
||||
} else if (name === 'FID') {
|
||||
if (value > 300) rating = 'poor';
|
||||
else if (value > 100) rating = 'needs-improvement';
|
||||
} else if (name === 'FCP') {
|
||||
if (value > 3000) rating = 'poor';
|
||||
else if (value > 1800) rating = 'needs-improvement';
|
||||
} else if (name === 'TTFB') {
|
||||
if (value > 1500) rating = 'poor';
|
||||
else if (value > 800) rating = 'needs-improvement';
|
||||
} else if (name === 'INP') {
|
||||
if (value > 500) rating = 'poor';
|
||||
else if (value > 200) rating = 'needs-improvement';
|
||||
}
|
||||
|
||||
// Report to Umami
|
||||
trackEvent('web-vital', {
|
||||
metric: name,
|
||||
value: Math.round(name === 'CLS' ? value * 1000 : value), // CLS is a score, multiply by 1000 to keep as integer if preferred
|
||||
rating,
|
||||
id,
|
||||
label,
|
||||
path: typeof window !== 'undefined' ? window.location.pathname : undefined,
|
||||
});
|
||||
});
|
||||
|
||||
return null;
|
||||
}
|
||||
@@ -1,197 +0,0 @@
|
||||
import Link from 'next/link';
|
||||
import VisualLinkPreview from '@/components/blog/VisualLinkPreview';
|
||||
import { Callout } from '@/components/ui';
|
||||
import HighlightBox from '@/components/blog/HighlightBox';
|
||||
import Stats from '@/components/blog/Stats';
|
||||
import AnimatedImage from '@/components/blog/AnimatedImage';
|
||||
import ChatBubble from '@/components/blog/ChatBubble';
|
||||
import SplitHeading from '@/components/blog/SplitHeading';
|
||||
import PowerCTA from '@/components/blog/PowerCTA';
|
||||
import StickyNarrative from '@/components/blog/StickyNarrative';
|
||||
import TechnicalGrid from '@/components/blog/TechnicalGrid';
|
||||
import ComparisonGrid from '@/components/blog/ComparisonGrid';
|
||||
import { generateHeadingId, getTextContent } from '@/lib/blog';
|
||||
|
||||
export const mdxComponents = {
|
||||
VisualLinkPreview,
|
||||
Callout,
|
||||
HighlightBox,
|
||||
Stats,
|
||||
AnimatedImage,
|
||||
ChatBubble,
|
||||
PowerCTA,
|
||||
SplitHeading,
|
||||
StickyNarrative,
|
||||
TechnicalGrid,
|
||||
ComparisonGrid,
|
||||
h1: ({ children, ...props }: any) => {
|
||||
const id = props.id || generateHeadingId(getTextContent(children));
|
||||
return (
|
||||
<SplitHeading {...props} id={id} className="mt-16 mb-6 pb-3 border-b-2 border-primary/20">
|
||||
{children}
|
||||
</SplitHeading>
|
||||
);
|
||||
},
|
||||
a: ({ href, children, ...props }: any) => {
|
||||
// Special handling for PDF downloads to make them prominent
|
||||
if (href?.endsWith('.pdf')) {
|
||||
return (
|
||||
<a
|
||||
href={href}
|
||||
{...props}
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
className="inline-flex items-center gap-3 px-6 py-3 bg-primary text-white font-bold rounded-xl hover:bg-accent hover:text-primary-dark transition-all duration-300 no-underline my-8 group shadow-lg hover:shadow-xl hover:-translate-y-1"
|
||||
>
|
||||
<svg className="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path
|
||||
strokeLinecap="round"
|
||||
strokeLinejoin="round"
|
||||
strokeWidth={2}
|
||||
d="M12 10v6m0 0l-3-3m3 3l3-3m2 8H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"
|
||||
/>
|
||||
</svg>
|
||||
<span>{children}</span>
|
||||
<span className="text-xs opacity-50 font-normal group-hover:opacity-100 transition-opacity">
|
||||
(PDF)
|
||||
</span>
|
||||
</a>
|
||||
);
|
||||
}
|
||||
|
||||
if (href?.startsWith('/')) {
|
||||
return (
|
||||
<Link
|
||||
href={href}
|
||||
{...props}
|
||||
className="text-primary font-medium hover:underline decoration-2 underline-offset-2 transition-all"
|
||||
>
|
||||
{children}
|
||||
</Link>
|
||||
);
|
||||
}
|
||||
return (
|
||||
<a
|
||||
href={href}
|
||||
{...props}
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
className="text-primary font-medium hover:underline decoration-2 underline-offset-2 transition-all inline-flex items-center gap-1"
|
||||
>
|
||||
{children}
|
||||
<svg className="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path
|
||||
strokeLinecap="round"
|
||||
strokeLinejoin="round"
|
||||
strokeWidth={2}
|
||||
d="M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14"
|
||||
/>
|
||||
</svg>
|
||||
</a>
|
||||
);
|
||||
},
|
||||
img: (props: any) => <AnimatedImage src={props.src} alt={props.alt} />,
|
||||
h2: ({ children, ...props }: any) => {
|
||||
const id = props.id || generateHeadingId(getTextContent(children));
|
||||
return (
|
||||
<h3 {...props} id={id} className="text-2xl font-bold text-text-primary mt-12 mb-4">
|
||||
{children}
|
||||
</h3>
|
||||
);
|
||||
},
|
||||
h3: ({ children, ...props }: any) => {
|
||||
const id = props.id || generateHeadingId(getTextContent(children));
|
||||
return (
|
||||
<h4 {...props} id={id} className="text-xl font-bold text-text-primary mt-10 mb-3">
|
||||
{children}
|
||||
</h4>
|
||||
);
|
||||
},
|
||||
p: ({ children, ...props }: any) => (
|
||||
<div {...props} className="text-lg text-text-secondary leading-relaxed mb-6">
|
||||
{children}
|
||||
</div>
|
||||
),
|
||||
ul: ({ children, ...props }: any) => (
|
||||
<ul {...props} className="my-8 space-y-3">
|
||||
{children}
|
||||
</ul>
|
||||
),
|
||||
ol: ({ children, ...props }: any) => (
|
||||
<ol {...props} className="my-8 space-y-3 list-decimal list-inside">
|
||||
{children}
|
||||
</ol>
|
||||
),
|
||||
li: ({ children, ...props }: any) => (
|
||||
<li {...props} className="text-lg text-text-secondary flex items-start gap-3">
|
||||
<span className="text-primary mt-1.5 flex-shrink-0">
|
||||
<svg className="w-5 h-5" fill="currentColor" viewBox="0 0 20 20">
|
||||
<path
|
||||
fillRule="evenodd"
|
||||
d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z"
|
||||
clipRule="evenodd"
|
||||
/>
|
||||
</svg>
|
||||
</span>
|
||||
<span className="flex-1">{children}</span>
|
||||
</li>
|
||||
),
|
||||
blockquote: ({ children, ...props }: any) => (
|
||||
<blockquote
|
||||
{...props}
|
||||
className="my-8 pl-6 border-l-4 border-primary bg-neutral-light/30 py-4 pr-6 rounded-r-lg"
|
||||
>
|
||||
<div className="text-lg text-text-primary italic">{children}</div>
|
||||
</blockquote>
|
||||
),
|
||||
strong: ({ children, ...props }: any) => (
|
||||
<strong {...props} className="font-bold text-primary">
|
||||
{children}
|
||||
</strong>
|
||||
),
|
||||
code: ({ children, ...props }: any) => (
|
||||
<code {...props} className="px-2 py-1 bg-neutral-light text-primary rounded font-mono text-sm">
|
||||
{children}
|
||||
</code>
|
||||
),
|
||||
pre: ({ children, ...props }: any) => (
|
||||
<pre {...props} className="my-8 p-6 bg-neutral-dark/5 rounded-xl overflow-x-auto">
|
||||
{children}
|
||||
</pre>
|
||||
),
|
||||
table: ({ children, ...props }: any) => (
|
||||
<div className="my-8 overflow-x-auto rounded-lg border border-neutral-200 shadow-sm">
|
||||
<table {...props} className="w-full text-left text-sm text-text-secondary">
|
||||
{children}
|
||||
</table>
|
||||
</div>
|
||||
),
|
||||
thead: ({ children, ...props }: any) => (
|
||||
<thead
|
||||
{...props}
|
||||
className="bg-neutral-50 text-text-primary font-semibold border-b border-neutral-200"
|
||||
>
|
||||
{children}
|
||||
</thead>
|
||||
),
|
||||
tbody: ({ children, ...props }: any) => (
|
||||
<tbody {...props} className="divide-y divide-neutral-200 bg-white">
|
||||
{children}
|
||||
</tbody>
|
||||
),
|
||||
tr: ({ children, ...props }: any) => (
|
||||
<tr {...props} className="hover:bg-neutral-50/50 transition-colors">
|
||||
{children}
|
||||
</tr>
|
||||
),
|
||||
th: ({ children, ...props }: any) => (
|
||||
<th {...props} className="px-6 py-4 whitespace-nowrap">
|
||||
{children}
|
||||
</th>
|
||||
),
|
||||
td: ({ children, ...props }: any) => (
|
||||
<td {...props} className="px-6 py-4">
|
||||
{children}
|
||||
</td>
|
||||
),
|
||||
};
|
||||
@@ -1,10 +1,10 @@
|
||||
import React from 'react';
|
||||
import Link from 'next/link';
|
||||
import { PostMdx } from '@/lib/blog';
|
||||
import { PostData } from '@/lib/blog';
|
||||
|
||||
interface PostNavigationProps {
|
||||
prev: PostMdx | null;
|
||||
next: PostMdx | null;
|
||||
prev: PostData | null;
|
||||
next: PostData | null;
|
||||
isPrevRandom?: boolean;
|
||||
isNextRandom?: boolean;
|
||||
locale: string;
|
||||
@@ -30,8 +30,11 @@ export default function PostNavigation({
|
||||
{/* Background Image */}
|
||||
{prev.frontmatter.featuredImage ? (
|
||||
<div
|
||||
className="absolute inset-0 bg-cover bg-center transition-transform duration-700 group-hover:scale-110"
|
||||
style={{ backgroundImage: `url(${prev.frontmatter.featuredImage.split('?')[0]})` }}
|
||||
className="absolute inset-0 z-0 bg-cover transition-transform duration-1000 group-hover:scale-105"
|
||||
style={{
|
||||
backgroundImage: `url(${prev.frontmatter.featuredImage.split('?')[0]})`,
|
||||
backgroundPosition: `${prev.frontmatter.focalX ?? 50}% ${prev.frontmatter.focalY ?? 50}%`,
|
||||
}}
|
||||
/>
|
||||
) : (
|
||||
<div className="absolute inset-0 bg-neutral-100" />
|
||||
@@ -81,8 +84,11 @@ export default function PostNavigation({
|
||||
{/* Background Image */}
|
||||
{next.frontmatter.featuredImage ? (
|
||||
<div
|
||||
className="absolute inset-0 bg-cover bg-center transition-transform duration-700 group-hover:scale-110"
|
||||
style={{ backgroundImage: `url(${next.frontmatter.featuredImage.split('?')[0]})` }}
|
||||
className="absolute inset-0 z-0 bg-cover transition-transform duration-1000 group-hover:scale-105"
|
||||
style={{
|
||||
backgroundImage: `url(${next.frontmatter.featuredImage.split('?')[0]})`,
|
||||
backgroundPosition: `${next.frontmatter.focalX ?? 50}% ${next.frontmatter.focalY ?? 50}%`,
|
||||
}}
|
||||
/>
|
||||
) : (
|
||||
<div className="absolute inset-0 bg-neutral-100" />
|
||||
|
||||
@@ -2,7 +2,7 @@ import React from 'react';
|
||||
import { useTranslations, useLocale } from 'next-intl';
|
||||
import { Section, Container, Button, Heading } from '../../components/ui';
|
||||
|
||||
export default function CTA() {
|
||||
export default function CTA({ data }: { data?: any }) {
|
||||
const t = useTranslations('Home.cta');
|
||||
const locale = useLocale();
|
||||
|
||||
@@ -10,20 +10,20 @@ export default function CTA() {
|
||||
<Section className="bg-primary text-white py-32 relative overflow-hidden">
|
||||
<div className="absolute top-0 right-0 w-1/3 h-full bg-accent/5 -skew-x-12 translate-x-1/2" />
|
||||
<div className="absolute bottom-0 left-0 w-1/4 h-1/2 bg-primary/10 rounded-full blur-3xl -translate-x-1/2 translate-y-1/2" />
|
||||
|
||||
|
||||
<Container className="relative z-10">
|
||||
<div className="flex flex-col lg:flex-row items-center justify-between gap-16">
|
||||
<div className="max-w-3xl text-center lg:text-left">
|
||||
<Heading level={2} subtitle={t('subtitle')} className="text-white mb-6">
|
||||
<span className="text-white">{t('title')}</span>
|
||||
<Heading level={2} subtitle={data?.subtitle || t('subtitle')} className="text-white mb-6">
|
||||
<span className="text-white">{data?.title || t('title')}</span>
|
||||
</Heading>
|
||||
<p className="text-lg md:text-xl text-white/70 leading-relaxed">
|
||||
{t('description')}
|
||||
{data?.description || t('description')}
|
||||
</p>
|
||||
</div>
|
||||
<div className="flex-shrink-0">
|
||||
<Button href={`/${locale}/contact`} variant="accent" size="xl" className="group px-12">
|
||||
{t('button')}
|
||||
{data?.buttonLabel || t('button')}
|
||||
<span className="ml-3 transition-transform group-hover:translate-x-2">→</span>
|
||||
</Button>
|
||||
</div>
|
||||
|
||||
@@ -3,7 +3,7 @@ import Image from 'next/image';
|
||||
import { useTranslations } from 'next-intl';
|
||||
import { Section, Container, Heading } from '../../components/ui';
|
||||
|
||||
export default function Experience() {
|
||||
export default function Experience({ data }: { data?: any }) {
|
||||
const t = useTranslations('Home.experience');
|
||||
|
||||
return (
|
||||
@@ -11,10 +11,11 @@ export default function Experience() {
|
||||
<div className="absolute inset-0 z-0">
|
||||
<Image
|
||||
src="/uploads/2024/12/1694273920124-copy-2.webp"
|
||||
alt={t('subtitle')}
|
||||
alt={data?.subtitle || t('subtitle')}
|
||||
fill
|
||||
className="object-cover object-center scale-105 animate-slow-zoom"
|
||||
sizes="100vw"
|
||||
quality={100}
|
||||
/>
|
||||
<div className="absolute inset-0 bg-primary/80 mix-blend-multiply" />
|
||||
<div className="absolute inset-0 bg-gradient-to-r from-primary via-primary/40 to-transparent" />
|
||||
@@ -22,31 +23,31 @@ export default function Experience() {
|
||||
|
||||
<Container className="relative z-10">
|
||||
<div className="max-w-3xl">
|
||||
<Heading level={2} subtitle={t('subtitle')} className="text-white">
|
||||
<span className="text-white">{t('title')}</span>
|
||||
<Heading level={2} subtitle={data?.subtitle || t('subtitle')} className="text-white">
|
||||
<span className="text-white">{data?.title || t('title')}</span>
|
||||
</Heading>
|
||||
<div className="space-y-8 text-lg md:text-xl text-white/90 leading-relaxed font-medium">
|
||||
<p className="border-l-4 border-accent pl-8 py-2 bg-white/5 backdrop-blur-sm rounded-r-xl">
|
||||
{t('p1')}
|
||||
{data?.paragraph1 || t('p1')}
|
||||
</p>
|
||||
<p className="pl-9">{t('p2')}</p>
|
||||
<p className="pl-9">{data?.paragraph2 || t('p2')}</p>
|
||||
</div>
|
||||
|
||||
<dl className="mt-16 grid grid-cols-1 md:grid-cols-2 gap-12">
|
||||
<div className="animate-fade-in">
|
||||
<dt className="text-2xl md:text-3xl font-extrabold text-accent mb-4">
|
||||
{t('certifiedQuality')}
|
||||
{data?.badge1 || t('certifiedQuality')}
|
||||
</dt>
|
||||
<dd className="text-base md:text-lg font-bold uppercase tracking-widest text-white/60">
|
||||
{t('vdeApproved')}
|
||||
{data?.badge1Text || t('vdeApproved')}
|
||||
</dd>
|
||||
</div>
|
||||
<div className="animate-fade-in" style={{ animationDelay: '100ms' }}>
|
||||
<dt className="text-2xl md:text-3xl font-extrabold text-accent mb-4">
|
||||
{t('fullSpectrum')}
|
||||
{data?.badge2 || t('fullSpectrum')}
|
||||
</dt>
|
||||
<dd className="text-base md:text-lg font-bold uppercase tracking-widest text-white/60">
|
||||
{t('solutionsRange')}
|
||||
{data?.badge2Text || t('solutionsRange')}
|
||||
</dd>
|
||||
</div>
|
||||
</dl>
|
||||
|
||||
@@ -7,7 +7,7 @@ import dynamic from 'next/dynamic';
|
||||
const Lightbox = dynamic(() => import('../Lightbox'), { ssr: false });
|
||||
import { useSearchParams } from 'next/navigation';
|
||||
|
||||
export default function GallerySection() {
|
||||
export default function GallerySection({ data }: { data?: any }) {
|
||||
const t = useTranslations('Home.gallery');
|
||||
const searchParams = useSearchParams();
|
||||
const images = [
|
||||
@@ -26,8 +26,8 @@ export default function GallerySection() {
|
||||
return (
|
||||
<Section className="bg-white text-white py-32">
|
||||
<Container>
|
||||
<Heading level={2} subtitle={t('subtitle')} align="center">
|
||||
{t('title')}
|
||||
<Heading level={2} subtitle={data?.subtitle || t('subtitle')} align="center">
|
||||
{data?.title || t('title')}
|
||||
</Heading>
|
||||
|
||||
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8">
|
||||
|
||||
@@ -6,94 +6,216 @@ import { useTranslations, useLocale } from 'next-intl';
|
||||
import dynamic from 'next/dynamic';
|
||||
import { useAnalytics } from '../analytics/useAnalytics';
|
||||
import { AnalyticsEvents } from '../analytics/analytics-events';
|
||||
import { useState, useEffect, useRef, useCallback } from 'react';
|
||||
import { ChevronRight } from 'lucide-react';
|
||||
import { AISearchResults } from '../search/AISearchResults';
|
||||
const HeroIllustration = dynamic(() => import('./HeroIllustration'), { ssr: false });
|
||||
const AIOrb = dynamic(() => import('../search/AIOrb'), { ssr: false });
|
||||
|
||||
export default function Hero() {
|
||||
export default function Hero({ data }: { data?: any }) {
|
||||
const t = useTranslations('Home.hero');
|
||||
const locale = useLocale();
|
||||
const { trackEvent } = useAnalytics();
|
||||
|
||||
const [searchQuery, setSearchQuery] = useState('');
|
||||
const [isSearchOpen, setIsSearchOpen] = useState(false);
|
||||
const [heroPlaceholder, setHeroPlaceholder] = useState(
|
||||
'Projekt beschreiben oder Kabel suchen...',
|
||||
);
|
||||
const typingRef = useRef<ReturnType<typeof setTimeout> | null>(null);
|
||||
|
||||
const HERO_PLACEHOLDERS = [
|
||||
'Querschnittsberechnung für 110kV Trasse', // Hochspannung
|
||||
'Wie schwer ist NAYY 4x150?',
|
||||
'Ich plane einen Solarpark, was brauche ich?', // Projekt Solar
|
||||
'Unterschied zwischen N2XSY und NAY2XSY?', // Fach
|
||||
'Mittelspannungskabel für Windkraftanlage', // Windpark
|
||||
'Welches Aluminiumkabel für 20kV?', // Mittelspannung
|
||||
];
|
||||
|
||||
// Typing animation for the hero search placeholder
|
||||
useEffect(() => {
|
||||
if (searchQuery) {
|
||||
setHeroPlaceholder('Projekt beschreiben oder Kabel suchen...');
|
||||
return;
|
||||
}
|
||||
|
||||
let textIdx = 0;
|
||||
let charIdx = 0;
|
||||
let deleting = false;
|
||||
|
||||
const tick = () => {
|
||||
const fullText = HERO_PLACEHOLDERS[textIdx];
|
||||
|
||||
if (deleting) {
|
||||
charIdx--;
|
||||
setHeroPlaceholder(fullText.substring(0, charIdx));
|
||||
} else {
|
||||
charIdx++;
|
||||
setHeroPlaceholder(fullText.substring(0, charIdx));
|
||||
}
|
||||
|
||||
let delay = deleting ? 30 : 70;
|
||||
|
||||
if (!deleting && charIdx === fullText.length) {
|
||||
delay = 2500;
|
||||
deleting = true;
|
||||
} else if (deleting && charIdx === 0) {
|
||||
deleting = false;
|
||||
textIdx = (textIdx + 1) % HERO_PLACEHOLDERS.length;
|
||||
delay = 400;
|
||||
}
|
||||
|
||||
typingRef.current = setTimeout(tick, delay);
|
||||
};
|
||||
|
||||
typingRef.current = setTimeout(tick, 1500);
|
||||
|
||||
return () => {
|
||||
if (typingRef.current) clearTimeout(typingRef.current);
|
||||
};
|
||||
}, [searchQuery]);
|
||||
|
||||
const handleSearchSubmit = (e: React.FormEvent) => {
|
||||
e.preventDefault();
|
||||
if (searchQuery.trim()) {
|
||||
setIsSearchOpen(true);
|
||||
}
|
||||
};
|
||||
|
||||
return (
|
||||
<Section className="relative min-h-[85vh] md:h-[90vh] flex flex-col items-center justify-center overflow-hidden bg-primary py-12 md:py-0 lg:py-0">
|
||||
<Container className="relative z-10 text-center md:text-left text-white w-full order-2 md:order-none">
|
||||
<div className="max-w-5xl mx-auto md:mx-0">
|
||||
<div>
|
||||
<Heading
|
||||
level={1}
|
||||
className="text-center md:text-left mb-6 md:mb-8 md:max-w-none text-white text-4xl sm:text-5xl md:text-7xl font-extrabold [text-shadow:_-2px_-2px_0_#002b49,_2px_-2px_0_#002b49,_-2px_2px_0_#002b49,_2px_2px_0_#002b49,_-2px_0_0_#002b49,_2px_0_0_#002b49,_0_-2px_0_#002b49,_0_2px_0_#002b49]"
|
||||
>
|
||||
{t.rich('title', {
|
||||
green: (chunks) => (
|
||||
<span className="relative inline-block">
|
||||
<span className="relative z-10 text-accent italic inline-block">{chunks}</span>
|
||||
<div
|
||||
className="w-[140%] h-[140%] -top-[20%] -left-[20%] text-accent/30 hidden md:block absolute -z-10 animate-in fade-in zoom-in-0 duration-1000 ease-out fill-mode-both"
|
||||
style={{ animationDelay: '500ms' }}
|
||||
>
|
||||
<Scribble variant="circle" />
|
||||
</div>
|
||||
</span>
|
||||
),
|
||||
})}
|
||||
</Heading>
|
||||
</div>
|
||||
<div>
|
||||
<p className="text-lg md:text-xl text-white leading-relaxed max-w-2xl mb-10 md:mb-12">
|
||||
{t('subtitle')}
|
||||
</p>
|
||||
</div>
|
||||
<div className="flex flex-col sm:flex-row justify-center md:justify-start gap-4 md:gap-6">
|
||||
<>
|
||||
<Section className="relative min-h-[85vh] md:h-[90vh] flex flex-col items-center justify-center overflow-hidden bg-primary py-12 md:py-0 lg:py-0">
|
||||
<Container className="relative z-10 text-center md:text-left text-white w-full order-2 md:order-none">
|
||||
<div className="max-w-5xl mx-auto md:mx-0">
|
||||
<div>
|
||||
<Heading
|
||||
level={1}
|
||||
className="text-center md:text-left mb-6 md:mb-8 md:max-w-none text-white text-4xl sm:text-5xl md:text-7xl font-extrabold [text-shadow:_-2px_-2px_0_#002b49,_2px_-2px_0_#002b49,_-2px_2px_0_#002b49,_2px_2px_0_#002b49,_-2px_0_0_#002b49,_2px_0_0_#002b49,_0_-2px_0_#002b49,_0_2px_0_#002b49]"
|
||||
>
|
||||
{data?.title ? (
|
||||
<span
|
||||
dangerouslySetInnerHTML={{
|
||||
__html: data.title
|
||||
.replace(
|
||||
/<green>/g,
|
||||
'<span class="relative inline-block"><span class="relative z-10 text-accent italic inline-block">',
|
||||
)
|
||||
.replace(
|
||||
/<\/green>/g,
|
||||
'</span><div class="w-[140%] h-[140%] -top-[20%] -left-[20%] text-accent/30 hidden md:block absolute -z-10 animate-in fade-in zoom-in-0 duration-1000 ease-out fill-mode-both" style="animation-delay: 500ms;"><Scribble variant="circle" /></div></span>',
|
||||
),
|
||||
}}
|
||||
/>
|
||||
) : (
|
||||
t.rich('title', {
|
||||
green: (chunks) => (
|
||||
<span className="relative inline-block">
|
||||
<span className="relative z-10 text-accent italic inline-block">
|
||||
{chunks}
|
||||
</span>
|
||||
<div
|
||||
className="w-[140%] h-[140%] -top-[20%] -left-[20%] text-accent/30 hidden md:block absolute -z-10 animate-in fade-in zoom-in-0 duration-1000 ease-out fill-mode-both"
|
||||
style={{ animationDelay: '500ms' }}
|
||||
>
|
||||
<Scribble variant="circle" />
|
||||
</div>
|
||||
</span>
|
||||
),
|
||||
})
|
||||
)}
|
||||
</Heading>
|
||||
</div>
|
||||
<div>
|
||||
<p className="text-lg md:text-xl text-white leading-relaxed max-w-2xl mb-10 md:mb-12">
|
||||
{data?.subtitle || t('subtitle')}
|
||||
</p>
|
||||
</div>
|
||||
<form
|
||||
onSubmit={handleSearchSubmit}
|
||||
className="w-full max-w-2xl bg-white/10 backdrop-blur-md border border-white/20 rounded-2xl p-2 flex items-center mt-8 mb-10 transition-all focus-within:bg-white/15 focus-within:border-accent shadow-lg relative"
|
||||
>
|
||||
<div className="absolute left-1 w-20 h-20 flex items-center justify-center z-10 overflow-visible">
|
||||
<AIOrb isThinking={false} />
|
||||
</div>
|
||||
<input
|
||||
type="text"
|
||||
value={searchQuery}
|
||||
onChange={(e) => setSearchQuery(e.target.value)}
|
||||
placeholder={heroPlaceholder}
|
||||
className="flex-1 bg-transparent border-none text-white pl-20 pr-2 py-4 placeholder:text-white/50 focus:outline-none text-lg lg:text-xl"
|
||||
autoFocus
|
||||
/>
|
||||
<Button
|
||||
href="/contact"
|
||||
type="submit"
|
||||
variant="accent"
|
||||
size="lg"
|
||||
className="group w-full sm:w-auto h-14 md:h-16 px-8 md:px-10 text-base md:text-lg hover:scale-105 transition-transform"
|
||||
onClick={() =>
|
||||
trackEvent(AnalyticsEvents.BUTTON_CLICK, {
|
||||
label: t('cta'),
|
||||
location: 'home_hero_primary',
|
||||
})
|
||||
}
|
||||
className="rounded-xl px-6 py-4 shrink-0 flex items-center shadow-md font-bold cursor-pointer hover:bg-accent hover:brightness-110"
|
||||
>
|
||||
{t('cta')}
|
||||
<span className="transition-transform group-hover/btn:translate-x-1 ml-2">
|
||||
→
|
||||
</span>
|
||||
</Button>
|
||||
</div>
|
||||
<div>
|
||||
<Button
|
||||
href={`/${locale}/${locale === 'de' ? 'produkte' : 'products'}`}
|
||||
variant="white"
|
||||
size="lg"
|
||||
className="group w-full sm:w-auto h-14 md:h-16 px-8 md:px-10 text-base md:text-lg md:bg-white md:text-primary md:hover:bg-neutral-light md:border-none hover:scale-105 transition-transform"
|
||||
onClick={() =>
|
||||
trackEvent(AnalyticsEvents.BUTTON_CLICK, {
|
||||
label: t('exploreProducts'),
|
||||
location: 'home_hero_secondary',
|
||||
})
|
||||
}
|
||||
>
|
||||
{t('exploreProducts')}
|
||||
Fragen
|
||||
<ChevronRight className="w-5 h-5 ml-2 -mr-1" />
|
||||
</Button>
|
||||
</form>
|
||||
|
||||
<div className="flex flex-col sm:flex-row justify-center md:justify-start gap-4 md:gap-6">
|
||||
<div>
|
||||
<Button
|
||||
href="/contact"
|
||||
variant="white"
|
||||
size="lg"
|
||||
className="group w-full sm:w-auto h-14 md:h-16 px-8 md:px-10 text-base md:text-lg hover:scale-105 transition-all outline-none"
|
||||
onClick={() =>
|
||||
trackEvent(AnalyticsEvents.BUTTON_CLICK, {
|
||||
label: data?.ctaLabel || t('cta'),
|
||||
location: 'home_hero_primary',
|
||||
})
|
||||
}
|
||||
>
|
||||
{data?.ctaLabel || t('cta')}
|
||||
<span className="transition-transform group-hover/btn:translate-x-1 ml-2">
|
||||
→
|
||||
</span>
|
||||
</Button>
|
||||
</div>
|
||||
<div>
|
||||
<Button
|
||||
href={`/${locale}/${locale === 'de' ? 'produkte' : 'products'}`}
|
||||
variant="outline"
|
||||
size="lg"
|
||||
className="group w-full sm:w-auto h-14 md:h-16 px-8 md:px-10 text-base md:text-lg text-white border-white/30 hover:bg-white/10 hover:border-white transition-all"
|
||||
onClick={() =>
|
||||
trackEvent(AnalyticsEvents.BUTTON_CLICK, {
|
||||
label: data?.secondaryCtaLabel || t('exploreProducts'),
|
||||
location: 'home_hero_secondary',
|
||||
})
|
||||
}
|
||||
>
|
||||
{data?.secondaryCtaLabel || t('exploreProducts')}
|
||||
</Button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</Container>
|
||||
</Container>
|
||||
|
||||
<div className="relative md:absolute inset-0 z-0 w-full h-[40vh] md:h-full order-1 md:order-none mb-[-80px] md:mb-0 mt-[80px] md:mt-0 overflow-visible pointer-events-none animate-in fade-in zoom-in-95 duration-1000 ease-out fill-mode-both">
|
||||
<HeroIllustration />
|
||||
</div>
|
||||
|
||||
<div
|
||||
className="absolute bottom-6 md:bottom-10 left-1/2 -translate-x-1/2 hidden sm:block animate-in fade-in slide-in-from-bottom-4 duration-1000 ease-out fill-mode-both"
|
||||
style={{ animationDelay: '2000ms' }}
|
||||
>
|
||||
<div className="w-6 h-10 border-2 border-white/30 rounded-full flex justify-center p-1">
|
||||
<div className="w-1 h-2 bg-white rounded-full animate-bounce" />
|
||||
<div className="relative md:absolute inset-0 z-0 w-full h-[40vh] md:h-full order-1 md:order-none mb-[-80px] md:mb-0 mt-[80px] md:mt-0 overflow-visible pointer-events-none animate-in fade-in zoom-in-95 duration-1000 ease-out fill-mode-both">
|
||||
<HeroIllustration />
|
||||
</div>
|
||||
</div>
|
||||
</Section>
|
||||
|
||||
<div
|
||||
className="absolute bottom-6 md:bottom-10 left-1/2 -translate-x-1/2 hidden sm:block animate-in fade-in slide-in-from-bottom-4 duration-1000 ease-out fill-mode-both"
|
||||
style={{ animationDelay: '2000ms' }}
|
||||
>
|
||||
<div className="w-6 h-10 border-2 border-white/30 rounded-full flex justify-center p-1">
|
||||
<div className="w-1 h-2 bg-white rounded-full animate-bounce" />
|
||||
</div>
|
||||
</div>
|
||||
</Section>
|
||||
<AISearchResults
|
||||
isOpen={isSearchOpen}
|
||||
onClose={() => setIsSearchOpen(false)}
|
||||
initialQuery={searchQuery}
|
||||
triggerSearch={true}
|
||||
/>
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@ import Image from 'next/image';
|
||||
import { useTranslations, useLocale } from 'next-intl';
|
||||
import { Section, Container, Button, Heading } from '../../components/ui';
|
||||
|
||||
export default function MeetTheTeam() {
|
||||
export default function MeetTheTeam({ data }: { data?: any }) {
|
||||
const t = useTranslations('Home.meetTheTeam');
|
||||
const teamT = useTranslations('Team');
|
||||
const locale = useLocale();
|
||||
@@ -13,10 +13,11 @@ export default function MeetTheTeam() {
|
||||
<div className="absolute inset-0 z-0">
|
||||
<Image
|
||||
src="/uploads/2024/12/DSC08036-Large.webp"
|
||||
alt={t('subtitle')}
|
||||
alt={data?.subtitle || t('subtitle')}
|
||||
fill
|
||||
className="object-cover scale-105 animate-slow-zoom"
|
||||
sizes="100vw"
|
||||
quality={100}
|
||||
/>
|
||||
<div className="absolute inset-0 bg-primary/70 mix-blend-multiply" />
|
||||
<div className="absolute inset-0 bg-gradient-to-t from-primary via-primary/20 to-transparent" />
|
||||
@@ -24,20 +25,20 @@ export default function MeetTheTeam() {
|
||||
|
||||
<Container className="relative z-10">
|
||||
<div className="max-w-3xl text-white animate-slide-up">
|
||||
<Heading level={2} subtitle={t('subtitle')} className="text-white mb-8">
|
||||
<span className="text-white">{t('title')}</span>
|
||||
<Heading level={2} subtitle={data?.subtitle || t('subtitle')} className="text-white mb-8">
|
||||
<span className="text-white">{data?.title || t('title')}</span>
|
||||
</Heading>
|
||||
|
||||
<div className="relative mb-12">
|
||||
<div className="absolute -left-8 top-0 bottom-0 w-1 bg-accent rounded-full" />
|
||||
<p className="text-xl md:text-2xl leading-relaxed font-medium italic text-white/90 pl-8">
|
||||
"{t('description')}"
|
||||
"{data?.description || t('description')}"
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div className="flex flex-wrap gap-8 items-center">
|
||||
<Button href={`/${locale}/team`} variant="accent" size="xl" className="group">
|
||||
{t('cta')}
|
||||
{data?.ctaLabel || t('cta')}
|
||||
<span className="ml-3 transition-transform group-hover:translate-x-2">→</span>
|
||||
</Button>
|
||||
|
||||
@@ -61,7 +62,7 @@ export default function MeetTheTeam() {
|
||||
</div>
|
||||
</div>
|
||||
<span className="text-white/60 font-bold text-xs md:text-sm uppercase tracking-widest">
|
||||
{t('andNetwork')}
|
||||
{data?.networkLabel || t('andNetwork')}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -4,7 +4,7 @@ import Image from 'next/image';
|
||||
import { useTranslations, useLocale } from 'next-intl';
|
||||
import { Section } from '../../components/ui';
|
||||
|
||||
export default function ProductCategories() {
|
||||
export default function ProductCategories({ data }: { data?: any }) {
|
||||
const t = useTranslations('Products');
|
||||
const locale = useLocale();
|
||||
|
||||
@@ -43,9 +43,13 @@ export default function ProductCategories() {
|
||||
|
||||
return (
|
||||
<Section className="bg-neutral-light py-0 md:py-0 lg:py-0 -mt-px">
|
||||
{t.has('title') && (
|
||||
{(data?.title || t.has('title')) && (
|
||||
<h2 className="sr-only">
|
||||
{t.rich('title', { green: (chunks: any) => <span>{chunks}</span> })}
|
||||
{data?.title ? (
|
||||
<span dangerouslySetInnerHTML={{ __html: data.title }} />
|
||||
) : (
|
||||
t.rich('title', { green: (chunks: any) => <span>{chunks}</span> })
|
||||
)}
|
||||
</h2>
|
||||
)}
|
||||
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4">
|
||||
|
||||
@@ -3,99 +3,108 @@ import Image from 'next/image';
|
||||
import Link from 'next/link';
|
||||
import { getAllPosts } from '@/lib/blog';
|
||||
import { getTranslations } from 'next-intl/server';
|
||||
import { Section, Container, Heading, Card, Badge } from '../../components/ui';
|
||||
import { Section, Container, Heading } from '../../components/ui';
|
||||
|
||||
interface RecentPostsProps {
|
||||
locale: string;
|
||||
data?: any;
|
||||
}
|
||||
|
||||
export default async function RecentPosts({ locale }: RecentPostsProps) {
|
||||
export default async function RecentPosts({ locale, data }: RecentPostsProps) {
|
||||
const t = await getTranslations('Blog');
|
||||
const posts = await getAllPosts(locale);
|
||||
const recentPosts = posts.slice(0, 3);
|
||||
const recentPosts = posts.slice(0, 4);
|
||||
|
||||
if (recentPosts.length === 0) return null;
|
||||
|
||||
const title = data?.title || t('allArticles');
|
||||
const subtitle = data?.subtitle || t('latestNews');
|
||||
|
||||
return (
|
||||
<Section className="bg-neutral py-16 md:py-24">
|
||||
<Container>
|
||||
<div className="flex flex-col md:flex-row items-start md:items-end justify-between mb-12 md:mb-16 gap-6">
|
||||
<Heading level={2} subtitle={t('latestNews')} className="mb-0 text-primary">
|
||||
{t('allArticles')}
|
||||
<Section className="bg-neutral-light py-0 md:py-0 lg:py-0">
|
||||
<Container className="py-12 md:py-16">
|
||||
<div className="flex flex-col md:flex-row items-start md:items-end justify-between gap-6">
|
||||
<Heading level={2} subtitle={subtitle} className="mb-0 text-primary">
|
||||
{title}
|
||||
</Heading>
|
||||
<Link
|
||||
href={`/${locale}/blog`}
|
||||
className="group flex items-center text-primary font-bold text-base md:text-lg touch-target"
|
||||
>
|
||||
{t('allArticles')}
|
||||
{title}
|
||||
<span className="ml-2 transition-transform group-hover:translate-x-2">→</span>
|
||||
</Link>
|
||||
</div>
|
||||
|
||||
<ul className="grid grid-cols-1 md:grid-cols-3 gap-8 md:gap-10 list-none p-0 m-0">
|
||||
{recentPosts.map((post) => (
|
||||
<li key={post.slug}>
|
||||
<Link href={`/${locale}/blog/${post.slug}`} className="group block h-full">
|
||||
<Card
|
||||
tag="article"
|
||||
className="h-full flex flex-col border-none shadow-lg hover:shadow-2xl transition-all duration-500 rounded-3xl"
|
||||
>
|
||||
{post.frontmatter.featuredImage && (
|
||||
<div className="relative h-64 overflow-hidden">
|
||||
<Image
|
||||
src={post.frontmatter.featuredImage.split('?')[0]}
|
||||
alt={post.frontmatter.title}
|
||||
fill
|
||||
className="w-full h-full object-cover transition-transform duration-700 group-hover:scale-110"
|
||||
sizes="(max-width: 768px) 100vw, 33vw"
|
||||
loading="lazy"
|
||||
/>
|
||||
<div className="absolute inset-0 image-overlay-gradient opacity-0 group-hover:opacity-100 transition-opacity duration-500" />
|
||||
{post.frontmatter.category && (
|
||||
<Badge variant="accent" className="absolute top-4 left-4 shadow-md">
|
||||
{post.frontmatter.category}
|
||||
</Badge>
|
||||
)}
|
||||
</div>
|
||||
)}
|
||||
<div className="p-6 md:p-8 flex flex-col flex-grow">
|
||||
<div className="text-xs md:text-sm font-medium text-text-light mb-3 md:mb-4 flex items-center gap-2">
|
||||
<span className="w-6 md:w-8 h-px bg-neutral-medium" />
|
||||
<time dateTime={post.frontmatter.date}>
|
||||
{new Date(post.frontmatter.date).toLocaleDateString(locale, {
|
||||
year: 'numeric',
|
||||
month: 'long',
|
||||
day: 'numeric',
|
||||
})}
|
||||
</time>
|
||||
</div>
|
||||
<h3 className="text-lg md:text-xl font-bold text-primary group-hover:text-accent-dark transition-colors line-clamp-2 mb-4 md:mb-6 leading-tight">
|
||||
{post.frontmatter.title}
|
||||
</h3>
|
||||
<div className="mt-auto flex items-center text-primary font-bold group-hover:underline decoration-2 underline-offset-4">
|
||||
{t('readMore')}
|
||||
<svg
|
||||
className="ml-2 w-5 h-5 transition-transform group-hover:translate-x-2"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
viewBox="0 0 24 24"
|
||||
aria-hidden="true"
|
||||
>
|
||||
<path
|
||||
strokeLinecap="round"
|
||||
strokeLinejoin="round"
|
||||
strokeWidth={2}
|
||||
d="M17 8l4 4m0 0l-4 4m4-4H3"
|
||||
/>
|
||||
</svg>
|
||||
</div>
|
||||
</div>
|
||||
</Card>
|
||||
</Link>
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
</Container>
|
||||
|
||||
<ul className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 m-0 p-0 list-none">
|
||||
{recentPosts.map((post, idx) => (
|
||||
<li key={`${post.slug}-${idx}`} className="block">
|
||||
<Link
|
||||
href={`/${locale}/blog/${post.slug}`}
|
||||
className="group block relative h-[400px] md:h-[500px] lg:h-[650px] overflow-hidden border-b md:border-b-0 md:border-r border-white/10 last:border-0 focus:outline-none"
|
||||
>
|
||||
{post.frontmatter.featuredImage && (
|
||||
<>
|
||||
<Image
|
||||
src={post.frontmatter.featuredImage.split('?')[0]}
|
||||
alt={post.frontmatter.title}
|
||||
fill
|
||||
className="object-cover transition-transform duration-1000 group-hover:scale-110"
|
||||
style={{
|
||||
objectPosition: `${post.frontmatter.focalX ?? 50}% ${post.frontmatter.focalY ?? 50}%`,
|
||||
}}
|
||||
sizes="(max-width: 768px) 100vw, (max-width: 1024px) 50vw, 25vw"
|
||||
loading="lazy"
|
||||
/>
|
||||
<div className="absolute inset-0 bg-primary-dark/40 group-hover:bg-primary-dark/60 transition-all duration-500" />
|
||||
</>
|
||||
)}
|
||||
|
||||
<div className="absolute inset-0 p-8 md:p-10 flex flex-col justify-end text-white">
|
||||
<div className="mb-4 md:mb-6 transform transition-all duration-500 group-hover:-translate-y-4">
|
||||
<div className="flex flex-wrap items-center gap-2 mb-4">
|
||||
{post.frontmatter.category && (
|
||||
<span className="px-3 py-1 bg-accent text-primary-dark rounded-full text-[10px] md:text-xs font-bold uppercase tracking-wider shadow-sm">
|
||||
{post.frontmatter.category}
|
||||
</span>
|
||||
)}
|
||||
<time
|
||||
dateTime={post.frontmatter.date}
|
||||
suppressHydrationWarning
|
||||
className="px-3 py-1 text-white/80 text-[10px] md:text-xs font-bold uppercase tracking-widest border border-white/20 rounded-full bg-white/10 backdrop-blur-md"
|
||||
>
|
||||
{new Date(post.frontmatter.date).toLocaleDateString(
|
||||
locale?.length === 2 ? locale : 'de',
|
||||
{
|
||||
year: 'numeric',
|
||||
month: 'short',
|
||||
day: 'numeric',
|
||||
},
|
||||
)}
|
||||
</time>
|
||||
{(new Date(post.frontmatter.date) > new Date() ||
|
||||
post.frontmatter.public === false) && (
|
||||
<span className="px-2 py-0.5 border border-white/40 text-white/90 rounded uppercase tracking-widest text-[10px] md:text-xs font-bold bg-neutral-dark/40 shadow-sm">
|
||||
Draft Preview
|
||||
</span>
|
||||
)}
|
||||
</div>
|
||||
<h3 className="text-xl md:text-2xl font-bold mb-2 md:mb-4 leading-tight drop-shadow-md">
|
||||
{post.frontmatter.title}
|
||||
</h3>
|
||||
</div>
|
||||
<div className="flex items-center text-accent font-bold tracking-wider uppercase text-xs md:text-xs opacity-100 md:opacity-0 group-hover:opacity-100 transition-all duration-500 delay-100">
|
||||
{t('readMore')}{' '}
|
||||
<span className="ml-2 transition-transform group-hover:translate-x-2">
|
||||
→
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</Link>
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
</Section>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
'use client';
|
||||
|
||||
import React, { useState, useEffect, useRef } from 'react';
|
||||
import Scribble from '@/components/Scribble';
|
||||
import { useTranslations } from 'next-intl';
|
||||
|
||||
export default function VideoSection() {
|
||||
export default function VideoSection({ data }: { data?: any }) {
|
||||
const t = useTranslations('Home.video');
|
||||
const [isVisible, setIsVisible] = useState(false);
|
||||
const sectionRef = useRef<HTMLElement>(null);
|
||||
@@ -40,17 +39,19 @@ export default function VideoSection() {
|
||||
<div className="absolute inset-0 bg-gradient-to-b from-primary/60 via-transparent to-primary/60 flex items-center justify-center pointer-events-none">
|
||||
<div className="max-w-5xl px-6 text-center animate-slide-up pointer-events-auto">
|
||||
<h2 className="text-3xl md:text-4xl lg:text-5xl font-extrabold text-white leading-[1.1]">
|
||||
{t.rich('title', {
|
||||
future: (chunks) => (
|
||||
<span className="relative inline-block mx-2">
|
||||
<span className="relative z-10 italic text-accent">{chunks}</span>
|
||||
<Scribble
|
||||
variant="underline"
|
||||
className="w-full h-4 -bottom-2 left-0 text-accent/40"
|
||||
/>
|
||||
</span>
|
||||
),
|
||||
})}
|
||||
{data?.title ? (
|
||||
<span
|
||||
dangerouslySetInnerHTML={{
|
||||
__html: data.title
|
||||
.replace(/<future>/g, '<span class="italic text-accent">')
|
||||
.replace(/<\/future>/g, '</span>'),
|
||||
}}
|
||||
/>
|
||||
) : (
|
||||
t.rich('title', {
|
||||
future: (chunks) => <span className="italic text-accent">{chunks}</span>,
|
||||
})
|
||||
)}
|
||||
</h2>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -2,30 +2,35 @@ import React from 'react';
|
||||
import { useTranslations } from 'next-intl';
|
||||
import { Section, Container, Heading } from '../../components/ui';
|
||||
|
||||
export default function WhatWeDo() {
|
||||
export default function WhatWeDo({ data }: { data?: any }) {
|
||||
const t = useTranslations('Home.whatWeDo');
|
||||
|
||||
const items = data?.items?.length ? data.items : [0, 1, 2, 3].map(idx => ({
|
||||
title: t(`items.${idx}.title`),
|
||||
description: t(`items.${idx}.description`)
|
||||
}));
|
||||
|
||||
return (
|
||||
<Section className="bg-white">
|
||||
<Container>
|
||||
<div className="sticky-narrative-container">
|
||||
<div className="sticky-narrative-sidebar">
|
||||
<div className="lg:sticky lg:top-32">
|
||||
<Heading level={2} subtitle={t('expertise')} className="text-primary-dark">
|
||||
{t('title')}
|
||||
<Heading level={2} subtitle={data?.expertiseLabel || t('expertise')} className="text-primary-dark">
|
||||
{data?.title || t('title')}
|
||||
</Heading>
|
||||
<p className="text-base md:text-lg text-text-secondary leading-relaxed">
|
||||
{t('subtitle')}
|
||||
{data?.subtitle || t('subtitle')}
|
||||
</p>
|
||||
<div className="mt-8 md:mt-12 p-6 md:p-8 bg-saturated/10 rounded-2xl border border-saturated/10">
|
||||
<p className="text-saturated font-bold text-base md:text-base italic">
|
||||
"{t('quote')}"
|
||||
"{data?.quote || t('quote')}"
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className="sticky-narrative-content grid grid-cols-1 md:grid-cols-2 gap-x-8 md:gap-x-12 gap-y-12 md:gap-y-20">
|
||||
{[0, 1, 2, 3].map((idx) => (
|
||||
{items.map((item: any, idx: number) => (
|
||||
<div key={idx} className="group">
|
||||
<div className="flex items-center gap-4 mb-4 md:mb-6">
|
||||
<span className="flex items-center justify-center w-10 h-10 md:w-12 md:h-12 rounded-full bg-saturated text-white font-bold text-base md:text-lg shadow-lg shadow-saturated/20 group-hover:scale-110 transition-transform">
|
||||
@@ -33,8 +38,8 @@ export default function WhatWeDo() {
|
||||
</span>
|
||||
<div className="h-px flex-grow bg-neutral-medium" />
|
||||
</div>
|
||||
<h3 className="text-lg md:text-xl font-bold mb-3 md:mb-4 text-primary-dark group-hover:text-accent-dark transition-colors">{t(`items.${idx}.title`)}</h3>
|
||||
<p className="text-text-secondary text-base md:text-base leading-relaxed">{t(`items.${idx}.description`)}</p>
|
||||
<h3 className="text-lg md:text-xl font-bold mb-3 md:mb-4 text-primary-dark group-hover:text-accent-dark transition-colors">{item.title}</h3>
|
||||
<p className="text-text-secondary text-base md:text-base leading-relaxed">{item.description}</p>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
|
||||
@@ -2,24 +2,27 @@ import React from 'react';
|
||||
import { useTranslations } from 'next-intl';
|
||||
import { Section, Container, Heading } from '../../components/ui';
|
||||
|
||||
export default function WhyChooseUs() {
|
||||
export default function WhyChooseUs({ data }: { data?: any }) {
|
||||
const t = useTranslations('Home.whyChooseUs');
|
||||
|
||||
const features = data?.features?.length ? data.features.map((f: any) => f.feature) : [0, 1, 2, 3].map(i => t(`features.${i}`));
|
||||
const items = data?.items?.length ? data.items : [0, 1, 2, 3].map(idx => ({ title: t(`items.${idx}.title`), description: t(`items.${idx}.description`) }));
|
||||
|
||||
return (
|
||||
<Section className="bg-neutral-light">
|
||||
<Container>
|
||||
<div className="grid grid-cols-1 lg:grid-cols-12 gap-16 lg:gap-24">
|
||||
<div className="lg:col-span-4 order-1 lg:order-2">
|
||||
<div className="sticky top-32">
|
||||
<Heading level={2} subtitle={t('whyKlz')} className="text-primary-dark">
|
||||
{t('title')}
|
||||
<Heading level={2} subtitle={data?.tagline || t('whyKlz')} className="text-primary-dark">
|
||||
{data?.title || t('title')}
|
||||
</Heading>
|
||||
<p className="text-base md:text-lg text-text-secondary leading-relaxed">
|
||||
{t('subtitle')}
|
||||
{data?.subtitle || t('subtitle')}
|
||||
</p>
|
||||
|
||||
<ul className="mt-12 space-y-6 list-none p-0">
|
||||
{[0, 1, 2, 3].map((i) => (
|
||||
{features.map((featureText: string, i: number) => (
|
||||
<li key={i} className="flex items-center gap-4">
|
||||
<div className="flex-shrink-0 w-6 h-6 rounded-full bg-accent flex items-center justify-center">
|
||||
<svg
|
||||
@@ -38,7 +41,7 @@ export default function WhyChooseUs() {
|
||||
</svg>
|
||||
</div>
|
||||
<span className="font-bold text-primary-dark text-base md:text-base">
|
||||
{t(`features.${i}`)}
|
||||
{featureText}
|
||||
</span>
|
||||
</li>
|
||||
))}
|
||||
@@ -46,7 +49,7 @@ export default function WhyChooseUs() {
|
||||
</div>
|
||||
</div>
|
||||
<ul className="lg:col-span-8 grid grid-cols-1 md:grid-cols-2 gap-8 order-2 lg:order-1 list-none p-0 m-0">
|
||||
{[0, 1, 2, 3].map((idx) => (
|
||||
{items.map((item: any, idx: number) => (
|
||||
<li
|
||||
key={idx}
|
||||
className="p-10 bg-white rounded-3xl border border-neutral-medium hover:border-accent transition-all duration-500 hover:shadow-xl group"
|
||||
@@ -57,10 +60,10 @@ export default function WhyChooseUs() {
|
||||
</span>
|
||||
</div>
|
||||
<h3 className="text-xl font-bold mb-4 text-primary-dark">
|
||||
{t(`items.${idx}.title`)}
|
||||
{item.title}
|
||||
</h3>
|
||||
<p className="text-text-secondary text-base md:text-base leading-relaxed">
|
||||
{t(`items.${idx}.description`)}
|
||||
{item.description}
|
||||
</p>
|
||||
</li>
|
||||
))}
|
||||
|
||||
371
components/search/AIOrb.tsx
Normal file
371
components/search/AIOrb.tsx
Normal file
@@ -0,0 +1,371 @@
|
||||
'use client';
|
||||
|
||||
import React, { useRef, useEffect, useCallback } from 'react';
|
||||
|
||||
interface AIOrbProps {
|
||||
isThinking: boolean;
|
||||
hasError?: boolean;
|
||||
}
|
||||
|
||||
function lerp(a: number, b: number, t: number) {
|
||||
return a + (b - a) * t;
|
||||
}
|
||||
|
||||
// Simple noise function for organic movement
|
||||
function noise(x: number, y: number, t: number): number {
|
||||
return (
|
||||
Math.sin(x * 1.3 + t * 0.7) * Math.cos(y * 0.9 + t * 0.5) * 0.5 +
|
||||
Math.sin(x * 2.7 + y * 1.1 + t * 1.3) * 0.25 +
|
||||
Math.cos(x * 0.8 - y * 2.3 + t * 0.9) * 0.25
|
||||
);
|
||||
}
|
||||
|
||||
// ── Particle ───────────────────────────────────────────────────
|
||||
interface Particle {
|
||||
// Sphere position (target shape)
|
||||
theta: number;
|
||||
phi: number;
|
||||
// Current position
|
||||
x: number;
|
||||
y: number;
|
||||
z: number;
|
||||
// Velocity
|
||||
vx: number;
|
||||
vy: number;
|
||||
vz: number;
|
||||
// Properties
|
||||
size: number;
|
||||
baseSize: number;
|
||||
hue: number; // 0=blue, 1=green
|
||||
brightness: number;
|
||||
phase: number;
|
||||
orbitSpeed: number;
|
||||
noiseScale: number;
|
||||
}
|
||||
|
||||
function createParticles(count: number): Particle[] {
|
||||
const particles: Particle[] = [];
|
||||
|
||||
for (let i = 0; i < count; i++) {
|
||||
// Fibonacci sphere distribution for even spacing
|
||||
const golden = Math.PI * (3 - Math.sqrt(5));
|
||||
const y = 1 - (i / (count - 1)) * 2;
|
||||
const radiusAtY = Math.sqrt(1 - y * y);
|
||||
const theta = golden * i;
|
||||
const phi = Math.acos(y);
|
||||
|
||||
particles.push({
|
||||
theta,
|
||||
phi,
|
||||
x: Math.cos(theta) * radiusAtY,
|
||||
y,
|
||||
z: Math.sin(theta) * radiusAtY,
|
||||
vx: 0,
|
||||
vy: 0,
|
||||
vz: 0,
|
||||
size: 0.4 + Math.random() * 0.8,
|
||||
baseSize: 0.4 + Math.random() * 0.8,
|
||||
hue: Math.random() > 0.45 ? 0 : 1,
|
||||
brightness: 0.5 + Math.random() * 0.5,
|
||||
phase: Math.random() * Math.PI * 2,
|
||||
orbitSpeed: (0.1 + Math.random() * 0.4) * (Math.random() > 0.5 ? 1 : -1),
|
||||
noiseScale: 0.5 + Math.random() * 1.5,
|
||||
});
|
||||
}
|
||||
return particles;
|
||||
}
|
||||
|
||||
export default function AIOrb({ isThinking = false, hasError = false }: AIOrbProps) {
|
||||
const canvasRef = useRef<HTMLCanvasElement>(null);
|
||||
const wrapRef = useRef<HTMLDivElement>(null);
|
||||
const animRef = useRef<number>(0);
|
||||
const particlesRef = useRef<Particle[]>([]);
|
||||
|
||||
const mouse = useRef({ x: 0.5, y: 0.5, hover: false });
|
||||
const state = useRef({
|
||||
pulse: 0,
|
||||
hover: 0,
|
||||
error: 0,
|
||||
mouseX: 0.5,
|
||||
mouseY: 0.5,
|
||||
rotY: 0,
|
||||
rotX: 0,
|
||||
breathe: 0,
|
||||
scatter: 0,
|
||||
shake: 0,
|
||||
});
|
||||
|
||||
const onMove = useCallback((e: React.PointerEvent) => {
|
||||
const r = wrapRef.current?.getBoundingClientRect();
|
||||
if (!r) return;
|
||||
mouse.current.x = (e.clientX - r.left) / r.width;
|
||||
mouse.current.y = (e.clientY - r.top) / r.height;
|
||||
}, []);
|
||||
const onEnter = useCallback(() => {
|
||||
mouse.current.hover = true;
|
||||
}, []);
|
||||
const onLeave = useCallback(() => {
|
||||
mouse.current.hover = false;
|
||||
mouse.current.x = 0.5;
|
||||
mouse.current.y = 0.5;
|
||||
}, []);
|
||||
|
||||
const draw = useCallback(
|
||||
function drawStep() {
|
||||
const canvas = canvasRef.current;
|
||||
if (!canvas) return;
|
||||
const ctx = canvas.getContext('2d');
|
||||
if (!ctx) return;
|
||||
|
||||
const dpr = window.devicePixelRatio || 1;
|
||||
const rect = canvas.getBoundingClientRect();
|
||||
const w = rect.width * dpr;
|
||||
const h = rect.height * dpr;
|
||||
if (canvas.width !== w || canvas.height !== h) {
|
||||
canvas.width = w;
|
||||
canvas.height = h;
|
||||
}
|
||||
|
||||
const cx = w / 2;
|
||||
const cy = h / 2;
|
||||
const minDim = Math.min(w, h);
|
||||
// Reduced further to give maximum breathing room for glow + movement
|
||||
const sphereR = minDim * 0.16;
|
||||
const time = performance.now() / 1000;
|
||||
const s = state.current;
|
||||
const m = mouse.current;
|
||||
|
||||
// ── Interpolate state ──
|
||||
s.pulse = lerp(s.pulse, isThinking ? 1 : 0, 0.03);
|
||||
s.hover = lerp(s.hover, m.hover ? 1 : 0, 0.12);
|
||||
s.error = lerp(s.error, hasError ? 1 : 0, 0.05);
|
||||
s.mouseX = lerp(s.mouseX, m.x, 0.12);
|
||||
s.mouseY = lerp(s.mouseY, m.y, 0.12);
|
||||
s.scatter = lerp(s.scatter, m.hover ? 0.8 : hasError ? 0.5 : 0, 0.06);
|
||||
s.shake += 0.15 * s.error;
|
||||
|
||||
// Global rotation — ALWAYS rotating + ALWAYS facing cursor
|
||||
s.rotY += lerp(0.008, 0.04, Math.max(s.pulse, s.hover));
|
||||
const mouseRotY = (s.mouseX - 0.5) * 1.2; // always face cursor
|
||||
const mouseRotX = (s.mouseY - 0.5) * 0.8;
|
||||
|
||||
s.breathe += lerp(1.2, 3.0, s.pulse) / 60;
|
||||
const breathe = Math.sin(s.breathe) * 0.5 + 0.5;
|
||||
|
||||
// ── Clear ──
|
||||
ctx.clearRect(0, 0, w, h);
|
||||
|
||||
// ── Subtle core glow ──
|
||||
const shakeX = Math.sin(s.shake * 17) * s.error * minDim * 0.02;
|
||||
const glowCX = cx + shakeX;
|
||||
const glowCY = cy;
|
||||
// Clamp glow radius so it never exceeds ~48% of canvas (leaves padding for movement)
|
||||
const glowR = Math.min(
|
||||
sphereR * lerp(2.2, 4.0, Math.max(s.pulse, s.hover * 0.8)),
|
||||
minDim * 0.48,
|
||||
);
|
||||
const glowA = lerp(0.1, 0.4, Math.max(s.pulse, s.hover * 0.7, s.error * 0.8));
|
||||
const glow = ctx.createRadialGradient(glowCX, glowCY, 0, glowCX, glowCY, glowR);
|
||||
// Glow color: blue normally, red on error
|
||||
const glowR1 = Math.round(lerp(20, 255, s.error));
|
||||
const glowG1 = Math.round(lerp(60, 40, s.error));
|
||||
const glowB1 = Math.round(lerp(255, 40, s.error));
|
||||
glow.addColorStop(0, `rgba(${glowR1}, ${glowG1}, ${glowB1}, ${glowA * 2})`);
|
||||
glow.addColorStop(
|
||||
0.25,
|
||||
`rgba(${Math.round(lerp(80, 200, s.error))}, ${Math.round(lerp(140, 50, s.error))}, ${Math.round(lerp(255, 50, s.error))}, ${glowA * 1.2})`,
|
||||
);
|
||||
glow.addColorStop(0.6, `rgba(${glowR1}, ${glowG1}, ${glowB1}, ${glowA * 0.4})`);
|
||||
glow.addColorStop(1, `rgba(${glowR1}, ${glowG1}, ${glowB1}, 0)`);
|
||||
ctx.fillStyle = glow;
|
||||
ctx.beginPath();
|
||||
ctx.arc(glowCX, glowCY, glowR, 0, Math.PI * 2);
|
||||
ctx.fill();
|
||||
|
||||
// ── Create particles if empty ──
|
||||
if (particlesRef.current.length === 0) {
|
||||
particlesRef.current = createParticles(350);
|
||||
}
|
||||
|
||||
// ── Update & draw particles ──
|
||||
const cosRY = Math.cos(s.rotY + mouseRotY);
|
||||
const sinRY = Math.sin(s.rotY + mouseRotY);
|
||||
const cosRX = Math.cos(mouseRotX);
|
||||
const sinRX = Math.sin(mouseRotX);
|
||||
|
||||
// Sort by z for correct layering
|
||||
type ParticleWithScreen = { p: Particle; sx: number; sy: number; sz: number; depth: number };
|
||||
const projected: ParticleWithScreen[] = [];
|
||||
|
||||
for (const p of particlesRef.current) {
|
||||
// Target position: sphere surface + noise displacement
|
||||
const n = noise(p.theta * p.noiseScale, p.phi * p.noiseScale, time * 0.5 + p.phase);
|
||||
const displacement = 1 + n * lerp(0.12, 0.3, s.pulse);
|
||||
|
||||
// Orbit: rotate theta — always moving, faster idle
|
||||
const activeTheta = p.theta + time * p.orbitSpeed * lerp(0.35, 0.8, s.pulse);
|
||||
|
||||
// Sphere coordinates to cartesian
|
||||
const sinPhi = Math.sin(p.phi);
|
||||
const tgtX = Math.cos(activeTheta) * sinPhi * displacement;
|
||||
// Excitement from hover + pulse + error
|
||||
const targetExcite = Math.max(s.hover * 0.9, s.pulse, s.error * 0.8);
|
||||
const tgtY = Math.cos(p.phi) * displacement;
|
||||
const tgtZ = Math.sin(activeTheta) * sinPhi * displacement;
|
||||
|
||||
// Scatter on hover: push particles outward
|
||||
const scatterMul = 1 + s.scatter * (0.5 + n * 0.5);
|
||||
|
||||
// Spring physics toward target
|
||||
const tx = tgtX * scatterMul;
|
||||
const ty = tgtY * scatterMul;
|
||||
const tz = tgtZ * scatterMul;
|
||||
|
||||
p.vx += (tx - p.x) * 0.08;
|
||||
p.vy += (ty - p.y) * 0.08;
|
||||
p.vz += (tz - p.z) * 0.08;
|
||||
p.vx *= 0.88;
|
||||
p.vy *= 0.88;
|
||||
p.vz *= 0.88;
|
||||
p.x += p.vx;
|
||||
p.y += p.vy;
|
||||
p.z += p.vz;
|
||||
|
||||
// 3D rotation (Y then X)
|
||||
const rx = p.x * cosRY - p.z * sinRY;
|
||||
const rz = p.x * sinRY + p.z * cosRY;
|
||||
const ry = p.y * cosRX - rz * sinRX;
|
||||
const finalZ = p.y * sinRX + rz * cosRX;
|
||||
|
||||
// Project to screen
|
||||
const perspective = 3;
|
||||
const scale = perspective / (perspective + finalZ);
|
||||
const sx = cx + rx * sphereR * scale;
|
||||
const sy = cy + ry * sphereR * scale;
|
||||
|
||||
projected.push({ p, sx, sy, sz: finalZ, depth: scale });
|
||||
}
|
||||
|
||||
// Sort back-to-front
|
||||
projected.sort((a, b) => a.sz - b.sz);
|
||||
|
||||
for (const { p, sx, sy, sz, depth } of projected) {
|
||||
// Depth-based alpha and size
|
||||
const depthAlpha = 0.25 + (sz + 1) * 0.375; // 0.25 (back) → 1.0 (front)
|
||||
const twinkle = 0.75 + 0.25 * Math.sin(time * 3.5 + p.phase);
|
||||
|
||||
const alpha =
|
||||
depthAlpha * twinkle * p.brightness * lerp(0.8, 1.3, Math.max(s.pulse, s.hover * 0.8));
|
||||
|
||||
const drawSize =
|
||||
p.baseSize * depth * dpr * lerp(1.0, 2.0, Math.max(s.pulse, s.hover * 0.7));
|
||||
|
||||
// Color — shift to red on error
|
||||
let r: number, g: number, b: number;
|
||||
if (s.error > 0.1) {
|
||||
// Error: red family
|
||||
if (p.hue === 0) {
|
||||
r = Math.round(lerp(40 + sz * 30, 255, s.error));
|
||||
g = Math.round(lerp(80 + sz * 40, 40 + sz * 20, s.error));
|
||||
b = Math.round(lerp(255, 40, s.error));
|
||||
} else {
|
||||
r = Math.round(lerp(100 + sz * 30, 230, s.error));
|
||||
g = Math.round(lerp(220 + sz * 17, 60, s.error));
|
||||
b = Math.round(lerp(20, 20, s.error));
|
||||
}
|
||||
} else if (p.hue === 0) {
|
||||
r = 60 + Math.round(sz * 40);
|
||||
g = 100 + Math.round(sz * 50);
|
||||
b = 255;
|
||||
} else {
|
||||
r = 120 + Math.round(sz * 30);
|
||||
g = 237 + Math.round(sz * 10);
|
||||
b = 30;
|
||||
}
|
||||
|
||||
// Thinking: shift toward brighter, more saturated
|
||||
if (s.pulse > 0.1) {
|
||||
r = Math.round(lerp(r, p.hue === 0 ? 100 : 130, s.pulse * 0.3));
|
||||
g = Math.round(lerp(g, p.hue === 0 ? 140 : 237, s.pulse * 0.3));
|
||||
b = Math.round(lerp(b, p.hue === 0 ? 255 : 32, s.pulse * 0.3));
|
||||
}
|
||||
|
||||
// Micro glow — always visible, stronger on front
|
||||
if (depthAlpha > 0.25) {
|
||||
const gSize = drawSize * lerp(4, 7, s.hover);
|
||||
const pg = ctx.createRadialGradient(sx, sy, 0, sx, sy, gSize);
|
||||
pg.addColorStop(0, `rgba(${r},${g},${b},${alpha * 0.5})`);
|
||||
pg.addColorStop(1, `rgba(${r},${g},${b},0)`);
|
||||
ctx.fillStyle = pg;
|
||||
ctx.beginPath();
|
||||
ctx.arc(sx, sy, gSize, 0, Math.PI * 2);
|
||||
ctx.fill();
|
||||
}
|
||||
|
||||
// Core dot — bright
|
||||
ctx.fillStyle = `rgba(${Math.min(r + 40, 255)},${Math.min(g + 30, 255)},${b},${Math.min(alpha * 1.6, 1)})`;
|
||||
ctx.beginPath();
|
||||
ctx.arc(sx, sy, Math.max(drawSize * 0.5, 0.3 * dpr), 0, Math.PI * 2);
|
||||
ctx.fill();
|
||||
}
|
||||
|
||||
// ── Loading rings (thinking) ──
|
||||
if (s.pulse > 0.02) {
|
||||
ctx.save();
|
||||
ctx.translate(cx, cy);
|
||||
|
||||
// Spinning arc
|
||||
const spinAngle = time * 2;
|
||||
const arcLen = Math.PI * lerp(0.3, 1.0, (Math.sin(time * 1.5) + 1) / 2);
|
||||
ctx.rotate(spinAngle);
|
||||
ctx.strokeStyle = `rgba(130, 237, 32, ${s.pulse * 0.4})`;
|
||||
ctx.lineWidth = 1.2 * dpr;
|
||||
ctx.lineCap = 'round';
|
||||
ctx.beginPath();
|
||||
ctx.arc(0, 0, sphereR * 1.25, 0, arcLen);
|
||||
ctx.stroke();
|
||||
|
||||
// Counter-spinning arc
|
||||
ctx.rotate(-spinAngle * 2);
|
||||
ctx.strokeStyle = `rgba(1, 29, 255, ${s.pulse * 0.3})`;
|
||||
ctx.lineWidth = 0.8 * dpr;
|
||||
ctx.beginPath();
|
||||
ctx.arc(0, 0, sphereR * 1.35, 0, arcLen * 0.6);
|
||||
ctx.stroke();
|
||||
|
||||
ctx.restore();
|
||||
|
||||
// Expanding pulse
|
||||
const pulsePhase = (time * 0.8) % 1;
|
||||
const pulseR = sphereR * (1 + pulsePhase * 1.5);
|
||||
const pulseA = s.pulse * (1 - pulsePhase) * 0.15;
|
||||
ctx.strokeStyle = `rgba(130, 237, 32, ${pulseA})`;
|
||||
ctx.lineWidth = 1 * dpr;
|
||||
ctx.beginPath();
|
||||
ctx.arc(cx, cy, pulseR, 0, Math.PI * 2);
|
||||
ctx.stroke();
|
||||
}
|
||||
|
||||
animRef.current = requestAnimationFrame(drawStep);
|
||||
},
|
||||
[isThinking, hasError],
|
||||
);
|
||||
|
||||
useEffect(() => {
|
||||
animRef.current = requestAnimationFrame(draw);
|
||||
return () => cancelAnimationFrame(animRef.current);
|
||||
}, [draw]);
|
||||
|
||||
return (
|
||||
<div
|
||||
ref={wrapRef}
|
||||
className="w-full h-full relative overflow-visible"
|
||||
onPointerMove={onMove}
|
||||
onPointerEnter={onEnter}
|
||||
onPointerLeave={onLeave}
|
||||
style={{ cursor: 'pointer' }}
|
||||
>
|
||||
<canvas ref={canvasRef} className="w-full h-full block" style={{ imageRendering: 'auto' }} />
|
||||
</div>
|
||||
);
|
||||
}
|
||||
646
components/search/AISearchResults.tsx
Normal file
646
components/search/AISearchResults.tsx
Normal file
@@ -0,0 +1,646 @@
|
||||
'use client';
|
||||
|
||||
import { useState, useRef, useEffect, KeyboardEvent } from 'react';
|
||||
import { ArrowUp, X, Sparkles, ChevronRight, RotateCcw, Copy, Check } from 'lucide-react';
|
||||
import Link from 'next/link';
|
||||
import { useAnalytics } from '../analytics/useAnalytics';
|
||||
import { AnalyticsEvents } from '../analytics/analytics-events';
|
||||
import ReactMarkdown from 'react-markdown';
|
||||
import remarkGfm from 'remark-gfm';
|
||||
import dynamic from 'next/dynamic';
|
||||
const AIOrb = dynamic(() => import('./AIOrb'), { ssr: false });
|
||||
|
||||
const LOADING_TEXTS = [
|
||||
'Durchsuche das Kabelhandbuch... 📖',
|
||||
'Frage den Senior-Ingenieur... 👴🔧',
|
||||
'Frage ChatGPTs Cousin 2. Grades... 🤖',
|
||||
];
|
||||
|
||||
interface ProductMatch {
|
||||
id: string;
|
||||
title: string;
|
||||
sku: string;
|
||||
slug: string;
|
||||
}
|
||||
|
||||
interface Message {
|
||||
role: 'user' | 'assistant';
|
||||
content: string;
|
||||
products?: ProductMatch[];
|
||||
timestamp: number;
|
||||
}
|
||||
interface ComponentProps {
|
||||
isOpen: boolean;
|
||||
onClose: () => void;
|
||||
initialQuery?: string;
|
||||
triggerSearch?: boolean;
|
||||
}
|
||||
|
||||
export function AISearchResults({
|
||||
isOpen,
|
||||
onClose,
|
||||
initialQuery = '',
|
||||
triggerSearch = false,
|
||||
}: ComponentProps) {
|
||||
const { trackEvent } = useAnalytics();
|
||||
|
||||
const [query, setQuery] = useState('');
|
||||
const [messages, setMessages] = useState<Message[]>([]);
|
||||
const [honeypot, setHoneypot] = useState('');
|
||||
const [isLoading, setIsLoading] = useState(false);
|
||||
const [error, setError] = useState<string | null>(null);
|
||||
const [copiedIndex, setCopiedIndex] = useState<number | null>(null);
|
||||
const [copiedAll, setCopiedAll] = useState(false);
|
||||
const [loadingText, setLoadingText] = useState(LOADING_TEXTS[0]);
|
||||
|
||||
const inputRef = useRef<HTMLInputElement>(null);
|
||||
const modalRef = useRef<HTMLDivElement>(null);
|
||||
const messagesEndRef = useRef<HTMLDivElement>(null);
|
||||
const loadingIntervalRef = useRef<ReturnType<typeof setInterval> | null>(null);
|
||||
const hasTriggeredRef = useRef(false);
|
||||
|
||||
// Dedicated focus effect — polls until the input actually has focus
|
||||
useEffect(() => {
|
||||
if (!isOpen) return;
|
||||
let attempts = 0;
|
||||
const focusTimer = setInterval(() => {
|
||||
const el = inputRef.current;
|
||||
if (el && document.activeElement !== el) {
|
||||
el.focus({ preventScroll: true });
|
||||
}
|
||||
attempts++;
|
||||
if (attempts >= 15 || document.activeElement === el) {
|
||||
clearInterval(focusTimer);
|
||||
}
|
||||
}, 100);
|
||||
return () => clearInterval(focusTimer);
|
||||
}, [isOpen]);
|
||||
|
||||
useEffect(() => {
|
||||
if (isOpen) {
|
||||
document.body.style.overflow = 'hidden';
|
||||
|
||||
// Trigger initial search only once
|
||||
if (triggerSearch && initialQuery && !hasTriggeredRef.current) {
|
||||
hasTriggeredRef.current = true;
|
||||
handleSearch(initialQuery);
|
||||
}
|
||||
} else {
|
||||
document.body.style.overflow = 'unset';
|
||||
setQuery('');
|
||||
setMessages([]);
|
||||
setError(null);
|
||||
setIsLoading(false);
|
||||
hasTriggeredRef.current = false;
|
||||
}
|
||||
return () => {
|
||||
document.body.style.overflow = 'unset';
|
||||
};
|
||||
}, [isOpen, triggerSearch]);
|
||||
|
||||
useEffect(() => {
|
||||
messagesEndRef.current?.scrollIntoView({ behavior: 'smooth' });
|
||||
}, [messages, isLoading]);
|
||||
|
||||
// Global ESC handler
|
||||
useEffect(() => {
|
||||
if (!isOpen) return;
|
||||
const handleEsc = (e: globalThis.KeyboardEvent) => {
|
||||
if (e.key === 'Escape') {
|
||||
const activeElement = document.activeElement;
|
||||
const isInputFocused = activeElement === inputRef.current;
|
||||
|
||||
if (query.trim()) {
|
||||
// If there's text, clear it but keep chat open
|
||||
setQuery('');
|
||||
inputRef.current?.focus();
|
||||
} else if (!isInputFocused) {
|
||||
// If no text and input is not focused, focus it
|
||||
inputRef.current?.focus();
|
||||
} else {
|
||||
// If no text and input IS focused, close the chat
|
||||
onClose();
|
||||
}
|
||||
}
|
||||
};
|
||||
document.addEventListener('keydown', handleEsc);
|
||||
return () => document.removeEventListener('keydown', handleEsc);
|
||||
}, [isOpen, onClose, query]);
|
||||
|
||||
const handleSearch = async (searchQuery: string = query) => {
|
||||
if (!searchQuery.trim() || isLoading) return;
|
||||
|
||||
const newUserMessage: Message = { role: 'user', content: searchQuery, timestamp: Date.now() };
|
||||
const newMessagesContext = [...messages, newUserMessage];
|
||||
|
||||
setMessages(newMessagesContext);
|
||||
setQuery(''); // Always clear input after send
|
||||
setError(null);
|
||||
|
||||
// Give the user message animation 400ms to arrive before showing "thinking"
|
||||
setTimeout(() => {
|
||||
setIsLoading(true);
|
||||
// Start rotating loading texts
|
||||
let textIdx = Math.floor(Math.random() * LOADING_TEXTS.length);
|
||||
setLoadingText(LOADING_TEXTS[textIdx]);
|
||||
loadingIntervalRef.current = setInterval(() => {
|
||||
textIdx = (textIdx + 1) % LOADING_TEXTS.length;
|
||||
setLoadingText(LOADING_TEXTS[textIdx]);
|
||||
}, 2500);
|
||||
}, 400);
|
||||
|
||||
trackEvent(AnalyticsEvents.FORM_SUBMIT, {
|
||||
type: 'ai_chat',
|
||||
query: searchQuery,
|
||||
});
|
||||
|
||||
try {
|
||||
const controller = new AbortController();
|
||||
const timeout = setTimeout(() => controller.abort(), 60000);
|
||||
|
||||
const res = await fetch('/api/ai-search', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
signal: controller.signal,
|
||||
body: JSON.stringify({
|
||||
messages: newMessagesContext,
|
||||
_honeypot: honeypot,
|
||||
}),
|
||||
});
|
||||
|
||||
clearTimeout(timeout);
|
||||
|
||||
const data = await res.json().catch(() => null);
|
||||
|
||||
if (!res.ok || !data) {
|
||||
throw new Error(data?.error || `Server antwortete mit Status ${res.status}`);
|
||||
}
|
||||
|
||||
setMessages((prev) => [
|
||||
...prev,
|
||||
{
|
||||
role: 'assistant',
|
||||
content: data.answerText,
|
||||
products: data.products,
|
||||
timestamp: Date.now(),
|
||||
},
|
||||
]);
|
||||
|
||||
setTimeout(() => inputRef.current?.focus(), 100);
|
||||
} catch (err: any) {
|
||||
console.error(err);
|
||||
const msg =
|
||||
err.name === 'AbortError'
|
||||
? 'Anfrage hat zu lange gedauert. Bitte versuche es erneut.'
|
||||
: err.message || 'Ein Fehler ist aufgetreten.';
|
||||
|
||||
// Show error as a system message in the chat instead of a separate error banner
|
||||
setMessages((prev) => [
|
||||
...prev,
|
||||
{
|
||||
role: 'assistant',
|
||||
content: `⚠️ ${msg}`,
|
||||
timestamp: Date.now(),
|
||||
},
|
||||
]);
|
||||
|
||||
trackEvent(AnalyticsEvents.ERROR, {
|
||||
location: 'ai_chat',
|
||||
message: err.message,
|
||||
query: searchQuery,
|
||||
});
|
||||
} finally {
|
||||
setIsLoading(false);
|
||||
if (loadingIntervalRef.current) {
|
||||
clearInterval(loadingIntervalRef.current);
|
||||
loadingIntervalRef.current = null;
|
||||
}
|
||||
// Always re-focus the input
|
||||
setTimeout(() => inputRef.current?.focus(), 50);
|
||||
}
|
||||
};
|
||||
|
||||
const onKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {
|
||||
if (e.key === 'Enter') {
|
||||
e.preventDefault();
|
||||
handleSearch();
|
||||
}
|
||||
if (e.key === 'ArrowUp' && !query) {
|
||||
// Find the last user message and put it into the input
|
||||
const lastUserNav = [...messages].reverse().find((m) => m.role === 'user');
|
||||
if (lastUserNav) {
|
||||
e.preventDefault();
|
||||
setQuery(lastUserNav.content);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
const handleCopy = (content: string, index?: number) => {
|
||||
navigator.clipboard.writeText(content);
|
||||
if (index !== undefined) {
|
||||
setCopiedIndex(index);
|
||||
setTimeout(() => setCopiedIndex(null), 2000);
|
||||
} else {
|
||||
setCopiedAll(true);
|
||||
setTimeout(() => setCopiedAll(false), 2000);
|
||||
}
|
||||
};
|
||||
|
||||
const handleCopyChat = () => {
|
||||
const fullChat = messages
|
||||
.map((m) => `${m.role === 'user' ? 'Du' : 'Ohm'}:\n${m.content}`)
|
||||
.join('\n\n');
|
||||
handleCopy(fullChat);
|
||||
};
|
||||
|
||||
if (!isOpen) return null;
|
||||
|
||||
const handleBackdropClick = (e: React.MouseEvent) => {
|
||||
if (e.target === e.currentTarget) {
|
||||
onClose();
|
||||
}
|
||||
};
|
||||
|
||||
return (
|
||||
<div
|
||||
className="fixed inset-0 z-[100] flex items-start justify-center pt-6 md:pt-12 px-4"
|
||||
onClick={handleBackdropClick}
|
||||
role="dialog"
|
||||
aria-modal="true"
|
||||
style={{ animation: 'chatBackdropIn 0.4s ease-out forwards' }}
|
||||
>
|
||||
{/* Animated backdrop */}
|
||||
<div
|
||||
className="absolute inset-0 bg-[#000a18]/90 backdrop-blur-2xl"
|
||||
style={{ animation: 'chatFadeIn 0.3s ease-out' }}
|
||||
/>
|
||||
|
||||
<div
|
||||
ref={modalRef}
|
||||
className="relative w-full max-w-3xl flex flex-col"
|
||||
style={{
|
||||
height: 'min(90vh, 900px)',
|
||||
animation: 'chatSlideUp 0.5s cubic-bezier(0.16, 1, 0.3, 1) forwards',
|
||||
}}
|
||||
>
|
||||
{/* ── Glassmorphism container ── */}
|
||||
<div className="flex flex-col h-full rounded-3xl overflow-hidden border border-white/[0.08] bg-gradient-to-b from-white/[0.06] to-white/[0.02] shadow-[0_32px_64px_-12px_rgba(0,0,0,0.6)]">
|
||||
{/* ── Header ── */}
|
||||
<div className="flex items-center justify-between px-5 py-4 border-b border-white/[0.06]">
|
||||
<div className="flex items-center gap-3">
|
||||
<div className="w-8 h-8 overflow-hidden rounded-full">
|
||||
<AIOrb isThinking={isLoading} hasError={!!error} />
|
||||
</div>
|
||||
<div>
|
||||
<h2 className="text-white font-bold text-sm tracking-wide">Ohm</h2>
|
||||
<p className="text-[10px] text-white/30 font-medium tracking-wider uppercase">
|
||||
{isLoading ? 'Denkt nach...' : error ? 'Fehler aufgetreten' : 'Online'}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div className="flex items-center gap-2">
|
||||
{messages.length > 0 && (
|
||||
<button
|
||||
onClick={handleCopyChat}
|
||||
className="flex items-center gap-1.5 text-[10px] font-bold text-white/40 hover:text-white/80 transition-all duration-200 hover:bg-white/5 rounded-full px-3 py-1.5 cursor-pointer uppercase tracking-wider"
|
||||
title="gesamten Chat kopieren"
|
||||
>
|
||||
{copiedAll ? (
|
||||
<Check className="w-3.5 h-3.5 text-accent" />
|
||||
) : (
|
||||
<Copy className="w-3.5 h-3.5" />
|
||||
)}
|
||||
<span>{copiedAll ? 'Kopiert' : 'Chat kopieren'}</span>
|
||||
</button>
|
||||
)}
|
||||
<button
|
||||
onClick={onClose}
|
||||
className="text-white/30 hover:text-white/80 transition-all duration-200 hover:bg-white/5 rounded-xl p-2 cursor-pointer"
|
||||
aria-label="Close"
|
||||
>
|
||||
<X className="w-5 h-5" />
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* ── Chat Area ── */}
|
||||
<div className="flex-1 overflow-y-auto px-5 py-6 space-y-5 scroll-smooth chat-scrollbar">
|
||||
{/* Empty state */}
|
||||
{messages.length === 0 && !isLoading && !error && (
|
||||
<div
|
||||
className="flex flex-col items-center justify-center h-full text-center space-y-5"
|
||||
style={{ animation: 'chatFadeIn 0.6s ease-out 0.3s both' }}
|
||||
>
|
||||
<div className="w-24 h-24 mb-2">
|
||||
<AIOrb isThinking={false} hasError={false} />
|
||||
</div>
|
||||
<div>
|
||||
<p className="text-xl md:text-2xl font-bold text-white/80">
|
||||
Wie kann ich helfen?
|
||||
</p>
|
||||
<p className="text-sm text-white/30 mt-2 max-w-md">
|
||||
Beschreibe dein Projekt, frag nach bestimmten Kabeln, oder nenne mir deine
|
||||
Anforderungen.
|
||||
</p>
|
||||
</div>
|
||||
{/* Quick prompts */}
|
||||
<div className="flex flex-wrap justify-center gap-2 mt-4">
|
||||
{['Windpark 33kV Verkabelung', 'NYCWY 4x185', 'Erdkabel für Solarpark'].map(
|
||||
(prompt) => (
|
||||
<button
|
||||
key={prompt}
|
||||
onClick={() => handleSearch(prompt)}
|
||||
className="text-xs text-white/40 hover:text-white/80 border border-white/10 hover:border-white/20 hover:bg-white/5 rounded-full px-4 py-2 transition-all duration-200 cursor-pointer"
|
||||
>
|
||||
{prompt}
|
||||
</button>
|
||||
),
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
|
||||
{/* Messages */}
|
||||
{messages.map((msg, index) => (
|
||||
<div
|
||||
key={index}
|
||||
className={`flex ${msg.role === 'user' ? 'justify-end' : 'justify-start'}`}
|
||||
style={{
|
||||
animation: `chatMessageIn 0.4s cubic-bezier(0.16, 1, 0.3, 1) ${index * 0.05}s both`,
|
||||
}}
|
||||
>
|
||||
<div
|
||||
className={`relative group max-w-[85%] rounded-2xl px-5 py-4 ${
|
||||
msg.role === 'user'
|
||||
? 'bg-accent text-primary font-semibold rounded-br-lg'
|
||||
: 'bg-white/[0.05] border border-white/[0.06] text-white/90 rounded-bl-lg'
|
||||
}`}
|
||||
>
|
||||
{/* Copy Button */}
|
||||
<button
|
||||
onClick={() => handleCopy(msg.content, index)}
|
||||
className={`absolute opacity-0 group-hover:opacity-100 transition-opacity p-1.5 rounded-lg cursor-pointer ${
|
||||
msg.role === 'user'
|
||||
? 'top-2 right-2 bg-primary/10 hover:bg-primary/20 text-primary/60 hover:text-primary'
|
||||
: 'top-2 right-2 bg-white/5 hover:bg-white/10 text-white/40 hover:text-white'
|
||||
}`}
|
||||
title="Nachricht kopieren"
|
||||
>
|
||||
{copiedIndex === index ? (
|
||||
<Check className="w-3.5 h-3.5" />
|
||||
) : (
|
||||
<Copy className="w-3.5 h-3.5" />
|
||||
)}
|
||||
</button>
|
||||
|
||||
{msg.role === 'assistant' && (
|
||||
<div className="flex items-center gap-2 mb-2">
|
||||
<Sparkles className="w-3 h-3 text-accent/60" />
|
||||
<span className="text-[10px] font-bold tracking-widest uppercase text-accent/50">
|
||||
Ohm
|
||||
</span>
|
||||
</div>
|
||||
)}
|
||||
<div
|
||||
className={`text-sm md:text-[15px] leading-relaxed ${
|
||||
msg.role === 'assistant'
|
||||
? 'prose prose-invert prose-sm prose-p:leading-relaxed prose-a:text-accent prose-strong:text-accent/90 prose-ul:list-disc prose-ol:list-decimal'
|
||||
: ''
|
||||
}`}
|
||||
>
|
||||
{msg.role === 'assistant' ? (
|
||||
<ReactMarkdown remarkPlugins={[remarkGfm]}>{msg.content}</ReactMarkdown>
|
||||
) : (
|
||||
<p className="whitespace-pre-wrap">{msg.content}</p>
|
||||
)}
|
||||
</div>
|
||||
|
||||
{/* Timestamp */}
|
||||
{!msg.products?.length && (
|
||||
<p
|
||||
className={`text-[9px] mt-2 font-medium tracking-wide ${msg.role === 'user' ? 'text-primary/40' : 'text-white/20'}`}
|
||||
>
|
||||
{new Date(msg.timestamp).toLocaleTimeString('de', {
|
||||
hour: '2-digit',
|
||||
minute: '2-digit',
|
||||
})}
|
||||
</p>
|
||||
)}
|
||||
|
||||
{/* Product cards */}
|
||||
{msg.role === 'assistant' && msg.products && msg.products.length > 0 && (
|
||||
<div className="mt-4 space-y-2 border-t border-white/[0.06] pt-4">
|
||||
<h4 className="text-[10px] font-bold tracking-widest uppercase text-white/30 mb-2">
|
||||
Empfohlene Produkte
|
||||
</h4>
|
||||
<div className="grid grid-cols-1 sm:grid-cols-2 gap-2">
|
||||
{msg.products.map((product, idx) => (
|
||||
<Link
|
||||
key={idx}
|
||||
href={`/produkte/${product.slug}`}
|
||||
onClick={() => {
|
||||
onClose();
|
||||
trackEvent(AnalyticsEvents.BUTTON_CLICK, {
|
||||
target: product.slug,
|
||||
location: 'ai_chat',
|
||||
});
|
||||
}}
|
||||
className="group flex items-center justify-between bg-white/[0.04] hover:bg-white/[0.08] border border-white/[0.06] hover:border-accent/30 rounded-xl px-4 py-3 transition-all duration-300"
|
||||
style={{ animation: `chatFadeIn 0.3s ease-out ${idx * 0.1}s both` }}
|
||||
>
|
||||
<div className="min-w-0">
|
||||
<p className="text-[9px] font-bold text-white/25 tracking-wider">
|
||||
{product.sku}
|
||||
</p>
|
||||
<h5 className="text-xs font-bold text-white/70 group-hover:text-accent truncate transition-colors">
|
||||
{product.title}
|
||||
</h5>
|
||||
</div>
|
||||
<ChevronRight className="w-3.5 h-3.5 text-white/20 group-hover:text-accent shrink-0 ml-3 group-hover:translate-x-0.5 transition-all" />
|
||||
</Link>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
))}
|
||||
|
||||
{/* Loading indicator */}
|
||||
{isLoading && (
|
||||
<div
|
||||
className="flex justify-start"
|
||||
style={{ animation: 'chatMessageIn 0.4s cubic-bezier(0.16, 1, 0.3, 1) forwards' }}
|
||||
>
|
||||
<div className="flex items-center gap-4 bg-white/[0.03] border border-white/[0.06] rounded-2xl rounded-bl-lg px-5 py-4">
|
||||
<div className="w-10 h-10 shrink-0">
|
||||
<AIOrb isThinking={true} hasError={false} />
|
||||
</div>
|
||||
<div>
|
||||
<p
|
||||
className="text-sm text-white/50 font-medium"
|
||||
style={{ animation: 'chatTextSwap 0.4s ease-out' }}
|
||||
key={loadingText}
|
||||
>
|
||||
{loadingText}
|
||||
</p>
|
||||
<div className="flex gap-1 mt-2">
|
||||
{[0, 1, 2].map((i) => (
|
||||
<div
|
||||
key={i}
|
||||
className="w-1.5 h-1.5 rounded-full bg-accent/40"
|
||||
style={{
|
||||
animation: 'chatDotBounce 1.2s ease-in-out infinite',
|
||||
animationDelay: `${i * 0.15}s`,
|
||||
}}
|
||||
/>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
|
||||
{/* Error */}
|
||||
{error && (
|
||||
<div className="flex justify-start" style={{ animation: 'chatShake 0.5s ease-out' }}>
|
||||
<div className="flex items-center gap-4 bg-red-500/[0.06] border border-red-500/20 rounded-2xl rounded-bl-lg px-5 py-4">
|
||||
<div className="w-10 h-10 shrink-0">
|
||||
<AIOrb isThinking={false} hasError={true} />
|
||||
</div>
|
||||
<div>
|
||||
<h3 className="text-sm font-bold text-red-300">Da ist was schiefgelaufen 😬</h3>
|
||||
<p className="text-xs text-red-300/60 mt-1">{error}</p>
|
||||
<button
|
||||
onClick={() => {
|
||||
setError(null);
|
||||
inputRef.current?.focus();
|
||||
}}
|
||||
className="flex items-center gap-1.5 text-[10px] font-bold text-red-300/50 hover:text-red-300 mt-2 transition-colors cursor-pointer"
|
||||
>
|
||||
<RotateCcw className="w-3 h-3" />
|
||||
Nochmal versuchen
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
|
||||
<div ref={messagesEndRef} />
|
||||
</div>
|
||||
|
||||
{/* ── Input Area ── */}
|
||||
<div className="px-5 pb-5 pt-3 border-t border-white/[0.04]">
|
||||
<div
|
||||
className={`relative flex items-center rounded-2xl transition-all duration-300 ${
|
||||
query.trim()
|
||||
? 'bg-white/[0.08] border border-accent/30 shadow-[0_0_20px_-4px_rgba(130,237,32,0.1)]'
|
||||
: 'bg-white/[0.04] border border-white/[0.06]'
|
||||
}`}
|
||||
>
|
||||
<input
|
||||
ref={inputRef}
|
||||
type="text"
|
||||
value={query}
|
||||
onChange={(e) => setQuery(e.target.value)}
|
||||
onKeyDown={onKeyDown}
|
||||
placeholder="Nachricht eingeben..."
|
||||
className="flex-1 bg-transparent border-none text-white text-sm md:text-base px-5 py-4 focus:outline-none placeholder:text-white/20"
|
||||
disabled={isLoading}
|
||||
tabIndex={1}
|
||||
autoFocus
|
||||
/>
|
||||
<input
|
||||
type="text"
|
||||
className="hidden"
|
||||
value={honeypot}
|
||||
onChange={(e) => setHoneypot(e.target.value)}
|
||||
tabIndex={-1}
|
||||
autoComplete="off"
|
||||
aria-hidden="true"
|
||||
/>
|
||||
<button
|
||||
onClick={() => handleSearch()}
|
||||
disabled={!query.trim() || isLoading}
|
||||
className={`mr-2 w-9 h-9 rounded-xl flex items-center justify-center shrink-0 transition-all duration-300 cursor-pointer ${
|
||||
query.trim()
|
||||
? 'bg-accent text-primary shadow-lg shadow-accent/20 hover:shadow-accent/40 hover:scale-105 active:scale-95'
|
||||
: 'bg-white/5 text-white/20'
|
||||
}`}
|
||||
aria-label="Nachricht senden"
|
||||
>
|
||||
<ArrowUp className="w-4 h-4" strokeWidth={2.5} />
|
||||
</button>
|
||||
</div>
|
||||
<div className="flex items-center justify-center gap-3 mt-2.5">
|
||||
<span className="text-[9px] uppercase tracking-[0.15em] font-medium text-white/15">
|
||||
Enter zum Senden · Esc zum Schließen
|
||||
</span>
|
||||
<span className="text-[9px] uppercase tracking-[0.15em] font-medium text-white/15">
|
||||
·
|
||||
</span>
|
||||
<span className="text-[9px] uppercase tracking-[0.15em] font-medium text-accent/40 flex items-center gap-1">
|
||||
🛡️ DSGVO-konform · EU-Server
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* ── Keyframe animations ── */}
|
||||
<style>{`
|
||||
@keyframes chatBackdropIn {
|
||||
from { opacity: 0; }
|
||||
to { opacity: 1; }
|
||||
}
|
||||
@keyframes chatFadeIn {
|
||||
from { opacity: 0; }
|
||||
to { opacity: 1; }
|
||||
}
|
||||
@keyframes chatSlideUp {
|
||||
from { opacity: 0; transform: translateY(40px) scale(0.96); }
|
||||
to { opacity: 1; transform: translateY(0) scale(1); }
|
||||
}
|
||||
@keyframes chatMessageIn {
|
||||
from { opacity: 0; transform: translateY(12px); }
|
||||
to { opacity: 1; transform: translateY(0); }
|
||||
}
|
||||
@keyframes chatDotBounce {
|
||||
0%, 80%, 100% { transform: scale(0.6); opacity: 0.3; }
|
||||
40% { transform: scale(1); opacity: 1; }
|
||||
}
|
||||
@keyframes chatTextSwap {
|
||||
from { opacity: 0; transform: translateY(4px); }
|
||||
to { opacity: 1; transform: translateY(0); }
|
||||
}
|
||||
@keyframes chatShake {
|
||||
0%, 100% { transform: translateX(0); }
|
||||
15% { transform: translateX(-6px); }
|
||||
30% { transform: translateX(5px); }
|
||||
45% { transform: translateX(-4px); }
|
||||
60% { transform: translateX(3px); }
|
||||
75% { transform: translateX(-1px); }
|
||||
}
|
||||
|
||||
/* Custom scrollbar */
|
||||
.chat-scrollbar::-webkit-scrollbar {
|
||||
width: 4px;
|
||||
}
|
||||
.chat-scrollbar::-webkit-scrollbar-track {
|
||||
background: transparent;
|
||||
}
|
||||
.chat-scrollbar::-webkit-scrollbar-thumb {
|
||||
background: rgba(255, 255, 255, 0.08);
|
||||
border-radius: 4px;
|
||||
}
|
||||
.chat-scrollbar::-webkit-scrollbar-thumb:hover {
|
||||
background: rgba(255, 255, 255, 0.16);
|
||||
}
|
||||
.chat-scrollbar {
|
||||
scrollbar-width: thin;
|
||||
scrollbar-color: rgba(255, 255, 255, 0.08) transparent;
|
||||
}
|
||||
`}</style>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
@@ -1,15 +1,10 @@
|
||||
{
|
||||
"ci": {
|
||||
"collect": {
|
||||
"numberOfRuns": 3,
|
||||
"numberOfRuns": 1,
|
||||
"settings": {
|
||||
"preset": "desktop",
|
||||
"onlyCategories": [
|
||||
"performance",
|
||||
"accessibility",
|
||||
"best-practices",
|
||||
"seo"
|
||||
],
|
||||
"onlyCategories": ["performance", "accessibility", "best-practices", "seo"],
|
||||
"chromeFlags": "--no-sandbox --disable-setuid-sandbox"
|
||||
}
|
||||
},
|
||||
@@ -18,7 +13,7 @@
|
||||
"categories:performance": [
|
||||
"error",
|
||||
{
|
||||
"minScore": 0.9
|
||||
"minScore": 0.7
|
||||
}
|
||||
],
|
||||
"categories:accessibility": [
|
||||
@@ -54,4 +49,4 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -78,7 +78,14 @@
|
||||
"Kabel",
|
||||
"Deutsch",
|
||||
"Spannung",
|
||||
"unbekannt"
|
||||
"unbekannt",
|
||||
"payloadcms",
|
||||
"imgproxy",
|
||||
"Leitungen",
|
||||
"impressum",
|
||||
"datenschutz",
|
||||
"agbs",
|
||||
"kontakt"
|
||||
],
|
||||
"ignorePaths": [
|
||||
"node_modules",
|
||||
|
||||
@@ -1,89 +0,0 @@
|
||||
---
|
||||
title: 100 % erneuerbare Energie? Nur mit der richtigen Kabelinfrastruktur!
|
||||
date: '2025-03-31T12:00:34'
|
||||
featuredImage: /uploads/2025/02/image_fx_-6.webp
|
||||
locale: de
|
||||
category: Kabel Technologie
|
||||
excerpt: Die Energiewende braucht leistungsfähige Netze. Erfahren Sie, warum Investitionen in die Kabelinfrastruktur der Schlüssel zu 100 % erneuerbarer Energie sind.
|
||||
---
|
||||
# 100 % erneuerbare Energie? Nur mit der richtigen Kabelinfrastruktur!
|
||||
Die Vision ist klar: Ein Europa, das seinen Strom zu 100 % aus erneuerbaren Energien gewinnt. Doch während Solar- und Windparks boomen, hinkt der Ausbau der Stromnetze hinterher. Die Ursache? Eine Infrastruktur, die für fossile Kraftwerke gebaut wurde und mit den neuen Anforderungen nicht Schritt hält.
|
||||
💡 Fakt: Ein modernes Stromnetz ist mehr als nur Erzeugung – ohne die richtige Verkabelung bleibt der Strom im Windrad oder Solarpanel gefangen.
|
||||
Am Ende geht es nicht nur um mehr Strom, sondern um kluge Netze, die ihn zuverlässig und verlustarm transportieren können.
|
||||
# Das Problem: Alte Netze für eine neue Energiezukunft
|
||||
Die heutige Strominfrastruktur wurde für zentrale Großkraftwerke gebaut. Doch erneuerbare Energien funktionieren anders: Sie sind dezentral, wetterabhängig und benötigen flexible Netze. Das führt zu einem massiven **Umbau-Bedarf**.
|
||||
|
||||
<StickyNarrative
|
||||
title="Herausforderungen im Stromnetz"
|
||||
items={[
|
||||
{ title: "Netzengpässe", content: "**Ursache:** Alte Leitungen für zentrale Kraftwerke, nicht für dezentrale Energie. **Lösung:** Neue Hoch- & Mittelspannungskabel." },
|
||||
{ title: "Abregelung von Solar- & Windstrom", content: "**Ursache:** Netz kann nicht genug Strom aufnehmen. **Lösung:** Smart Grids & Speicherlösungen." },
|
||||
{ title: "Lange Transportwege", content: "**Ursache:** Erzeugung oft weit entfernt vom Verbrauch. **Lösung:** Hochleistungskabel & lokale Netze." }
|
||||
]}
|
||||
/>
|
||||
|
||||
⚠️ Ein Netz aus der Vergangenheit kann keine Zukunftsenergie transportieren!
|
||||
Wer heute nur in erneuerbare Energieanlagen investiert, aber die Kabelinfrastruktur ignoriert, wird morgen teuren ungenutzten Strom haben.
|
||||
# Welche Kabel brauchen wir für die Energiewende?
|
||||
Nicht jedes Kabel ist gleich – und nicht jedes Kabel ist für die Herausforderungen der Energiewende geeignet. Hier kommt es auf Spannungsebene, Kapazität und Effizienz an.
|
||||
## Die drei Säulen der Energiewende-Verkabelung:
|
||||
- [**Hochspannungskabel**](https://de.wikipedia.org/wiki/Hochspannungskabel) → Ferntransport von Strom über lange Distanzen
|
||||
- [**Mittelspannungskabel**](https://de.wikipedia.org/wiki/Mittelspannungsnetz) → Netzanschlüsse für Solar- & Windparks
|
||||
- [**Niederspannungskabel**](https://de.wikipedia.org/wiki/Niederspannung) → Verbindung zu Haushalten & Speichern
|
||||
|
||||
🔍 **Was macht ein gutes Erneuerbaren-Kabel aus?**<br />✔ Hohe Belastbarkeit für schwankende Einspeisungen<br />✔ Wetter- und temperaturbeständige Isolierung<br />✔ Nachhaltige Materialien für ein CO₂-armes Stromnetz
|
||||
💡 Je besser das Kabel, desto weniger Strom geht unterwegs verloren – und desto grüner wird die Energie!
|
||||
# Solar- und Windparks allein reichen nicht
|
||||
Ohne passende Kabel bleibt der Strom dort, wo er erzeugt wird. Doch welcher Netzausbau macht wirklich Sinn?
|
||||
|
||||
<ComparisonGrid
|
||||
title="Erdkabel vs. Freileitungen – Was ist die bessere Wahl?"
|
||||
leftLabel="Erdkabel"
|
||||
rightLabel="Freileitung"
|
||||
items={[
|
||||
{ label: "Netzstabilität", leftValue: "Sehr hoch", rightValue: "Mittel" },
|
||||
{ label: "Umweltverträglichkeit", leftValue: "Unauffällig, keine Eingriffe ins Landschaftsbild", rightValue: "Sichtbar, problematisch für Vögel" },
|
||||
{ label: "Wartung & Lebensdauer", leftValue: "Kaum Wartung, langlebig", rightValue: "Witterungsanfällig, kürzere Lebensdauer" },
|
||||
{ label: "Kosten", leftValue: "Höher in der Installation, aber effizienter im Betrieb", rightValue: "Günstiger zu errichten, aber höhere Folgekosten" }
|
||||
]}
|
||||
/>
|
||||
|
||||
Während Freileitungen in der Vergangenheit aufgrund der geringeren Baukosten bevorzugt wurden, sprechen moderne Anforderungen an Netzstabilität, Umweltschutz und Ästhetik zunehmend für Erdkabel. In vielen Ländern setzt sich daher die Erdverkabelung als Standard für neue Hoch- und Mittelspannungstrassen durch.
|
||||
Wer sich detaillierter mit diesem Thema befassen möchte, findet hier eine umfassende Analyse der Unterschiede zwischen Erdkabeln und Freileitungen. [https://www.hochspannungsblog.at/wissenswertes/netzaufbau/vergleich-freileitung-erdkabel](https://www.hochspannungsblog.at/wissenswertes/netzaufbau/vergleich-freileitung-erdkabel)
|
||||
<VisualLinkPreview
|
||||
url="https://www.hochspannungsblog.at/wissenswertes/netzaufbau/vergleich-freileitung-erdkabel"
|
||||
title="Freileitung und Erdkabel sind „Stand der Technik“"
|
||||
summary="Freileitung oder Erdkabel? Wir erklären Ihnen die Unterschiede und Möglichkeiten, aber auch warum was möglich ist und warum was nicht."
|
||||
image="https://www.hochspannungsblog.at/201210-netzbau-110kv-wegscheid-mast-kabelanschluss-1723.jpg?ch=dhsowxyq&:hp=9;1;de"
|
||||
/>
|
||||
Die Energiewende kann nur gelingen, wenn die Infrastruktur mitwächst. Wer jetzt in die richtigen Kabel investiert, sichert die Stromversorgung für die kommenden Jahrzehnte.
|
||||
# Die Zukunft: Intelligente Netze brauchen intelligente Kabel
|
||||
Die Energiewende bedeutet nicht nur, dass wir erneuerbare Energiequellen ausbauen – sie erfordert auch eine grundlegende Modernisierung des Stromnetzes. Die Herausforderungen liegen nicht nur in der Menge des erzeugten Stroms, sondern auch in dessen intelligenter Verteilung. Stromerzeugung aus Wind und Sonne ist volatil, das bedeutet: Mal gibt es zu viel Strom, mal zu wenig. Genau hier setzen moderne Netztechnologien an.
|
||||
Ein zukunftsfähiges Stromnetz muss flexibel sein, Lastspitzen intelligent ausgleichen und Energie möglichst verlustarm transportieren. Die Schlüsseltechnologien hierfür sind Smart Grids, Batteriespeicher und intelligente Kabelsysteme, die nicht nur Strom leiten, sondern aktiv zur Steuerung des Netzbetriebs beitragen.
|
||||
## Wie moderne Kabel zur Netzstabilität beitragen
|
||||
- **[Smart Grids ](https://en.wikipedia.org/wiki/Smart_grid)**und** digitale Steuerung:** Intelligente Kabel mit integrierten Sensoren ermöglichen eine Echtzeitüberwachung der Stromflüsse. So kann das Netz Lastspitzen erkennen und flexibel darauf reagieren.
|
||||
- **Lastmanagement durch Batteriespeicher:** Energie, die nicht sofort benötigt wird, kann in Batteriespeichern zwischengespeichert und zu einem späteren Zeitpunkt eingespeist werden. Die richtige Kabelinfrastruktur sorgt dafür, dass dies effizient und verlustfrei geschieht.
|
||||
- **Moderne Kabel mit verbesserten Isolierungen und Materialien:** Hochwertige Kabel mit optimierten Querschnitten reduzieren Übertragungsverluste und tragen so zu einer effizienteren Energienutzung bei.
|
||||
- **Dezentrale Energieverteilung:** Statt zentraler Großkraftwerke speisen heute unzählige kleine Erzeuger ins Netz ein. Dies erfordert eine neue Generation von Mittel- und Niederspannungskabeln, die diese Lastverteilung flexibel bewältigen können.
|
||||
|
||||
Die Zukunft gehört Netzen, die nicht nur Strom transportieren, sondern ihn aktiv steuern. Dazu braucht es nicht nur mehr Kabel, sondern auch die richtigen Kabel mit intelligenter Technik.
|
||||
# Fazit: Die Energiewende beginnt unter der Erde
|
||||
Die Diskussion über erneuerbare Energien dreht sich oft um den Ausbau von Wind- und Solarparks. Doch selten wird über die entscheidende Infrastruktur gesprochen, die nötig ist, um diese Energie auch zuverlässig nutzbar zu machen.
|
||||
Die Realität zeigt: Ein modernes Stromnetz ist der Schlüssel zur Energiewende. Wenn Strom nicht effizient transportiert oder gespeichert werden kann, führt das zu Netzengpässen und Abregelungen – genau das Gegenteil dessen, was mit der Energiewende erreicht werden soll.
|
||||
Drei zentrale Erkenntnisse lassen sich festhalten:
|
||||
- **Erneuerbare Energien **brauchen** leistungsfähige Netze.** Ohne eine solide Kabelinfrastruktur bleibt der erzeugte Strom oft ungenutzt, weil das Netz ihn nicht aufnehmen kann.
|
||||
- **Investitionen in Kabel **sind ebenso** wichtig **wie** Investitionen in Erzeugungsanlagen.** Während neue Windräder und Solaranlagen sichtbar sind, bleibt der notwendige Netzausbau oft unsichtbar – und wird deshalb unterschätzt.
|
||||
- **Ohne intelligente Netztechnik **lassen sich** Schwankungen nicht ausgleichen.** Moderne Kabel mit integrierter Steuerungstechnik sind essenziell, um Energie genau dorthin zu bringen, wo sie gebraucht wird.
|
||||
|
||||
Wenn es um die Zukunft der Energieversorgung geht, führt kein Weg an leistungsfähigen Kabelsystemen vorbei. Die Energiewende ist nicht nur eine Frage der Erzeugung, sondern vor allem eine Frage des Transports und der Verteilung.
|
||||
# KLZ – Ihr Partner für die grüne Energiezukunft
|
||||
Die Energiewende erfordert eine neue Generation von Netzinfrastruktur. KLZ ist Ihr Partner für die zuverlässige Verkabelung von Solar- und Windkraftprojekten – von der Mittel- bis zur Hochspannungsebene.
|
||||
Mit jahrzehntelanger Erfahrung in der Kabelbranche wissen wir, worauf es bei der Netzanbindung von erneuerbaren Energien ankommt. Unsere Kabel sind speziell für hohe Lasten und wechselnde Einspeisungen ausgelegt. Wir liefern nicht nur das Material, sondern beraten auch zu den besten Lösungen für eine effiziente und nachhaltige Stromverteilung.
|
||||
## Unsere Stärken:
|
||||
- **Schnelle & zuverlässige Lieferung** – Wir sorgen dafür, dass Ihre Projekte ohne Verzögerungen starten können.
|
||||
- **Technische Beratung & Planung** – Welche Kabel sind optimal für Ihr Vorhaben? Wir unterstützen Sie mit fundierter Expertise.
|
||||
- **Nachhaltige Kabeltechnologie** – Umweltfreundliche Materialien und langlebige Kabel sorgen für eine zukunftssichere Energieversorgung.
|
||||
- **Spezialisiert auf erneuerbare Energien** – Unsere Lösungen sind genau auf die Anforderungen von Wind- und Solarparks zugeschnitten.
|
||||
|
||||
Ob Netzanschluss, Hochspannungsleitungen oder Kabelinfrastruktur für große Solarparks – wir stehen Ihnen mit unserem Know-how zur Seite.
|
||||
Lassen Sie uns gemeinsam die Energiezukunft gestalten. [Kontaktieren Sie uns](/de/contact/) für eine Beratung oder ein individuelles Angebot.
|
||||
@@ -1,55 +0,0 @@
|
||||
---
|
||||
title: Das müssen Sie über erneuerbare Energien im Jahr 2025 wissen
|
||||
date: '2025-01-15T13:41:10'
|
||||
featuredImage: '/uploads/2024/11/aerial-view-of-electricity-station-surrounded-with-2023-11-27-05-33-40-utc-scaled.jpg'
|
||||
locale: de
|
||||
category: Kabel Technologie
|
||||
---
|
||||
# Das müssen Sie über erneuerbare Energien im Jahr 2025 wissen
|
||||
## 1. Erneuerbare Energien werden die weltweite Stromerzeugung dominieren
|
||||
Bis 2025 wird erwartet, dass **erneuerbare Energien** die Kohle als **größte Quelle für Strom weltweit** überholen. Dieser Wandel wird durch Fortschritte in den Technologien der Wind-, Solar- und Wasserkraft sowie durch sinkende Kosten vorangetrieben.
|
||||
👉 Warum das wichtig ist: Der Ausbau erneuerbarer Energien bedeutet eine höhere Nachfrage nach **robusten Stromnetzen**, **effizienten Kabeln** und der Integration in das Netz. (Hier können wir helfen!)
|
||||
## 2. Solarenergie wird intelligenter und günstiger
|
||||
Der Solarsektor setzt weiterhin auf Innovation mit **hocheffizienten PV-Zellen** und erschwinglicheren Fertigungsprozessen. Das bedeutet:
|
||||
- Niedrigere Installationskosten.
|
||||
- Bessere Energieerträge.
|
||||
- Größere Zugänglichkeit für Unternehmen und Gemeinden.
|
||||
|
||||
🌞 Pro-Tipp: Aufgerüstete Solarsysteme benötigen zuverlässige, leistungsstarke Kabel für eine nahtlose Netzverbindung. Lassen Sie uns sicherstellen, dass Ihr Projekt optimal verdrahtet ist.
|
||||
## 3. Energiespeicherung wird unverzichtbar
|
||||
Im Jahr 2025 werden **Energiespeicherlösungen** entscheidend für das Management der Variabilität erneuerbarer Energien sein. Innovationen wie dezentrale Energiespeichersysteme** (DESS) **nehmen zu und ermöglichen:
|
||||
- **Lokales Energiemanagement** zur Vermeidung von Netzüberlastungen.
|
||||
- **Bessere Notstromversorgung** während Ausfällen.
|
||||
|
||||
🔋 Denken Sie voraus: Speichersysteme sind nur so gut wie ihre Verbindungen. Hochwertige Kabel sind unerlässlich für einen effizienten Energiefluss.
|
||||
## 4. Künstliche Intelligenz verwandelt das Netzmanagement
|
||||
Künstliche Intelligenz (KI) revolutioniert die erneuerbare Energie, indem sie:
|
||||
- Die **Energienachfrage** genauer vorhersagt.
|
||||
- Die **Energieverteilung** optimiert, um Abfall zu reduzieren.
|
||||
- Systeme für eine **proaktive Wartung** überwacht.
|
||||
|
||||
💡 Was das für Sie bedeutet: Intelligente Netze benötigen zuverlässige, anpassungsfähige Infrastrukturen. Sprechen Sie mit uns über zukunftssichere Kabellösungen.
|
||||
## 5. Gemeinschaftsenergieprojekte auf dem Vormarsch
|
||||
Gemeinschaftlich betriebene Solar- und Windprojekte florieren und bieten lokale Energielösungen sowie Vorteile beim Kosten teilen.
|
||||
<h4>Wichtige Vorteile von Gemeinschaftsprojekten:</h4>
|
||||
- Niedrigere Einstiegshürden für Teilnehmer.
|
||||
- Erhöhte Energieunabhängigkeit.
|
||||
- Beiträge zur lokalen Resilienz während Stromausfällen.
|
||||
|
||||
🌍 Machen Sie es lokal: Zuverlässige Verkabelung und Zubehör stellen sicher, dass Ihr Gemeinschaftsprojekt Jahrzehnte lang erfolgreich bleibt. Wir sind bereit, Ihre Vision zu unterstützen.
|
||||
## 6. Politische Maßnahmen und Anreize beschleunigen die Einführung
|
||||
Regierungen weltweit führen Anreize, **Steuererleichterungen** und **Subventionen** ein, um erneuerbare Energien zu fördern.
|
||||
📜 Wie Sie davon profitieren können: Arbeiten Sie mit Experten zusammen, die die **regulatorischen Anforderungen** verstehen und **schnelle Lösungen** für die Infrastruktur Ihres Projekts bieten können.
|
||||
## 7. Kreislaufwirtschaft rückt in den Mittelpunkt
|
||||
Die erneuerbare Energiebranche setzt verstärkt auf die Kreislaufwirtschaft, indem sie:
|
||||
- Komponenten wie **Solarpanels** und **Windturbinen** recycelt.
|
||||
- Die **Abhängigkeit** von Primärrohstoffen durch Sekundärrohstoffe **reduziert**.
|
||||
|
||||
♻️ Wussten Sie schon? Wir bieten einen kostenlosen **Trommelrückgabeservice** an und arbeiten mit **recycelten Materialien**, um Ihre Projekte nachhaltig zu gestalten.
|
||||
## Warum 2025 Ihr Jahr für grüne Energie ist
|
||||
Hier ist, warum Sie jetzt handeln sollten:
|
||||
- **Kosteneinsparungen:** Erneuerbare Energien sind so günstig wie nie zuvor.
|
||||
- **Energieunabhängigkeit:** Kontrollieren Sie Ihre eigenen Energiequellen und reduzieren Sie die Abhängigkeit von fossilen Brennstoffen.
|
||||
- **Umwelteinfluss:** Tragen Sie zu einer nachhaltigen Zukunft bei.
|
||||
|
||||
🔧 Lassen Sie uns helfen: Von der Planung bis zur Umsetzung bieten wir erstklassige Kabel, Zubehör und Unterstützung für alle Projekte im Bereich erneuerbare Energien. Ob es sich um einen riesigen Windpark oder ein kleines Gemeinschaftsnetz handelt, wir sorgen dafür, dass alles effizient verbunden ist.
|
||||
@@ -1,43 +0,0 @@
|
||||
---
|
||||
title: Die besten Erdkabel für Windkraft und Solar – jetzt bei uns bestellen
|
||||
date: '2025-05-26T10:17:34'
|
||||
featuredImage: /uploads/2025/04/image_fx_-2025-02-20T191245.537.webp
|
||||
locale: de
|
||||
category: Kabel Technologie
|
||||
---
|
||||
# Die besten Erdkabel für Windkraft und Solar – jetzt bei uns bestellen
|
||||
## Warum Erdkabel in der Energiewende eine Hauptrolle spielen
|
||||
Windräder drehen sich. Solarmodule liefern Leistung. Aber ohne das passende **Erdkabel** bleibt der Strom genau dort, wo er erzeugt wurde – irgendwo zwischen Feld und Umspannwerk.
|
||||
Gerade bei **Onshore-Wind- **und** Solarprojekten**, die heute schnell und zuverlässig ans Netz müssen, zeigt sich: Die Kabelwahl ist keine Randnotiz. Sie beeinflusst Bauzeit, Verfügbarkeit, Wartungsaufwand – kurz: den Projekterfolg.
|
||||
Was zählt, sind Kabel, die:
|
||||
- **belastbar**, **langlebig** und **praxisbewährt** sind,
|
||||
- sich unkompliziert verlegen lassen,
|
||||
- und im besten Fall auch **kurzfristig verfügbar** sind – ohne große Vorlaufzeit.
|
||||
|
||||
Einige Typen haben sich dabei besonders bewährt – technisch solide, wirtschaftlich attraktiv und bei KLZ in vielen Varianten auf Lager. Welche das sind, sehen wir uns im nächsten Schritt an.
|
||||
## Diese Kabeltypen setzen den Standard in Windkraft und Photovoltaik
|
||||
Wer Wind- oder Solarstrom einspeisen will, braucht verlässliche Verbindungen – und damit Erdkabel, die sich in der Praxis bewährt haben. Drei Typen stehen dabei besonders häufig auf der Materialliste von Projektplanern und Bauleitern.
|
||||
<h4>NA2XS(F)2Y – Mittelspannung für ambitionierte Projekte</h4>
|
||||
Dieses Kabel kommt bevorzugt dort zum Einsatz, wo Windkraftanlagen an die Mittelspannungsebene angeschlossen werden. Es ist robust, belastbar und für gängige Verlegearten im Außenbereich ausgelegt. Häufig genutzt zwischen Turbinen und Trafostation – besonders bei mittleren bis großen Anlagen.
|
||||
<h4>NAYY – der Klassiker für Niederspannung</h4>
|
||||
In Solarprojekten oder im Umfeld von Trafostationen ist dieser Kabeltyp eine wirtschaftliche Lösung. Einfach zu verlegen, gut verfügbar und für viele Niederspannungsanwendungen absolut ausreichend – besonders dort, wo keine extremen Belastungen zu erwarten sind.
|
||||
Die genannten Kabel sind bei KLZ in vielen Querschnitten **lagernd verfügbar** – bei Bedarf einfach [hier anfragen](/contact/).
|
||||
## Worauf es beim Einkauf wirklich ankommt
|
||||
Ein gutes Kabel zu finden ist das eine – das richtige auch zu bekommen, wenn man es braucht, ist nochmal eine ganz andere Geschichte. Denn selbst der beste Kabeltyp nützt nichts, wenn Lieferzeiten aus dem Ruder laufen oder technische Details nicht zur Planung passen.
|
||||
Entscheidend ist daher nicht nur das Produkt selbst, sondern wer es liefert – und wie.
|
||||
Was beim Einkauf von Erdkabeln für Wind- und Solarprojekte besonders zählt:
|
||||
– **Verfügbarkeit prüfen**: Welche Querschnitte und Längen sind kurzfristig lieferbar?<br />– **Technische Spezifikation abgleichen**: Stimmen Isolationsklasse, Aderanzahl und Aufbau mit der Planung überein?<br />– **Liefertermine realistisch kalkulieren**: Gerade bei Bauprojekten mit engem Zeitfenster sind Pufferzeiten Gold wert.<br />– **Ansprechpartner mit Fachkenntnis**: Wer Kabel nicht nur verkauft, sondern auch versteht, spart Ihnen am Ende viel Abstimmungsaufwand.
|
||||
Ob Mittelspannung oder Niederspannung – eine klare Kommunikation mit dem Lieferanten bringt meistens mehr als zehn Seiten Produktspezifikation. Und ja, ein schneller Blick ins Lager kann nie schaden.
|
||||
## Lagernd oder Lieferzeit? Wie wir Kabelverfügbarkeit garantieren
|
||||
Projektpläne kennen selten Pausen. Genehmigungen kommen plötzlich, Baugruben sind schneller fertig als gedacht – und dann fehlen die Kabel. Genau hier entscheidet sich, ob ein Projekt in Fahrt bleibt oder ins Stocken gerät.
|
||||
Bei KLZ setzen wir auf eine Lagerstrategie, die viele Engpässe von vornherein vermeidet. Statt „just in time“ heißt es bei uns oft: **„liegt schon bereit“**.
|
||||
Was das konkret heißt:<br />
|
||||
– Gängige Typen wie **NA2XS(F)2Y**, **N2XS(F)2Y** und **NAYY** in den meistverwendeten Querschnitten sind kurzfristig abrufbar.<br />– Auch Sonderlängen oder typische Baurollen für Wind- und Solarprojekte halten wir auf Lager.<br />– Für Projekte in Deutschland und den Niederlanden erfolgt die Lieferung meist innerhalb weniger Tage – direkt auf die Baustelle.
|
||||
Das minimiert nicht nur das Risiko teurer Standzeiten, sondern sorgt auch intern für mehr Planungssicherheit.
|
||||
Wer früh weiß, was gebraucht wird, kann sich schon vor der eigentlichen Bestellung ein Bild machen – oder eben einfach mal [nachfragen](/contact/), was gerade verfügbar ist.
|
||||
## Fazit: Mit den richtigen Kabeln kommt Ihr Projekt schneller ans Netz
|
||||
Erdkabel sind das stille Fundament der Energiewende. Keine Schlagzeilen, keine Rotorblätter, keine glänzenden Solarpanels – und doch ist ohne sie alles nichts. Gerade bei **Onshore-Windparks** und **großen Photovoltaikanlagen** entscheidet die richtige Kabellösung über Erfolg oder Frust am Ende der Bauphase.
|
||||
Was sich in den letzten Jahren gezeigt hat: Die meisten Projekte scheitern nicht an der Technik, sondern an Verfügbarkeit, Abstimmung und schlechter Vorbereitung. Der Kabeltyp passt nicht zum Einsatzzweck, das Material kommt zu spät, oder es fehlen auf der Baustelle schlicht die passenden Längen.
|
||||
Das lässt sich vermeiden – mit Planung, mit Marktkenntnis und mit einem Partner, der weiß, worauf es ankommt. Bei KLZ liefern wir nicht nur Erdkabel, sondern auch die Erfahrung aus zahlreichen Projekten in Deutschland und den Niederlanden. Und weil wir wissen, dass Zeit oft die knappste Ressource ist, haben wir die gängigsten Typen wie **NA2XS(F)2Y**, **N2XS(F)2Y** und **NAYY** in relevanten Querschnitten auf Lager – sofort abrufbar, auf Wunsch direkt zur Baustelle.
|
||||
Wer also nicht erst beim Tiefbau über Kabel nachdenken will, sondern Projekte vorausschauend plant, ist klar im Vorteil. Ein kurzer Draht zu uns reicht – und die passende Lösung ist oft nur eine Anfrage entfernt.
|
||||
[👉 Jetzt Anfrage senden – wir liefern, was Sie wirklich brauchen](/contact/)!
|
||||
@@ -1,65 +0,0 @@
|
||||
---
|
||||
title: 'Die Kunst der Kabellogistik: Der Transport des Fundamentes moderner Energienetze'
|
||||
date: '2025-01-14T13:43:59'
|
||||
featuredImage: '/uploads/2025/01/transportation-and-logistics-trucking-2023-11-27-04-54-40-utc-scaled.webp'
|
||||
locale: de
|
||||
category: Kabel Technologie
|
||||
---
|
||||
# Die Kunst der Kabellogistik: Der Transport des Fundamentes moderner Energienetze
|
||||
<h4>Die Herausforderungen beim Kabeltransport verstehen</h4>
|
||||
Der Transport von Kabeln ist eine besondere logistische Aufgabe, die weit über das einfache Bewegen von Waren hinausgeht. Kabel sind schwer, empfindlich und variieren stark in ihrer Größe, weshalb sie eine sorgfältige Handhabung benötigen, um Schäden und Verzögerungen zu vermeiden. Ob bei Bauprojekten, Elektroinstallationen oder industriellen Einrichtungen – das Wissen über die spezifischen Anforderungen des Kabeltransports ist unerlässlich, um Risiken wie Beschädigungen, Verzögerungen und Sicherheitsprobleme zu minimieren.
|
||||
Warum ist der Kabeltransport so besonders?
|
||||
Hohe Gewichte: Kabeltrommeln können mehrere Tonnen wiegen. Ohne eine sichere Befestigung können sie während des Transports kippen oder rollen und damit ernsthafte Gefahren verursachen.<br />
|
||||
Empfindliche Materialien: Trotz des Gewichts sind Kabel anfällig für Beschädigungen. Fehlerhafte Handhabung kann zu Knicken, Abnutzungen oder sogar Funktionsstörungen führen.<br />
|
||||
Unterschiedliche Größen: Kabeltrommeln gibt es in vielen Variationen, weshalb für das Be- und Entladen sowie die Sicherung immer maßgeschneiderte Lösungen erforderlich sind.<br />
|
||||
Strikte Zeitvorgaben: Eine verspätete Lieferung von Kabeln kann ganze Projekte zum Stillstand bringen und zu teuren Verzögerungen führen. Zuverlässige Logistik ist daher unverzichtbar.
|
||||
Kabel mögen robust wirken, aber sie benötigen während des gesamten Transports besondere Aufmerksamkeit.
|
||||
🚚 **Logistik-Tipp:** Eine durchdachte Kabellogistik sorgt dafür, dass der Transport reibungslos verläuft und Ihre wertvolle Fracht stets geschützt bleibt!
|
||||
<h4>Wichtige Elemente professioneller Kabellogistik</h4>
|
||||
Was unterscheidet einen erfolgreichen Kabeltransport von einem gescheiterten? Wir bringen die wesentlichen Unterschiede auf den Punkt:
|
||||
Professionelle Sicherung: Schwere Trommeln müssen mit den richtigen Trägern und Methoden fest am Boden verankert werden. Riemen müssen so angebracht werden, dass sie ein Verrutschen verhindern, ohne die Kabel zu beschädigen.<br />
|
||||
Spezialisierte Handhabung: Das Be- und Entladen erfordert geschulte Fachkräfte, die die besonderen Anforderungen von Kabeltrommeln kennen. Ein falscher Handgriff kann zu irreparablen Schäden führen.<br />
|
||||
Effiziente Zeitplanung: Timing ist alles. Verspätete Lieferungen können Projekte verzögern, während überstürzte Operationen das Risiko von Fehlern erhöhen. Das richtige Gleichgewicht zu finden, ist entscheidend.<br />
|
||||
Zuverlässige Partner: Nicht jedes Logistikunternehmen ist auf den Kabeltransport spezialisiert. Die Auswahl erfahrener Partner ist entscheidend, um Pannen zu vermeiden.
|
||||
Unser Ansatz stellt sicher, dass jeder dieser Faktoren präzise umgesetzt wird, sodass eine reibungslose und beschädigungsfreie Lieferung garantiert ist.
|
||||
📦 **Logistik-Tipp:** Mit den richtigen Techniken und verlässlichen Partnern wird Ihr Kabeltransport sicher, pünktlich und problemlos!
|
||||
<h4>Wie wir es möglich machen: Unsere Kabellogistik-Strategie</h4>
|
||||
Wir liefern nicht nur Kabel, sondern auch Vertrauen. So sorgen wir für einen reibungslosen und zuverlässigen Ablauf:
|
||||
Die richtigen Partner wählen: Wir arbeiten mit Speditionen zusammen, die viel Erfahrung im Umgang mit Kabeltrommeln haben. Diese Fachleute wissen genau, wie man Kabel sicher sichert, lädt und transportiert.<br />
|
||||
Moderne Technik: Unsere Logistikpartner setzen auf fortschrittliche Ausrüstung, um die Trommeln sicher zu verankern und sicherzustellen, dass sie während des Transports an ihrem Platz bleiben.<br />
|
||||
Vorausschauende Planung: Vom Routenmanagement bis zur Zeitplanung – wir planen jede Lieferung genau, um enge Fristen einzuhalten und gleichzeitig höchste Sicherheit zu gewährleisten.<br />
|
||||
Strategische Standorte: Durch unser Logistikzentrum können wir Deutschland und die Niederlande schnell und effizient erreichen, wodurch wir Transitzeiten verkürzen und Emissionen reduzieren.
|
||||
🌱 **Mehrwert:** Mit unserem kostenlosen Trommelrückgabeservice gehen wir noch einen Schritt weiter, um unseren Kunden zu helfen, Kosten zu sparen und Abfall zu verringern!
|
||||
<h4>Nachhaltigkeit in der Kabellogistik</h4>
|
||||
Die Kabelindustrie spielt eine zentrale Rolle in der grünen Energie-Revolution, und Logistik trägt maßgeblich dazu bei, die Nachhaltigkeit zu gewährleisten.
|
||||
Effizienter Transport: Durch die Optimierung von Routen und die Bündelung von Lieferungen reduzieren wir den Kraftstoffverbrauch und die CO2-Emissionen.<br />
|
||||
Recycling-Programme: Unser Trommelrückgabeservice sorgt dafür, dass Materialien, wo immer möglich, wiederverwendet werden – ein Beitrag zur Kreislaufwirtschaft.<br />
|
||||
Umweltbewusste Partnerschaften: Wir arbeiten bevorzugt mit Logistikpartnern zusammen, die genauso wie wir einen starken Fokus auf Umweltverantwortung legen.
|
||||
Diese Maßnahmen stehen im Einklang mit unserer Mission, erneuerbare Energieprojekte zu unterstützen und gleichzeitig unseren ökologischen Fußabdruck zu minimieren.
|
||||
🌍 **Grünes Engagement:** Durch diese Bemühungen tragen wir zu erneuerbaren Energieprojekten bei und arbeiten kontinuierlich an einer saubereren, nachhaltigeren Zukunft.
|
||||
💚 **Partnern Sie mit uns** und verstärken Sie Ihre Nachhaltigkeitsinitiativen, um die grüne Energie-Revolution voranzutreiben!
|
||||
<h4>Häufige Fehler in der Kabellogistik und wie man sie vermeidet</h4>
|
||||
Die Kabellogistik ist eine hochriskante Aufgabe, bei der Fehler ernsthafte Konsequenzen haben können. Hier sind einige häufige Fallstricke – und wie wir sie vermeiden:
|
||||
Unzureichende Sicherung der Trommeln: Eine schlecht gesicherte Trommel kann während des Transports verrutschen, was zu Schäden an den Kabeln und Sicherheitsrisiken führt. Wir wenden branchenübliche Best Practices an, um jede Lieferung sicher zu verankern.<br />
|
||||
Falsche Handhabung: Fehlerhafte Handhabung beim Be- oder Entladen kann kostspielige Schäden verursachen. Unsere Partner sind geschult, jede Trommel mit größter Sorgfalt zu behandeln.<br />
|
||||
Verpasste Fristen: Verzögerungen bei der Lieferung können ganze Projekte ins Stocken bringen. Wir legen großen Wert auf Pünktlichkeit und planen vorausschauend, um immer im Zeitrahmen zu bleiben.<br />
|
||||
Unzureichende Kommunikation: Ein Mangel an Transparenz kann dazu führen, dass Kunden nicht wissen, wo sich ihre Sendungen befinden. Wir halten unsere Kunden stets auf dem Laufenden und sorgen dafür, dass sie jederzeit informiert sind.
|
||||
⚡ **Logistik-Tipp:** Indem wir diese häufigen Fehler vermeiden, stellen wir sicher, dass der Kabeltransport jedes Mal reibungslos und zuverlässig
|
||||
<h4>Innovation im Bereich Kabellogistik</h4>
|
||||
Die Logistikbranche entwickelt sich ständig weiter, und neue Technologien verändern die Art und Weise, wie Kabel transportiert werden. Hier sind einige Trends, die Sie im Auge behalten sollten:
|
||||
Kranlose Ladesysteme: Innovationen wie [ReelFrame ](https://www.worldcargonews.com/shipping-logistics/2022/12/enter-reelframe-for-craneless-loading-and-transport-of-cables)ersparen den Einsatz von Kranen und machen den Kabeltransport effizienter und weniger abhängig von schwerem Gerät.<br />
|
||||
Intelligente Lagerhaltung: Moderne Bestandsverwaltungssysteme helfen Unternehmen, Kabelbestände präziser zu verfolgen und zu verwalten. Weitere Informationen finden Sie [hier](https://www.innovites.com/article/making-it-work-in-the-wire-cable-industry-warehousing-and-logistics).<br />
|
||||
Nachhaltige Lieferketten: Immer mehr Unternehmen setzen auf die Reduzierung von Emissionen und die Einführung umweltfreundlicher Praktiken. Einblicke von [Belden](https://www.belden.com/blogs/smart-building/4-major-factors-impacting-the-cable-supply-chain-and-how-were-responding) zeigen, wie die Branche auf diese Herausforderungen reagiert.
|
||||
Die Logistikbranche entwickelt sich weiter, mit Innovationen wie kranlosen Ladesystemen, intelligenter Lagerhaltung und nachhaltigen Lieferketten, die darauf abzielen, die Effizienz zu steigern und den ökologischen Fußabdruck zu reduzieren.
|
||||
💡 **Pro-Tipp:** Achten Sie auf diese Trends, um sicherzustellen, dass Ihre Kabellogistik in Zukunft wettbewerbsfähig und nachhaltig bleibt!
|
||||
<h4>Möchten Sie tiefer in die Welt der Kabellogistik und des Supply Chain Managements eintauchen?</h4>
|
||||
Schauen Sie sich diese Ressourcen an:
|
||||
- [Overcoming global supply chain issues in the wire and cable industry](https://nassaunationalcable.com/blogs/blog/overcoming-global-supply-chain-issues-in-wire-and-cable-industry-2023)
|
||||
- [Making it work in the wire & cable industry: Warehousing and logistics](https://www.innovites.com/article/making-it-work-in-the-wire-cable-industry-warehousing-and-logistics)
|
||||
- [4 major factors impacting the cable supply chain](https://www.belden.com/blogs/smart-building/4-major-factors-impacting-the-cable-supply-chain-and-how-were-responding)
|
||||
|
||||
Diese Artikel bieten wertvolle Einblicke in die Herausforderungen und Innovationen, die die Branche heute prägen.
|
||||
<h4>Der Schlüssel zum Erfolg: Wie Kabellogistik Ihre Projekte voranbringt</h4>
|
||||
Kabellogistik ist das Fundament moderner Infrastrukturprojekte. Egal, ob es um die Versorgung von erneuerbaren Energieanlagen oder die Unterstützung des industriellen Wachstums geht – Kabel sind entscheidend für die Zukunft. Eine zuverlässige Logistik sorgt dafür, dass diese wichtigen Komponenten pünktlich und in einwandfreiem Zustand ankommen, sodass Sie Verzögerungen vermeiden und Ihre Projekte problemlos weiterlaufen können.
|
||||
Wenn Sie einen Logistikpartner wählen, der sich mit Kabeltransport auskennt, investieren Sie nicht nur in einen Lieferdienst – Sie sorgen dafür, dass Ihr Projekt erfolgreich wird.
|
||||
Bereit, den nächsten Schritt zu gehen? Kontaktieren Sie uns noch heute, um über Ihre Kabellogistik-Bedürfnisse zu sprechen und herauszufinden, wie wir Ihre Abläufe verbessern können. Lassen Sie uns die Zukunft gemeinsam vorantreiben – Trommel für Trommel.
|
||||
@@ -1,79 +0,0 @@
|
||||
---
|
||||
title: 'Die perfekte Kabelanfrage: So sparen Sie sich unnötige Rückfragen'
|
||||
date: '2025-02-17T08:15:37'
|
||||
featuredImage: /uploads/2025/02/1.webp
|
||||
locale: de
|
||||
category: Kabel Technologie
|
||||
---
|
||||
# Die perfekte Kabelanfrage: So sparen Sie sich unnötige Rückfragen
|
||||
## Kabelanfragen richtig stellen – So vermeiden Sie Verzögerungen und sparen Kosten
|
||||
Der Schlüssel steckt im Detail. So ist es auch schon im Anfrageprozess eines Angebotes sinnvoll, präzise zu sein. Eine vage Anfrage kann zu Missverständnissen, Nachfragen und Verzögerungen im Angebotsprozess führen. Wer hingegen detaillierte Angaben macht, spart sich und seinen Lieferanten Zeit – und manchmal auch bares Geld.
|
||||
Dieses Beispiel aus dem Alltag zeigt, wie schnell eine allgemein formulierte Anfrage zu zeitaufwendigen Nachfragen und somit zu Verzögerungen im Bestellprozess führen kann:
|
||||
<em>“Bitte Angebot über 6000 m NA2XS(F)2Y 150/25 dicker Mantel.”</em>
|
||||
Nachfolgend ein Beispiel, wie eine detaillierte Anfrage aussehen könnte:
|
||||
✔ **6000 m NA2XS(F)2Y 1x150RM/25 12/20 kV**<br />
|
||||
✔ **Mantelwanddicke 3 mm Kleinstwert**<br />
|
||||
✔ **1000 m Einzellängen**<br />
|
||||
✔ **Toleranz ±3%**<br />
|
||||
✔ **Leertrommelabholung erwünscht**<br />
|
||||
✔ **Ausführung August 2025**<br />
|
||||
✔ **DAP Hannover**<br />
|
||||
✔ **Annahmezeit nur Montag und Mittwoch**<br />
|
||||
✔ **Metalle zum Tag des geklärten Auftrags fixieren**
|
||||
Diese Informationen helfen nicht nur dem Lieferanten, sondern auch dem Kunden selbst. Eine detaillierte Anfrage sorgt für ein schnelles, genaues und vor allem vergleichbares Angebot.
|
||||
## Typenbezeichnung – die genaue Spezifikation ist entscheidend
|
||||
Da es eine Vielzahl unterschiedlicher Kabeltypen gibt, muss die **Typenbezeichnung** korrekt sein. Diese beschreibt nämlich jedes Aufbauelement und ist somit die wichtigste Information, um ein konkretes Angebot erstellen zu können. Bereits kleine Unterschiede können sich erheblich auf Preis und Eignung auswirken.
|
||||
Ergänzend zur Typenbezeichnung spielt auch die **Art des Leiters, **der** Kabelschirm **oder der** Querschnitt **des Kabels eine Rolle. Bei der Art des Leiters ist die Bezeichnung „**RM**“ wichtig, was bedeutet: **rund- und mehrdrähtig**. Alternativ gibt es „**RE**“, also **rund- und eindrähtig**. Die RE-Variante ist in vielen Fällen günstiger, aber nicht überall gängig. Wer sich hier nicht sicher ist, sollte genau prüfen, welche Variante für den Einsatzfall am besten geeignet ist.
|
||||
## Spannungsklasse nicht vergessen
|
||||
Bei der Spannungsklasse ist **12/20 kV** der meistgefragte Bereich. Dennoch gibt es immer eine technische Ausarbeitung, welche Spannungsklasse für den jeweiligen Fall gefragt ist. Hier könnte beispielsweise je nach Anwendungsfall auch **6/10 kV **oder** 18/30 kV **in Frage kommen. Eine falsche Angabe der Spannung ist meist auf einen Fehler in der Informationsweitergabe zurückzuführen und kann dazu führen, dass ein ungeeignetes Kabel angeboten wird. Im schlimmsten Fall wird das erst nach Lieferung bemerkt, was zu erheblichen Verzögerungen führt.
|
||||
## “Dicker Mantel“ – was bedeutet das eigentlich?
|
||||
Viele Besteller fordern einen „dicken Mantel“, ohne eine genaue Angabe zu machen. Doch Vorsicht!
|
||||
Seit im Dezember 2024 die neue VDE-Norm 0273-620 eingeführt wurde, fällt die Regel der Nominalwerte weg. Stattdessen wurden die Nominalwerte durch Kleinstwerte neu definiert.
|
||||
Daher ist es auch bei dem Wunsch eines dicken Mantels Pflicht, den entsprechenden Kleinstwert anzugeben. Die meisten dicken Mäntel liegen zwischen 3 – 3,5mm und je nach Gegebenheiten, wie beispielsweise eines sehr steinigen Bodens, kann auch ein dickerer Mantel sinnvoll sein.
|
||||
Überprüfen Sie am besten im Vorfeld, welchen Voraussetzungen Ihre Anfrage zu Grunde liegt und stellen diese dann mit möglichst detaillierten Angaben.
|
||||
## Gut geplant ist halb gespart – die richtige Manteldicke und Einzellänge machen den Unterschied bei Kosten und Verlegung.
|
||||
## Die richtige Einzellänge kann Kosten sparen
|
||||
Die Standardlänge für Einzeltrommeln liegt bei **1000 m**. Aber es kann sich lohnen, auf **1500 m **oder** 2000 m** zu gehen – wenn es die Verlegebedingungen zulassen.
|
||||
Warum?
|
||||
- Je **größer** die **Trommel**, desto **mehr** **Kilometer** können verladen werden und desto **geringer** ist der **Preisaufschlag**.
|
||||
- **Weniger Trommeln** können **geringere Frachtkosten** bedeuten.
|
||||
- **Größere** **Einzellängen** können **Muffenkosten** und **Zeit** **einsparen**.
|
||||
|
||||
Natürlich hängt die ideale Länge auch von den jeweiligen Verlegemöglichkeiten ab. Doch wer hier etwas flexibler ist, kann unter Umständen viel Geld sparen.
|
||||
## Längentoleranzen – was ist sinnvoll?
|
||||
Oft wird bei Kabelbestellungen eine sehr enge Längentoleranz gefordert. Doch Vorsicht: Je genauer die Längenvorgabe, desto teurer wird die Produktion.
|
||||
Warum?
|
||||
Die Fertigung eines Kabels beginnt beim Kabelleiter und dieser wird in langen Längen produziert. Mit jedem Bearbeitungsschritt wird die Fertigungslänge des Leiters kürzer – bis hin zur finalen Endlänge.
|
||||
Wer eine exakte Länge ohne Toleranz fordert, erhöht somit den **Verschnitt** in der Fabrik, was letztlich den** Preis in die Höhe treibt**. Eine realistische Toleranz kann also bares Geld sparen, da es auch bei der tatsächlichen Verlegung der Kabel zu Abweichungen kommt.
|
||||
## Was passiert mit leeren Trommeln?
|
||||
Nicht jeder Kunde hat die gleichen Anforderungen, wenn es um Kabeltrommeln geht:
|
||||
- Manche nutzen sie für **eigene Zwecke** weiter, beispielsweise für Umwicklungen.
|
||||
- Andere möchten sie **abgeholt** haben, da kein weiterer Verwendungszweck besteht.
|
||||
|
||||
Da Trommeln ein erheblicher Kostenfaktor sind und in den Kreislauf zurückgeführt werden sollten, ist es sinnvoll frühzeitig zu klären, ob eine **Leertrommelabholung** gewünscht ist. So wird Aufwand, Zeit und auch Geld gespart.
|
||||
## Exakte Angaben zur Ausführung ersparen Missverständnisse
|
||||
Produktionsplanung ist eine komplexe Angelegenheit. Jede Bestellung durchläuft mehrere Phasen:
|
||||
- **Materialbeschaffung**
|
||||
- **Kapazitätsplanung**
|
||||
- **Logistik**
|
||||
|
||||
Wer einen **ungefähren Lieferzeitraum** angibt, hilft der Fabrik, alle Prozesse optimal zu koordinieren. Selbst wenn das exakte Datum noch nicht feststeht, sollte zumindest ein grober Zeitraum (z. B. „August 2025“) angegeben werden.
|
||||
## Lieferort präzise bestimmen – DAP wohin?
|
||||
Die meisten Kabeltrommeln erreichen Deutschland über den **Hamburger Hafen**. Doch ob die Lieferung dann nach Kiel oder Freiburg geht, ist ein **erheblicher Kostenfaktor**. Die genaue Angabe des Lieferortes hilft, die Frachtkosten realistisch zu kalkulieren. Je nachdem kann so schon im Vorfeld der weitere logistische Transport geplant und optimiert werden.
|
||||
## Annahmezeiten beachten
|
||||
Nicht jede Baustelle oder jedes Lager kann rund um die Uhr Waren annehmen. Wer nur zu **bestimmten Zeiten** Anlieferungen akzeptiert (z. B. Montag und Mittwoch), sollte das unbedingt im Angebot angeben. So lassen sich Fehlanlieferungen und zusätzliche Frachtkosten vermeiden. Je früher die Lieferanten wissen, wann die bestellten Waren geliefert werden können, desto besser lässt sich der gesamte Prozess koordinieren.
|
||||
## Metallpreise – wann fixieren?
|
||||
Der Metallpreis kann einen großen Anteil am Kabelpreis ausmachen. Deswegen gibt es zwei sinnvolle Optionen:
|
||||
- **Fixierung zum Tag des geklärten Auftrags** – ideal für alle, die früh Planungssicherheit haben wollen.
|
||||
- **Durchschnittspreis des Monats vor der Auslieferung** – kann eine interessante Alternative sein, wenn Metallpreise schwanken.
|
||||
|
||||
Welche Variante für Sie die Beste ist, hängt von der Marktlage und der individuellen Risikostrategie ab. Wer flexibel bleibt, kann von günstigeren Durchschnittspreisen profitieren – wer Planungssicherheit braucht, sollte lieber frühzeitig fixieren.
|
||||
## Angebote immer im Detail vergleichen!
|
||||
Viele Angebote erscheinen auf den ersten Blick günstiger – bis plötzlich **hohe Trommelmietgebühren** auftauchen. Solche versteckten Kosten sind ärgerlich. Deshalb gilt:
|
||||
✅ Alle Kosten im Vorfeld prüfen!<br />
|
||||
✅ Nicht nur den Kabelpreis, sondern auch Zusatzkosten wie Fracht und Trommeln einkalkulieren!<br />
|
||||
✅ Transparenz im Angebot spart am Ende viel Geld und Ärger!
|
||||
Übrigens: Bei uns sind die** Trommelkosten im Preis **bereits enthalten.
|
||||
## Fazit: Eine detaillierte Kabelanfrage spart Zeit, Geld und Nerven!
|
||||
Die wichtigste Regel lautet: Je mehr relevante Informationen eine Anfrage enthält, desto schneller, präziser und günstiger kann das Angebot erstellt werden.
|
||||
Ein bisschen mehr Aufwand bei der Anfrage kann am Ende hohe Kosten vermeiden – und sichert einen reibungslosen Ablauf.
|
||||
@@ -1,46 +0,0 @@
|
||||
---
|
||||
title: 'Erkenntnisse über die grüne Energiewende: Herausforderungen und Chancen'
|
||||
date: '2025-01-15T12:05:25'
|
||||
featuredImage: '/uploads/2024/12/green-electric-plug-concept-2023-11-27-05-30-00-utc-scaled.webp'
|
||||
locale: de
|
||||
category: Kabel Technologie
|
||||
---
|
||||
# Erkenntnisse über die grüne Energiewende: Herausforderungen und Chancen
|
||||
<h4>Trotz ihrer Bedeutung wird diese unsichtbare Infrastruktur oft übersehen.</h4>
|
||||
In vielen Bereichen sind die Technologien noch nicht vollständig entwickelt, und es gibt noch viel Potenzial für Verbesserungen. Die Kabelindustrie ist ein entscheidender Faktor für die Effizienz der Energiewende. Sie kann und sollte einen wichtigen Beitrag leisten, um die Nutzung grüner Energie wirklich nachhaltig zu gestalten. Es ist an der Zeit, mehr auf die Details der Infrastruktur zu achten, um die gesamte Energiewende voranzutreiben und sicherzustellen, dass erneuerbare Energien langfristig zuverlässig und effizient genutzt werden können.
|
||||
## Kurz zusammengefasst:
|
||||
- Mehr als 10 % der Solarenergie gehen aufgrund von Kabeln niedriger Qualität verloren.
|
||||
- Kabel mit hoher Widerstandskraft erhöhen die Energieverluste, während hochwertige Kabel mit besserer Leitfähigkeit diese Verluste verringern und die Effizienz steigern.
|
||||
- Windparks ohne Energiespeicherung verlieren überschüssige Energie.<br />
|
||||
|
||||
Energiespeichersysteme wie Batterien oder Pumpspeicherwerke ermöglichen eine effiziente Nutzung des Überschusses.
|
||||
- Hohe Kosten und begrenzte Kapazitäten stellen Herausforderungen für die Energiespeicherung dar, aber technologische Fortschritte verbessern die Situation.
|
||||
- Stromleitungskorridore können als Lebensräume für Wildblumen, Bienen und bedrohte Arten dienen.
|
||||
- In Deutschland wird die „ökologische Trassenpflege“ eingesetzt, um natürliche Lebensräume entlang von Stromleitungen zu fördern.
|
||||
- Ähnliche Projekte zur Förderung der Natur entlang von Stromleitungen gibt es auch in der Schweiz.
|
||||
|
||||
<h4>Fakt 1: Mehr als 10 % der Solarenergie gehen durch schlechte Kabel verloren</h4>
|
||||
Ein oft übersehenes Problem bei Solaranlagen ist der Energieverlust durch schlechte Kabel. Stellen Sie sich vor, Sie haben ein System, das Strom aus Solarenergie erzeugt, aber ein Teil dieses Stroms geht verloren, bevor er überhaupt bei Ihnen ankommt. Dies passiert durch den Widerstand in den Kabeln, die den Strom von den Solarpanelen zu den Geräten oder zum Netz transportieren. Wenn die Kabel von minderer Qualität sind, steigt der Widerstand und es geht mehr Energie verloren – und das kann mehr als 10 % der insgesamt erzeugten Solarenergie ausmachen.
|
||||
Aber warum passiert das? Jedes Kabel hat einen Widerstand, der den Stromfluss verlangsamt. Je schlechter die Qualität des Kabels, desto mehr Energie geht in Form von Wärme verloren. Das bedeutet, dass weniger von der durch das Solarsystem erzeugten Energie tatsächlich bei Ihnen ankommt und genutzt werden kann. Und das ist natürlich ein Problem, besonders wenn man bedenkt, wie viel in die Installation eines Solarsystems investiert wird.
|
||||
## Grüne Energie ist heute ein zentraler Bestandteil unserer Zukunft … Doch es reicht nicht aus, sich einfach auf diese Energiequellen zu verlassen. Die Infrastruktur, die diese Energie effizient zu uns bringt, spielt eine ebenso entscheidende Rolle.
|
||||
Hochwertige Kabel hingegen haben eine bessere Leitfähigkeit und einen geringeren Widerstand. Dadurch fließt der **Strom** **effizienter** und es geht **weniger Energie verloren**. So bleibt mehr der erzeugten Energie für Sie zum Nutzen übrig – was nicht nur gut für Ihre Stromrechnung ist, sondern auch hilft, die Nachhaltigkeit Ihres Solarsystems zu maximieren. Daher lohnt es sich, bei der Auswahl der Kabel auf Qualität zu achten, um das volle Potenzial grüner Energie auszuschöpfen.
|
||||
<VisualLinkPreview
|
||||
url="https://ratedpower.com/blog/utility-scale-pv-losses/"
|
||||
title="Ultimate guide to utility-scale PV system losses — RatedPower"
|
||||
summary="What are solar PV system losses and how can you avoid them to maximize the electrical output from your utility-scale plant project?"
|
||||
image="https://assets.ratedpower.com/1694509274-aerial-view-solar-panels-top-building-eco-building-factory-solar-photovoltaic-cell.jpg?auto=format&fit=crop&h=630&w=1200"
|
||||
/>
|
||||
<h4>Fakt 2: Windparks ohne Energiespeicherung sind nicht besonders effizient</h4>
|
||||
Windparks haben ein ähnliches Problem wie Solaranlagen: Energieverluste aufgrund schwankender Stromerzeugung. Stellen Sie sich vor, ein Windpark erzeugt Strom, aber der Wind weht nicht konstant. Das bedeutet, dass zu bestimmten Zeiten die Windturbinen mehr Strom erzeugen, als tatsächlich benötigt wird, während sie zu anderen Zeiten, wenn der Wind nachlässt, fast keinen Strom liefern können. In beiden Fällen geht viel Energie verloren oder wird nicht genutzt. Ohne eine Möglichkeit, **überschüssige Energie **zu** speichern**, gibt es eine Lücke zwischen der erzeugten Energie und dem tatsächlichen Bedarf, was die Effizienz des gesamten Systems erheblich verringert.
|
||||
Die Lösung für dieses Problem liegt in **Energiespeichersystemen** wie Batterien oder Pumpspeicherkraftwerken. Diese Technologien ermöglichen es, überschüssige Energie zu speichern, wenn der Wind stark weht und somit mehr Strom produziert wird, als momentan benötigt wird. Diese gespeicherte Energie kann dann nach Bedarf genutzt werden, wenn der Wind nachlässt oder der Bedarf besonders hoch ist. So wird sichergestellt, dass der gesamte erzeugte Strom effizient genutzt wird, anstatt ungenutzt verloren zu gehen. Ohne diese Speichertechnologien bleibt das volle Potenzial der Windenergie ungenutzt und die Effizienz von Windparks bleibt weit unter ihrem tatsächlichen Wert.
|
||||
Trotz ihrer Bedeutung sind Energiespeichersysteme jedoch mit Herausforderungen verbunden. **Hohe Kosten** und **begrenzte Kapazitäten** machen die Entwicklung und Installation dieser Speichertechnologien weiterhin zu einer schwierigen Aufgabe. Doch der technologische Fortschritt hat nicht stillgestanden: Neue Innovationen in der Speichertechnologie und die immer weiter verbesserte Skalierbarkeit machen es zunehmend realistischer, Windparks mit effektiven und kostengünstigen Speichersystemen auszustatten. Dies ist entscheidend für die Zukunft der Windenergie, denn nur durch die Überwindung dieser Herausforderungen kann die Windenergie vollständig dazu beitragen, eine stabile und nachhaltige Energieversorgung zu gewährleisten.
|
||||
<VisualLinkPreview
|
||||
url="https://www.solarenergie.de/stromspeicher/arten/stromspeicher-windkraft"
|
||||
title="Speicher für Windenergie: Welche Möglichkeiten gibt es?"
|
||||
summary="Speicher für Windenergie: Welche Möglichkeiten gibt es? Windkraftanlagen mit Speicher im privaten und im öffentlichen Bereich ✓ Wie kann man Windenergie speichern? – Lernen Sie hier bereits existente und sich derzeit in der Forschung befindende Verfahren der Zukunft kennen!"
|
||||
image="https://assets.solarwatt.de/Resources/Persistent/e084aa09af5f0cdef386088bc558a52d81509cc0/Regenerative%20Energie-1200x628.jpg"
|
||||
/>
|
||||
<h4>Fakt 3: Stromleitungen können als Lebensräume für die Biodiversität genutzt werden</h4>
|
||||
Wussten Sie, dass Stromleitungen – die Hochspannungsleitungen, die Strom von Kraftwerken zu unseren Häusern und Unternehmen transportieren – auch als Lebensräume für Tiere und Pflanzen genutzt werden können? Diese Bereiche, die oft freigehalten werden müssen, um Platz für die Stromleitungen zu schaffen, bieten eine wertvolle Gelegenheit, die **Biodiversität** aktiv zu **fördern** und gleichzeitig einen Beitrag zum **Umweltschutz** zu leisten.
|
||||
Traditionell wurden die Flächen entlang von Stromleitungen oft als „Brachland“ ohne besondere Bedeutung betrachtet. Innovative Ansätze für grüne Infrastruktur schaffen jedoch zunehmend wertvolle Lebensräume. Heute werden entlang von Stromleitungen Wildblumenwiesen, Bienenweiden und Sträucher gepflanzt, die Lebensräume für viele bedrohte Arten bieten. Diese Wiesen sind nicht nur eine Nahrungsquelle für Bienen, Schmetterlinge und andere Bestäuber, sondern auch ein Zufluchtsort für Vögel und kleine Tiere, die in anderen Teilen der Landschaft immer weniger Lebensraum finden.
|
||||
In Deutschland ist dies ein wachsendes Konzept, das als „**ökologische Trassenpflege**“ bekannt ist. Hier wird darauf geachtet, dass die Flächen entlang der Stromleitungen naturnah gestaltet werden, um die Biodiversität zu fördern. Dadurch entstehen blühende Wiesen und Lebensräume für zahlreiche Insektenarten, die aufgrund der intensiven landwirtschaftlichen Nutzung und Urbanisierung immer weniger Platz finden. Auch in der Schweiz gibt es ähnliche Projekte, bei denen die Natur entlang von Stromleitungen gezielt gefördert wird.
|
||||
@@ -1,83 +0,0 @@
|
||||
---
|
||||
title: Grüne Energie beginnt unter der Erde – und zwar mit Plan
|
||||
date: '2025-05-22T09:14:46'
|
||||
featuredImage: /uploads/2025/02/image_fx_-9.webp
|
||||
locale: de
|
||||
category: Kabel Technologie
|
||||
---
|
||||
# Grüne Energie beginnt unter der Erde – und zwar mit Plan
|
||||
# Unsichtbare Helden: Erdverkabelung als Rückgrat der Windenergie
|
||||
Moderne Onshore-Windparks bestehen nicht nur aus Turbinen, sondern aus einem komplexen Netz an Stromleitungen, Verbindungen, Transformatorstationen und Schnittstellen zur öffentlichen Stromversorgung. Die Kabel, die all das verbinden, verlaufen in der Regel unterirdisch – aus guten Gründen:
|
||||
Vorteile der Erdverkabelung:
|
||||
- **Schutz vor äußeren Einflüssen:** Stürme, Schnee oder Hitze beeinträchtigen die Versorgung nicht.
|
||||
- **Reduzierte Ausfallzeiten:** Kabelsysteme sind wartungsarm und weniger störanfällig.
|
||||
- **Optische Integration in die Landschaft:** Keine Masten, keine Leitungstrassen am Himmel.
|
||||
- **Sicherheit und Umweltfreundlichkeit:** Keine Gefahr durch umstürzende Leitungen oder elektromagnetische Belastung.
|
||||
|
||||
Was viele unterschätzen: Die Kabelstrecken in einem Windpark machen oft einen erheblichen Teil der Gesamtinvestition aus. Sie sind nicht nur Verbindungsglied – sie sind die **kritische Infrastruktur**, auf der alles aufbaut.
|
||||
# Ganzheitliche Planung: Grundlage für nachhaltige Infrastruktur
|
||||
Die Integration von Windparks in das Stromnetz erfordert eine systemische Herangehensweise. Eine fundierte Planung berücksichtigt dabei nicht nur die Leistungsanforderungen, sondern auch Umgebungsbedingungen, Ausbauszenarien und Genehmigungsprozesse.
|
||||
|
||||
<StickyNarrative
|
||||
title="Zentrale Planungsaspekte"
|
||||
items={[
|
||||
{ title: "Trassenführung", content: "Geologie, Eigentumsverhältnisse, Schutzgebiete" },
|
||||
{ title: "Netzanschluss", content: "Spannungsebene, Einspeisepunkte, Redundanz" },
|
||||
{ title: "Lastprofil", content: "Bemessung für Dauer- und Spitzenlasten" },
|
||||
{ title: "Skalierbarkeit", content: "Erweiterungspotenziale für zukünftige Anlagen" }
|
||||
]}
|
||||
/>
|
||||
|
||||
Professionelle Planung schafft nicht nur Versorgungssicherheit, sondern senkt langfristig die Betriebskosten und ermöglicht eine flexible Reaktion auf Netzanforderungen.
|
||||
Hier finden Sie weitere Informationen, wie Windenergie grundlegend funktioniert:
|
||||
|
||||
<VisualLinkPreview
|
||||
url="https://www.e-werk-mittelbaden.de/wie-funktioniert-windenergie"
|
||||
title="Wie funktioniert Windenergie?"
|
||||
summary="- Einfach erklärt | E-Werk MittelbadenErfahren Sie, wie Windenergie funktioniert und wie sie zur nachhaltigen Energieversorgung beiträgt. Jetzt informieren!"
|
||||
image="https://www.e-werk-mittelbaden.de/sites/default/files/media_image/2024-12/DJI_20231105012629_0029_D-HDR.jpg"
|
||||
/>
|
||||
<blockquote>
|
||||
Wer klimafreundliche Energie transportieren will, muss auch klimabewusst verbauen.
|
||||
</blockquote>
|
||||
Wichtige Aspekte einer verantwortungsvollen Beschaffung:
|
||||
- Verwendung recycelbarer und langlebiger Materialien
|
||||
- Nachweisliche Herkunft der eingesetzten Rohstoffe
|
||||
- Vermeidung umweltschädlicher Produktionsverfahren
|
||||
- Auswahl zertifizierter und auditierter Lieferanten
|
||||
|
||||
Die Kabelbranche entwickelt sich zunehmend in Richtung [Circular Economy](https://www.ellenmacarthurfoundation.org/topics/circular-economy-introduction/overview) – mit verbesserten Rücknahmesystemen, höherem Einsatz von Sekundärrohstoffen und wachsender Transparenz entlang der Lieferkette.
|
||||
# Rückbau mit System – Recycling als Teil der Energiewende
|
||||
Nach mehreren Jahrzehnten Betrieb erreicht jede **Kabelinfrastruktur** den Punkt, an dem sie ersetzt oder vollständig zurückgebaut werden muss. Dieser Abschnitt markiert nicht das Ende eines Projekts, sondern seine **letzte Bewährungsprobe**. Denn wer bei der Planung von Anfang an **Verantwortung** übernimmt, sorgt auch beim Rückbau für **klare Prozesse**, **minimale Umweltbelastungen** und **maximale Wiederverwertung**.
|
||||
Ein durchdachter Rückbau beginnt nicht mit der Demontage, sondern mit einer **vorausschauenden Materialwahl**: **sortenrein**, **recyclingfähig** und **dokumentiert**. **Metalle** wie Kupfer oder Aluminium können in hohem Maße zurückgeführt werden, ebenso wie bestimmte **Kunststoffummantelungen**. Auch Transporthilfen wie **Kabeltrommeln** lassen sich häufig wiederverwenden oder in **Rohstoffkreisläufe** integrieren.
|
||||
Dabei geht es nicht nur um **ökologische Aspekte** – auch **ökonomisch** macht ein geplanter Rückbau Sinn. Projekte, die **systematisch rückbaufähig** ausgelegt sind, vermeiden hohe **Entsorgungskosten** und erfüllen zukünftige **regulatorische Anforderungen** mit deutlich geringerem Aufwand.
|
||||
Insgesamt zeigt sich: **Nachhaltigkeit endet nicht beim Netzanschluss.** Sie umfasst den **gesamten Lebenszyklus** – bis hin zur **letzten recycelten Leitung**. Wer **Infrastruktur ganzheitlich** denkt, denkt sie **bis zum Schluss**.
|
||||
Im nachfolgenden Artikel erfahren Sie, wie beispielsweise Windkrafträder entsprechend recycelt werden:
|
||||
<VisualLinkPreview
|
||||
url="https://www.enbw.com/unternehmen/themen/windkraft/windrad-recycling.html"
|
||||
title="Recycling von Windrädern | EnBW"
|
||||
summary="Wie funktioniert das Recycling von Windrädern? Erfahren Sie mehr über Herausforderungen und die neuesten Methoden."
|
||||
image="https://www.enbw.com/media/image-proxy/1600x914,q70,focus60x67,zoom1.45/https://www.enbw.com/media/presse/images/newsroom/windenergie/rueckbau-windpark-hemme-3_1743678993586.jpg"
|
||||
/>
|
||||
# Verlässliche Netze entstehen nicht zufällig
|
||||
Die **Anforderungen** an heutige **Energienetze** **steigen** stetig. Besonders bei Windkraftprojekten, die in abgelegenen oder strukturschwachen Regionen realisiert werden, ist ein stabiles Netzdesign entscheidend. Es reicht längst nicht mehr aus, Strom von A nach B zu leiten. Die **Infrastruktur** muss auch in unvorhergesehenen Situationen funktionieren – bei Lastspitzen, Wartungsarbeiten oder externen Störungen.
|
||||
Diese **Belastbarkeit** lässt sich nicht nachträglich einbauen. Sie muss von Anfang an in die Planung einfließen. **Netzarchitektur**, die flexibel auf unterschiedliche Betriebssituationen reagieren kann, ist kein technisches Extra, sondern ein fundamentaler Bestandteil **nachhaltiger Projektentwicklung**. Besonders wichtig ist dabei die Fähigkeit, bei Bedarf umzuschalten, alternative Leitungswege zu nutzen oder Leistung gezielt zu drosseln, ohne dass es zu Versorgungsausfällen kommt.
|
||||
Ein solches **System** ist nicht nur **stabiler** – es ist **zukunftsfähig**. Denn die Zahl der Einspeisepunkte wächst, die Komplexität der Netzverbindungen nimmt zu, und regulatorische Anforderungen steigen kontinuierlich. Wer heute investiert, sollte daher nicht nur den Normalbetrieb absichern, sondern auch das Unerwartete mitdenken.
|
||||
Zum Abschluss die wichtigsten Überlegungen für eine belastbare Netzinfrastruktur:
|
||||
- Planung mehrerer Einspeisepfade für kritische Bereiche
|
||||
- Integration automatisierter Umschaltfunktionen
|
||||
- Dimensionierung mit Leistungsreserven für Lastverlagerung
|
||||
- Aufbaustrategien mit Blick auf Erweiterung und Skalierbarkeit
|
||||
- Frühzeitige Abstimmung mit Netzbetreibern zur Sicherstellung der Anschlussfähigkeit
|
||||
|
||||
Ein** verlässliches Netz** ist kein Zufallsprodukt – es ist das Ergebnis durchdachter, vorausschauender **Planung**. Und sie entscheidet oft schon in der Bauphase über den **langfristigen Erfolg** eines Projekts.
|
||||
# Fazit – ein Windpark ist nur so grün wie sein Untergrund
|
||||
Die Diskussion um erneuerbare Energien dreht sich oft um Leistung, Speichertechnologien, politische Rahmenbedingungen. Was selten thematisiert wird, ist der „unsichtbare Teil“ der Energiewende – das, was unter der Erde liegt.
|
||||
Doch genau dort entscheidet sich, ob ein Projekt wirklich nachhaltig, skalierbar und zukunftstauglich ist.
|
||||
Zusammengefasst:
|
||||
- Eine durchdachte Kabelinfrastruktur ist Grundvoraussetzung für jeden Onshore-Windpark.
|
||||
- Nachhaltigkeit beginnt bei Materialwahl, Logistik und Rückbau, nicht erst beim Betrieb.
|
||||
- Redundante Systeme sichern langfristige Netzstabilität – technisch wie wirtschaftlich.
|
||||
- Der Projekterfolg hängt nicht allein an der Turbine, sondern an allem, was sie mit dem Netz verbindet.
|
||||
|
||||
Wer das versteht, plant nicht einfach einen Windpark. Sondern ein belastbares Stück Zukunft.
|
||||
@@ -1,66 +0,0 @@
|
||||
---
|
||||
title: 'Herzlich willkommen bei KLZ: Johannes Gleich startet als Senior Key Account Manager durch'
|
||||
date: '2026-02-20T14:50:00'
|
||||
featuredImage: /uploads/2026/01/1767353529807.jpg
|
||||
locale: de
|
||||
category: Kabel Technologie
|
||||
excerpt: 'KLZ Cables startet mit einer starken Verstärkung ins neue Jahr: Johannes Gleich übernimmt die Rolle des Senior Key Account Managers. Erfahren Sie mehr über unseren neuen Experten für Infrastruktur und Energieversorger.'
|
||||
public: false
|
||||
---
|
||||
# Herzlich willkommen bei KLZ: Johannes Gleich startet als Senior Key Account Manager durch
|
||||
|
||||
KLZ Cables startet mit einer starken Verstärkung ins neue Jahr: Seit Januar 2026 übernimmt Johannes Gleich die Rolle des Senior Key Account Managers. Mit ihm gewinnen wir nicht nur zusätzliche Vertriebskraft, sondern auch jahrzehntelange Erfahrung und ein wertvolles Branchennetzwerk.
|
||||
|
||||
## 1. Ein bekanntes Gesicht für eine effektive Zusammenarbeit
|
||||
|
||||
Johannes ist für KLZ kein Neuling: Bereits während seiner über zehnjährigen Tätigkeit bei der LAPP Gruppe hat unser Team die Zusammenarbeit mit ihm kennengelernt und sehr geschätzt. Diese bestehende Vertrautheit und das gegenseitige Vertrauen erleichtern den Einstieg enorm und versprechen eine produktive Kooperation von Tag eins an.
|
||||
|
||||
## 2. Beruflicher Hintergrund: Erfahrung trifft technische Tiefe
|
||||
|
||||
Mit rund 50 Jahren verbindet Johannes fundierte Berufserfahrung mit frischer Motivation. Seine Basis ist eine technische Ausbildung im Bereich Elektrotechnik. Dieses Fundament ermöglicht es ihm, unsere Produkte nicht nur zu vertreiben, sondern sie in ihrer gesamten technischen Tiefe zu erklären und einzuordnen.
|
||||
|
||||
Sein Werdegang im Überblick:
|
||||
|
||||
<TechnicalGrid
|
||||
title="Karrierestationen"
|
||||
items={[
|
||||
{ label: "Seit Jan. 2026", value: "Senior Key Account Manager bei KLZ Vertriebs GmbH (Remote)" },
|
||||
{ label: "2015 – 2026", value: "Projektmanager Infrastrukturbereich Stadtwerke & Energieversorger bei der LAPP Gruppe (Stuttgart)" }
|
||||
]}
|
||||
/>
|
||||
|
||||
In den vergangenen elf Jahren hat er sich als Experte für die Anforderungen großer Infrastrukturanbieter etabliert. Er kennt die Herausforderungen der Branche – technisch, wirtschaftlich und strategisch – aus erster Hand.
|
||||
|
||||
## 3. Expertise: Ausschreibungen, Normen und Markttrends
|
||||
|
||||
Was Johannes besonders wertvoll für unser Team macht, ist sein spezialisiertes Fachwissen:
|
||||
|
||||
<TechnicalGrid
|
||||
title="Kernkompetenzen"
|
||||
items={[
|
||||
{ label: "Tender-Management", value: "Seine umfassende Erfahrung macht ihn zu einem sicheren Partner bei komplexen Ausschreibungen." },
|
||||
{ label: "Normen & Fertigung", value: "Er verfügt über tiefgehende Kenntnisse im Bereich Kabelnormen und der Kabelfertigung." },
|
||||
{ label: "Marktkenntnis", value: "Trends, Preisentwicklungen und Beschaffungsstrategien im deutschen Kabelmarkt sind ihm bestens vertraut." },
|
||||
{ label: "Logistik", value: "Fundierte Kenntnisse in der Lieferkette runden sein Profil ab." }
|
||||
]}
|
||||
/>
|
||||
|
||||
## 4. Ein verlässlicher Partner auf Augenhöhe
|
||||
|
||||
Johannes genießt bei Kunden eine hohe Wertschätzung als echter „Kümmerer“. Er übernimmt Verantwortung und zeichnet sich durch eine ausgleichende, aber in der Sache klare Verhandlungsführung aus. Seine Fähigkeit, komplexe Anforderungen strukturiert umzusetzen, hat sich bereits in früheren gemeinsamen Projekten mit KLZ bewährt.
|
||||
|
||||
## 5. Neue Rolle und Ziele bei KLZ Cables
|
||||
|
||||
In seiner neuen Position wird Johannes den Vertrieb strategisch verstärken und die Geschäftsführung operativ entlasten.
|
||||
|
||||
Seine Kernaufgaben umfassen:
|
||||
|
||||
- **Gezielte Betreuung:** Fokus auf Stadtwerke, Netzbetreiber und Energieversorger.
|
||||
- **Markterschließung:** Aufbau von Kontakten in den Bereichen Renewables und Tiefbau.
|
||||
- **Strategische Planung:** Umsetzung von Vertriebsaktivitäten ohne administrative Grenzen, um maximale Dynamik zu entfalten.
|
||||
|
||||
## 6. Ausblick
|
||||
|
||||
Wir freuen uns besonders, dass Johannes bei KLZ den Raum findet, sein gesamtes Wissen optimal für unsere Kunden einzusetzen. Mit seiner Kombination aus technischem Know-how, Markterfahrung und menschlicher Integrität ist er genau am richtigen Ort, um das Wachstum von KLZ Cables nachhaltig zu fördern.
|
||||
|
||||
Herzlich willkommen im Team, Johannes! Wir freuen uns auf die gemeinsamen Projekte.
|
||||
@@ -1,67 +0,0 @@
|
||||
---
|
||||
title: Kabelabkürzungen entschlüsselt – der Schlüssel zur richtigen Kabelwahl
|
||||
date: '2025-03-17T10:00:23'
|
||||
featuredImage: '/uploads/2024/12/Medium-Voltage-Cables-–-KLZ-Cables-12-30-2024_05_20_PM-scaled.webp'
|
||||
locale: de
|
||||
category: Kabel Technologie
|
||||
---
|
||||
# Kabelabkürzungen entschlüsselt – der Schlüssel zur richtigen Kabelwahl
|
||||
Ein Kabel besteht nicht nur aus einem **elektrischen Leiter** – es gibt verschiedene **Isolierungen**, **Schutzmäntel**, **Schirmungen** und **mechanische Verstärkungen**, die es für spezielle Anwendungen auszeichnen. Ohne standardisierte Kürzel würde jede Kabelbezeichnung unnötig lang und unübersichtlich werden.
|
||||
Doch keine Sorge: Wer einmal das System verstanden hat, kann auf einen Blick erkennen, wofür ein Kabel geeignet ist. Hier eine Übersicht der wichtigsten Abkürzungen und was sie bedeuten.
|
||||
## Aufbau und Schutz: Die wichtigsten Kabelabkürzungen
|
||||
Jedes Kabel hat spezifische Eigenschaften, die sich aus seinem mechanischen Schutz, der Abschirmung und weiteren Besonderheiten ergeben. Besonders bei der Verlegung im Erdreich oder in anspruchsvollen industriellen Umgebungen sind zusätzliche Schutzmechanismen entscheidend.
|
||||
- **A** – Nach N: Aluminium-Leiter, am Ende: Außenhülle aus Jute<br /><em><em>Aluminium wird häufig als Leiterwerkstoff verwendet, da es günstiger und leichter als Kupfer ist. Allerdings hat es einen höheren elektrischen Widerstand, weshalb Querschnitte oft größer gewählt werden müssen.</em></em>
|
||||
- **B** – Stahlbandbewehrung<br /><em><em>Diese mechanische Schutzschicht sorgt für eine höhere Widerstandsfähigkeit gegen äußere Belastungen, z. B. bei der Erdverlegung.</em></em>
|
||||
- **C** – Konzentrischer Leiter bzw. Schirm aus Kupferdrähten oder -bändern<br /><em><em>Dieser Aufbau verbessert die elektromagnetische Verträglichkeit und sorgt für eine gleichmäßige Feldverteilung um den Leiter.</em></em>
|
||||
- **CW** – Konzentrischer Leiter aus Kupfer, wellenförmig aufgebracht
|
||||
- **CE** – Einzeladerschirmung
|
||||
- **E** – Nach N: Einzeladerschirmung, am Ende: Schutzhülle aus Kunststoffband
|
||||
- **F** – Längswasserdichtes Kabel<br /><em><em>Ein Muss für Kabel, die in feuchten oder erdverlegten Umgebungen genutzt werden. Die Abdichtung verhindert das Eindringen von Wasser entlang des Kabels.</em></em>
|
||||
- **FL** – Längs- und querwasserdichtes Kabel<br /><em><em>Dieses Kabel bietet nicht nur Schutz gegen Wasser in Längsrichtung, sondern verhindert auch das Eindringen seitlich durch den Mantel.</em></em>
|
||||
- **GB** – Stahlbandgegenwendel
|
||||
- **H** – Hochspannungskabel mit metallisierter Abschirmung der Einzeladern (Höchstädter-Kabel)<br />
|
||||
|
||||
<em>Ein H-Kabel ist ein Hochspannungskabel mit drei Leitern für Dreiphasenwechselstrom, entwickelt von Martin Höchstädter. Die metallisierte Abschirmung jeder Ader sorgt für eine gleichmäßige Feldverteilung, reduziert die Isolationsbelastung und ermöglicht höhere Betriebsspannungen. Eingesetzt wird es in Hochspannungsnetzen, Umspannwerken und Windparks.</em>
|
||||
- **K** – Kabel mit Bleimantel<br /><em><em>Bleimäntel wurden früher häufig als Schutz gegen Feuchtigkeit und chemische Einflüsse verwendet. Aufgrund von Umweltaspekten wurden sie jedoch schon lange durch moderne Materialien ersetzt.</em></em>
|
||||
- **L** – Glatter Aluminiummantel
|
||||
- **N** – Kabel nach Norm<br /><em><em>Dieser Buchstabe signalisiert, dass das Kabel nach genormten Vorgaben gefertigt wurde – ein wichtiges Qualitätsmerkmal für Planung und Sicherheit.</em></em>
|
||||
- **Ö** – Ölkabel<br /><em>Ölkabel sind Hochspannungskabel, die im Inneren mit dünnflüssigem Mineralöl unter Druck betrieben werden. Seit den 1930er Jahren werden sie für 100 kV bis 500 kV als Erdkabel genutzt, vor allem in städtischen Hochspannungsnetzen wie der 380-kV-Transversale Berlin und Wien.</em>
|
||||
- **Q** – Beflechtung aus verzinktem Stahldraht
|
||||
- **R** – Runddrahtbewehrung
|
||||
- **S** – Kupferschirm (≥ 6 mm²) zwecks Berührungsschutz oder zur Fortleitung von Fehlerströmen<br /><em><em>Ein Kupferschirm reduziert elektromagnetische Störungen und dient in manchen Anwendungen als Schutzleiter.</em></em>
|
||||
- **SE** – Anstatt H; analog zu S, jedoch für Mehraderkabel; dann jeweils für jede Ader
|
||||
|
||||
## Isolationsmaterialien: Schutz gegen elektrische Durchschläge
|
||||
Ein wesentliches Merkmal eines Kabels ist seine Isolation. Sie muss sowohl elektrische Durchschläge verhindern als auch mechanische und chemische Einflüsse abwehren. Je nach Anwendungsbereich kommen verschiedene Materialien zum Einsatz.
|
||||
- **2X** – Isolierung aus vernetztem Polyethylen (VPE)<br /><em><em>Vernetztes Polyethylen ist besonders temperatur- und spannungsfest und wird häufig in Mittel- und Hochspannungskabeln verwendet.</em></em>
|
||||
- **Y** – Isolierung oder Mantel aus PVC<br /><em><em>PVC ist das Standardmaterial für viele Kabelmäntel, da es flexibel und kostengünstig ist. Es wird allerdings zunehmend durch umweltfreundlichere Alternativen ersetzt.</em></em>
|
||||
- **2Y** – Isolierung oder Mantel aus thermoplastischem Polyethylen (PE)
|
||||
- **4Y** – Isolierung aus [Polyamid](https://de.wikipedia.org/wiki/Polyamide) (Nylon)<br /><em><em>Polyamid ist äußerst widerstandsfähig gegen Abrieb und mechanische Belastungen – ideal für anspruchsvolle Industrieanwendungen.</em></em>
|
||||
- **9Y** – Isolierung aus [Polypropylen](https://de.wikipedia.org/wiki/Polypropylen) (PP)
|
||||
- **11Y** – Isolierung aus Polyurethan (PUR)<br /><em><em>Polyurethan bietet hohe Flexibilität und ist beständig gegen Chemikalien sowie Abrieb – oft genutzt für bewegliche Anwendungen.</em></em>
|
||||
- **12Y** – Isolierung aus [Polyethylenterephthalat](https://de.wikipedia.org/wiki/Polyethylenterephthalat) (PET)
|
||||
- **4G** – Isolierung aus [Ethylen-Vinylacetat](https://de.wikipedia.org/wiki/Ethylen-Vinylacetat-Copolymer) (EVA)
|
||||
|
||||
## Leiteraufbau: Die innere Struktur eines Kabels
|
||||
Neben der Isolation bestimmt auch der Leiteraufbau, wie flexibel oder stabil ein Kabel ist. Besonders in der Energieverteilung oder bei beweglichen Anwendungen spielt dies eine große Rolle.
|
||||
- **RE** – Eindrähtiger Rundleiter<br /><em><em>Diese massiven Leiter sind stabil und haben eine hohe mechanische Festigkeit, aber wenig flexibel.</em></em>
|
||||
- **RF** – [Feindrähtiger](https://de.wikipedia.org/wiki/Litze_(Elektrotechnik)) Rundleiter<br /><em><em>Besteht aus vielen dünnen Einzeldrähten und ist dadurch besonders flexibel – ideal für bewegliche Anwendungen.</em></em>
|
||||
- **RM** – Mehrdrähtiger Rundleiter
|
||||
- **SE** – Eindrähtiger Sektorleiter<br /><em><em>Sektorleiter ermöglichen eine kompaktere Kabelbauweise bei großen Querschnitten.</em></em>
|
||||
- **SM** – Mehrdrähtiger Sektorleiter
|
||||
|
||||
## Fazit: Wissen, was hinter den Abkürzungen steckt
|
||||
Mit diesem Wissen lassen sich Kabelbezeichnungen schnell entschlüsseln. Wer die Abkürzungen kennt, kann auf einen Blick erkennen, welche Eigenschaften ein Kabel besitzt und für welche Anwendungen es geeignet ist.
|
||||
Ein Beispiel: NA2XY
|
||||
- **N** – Kabel nach Norm
|
||||
- **A** – Aluminium-Leiter
|
||||
- **2X** – Isolierung aus vernetztem Polyethylen (VPE)
|
||||
- **Y** – PVC-Mantel
|
||||
|
||||
Wer diese Abkürzungen einmal verstanden hat, kann Kabelbezeichnungen nicht nur lesen, sondern auch gezielt das passende Produkt für seine Anwendung auswählen. Ob für Hochspannungsleitungen, industrielle Steuerungen oder den Netzanschluss eines Windparks – die richtige Kabelwahl ist entscheidend für eine sichere und langlebige Installation.
|
||||
## KLZ – Ihr Ansprechpartner, wenn es um Kabel geht
|
||||
Nachdem wir nun die Welt der Kabelabkürzungen entschlüsselt haben, dürfte klar sein: Ein Kabel ist weit mehr als nur ein Draht mit Isolierung. Die Kombination aus Leitermaterial, Isolierung, Abschirmung und mechanischem Schutz entscheidet darüber, ob ein Kabel den Anforderungen einer bestimmten Anwendung gewachsen ist. Genau hier wird es oft kompliziert – denn nicht jedes Projekt stellt dieselben Anforderungen an Verlegung, Belastbarkeit oder Umweltbeständigkeit.
|
||||
Wenn es also darum geht, das richtige Kabel für eine spezifische Anwendung zu finden, ist es gut, einen Partner an der Seite zu haben, der sich auskennt. **KLZ** steht Ihnen genau dafür zur Verfügung. Ob Sie ein längs- und querwasserdichtes Kabel für eine anspruchsvolle Erdverlegung benötigen, ein Hochspannungskabel mit metallisierter Abschirmung oder ein flexibles Kabel mit PUR-Mantel – wir helfen Ihnen, die richtige Wahl zu treffen.
|
||||
Denn am Ende zählt nicht nur, dass das Kabel passt, sondern dass es langfristig zuverlässig arbeitet. Und wer sich einmal durch die Abkürzungen gekämpft hat, weiß: Ein <em>NA2XSEYRGY</em> ist nicht einfach nur ein Kabel – es ist eine maßgeschneiderte Lösung für eine bestimmte Herausforderung. Und genau diese Lösungen liefern wir.
|
||||
🔗 Sie suchen das passende Kabel? Schauen Sie sich unsere [Produktübersicht](/de/produkte/) an.<br />🔗 Noch Fragen? Kontaktieren Sie uns direkt über unsere [Kontaktseite](/de/contact/).
|
||||
Lassen Sie uns gemeinsam herausfinden, welches Kabel für Ihr Projekt das richtige ist.
|
||||
@@ -1,326 +0,0 @@
|
||||
---
|
||||
title: 'Kabeltrommelqualität: Die Grundlage der Kabelzuverlässigkeit'
|
||||
date: '2025-01-15T13:41:56'
|
||||
featuredImage: /uploads/2024/11/1234adws21312-scaled.jpg
|
||||
locale: de
|
||||
category: Kabel Technologie
|
||||
---
|
||||
# Kabeltrommelqualität: Die Grundlage der Kabelzuverlässigkeit
|
||||
## Warum die Qualität der Kabeltrommel wichtig ist
|
||||
Kabeltrommeln müssen eine Vielzahl von Herausforderungen bewältigen, von rauen Wetterbedingungen bis hin zum Verschleiß während des Transports. Minderwertige Materialien oder schlechte Fertigungspraktiken können zu folgenden Problemen führen:
|
||||
- **Risse oder Absplitterungen:** Schwaches oder unbehandeltes Holz ist anfällig für Beschädigungen, insbesondere unter schweren Lasten oder rauer Handhabung.
|
||||
- **Verformungen:** Schlecht behandelte Materialien können sich verbiegen oder verformen, was die Trommel instabil macht.
|
||||
- **Locker sitzende oder fehlende Befestigungen:** Niedrigwertige Schrauben oder Nägel können versagen und dazu führen, dass die Trommeln in kritischen Momenten zusammenbrechen.
|
||||
- **Unregelmäßige Maße:** Schlecht kalibrierte Fertigung führt zu Trommeln, die nicht den Kabelanforderungen entsprechen, was den Transport und die Bereitstellung erschwert.
|
||||
|
||||
Die Investition in hochwertige Trommeln minimiert diese Risiken und spart Ihnen langfristig Zeit, Geld und Nerven.
|
||||
## Unser Engagement für die Qualität der Kabeltrommeln
|
||||
Bei KLZ machen wir keine Kompromisse, wenn es um die Qualität unserer Kabeltrommeln geht. Jede Trommel, die wir liefern, wird sorgfältig entworfen und gefertigt, um eine langanhaltende Leistung zu gewährleisten. So garantieren wir Exzellenz:
|
||||
- **Premium-Materialien** Wir verwenden nur hochwertiges Holz und verstärkte Komponenten, um die strukturelle Integrität auch unter anspruchsvollen Bedingungen zu gewährleisten.
|
||||
- **Wetterbeständige Konstruktion** Unsere Trommeln werden mit fortschrittlichen Beschichtungen und Oberflächenbehandlungen behandelt, die sie vor Feuchtigkeit, UV-Strahlung und Temperaturschwankungen schützen.
|
||||
- **Präzisionsengineering** Strenge Standards in der Fertigung sorgen dafür, dass unsere Trommeln maßgenau sind und perfekt für Kabel jeder Größe passen.
|
||||
- **Verstärkte Befestigungen** Wir legen Wert auf eine robuste Montage und verwenden hochfeste Nägel und Schrauben, die sich im Laufe der Zeit nicht lösen.
|
||||
- **Qualitätszertifizierte Lieferanten** Jede Trommel, die wir bereitstellen, stammt von Herstellern, die unsere strengen Qualitätsanforderungen erfüllen.
|
||||
- **Maßgeschneiderte Lösungen** Von kompakten Trommeln für leichtere Lasten bis hin zu massiven Modellen, die bis zu 7.600 kg bewältigen können, bieten wir für jedes Projekt die passende Lösung.
|
||||
- **Nachhaltigkeitsfokus** Wo immer möglich, integrieren wir recycelte und nachhaltige Materialien, ohne die Qualität zu beeinträchtigen.
|
||||
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Identifier / Number</th>
|
||||
<th>empty weight kg</th>
|
||||
<th>max. load kg</th>
|
||||
<th>Flange diameter mm</th>
|
||||
<th>Core diameter mm</th>
|
||||
<th>Core width mm</th>
|
||||
<th>Overall width mm</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Т-6</td>
|
||||
<td>30<span> kg</span></td>
|
||||
<td>250<span> kg</span></td>
|
||||
<td>630<span> mm</span></td>
|
||||
<td>315<span> mm</span></td>
|
||||
<td>315<span> mm</span></td>
|
||||
<td>415<span> mm</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Т-6,3</td>
|
||||
<td>30<span> kg</span></td>
|
||||
<td>250<span> kg</span></td>
|
||||
<td>630<span> mm</span></td>
|
||||
<td>315<span> mm</span></td>
|
||||
<td>315<span> mm</span></td>
|
||||
<td>415<span> mm</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Т-7</td>
|
||||
<td>30<span> kg</span></td>
|
||||
<td>250<span> kg</span></td>
|
||||
<td>710<span> mm</span></td>
|
||||
<td>334<span> mm</span></td>
|
||||
<td>400<span> mm</span></td>
|
||||
<td>520<span> mm</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Т-8</td>
|
||||
<td>40<span> kg</span></td>
|
||||
<td>400<span> kg</span></td>
|
||||
<td>800<span> mm</span></td>
|
||||
<td>400<span> mm</span></td>
|
||||
<td>400<span> mm</span></td>
|
||||
<td>520<span> mm</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Т-9</td>
|
||||
<td>47<span> kg</span></td>
|
||||
<td>750<span> kg</span></td>
|
||||
<td>900<span> mm</span></td>
|
||||
<td>450<span> mm</span></td>
|
||||
<td>560<span> mm</span></td>
|
||||
<td>690<span> mm</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>T-10</td>
|
||||
<td>57<span> kg</span></td>
|
||||
<td>1600<span> kg</span></td>
|
||||
<td>1000<span> mm</span></td>
|
||||
<td>545<span> mm</span></td>
|
||||
<td>500<span> mm</span></td>
|
||||
<td>600<span> mm</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>T-12</td>
|
||||
<td>90<span> kg</span></td>
|
||||
<td>1600<span> kg</span></td>
|
||||
<td>1220<span> mm</span></td>
|
||||
<td>650<span> mm</span></td>
|
||||
<td>500<span> mm</span></td>
|
||||
<td>600<span> mm</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>T-12</td>
|
||||
<td>140<span> kg</span></td>
|
||||
<td>1600<span> kg</span></td>
|
||||
<td>1220<span> mm</span></td>
|
||||
<td>650<span> mm</span></td>
|
||||
<td>710<span> mm</span></td>
|
||||
<td>810<span> mm</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>T-12</td>
|
||||
<td>150<span> kg</span></td>
|
||||
<td>1600<span> kg</span></td>
|
||||
<td>1220<span> mm</span></td>
|
||||
<td>650<span> mm</span></td>
|
||||
<td>650<span> mm</span></td>
|
||||
<td>780<span> mm</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>T-14</td>
|
||||
<td>146<span> kg</span></td>
|
||||
<td>1900<span> kg</span></td>
|
||||
<td>1400<span> mm</span></td>
|
||||
<td>750<span> mm</span></td>
|
||||
<td>710<span> mm</span></td>
|
||||
<td>830<span> mm</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>T-14</td>
|
||||
<td>200<span> kg</span></td>
|
||||
<td>1900<span> kg</span></td>
|
||||
<td>1400<span> mm</span></td>
|
||||
<td>750<span> mm</span></td>
|
||||
<td>670<span> mm</span></td>
|
||||
<td>780<span> mm</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>T-14</td>
|
||||
<td>250<span> kg</span></td>
|
||||
<td>1900<span> kg</span></td>
|
||||
<td>1400<span> mm</span></td>
|
||||
<td>750<span> mm</span></td>
|
||||
<td>670<span> mm</span></td>
|
||||
<td>780<span> mm</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Т-14</td>
|
||||
<td>200<span> kg</span></td>
|
||||
<td>2000<span> kg</span></td>
|
||||
<td>1400<span> mm</span></td>
|
||||
<td>750<span> mm</span></td>
|
||||
<td>884<span> mm</span></td>
|
||||
<td>1000<span> mm</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>T-16</td>
|
||||
<td>260<span> kg</span></td>
|
||||
<td>2500<span> kg</span></td>
|
||||
<td>1600<span> mm</span></td>
|
||||
<td>800<span> mm</span></td>
|
||||
<td>800<span> mm</span></td>
|
||||
<td>924<span> mm</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>T-18</td>
|
||||
<td>320<span> kg</span></td>
|
||||
<td>3800<span> kg</span></td>
|
||||
<td>1800<span> mm</span></td>
|
||||
<td>1120<span> mm</span></td>
|
||||
<td>900<span> mm</span></td>
|
||||
<td>1068<span> mm</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>T-18</td>
|
||||
<td>330<span> kg</span></td>
|
||||
<td>3800<span> kg</span></td>
|
||||
<td>1800<span> mm</span></td>
|
||||
<td>900<span> mm</span></td>
|
||||
<td>900<span> mm</span></td>
|
||||
<td>1068<span> mm</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>T-20</td>
|
||||
<td>340<span> kg</span></td>
|
||||
<td>5000<span> kg</span></td>
|
||||
<td>2000<span> mm</span></td>
|
||||
<td>1220<span> mm</span></td>
|
||||
<td>1000<span> mm</span></td>
|
||||
<td>1188<span> mm</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>T-20</td>
|
||||
<td>380<span> kg</span></td>
|
||||
<td>5000<span> kg</span></td>
|
||||
<td>2000<span> mm</span></td>
|
||||
<td>1000<span> mm</span></td>
|
||||
<td>900<span> mm</span></td>
|
||||
<td>1248<span> mm</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>T-22</td>
|
||||
<td>550<span> kg</span></td>
|
||||
<td>6000<span> kg</span></td>
|
||||
<td>2200<span> mm</span></td>
|
||||
<td>1320<span> mm</span></td>
|
||||
<td>980<span> mm</span></td>
|
||||
<td>1167<span> mm</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>T-22</td>
|
||||
<td>716<span> kg</span></td>
|
||||
<td>6000<span> kg</span></td>
|
||||
<td>2200<span> mm</span></td>
|
||||
<td>1020<span> mm</span></td>
|
||||
<td>1370<span> mm</span></td>
|
||||
<td>1590<span> mm</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>T-22</td>
|
||||
<td>800<span> kg</span></td>
|
||||
<td>6000<span> kg</span></td>
|
||||
<td>2200<span> mm</span></td>
|
||||
<td>1320<span> mm</span></td>
|
||||
<td>1100<span> mm</span></td>
|
||||
<td>1340<span> mm</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>T-22</td>
|
||||
<td>850<span> kg</span></td>
|
||||
<td>6000<span> kg</span></td>
|
||||
<td>2200<span> mm</span></td>
|
||||
<td>1320<span> mm</span></td>
|
||||
<td>1040<span> mm</span></td>
|
||||
<td>1340<span> mm</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Т-24</td>
|
||||
<td>450<span> kg</span></td>
|
||||
<td>4000<span> kg</span></td>
|
||||
<td>2390<span> mm</span></td>
|
||||
<td>1020<span> mm</span></td>
|
||||
<td>1000<span> mm</span></td>
|
||||
<td>1150<span> mm</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Т-24</td>
|
||||
<td>800<span> kg</span></td>
|
||||
<td>5000<span> kg</span></td>
|
||||
<td>2400<span> mm</span></td>
|
||||
<td>1020<span> mm</span></td>
|
||||
<td>1320<span> mm</span></td>
|
||||
<td>1600<span> mm</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Т-25</td>
|
||||
<td>900<span> kg</span></td>
|
||||
<td>7600<span> kg</span></td>
|
||||
<td>2500<span> mm</span></td>
|
||||
<td>1500<span> mm</span></td>
|
||||
<td>1300<span> mm</span></td>
|
||||
<td>1560<span> mm</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Т-25</td>
|
||||
<td>900<span> kg</span></td>
|
||||
<td>7600<span> kg</span></td>
|
||||
<td>2500<span> mm</span></td>
|
||||
<td>1020<span> mm</span></td>
|
||||
<td>1320<span> mm</span></td>
|
||||
<td>1600<span> mm</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Т-25</td>
|
||||
<td>950<span> kg</span></td>
|
||||
<td>7600<span> kg</span></td>
|
||||
<td>2500<span> mm</span></td>
|
||||
<td>1500<span> mm</span></td>
|
||||
<td>1210<span> mm</span></td>
|
||||
<td>1560<span> mm</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Т-25</td>
|
||||
<td>950<span> kg</span></td>
|
||||
<td>7600<span> kg</span></td>
|
||||
<td>2500<span> mm</span></td>
|
||||
<td>1500<span> mm</span></td>
|
||||
<td>1210<span> mm</span></td>
|
||||
<td>1560<span> mm</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Т-26</td>
|
||||
<td>1350<span> kg</span></td>
|
||||
<td>7600<span> kg</span></td>
|
||||
<td>2650<span> mm</span></td>
|
||||
<td>1500<span> mm</span></td>
|
||||
<td>1400<span> mm</span></td>
|
||||
<td>1680<span> mm</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Т-26</td>
|
||||
<td>1000<span> kg</span></td>
|
||||
<td>7600<span> kg</span></td>
|
||||
<td>2600<span> mm</span></td>
|
||||
<td>1300<span> mm</span></td>
|
||||
<td>1320<span> mm</span></td>
|
||||
<td>1600<span> mm</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Т-26</td>
|
||||
<td>1350<span> kg</span></td>
|
||||
<td>7600<span> kg</span></td>
|
||||
<td>2650<span> mm</span></td>
|
||||
<td>1500<span> mm</span></td>
|
||||
<td>1310<span> mm</span></td>
|
||||
<td>1680<span> mm</span></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
## Beste Praktiken zur Erhaltung der Qualität von Kabeltrommeln
|
||||
Selbst die besten Trommeln erfordern eine ordnungsgemäße Handhabung, um ihre Integrität zu bewahren. Hier sind einige Tipps, um Ihre Kabeltrommeln in einwandfreiem Zustand zu halten:
|
||||
- **Regelmäßig inspizieren:** Überprüfen Sie vor der Nutzung auf Anzeichen von Abnutzung, Rissen oder lockeren Komponenten.
|
||||
- **Intelligent lagern:** Stellen Sie die Trommeln auf ebenem, trockenem Boden ab, um Verformung oder Feuchtigkeitsaufnahme zu vermeiden.
|
||||
- **Mit Sorgfalt handhaben:** Schulen Sie das Personal, Gabelstapler und andere Geräte richtig zu benutzen, um versehentliche Schäden zu verhindern.
|
||||
- **Während der Lagerung rotieren:** Das periodische Drehen der Trommeln verhindert Verformungen und erhält die Rundheit des Kabels.
|
||||
@@ -1,82 +0,0 @@
|
||||
---
|
||||
title: 'Klimaneutral bis 2050? Was wir tun müssen, um das Ziel zu erreichen'
|
||||
date: '2025-01-20T12:30:14'
|
||||
featuredImage: '/uploads/2025/01/business-planning-hand-using-laptop-for-working-te-2024-11-01-21-25-44-utc-scaled.webp'
|
||||
locale: de
|
||||
category: Kabel Technologie
|
||||
---
|
||||
# Klimaneutral bis 2050? Was wir tun müssen, um das Ziel zu erreichen
|
||||
## TL;DR
|
||||
Um bis 2050 klimaneutral zu werden, müssen wir erneuerbare Energien massiv ausbauen, die Energieeffizienz steigern und eine nachhaltige Infrastruktur schaffen. Politische Entscheidungen, wirtschaftliche Innovationen und die Unterstützung der Gesellschaft sind essenziell. Nur durch globale Zusammenarbeit können wir die Klimakrise bewältigen.
|
||||
## Warum Klimaneutralität unverzichtbar ist
|
||||
Klimaneutralität bedeutet, dass wir nicht mehr Treibhausgase in die Atmosphäre ausstoßen, als wir durch natürliche oder technische Prozesse binden können. Dieses Ziel ist nicht nur ambitioniert, sondern essenziell. Ohne drastische Maßnahmen könnten globale Temperaturen bis zum Ende des Jahrhunderts um mehr als 2 °C steigen – mit katastrophalen Folgen für Mensch und Natur.
|
||||
Die Europäische Union strebt mit dem [Grünen Deal](https://www.europarl.europa.eu/topics/de/article/20190926STO62270/was-versteht-man-unter-klimaneutralitat?) an, bis 2050 der erste klimaneutrale Kontinent zu werden. Dieses Ziel wurde mit der Annahme des Klimagesetzes durch das Europäische Parlament und den Rat im Jahr 2021 rechtsverbindlich.
|
||||
Die Frage lautet also nicht, **ob** wir handeln, sondern **wie schnell** und **wie entschlossen**. Dabei geht es längst nicht mehr nur um den Umstieg auf erneuerbare Energien. Es braucht eine Transformation in allen Bereichen – von der Energieversorgung über die Industrie bis hin zu unserem Lebensstil.
|
||||
🌍 Klimaneutralität sichert eine lebenswerte Zukunft und schützt unseren Planeten nachhaltig.
|
||||
## Die aktuellen Herausforderungen auf dem Weg zur Klimaneutralität
|
||||
Der Weg zur Klimaneutralität ist mit Stolpersteinen gepflastert. Politische, wirtschaftliche und technologische Hürden bremsen den Fortschritt.
|
||||
Politische und wirtschaftliche Hürden<br />
|
||||
Eines der größten Probleme ist die fehlende globale Einigkeit. Während einige Länder ambitionierte Klimaziele verfolgen, investieren andere weiterhin massiv in fossile Energien. Besonders in ressourcenabhängigen Volkswirtschaften wird der Umstieg auf erneuerbare Energien oft als Risiko für wirtschaftliches Wachstum gesehen.
|
||||
Hinzu kommt die Finanzierung der Transformation. Es braucht Billionen, um Infrastruktur zu modernisieren, Technologien zu entwickeln und den Übergang zu erneuerbaren Energien zu ermöglichen. Obwohl viele Länder Förderprogramme anbieten, reicht das derzeitige Engagement bei weitem nicht aus.
|
||||
Technologische Grenzen und Möglichkeiten<br />
|
||||
Technologie kann uns retten – aber nur, wenn wir sie richtig einsetzen. Derzeit fehlen uns effiziente Lösungen für Energie-Speicherung und Transport. Batterien sind teuer, und Netzausfälle bleiben ein großes Problem. Gleichzeitig eröffnen sich durch Innovationen neue Chancen: Intelligente Stromnetze und fortschrittliche Recyclingverfahren können den Wandel entscheidend beschleunigen.
|
||||
🚧 Der Weg zur Klimaneutralität ist machbar, doch wir müssen politische, wirtschaftliche und technologische Hürden gemeinsam überwinden.
|
||||
## Die Schlüsselrolle erneuerbarer Energien
|
||||
Erneuerbare Energien sind das Herzstück der Klimaneutralität. Sie bieten saubere, unerschöpfliche Energiequellen und reduzieren unsere Abhängigkeit von fossilen Brennstoffen.
|
||||
<h4>Warum erneuerbare Energien entscheidend sind</h4>
|
||||
- Unerschöpfliche Ressourcen: Sonne, Wind und Wasser gehen nie aus.
|
||||
- Keine direkten Emissionen: Im Gegensatz zu Kohle oder Öl verursachen sie keinen CO₂-Ausstoß.
|
||||
- Regionale Wertschöpfung: Erneuerbare Energien fördern lokale Wirtschaftskreisläufe.
|
||||
|
||||
<h4>Ausbau von Wind- und Solarenergie</h4>
|
||||
Ein zentraler Schritt ist der massive Ausbau von Wind- und Solarparks. Hier gibt es jedoch Herausforderungen:
|
||||
- Langwierige Genehmigungsverfahren, die Projekte verzögern.
|
||||
- Widerstand in der Bevölkerung gegen neue Anlagen.
|
||||
- Die Notwendigkeit, große Speicherkapazitäten für überschüssige Energie zu schaffen.
|
||||
|
||||
<h4>Bedeutung von intelligenten Stromnetzen</h4>
|
||||
Die Energieversorgung wird dezentraler, und das stellt neue Anforderungen an die Netze. Smart Grids ermöglichen:
|
||||
- Die Integration von **Wind- **und** Solarenergie**, auch bei schwankender Produktion.
|
||||
- Eine **effiziente Verteilung** der Energie zwischen Produzenten und Verbrauchern.
|
||||
- Mehr Stabilität, insbesondere bei hoher Nachfrage.
|
||||
|
||||
🌞 Erneuerbare Energien wie Wind und Sonne sind die Basis für eine grüne Energiezukunft – mit Smart Grids klappt auch die Verteilung.
|
||||
## Energieeffizienz als Gamechanger
|
||||
Energieeffizienz ist einer der einfachsten und gleichzeitig effektivsten Hebel, um Emissionen zu reduzieren. Weniger Energieverbrauch bedeutet automatisch weniger CO₂-Ausstoß – ohne dass wir auf Komfort verzichten müssen.
|
||||
<h4>Was macht Energieeffizienz so wichtig?</h4>
|
||||
- Es spart Ressourcen und Kosten.
|
||||
- Es reduziert die Belastung von Stromnetzen.
|
||||
- Es bringt kurzfristige Erfolge, während der Ausbau erneuerbarer Energien länger dauert.
|
||||
|
||||
<h4>Beispiele für energieeffiziente Maßnahmen</h4>
|
||||
- **Gebäudesanierung**: Die Dämmung von Wänden und Dächern senkt den Energiebedarf um bis zu 30 %.
|
||||
- **Moderne Technologien**: Energiesparende Geräte und smarte Systeme, die den Verbrauch optimieren.
|
||||
- **Optimierung in der Industrie**: Produktionsverfahren, die weniger Energie benötigen, und eine bessere Rückgewinnung von Abwärme.
|
||||
|
||||
💡 Mit cleverem Energiesparen und moderner Technologie können wir große Schritte Richtung Klimaneutralität machen.
|
||||
## Nachhaltige Infrastruktur: Ein Muss für die Energiewende
|
||||
Die Energiewende steht und fällt mit der Infrastruktur. Von der Stromerzeugung bis zur Verteilung muss alles auf Nachhaltigkeit ausgelegt sein.
|
||||
<h4>Die Rolle der Kabelindustrie</h4>
|
||||
Kabel sind die Lebensadern der Energiewende. Sie transportieren Strom von Wind- und Solarparks dorthin, wo er gebraucht wird. Nachhaltige Lösungen spielen dabei eine zentrale Rolle:
|
||||
- **Recycling von Kabelmaterialien**: Wiederverwendbare Rohstoffe reduzieren den ökologischen Fußabdruck.
|
||||
- **Langlebige Produkte**: Hochwertige Kabel minimieren den Wartungsaufwand und erhöhen die Effizienz.
|
||||
- **Kostenlose Trommelrückgabe**: Durch Programme wie unser Trommel-Rückgabeservice wird unnötiger Abfall vermieden.
|
||||
|
||||
Auch der Netzausbau ist entscheidend. Ohne leistungsfähige Netze wird der Transport von erneuerbarer Energie ins Stocken geraten.
|
||||
🔗 Grüne Kabel und recycelte Materialien helfen, die Energiewende umweltfreundlich und zukunftssicher zu gestalten.
|
||||
## Zusammenarbeit: Gemeinsam zum Ziel
|
||||
Die Klimakrise lässt sich nur lösen, wenn **Politik**, **Wirtschaft** und **Gesellschaft** zusammenarbeiten. Jede dieser Gruppen trägt eine zentrale Verantwortung.
|
||||
Die Politik muss klare Rahmenbedingungen schaffen: **verbindliche Klimaziele**, **CO₂-Preise** und **Förderprogramme** für grüne Technologien. Nur so können Unternehmen und Privatpersonen motiviert werden, aktiv zu handeln.
|
||||
Die Wirtschaft spielt eine Schlüsselrolle durch **nachhaltige Geschäftsmodelle**, **Investitionen **in** grüne Technologien** und die Umstellung auf **klimafreundliche Produktionsprozesse**. Innovationen können hier den Unterschied machen.
|
||||
Auch die Gesellschaft trägt Verantwortung. **Bewusster Konsum**, **nachhaltige Mobilität** und Unterstützung für **Klimaschutzinitiativen** sind entscheidend. Jede alltägliche Entscheidung zählt.
|
||||
Gleichzeitig braucht es **internationale Kooperation**, um den Klimaschutz global voranzutreiben. **Technologietransfer**, **Finanzhilfen** und gemeinsame Standards sind unerlässlich.
|
||||
Klimaschutz ist Teamarbeit. Nur gemeinsam können wir eine lebenswerte Zukunft schaffen.
|
||||
🤝 Wenn Politik, Wirtschaft und Gesellschaft zusammenarbeiten, wird Klimaschutz eine globale Erfolgsgeschichte.
|
||||
## Fazit: Handeln statt warten – die Uhr tickt
|
||||
2050 mag auf den ersten Blick weit entfernt wirken, doch die Zeit, um den Klimawandel zu bremsen, läuft uns davon. Klimaneutralität ist nicht nur eine Vision, sondern eine Notwendigkeit.
|
||||
Um das Ziel zu erreichen, braucht es:
|
||||
- Mutige Entscheidungen: Von der Politik, Unternehmen und jedem Einzelnen.
|
||||
- Innovative Technologien: Für eine saubere Energieversorgung und effizientere Prozesse.
|
||||
- Zusammenhalt und Entschlossenheit: Nur gemeinsam können wir die Klimakrise bewältigen.
|
||||
|
||||
Die Zukunft liegt in unseren Händen – packen wir es an!
|
||||
@@ -1,24 +0,0 @@
|
||||
---
|
||||
title: KLZ im Adressbuch der Windenergie 2025
|
||||
date: '2025-01-15T13:30:43'
|
||||
featuredImage: /uploads/2025/01/klz-directory-2-scaled.webp
|
||||
locale: de
|
||||
category: Kabel Technologie
|
||||
---
|
||||
# KLZ im Adressbuch der Windenergie 2025
|
||||
## <span>Was ist das Adressbuch der Windenergie?</span>
|
||||
Das <em>Adressbuch der Windenergie 2025</em> ist der **ultimative Referenzführer für die Windenergiebranche**. Auf über 200 Seiten bietet es Einblicke, Firmenverzeichnisse und Branchenkontakte – eine wertvolle Ressource für Planer, Entwickler und Entscheidungsträger, um mit vertrauenswürdigen Lieferanten und Dienstleistern in Kontakt zu treten. Es deckt alles ab, von Turbinenherstellern bis hin zu Zertifizierungsunternehmen, und ist ein kompakter Wissensschatz, sowohl in gedruckter Form als auch online.
|
||||
Nun ist KLZ Teil dieses vertrauenswürdigen Netzwerks, was es Fachleuten der Branche noch einfacher macht, uns zu finden.
|
||||
Erneuerbare Energien – Das Magazin für die Energiewende mit Wind-, Solar- und Bioenergie<br />
|
||||
Heft 01-2025
|
||||
## Warum wir aufgenommen wurden
|
||||
Unsere Mittelspannungskabel, wie das NA2XS(F)2Y, sind in Windparks in ganz Deutschland und den Niederlanden unverzichtbar geworden. Diese Kabel spielen eine entscheidende Rolle bei der Übertragung von Strom von den Windturbinen zu den Umspannwerken und sorgen dafür, dass die Energie selbst unter den anspruchsvollsten Bedingungen sicher und zuverlässig fließt.
|
||||
Was uns auszeichnet, ist mehr als nur die Kabel:
|
||||
- **Logistik für den Windsektor:** Unser strategisches Hub gewährleistet schnelle und zuverlässige Lieferungen, selbst in die abgelegensten Windparks.
|
||||
- **Nachhaltigkeit in der Praxis:** Vom kostenlosen Drum-Rückgabeservice bis hin zur Verwendung von sekundären Rohmaterialien tragen wir zur Verringerung der Umweltbelastung von Energieprojekten bei.
|
||||
- **Expertise und Unterstützung:** Wir bieten Unterstützung von der Planung bis zur Installation und stellen sicher, dass Projekte reibungslos von Anfang bis Ende verlaufen.
|
||||
|
||||
## Warum es wichtig ist
|
||||
Die Aufnahme im <em>Adressbuch der Windenergie 2025</em> ist ein klares Signal für die Branche: KLZ liefert Qualität, Zuverlässigkeit und Nachhaltigkeit. Für unsere Kunden bedeutet es eine einfache Möglichkeit, mit einem vertrauenswürdigen Partner in Kontakt zu treten, der die einzigartigen Anforderungen von Projekten im Bereich erneuerbare Energien versteht.
|
||||
Wenn Sie durch das Adressbuch blättern, finden Sie KLZ unter den Unternehmen, die mit innovativen Lösungen und zuverlässigem Service zu einer grüneren Zukunft beitragen.
|
||||
Auf eine erfolgreiche Zusammenarbeit, die Unterstützung sauberer Energie und den Fortschritt – Kabel für Kabel!
|
||||
@@ -1,70 +0,0 @@
|
||||
---
|
||||
title: KLZ wächst weiter – neue Stärke im Bereich Financial & Sales
|
||||
date: '2025-10-06T13:26:31'
|
||||
featuredImage: /uploads/2025/10/1759325528650.webp
|
||||
locale: de
|
||||
category: Kabel Technologie
|
||||
---
|
||||
# KLZ wächst weiter – neue Stärke im Bereich Financial & Sales
|
||||
## Wachstum braucht Struktur
|
||||
Wachstum klingt gut – mehr Projekte, mehr Kunden, mehr Umsatz.<br />Aber echtes, nachhaltiges Wachstum braucht mehr als nur Tempo: Es braucht **Transparenz, Planung und Kontrolle**.
|
||||
Damit aus ehrgeizigen Zielen kein Blindflug wird, haben wir entschieden, uns gezielt zu verstärken. Denn je größer die Projekte werden, desto wichtiger wird die Fähigkeit, Entwicklungen frühzeitig zu erkennen und gezielt zu steuern.
|
||||
|
||||
<TechnicalGrid
|
||||
title="Warum wir unser Controlling ausbauen"
|
||||
items={[
|
||||
{ label: "Mehr Projekte im In- und Ausland", value: "Klare Zahlen und belastbare Prognosen" },
|
||||
{ label: "Steigende Anforderungen im Vertrieb", value: "Bessere Übersicht über Trends und Margen" },
|
||||
{ label: "Komplexere Prozesse", value: "Schnellere, fundierte Entscheidungen" },
|
||||
{ label: "Nachhaltiges Wachstum", value: "Stabilität statt Zufall" }
|
||||
]}
|
||||
/>
|
||||
|
||||
Kurz gesagt: Wir wollen nicht einfach nur wachsen – wir wollen verstehen, <em>wie</em> wir wachsen.<br />Deshalb setzen wir künftig noch stärker auf **qualitatives Controlling** und freuen uns über Unterstützung, die genau das möglich macht.
|
||||
## Neue Stärke im Team
|
||||
Mit [**Julia Havasi**](https://www.linkedin.com/in/julia-havasi-18556b233/) haben wir genau die Verstärkung gefunden, die wir gesucht haben: analytisch stark, strukturiert im Denken und mit einem guten Gespür für die Dynamik zwischen Zahlen und Menschen.
|
||||
Als **Senior Financial & Sales Controller** übernimmt Julia künftig die Verantwortung für unser Finanz- und Vertriebscontrolling. Ihr Ziel: **mehr Klarheit, mehr Weitblick, mehr Substanz** in jeder Entscheidung.
|
||||
|
||||
<TechnicalGrid
|
||||
title="Aufgabenbereiche & Ziele"
|
||||
items={[
|
||||
{ label: "Finanzcontrolling", value: "Saubere Zahlen, klare Strukturen und nachvollziehbare Reports" },
|
||||
{ label: "Sales Controlling", value: "Vertriebszahlen analysieren, Potenziale erkennen, Trends ableiten" },
|
||||
{ label: "Prognosen & Analysen", value: "Frühzeitige Einschätzung von Marktbewegungen und Investitionschancen" },
|
||||
{ label: "Reporting & Kommunikation", value: "Komplexe Daten so aufbereiten, dass sie jeder versteht – schnell und präzise" }
|
||||
]}
|
||||
/>
|
||||
|
||||
Julia wird damit eine zentrale Rolle in der weiteren Entwicklung von KLZ spielen – als Schnittstelle zwischen **Management, Vertrieb und Strategie**.<br />Oder, um es etwas lockerer zu sagen: Sie sorgt dafür, dass wir nicht nur wissen, **wo wir stehen**, sondern auch **wohin wir gehen**.
|
||||
## Erfahrung, die verbindet
|
||||
Zahlenverständnis trifft Praxiserfahrung.<br />Mit über 13 Jahren Erfahrung im Controlling und Vertrieb bringt [**Julia Havasi**](https://www.linkedin.com/in/julia-havasi-18556b233/) das ideale Zusammenspiel aus analytischer Präzision und unternehmerischem Denken mit.
|
||||
Ihr beruflicher Weg:<br />Nach ihrer Ausbildung zur **Groß- und Außenhandelskauffrau** sammelte sie früh Einblicke in betriebswirtschaftliche Abläufe und entwickelte ein Gespür für klare Prozesse.<br />Bei der **PETER HAHN GmbH** stieg sie Schritt für Schritt auf – von der internationalen Vertriebsassistenz bis zur **Marketing Controlling Managerin** im Bereich Sales & Marketing. Dort war sie verantwortlich für die Analyse von Kennzahlen, Budgetplanung und Marktbeobachtung und lernte, Zahlen als Grundlage für strategische Entscheidungen zu nutzen.<br />Anschließend wechselte sie zur **GOLDNER GmbH (Madeleine)**, wo sie als **Specialist Planning & Analytics** die Themen Planung, Forecasting und Reporting weiter vertiefte. Ihre Arbeit dort war geprägt von strukturierten Prozessen und enger Abstimmung mit Management und Vertrieb.
|
||||
Ihre Stärken:
|
||||
- **Analytisches Denken:** Sie erkennt Zusammenhänge schnell und leitet daraus konkrete Handlungsempfehlungen ab.
|
||||
- **Struktur und Genauigkeit:** Sie sorgt für saubere Prozesse und nachvollziehbare Datenflüsse.
|
||||
- **Strategisches Gespür:** Sie versteht, wie operative Zahlen langfristige Entwicklungen beeinflussen.
|
||||
- **Klare Kommunikation:** Komplexe Inhalte bringt sie verständlich auf den Punkt – ohne Zahlenchaos.
|
||||
- **Praxisorientierung:** Sie denkt lösungsorientiert und immer mit Blick auf den Nutzen fürs Unternehmen.
|
||||
|
||||
Mit dieser Mischung aus Erfahrung, Struktur und Kommunikationsstärke ist Julia genau die richtige, um KLZ beim weiteren Wachstum Richtung Zukunft zu begleiten.
|
||||
## Zahlen mit Zukunftsblick
|
||||
Zahlen sind für uns kein Selbstzweck – sie sind das Fundament jeder guten Entscheidung.<br />Mit Julia Havasi bekommt das Thema Controlling bei KLZ eine neue Tiefe: Weg vom reinen Blick in den Rückspiegel, hin zu einer **vorausschauenden Analyse**, die Chancen und Risiken früh sichtbar macht.
|
||||
Ihr Fokus liegt darauf, **Zahlen in Zusammenhänge zu setzen**:<br />Wie entwickeln sich Kosten und Margen im Vertrieb? Welche Trends zeichnen sich im Markt ab? Und wo lohnt es sich, gezielt zu investieren, anstatt nur zu reagieren?
|
||||
Durch ihre Erfahrung im Bereich **Planning & Analytics** schafft Julia den Spagat zwischen Detailtiefe und Übersicht. Sie sorgt dafür, dass Informationen **klar, verständlich und entscheidungsrelevant** aufbereitet werden – eine Grundlage, auf der sich Strategien verlässlich planen lassen.
|
||||
Für uns bedeutet das:
|
||||
- Wir treffen Entscheidungen auf Basis belastbarer Daten, nicht aus dem Bauch heraus.
|
||||
- Wir erkennen Marktbewegungen, bevor sie zum Risiko werden.
|
||||
- Wir steuern unser Wachstum gezielter und effizienter.
|
||||
|
||||
So wird aus Controlling nicht einfach Kontrolle – sondern **Orientierung** für die Zukunft.
|
||||
## Stabil wachsen, strategisch handeln
|
||||
Wachstum ist kein Selbstläufer – es braucht Richtung, Kontrolle und klare Ziele.<br />Bei KLZ steht deshalb nicht das schnelle Mehr im Vordergrund, sondern das **nachhaltige Besser**. Wir wollen verstehen, wo Wachstum entsteht, warum es entsteht und wie wir es gezielt fördern können.
|
||||
Genau hier kommt Julias Erfahrung ins Spiel.<br />Mit ihrem strukturierten Blick auf Zahlen und Prozessen schafft sie Transparenz in Bereichen, die im Tagesgeschäft oft unsichtbar bleiben. Sie liefert die Grundlage, um Prioritäten richtig zu setzen, Ressourcen gezielt einzusetzen und Chancen zu erkennen, bevor sie an uns vorbeiziehen.
|
||||
So wird Controlling bei KLZ nicht als Bremsklotz verstanden, sondern als **strategisches Werkzeug**, das Wachstum ermöglicht – stabil, nachvollziehbar und langfristig erfolgreich.
|
||||
Denn wer seine Zahlen versteht, steuert nicht nur besser, sondern bewegt sich auch sicherer in einem Markt, der sich ständig verändert.
|
||||
## Blick nach vorn
|
||||
Mit der Verstärkung durch **Julia Havasi** geht KLZ den nächsten logischen Schritt: weg vom rein operativen Blick auf Zahlen – hin zu einer **strategischen Steuerung**, die Wachstum kontrolliert, messbar und nachhaltig macht.
|
||||
Julias Erfahrung im Financial & Sales Controlling schafft die Basis, um Entwicklungen frühzeitig zu erkennen und Entscheidungen mit Klarheit zu treffen. Sie sorgt dafür, dass wir die richtigen Fragen stellen, bevor wir handeln:<br />Wo entsteht Wachstum tatsächlich? Welche Bereiche liefern langfristige Stabilität? Und wo besteht Anpassungsbedarf, bevor er zum Problem wird?
|
||||
Gerade in einer Branche, die sich ständig verändert, ist dieser Blick nach vorn entscheidend.<br />Denn nachhaltiges Wachstum bedeutet für uns nicht, ständig größer zu werden, sondern **besser aufgestellt zu sein** – mit klaren Strukturen, belastbaren Daten und einem Verständnis für die Dynamik unserer Märkte.
|
||||
Mit Julia gewinnen wir eine Kollegin, die diesen Anspruch teilt. Sie bringt Struktur in komplexe Abläufe, übersetzt Zahlen in Erkenntnisse und schafft damit Orientierung – nicht nur für das Management, sondern für das ganze Team.
|
||||
So bleibt KLZ auch in Zukunft das, was uns stark macht: **schnell, verlässlich und immer einen Schritt voraus.**
|
||||
@@ -1,108 +0,0 @@
|
||||
---
|
||||
title: 'Kupfer oder Aluminiumkabel im Windpark? Kostenvergleich für Erdkabel und Netzanschluss'
|
||||
date: '2025-02-24T08:30:24'
|
||||
featuredImage: /uploads/2024/11/medium-voltage-category.webp
|
||||
locale: de
|
||||
category: Kabel Technologie
|
||||
---
|
||||
# Kupfer oder Aluminiumkabel im Windpark? Kostenvergleich für Erdkabel und Netzanschluss
|
||||
Gerade bei Kabeln wie **NA2XS(F)2Y** oder **NAYY **für** Windkraftanlagen** entscheidet die Materialwahl über Kosten, Leistung und Lebensdauer. Kupfer überzeugt durch eine hohe elektrische Leitfähigkeit, während Aluminium mit niedrigen Kosten und geringem Gewicht punktet. Doch welches Material ist **technisch **und** wirtschaftlich** langfristig die bessere Wahl? Dieser Artikel liefert eine detaillierte Analyse der Vor- und Nachteile beider Optionen.
|
||||
# Elektrische und mechanische Eigenschaften im Vergleich
|
||||
Kupfer ist seit Jahrzehnten das bevorzugte Material für elektrische Leitungen. Es besitzt eine hohe Leitfähigkeit und eine ausgezeichnete mechanische Stabilität. Aluminium hingegen ist deutlich leichter, hat aber eine geringere elektrische Leitfähigkeit. Das bedeutet, dass Aluminiumkabel für die gleiche Stromübertragung einen größeren Querschnitt benötigen.
|
||||
|
||||
<ComparisonGrid
|
||||
title="Vergleich der Eigenschaften"
|
||||
leftLabel="Kupfer"
|
||||
rightLabel="Aluminium"
|
||||
items={[
|
||||
{ label: "Elektrische Leitfähigkeit", leftValue: "58 MS/m", rightValue: "35 MS/m" },
|
||||
{ label: "Dichte (g/cm³)", leftValue: "8,96", rightValue: "2,70" },
|
||||
{ label: "Korrosionsbeständigkeit", leftValue: "Sehr hoch", rightValue: "Mittel (Oxidbildung)" },
|
||||
{ label: "Mechanische Festigkeit", leftValue: "Hoch", rightValue: "Mittel" },
|
||||
{ label: "Gewicht", leftValue: "Hoch", rightValue: "Gering" },
|
||||
{ label: "Preis pro Tonne", leftValue: "8.000 – 9.000 €", rightValue: "2.300 – 2.500 €" }
|
||||
]}
|
||||
/>
|
||||
|
||||
Aluminium kann zwar durch seine Gewichtsersparnis bei Transport und Installation Vorteile bieten, benötigt aber größere Querschnitte, um die gleiche Leistung zu übertragen. Dies kann sich auf die Platzanforderungen in Kabeltrassen und die mechanische Stabilität auswirken. Zudem neigt Aluminium stärker zur Oxidation, was zu Kontaktproblemen führen kann, während Kupfer seine Leitfähigkeit über lange Zeiträume ohne große Qualitätseinbußen behält. Besonders in feuchten oder salzhaltigen Umgebungen, wie Offshore-Windparks, kann dies ein entscheidender Faktor sein.
|
||||
# Kosten: Anschaffung, Installation und Betrieb
|
||||
## Materialkosten
|
||||
Der größte Vorteil von Aluminium liegt in den Anschaffungskosten. Während Kupferpreise starken Schwankungen unterliegen, bleibt Aluminium relativ stabil.
|
||||
Im direkten Vergleich schneiden Aluminiumkabel wie **NA2XS(F)2Y** bei langen Verlegewegen und großen **Stromtrassen** wirtschaftlich oft besser ab – trotz ihrer geringeren Leitfähigkeit gegenüber Kupfer.
|
||||
Kosten pro Tonne (Stand 2024):
|
||||
- Kupfer: 8.000 – 9.000 €
|
||||
- Aluminium: 2.300 – 2.500 €
|
||||
|
||||
Bei langen Kabeltrassen macht dieser Preisunterschied eine erhebliche Summe aus.
|
||||
## Installationsaufwand
|
||||
- Kupferkabel sind schwerer, was Transport und Verlegung aufwendiger macht.
|
||||
- Aluminiumkabel sind leichter, was Montage und Logistik vereinfacht.
|
||||
|
||||
Gerade bei Offshore-Windparks oder schwer zugänglichen Standorten kann Aluminium daher große Vorteile bieten.
|
||||
## Betriebskosten und Energieverluste
|
||||
- Kupferkabel haben aufgrund ihrer besseren Leitfähigkeit geringere Übertragungsverluste.
|
||||
- Aluminiumkabel benötigen größere Querschnitte, um die gleiche Leistung zu übertragen, was die Kosten für Trassenbau und Material erhöht.
|
||||
|
||||
Fazit: Aluminium spart bei der Anschaffung und Installation, kann aber durch höhere Energieverluste langfristig teurer werden.
|
||||
# Lebensdauer und Wartung
|
||||
Ein weiterer entscheidender Faktor ist die Beständigkeit der Materialien.
|
||||
## Korrosionsverhalten
|
||||
- Kupfer ist sehr widerstandsfähig und neigt kaum zur Oxidation.
|
||||
- Aluminium bildet eine Oxidschicht, die die elektrischen Kontakte verschlechtern kann.
|
||||
|
||||
Besonders in feuchten oder salzhaltigen Umgebungen, wie Offshore-Windparks, kann Aluminium problematisch werden.
|
||||
## Mechanische Belastbarkeit
|
||||
- Kupferkabel sind stabiler und weniger anfällig für Materialermüdung.
|
||||
- Aluminium ist weicher und erfordert spezielle Verbindungstechniken, um langfristig zuverlässig zu funktionieren.
|
||||
|
||||
## Wartungsaufwand
|
||||
- Kupferverbindungen bleiben über Jahrzehnte stabil.
|
||||
- Aluminiumverbindungen müssen regelmäßig überprüft werden, um Kontaktprobleme zu vermeiden.
|
||||
|
||||
Fazit: Kupfer hält länger und benötigt weniger Wartung. Aluminium kann langfristig höhere Folgekosten verursachen.
|
||||
<blockquote>
|
||||
Langlebigkeit entscheidet: Während Kupfer jahrzehntelang wartungsfrei bleibt, erfordert Aluminium regelmäßige Kontrollen, um Leistungseinbußen zu vermeiden.
|
||||
</blockquote>
|
||||
# Umweltfreundlichkeit und Nachhaltigkeit
|
||||
Die Frage der Umweltverträglichkeit spielt in der modernen Energiewirtschaft eine zunehmend wichtige Rolle. Nachhaltigkeit beginnt nicht erst beim Betrieb eines Windparks, sondern bereits bei der Wahl der Materialien für dessen Infrastruktur. Dabei unterscheiden sich Kupfer und Aluminium nicht nur in ihrer Herstellung, sondern auch in ihrem Recyclingpotenzial und ihrem Einfluss auf die Umwelt.
|
||||
## Energieverbrauch bei der Herstellung
|
||||
Kupfer ist ein Rohstoff mit hoher Leitfähigkeit, doch seine Förderung und Verarbeitung sind energieintensiv. Der Abbau erfolgt in großen Tagebauen oder Minen, die enorme Mengen an Ressourcen verbrauchen. Die Raffination von Kupfer erfordert zusätzlich hohe Temperaturen, was zu einem erheblichen Energieaufwand führt. Studien zeigen, dass die Herstellung von einem Kilogramm Kupfer etwa vier- bis fünfmal **mehr Energie** benötigt als die gleiche Menge Aluminium.
|
||||
Aluminium hingegen wird aus Bauxit gewonnen, das im Vergleich zu Kupfererz weit verbreitet ist. Die Gewinnung des reinen Metalls erfolgt durch das energieintensive Schmelzflusselektrolyseverfahren, allerdings lässt sich Aluminium durch **Recycling **mit nur etwa** 5 % des ursprünglichen Energiebedarfs** wiederverwerten.
|
||||
## CO₂-Fußabdruck und ökologische Auswirkungen
|
||||
Der CO₂-Ausstoß bei der Produktion ist bei Kupfer deutlich höher als bei Aluminium, wenn Letzteres aus recyceltem Material stammt. Aluminium kann nahezu unbegrenzt wiederverwendet werden, während Kupfer zwar ebenfalls recycelbar ist, aber eine höhere Umweltbelastung bei der Neugewinnung aufweist.
|
||||
Ein weiterer Umweltaspekt ist die **Langlebigkeit und Wartung**. Aluminiumkabel haben eine geringere Lebensdauer als Kupferkabel und müssen daher häufiger ersetzt werden. Das bedeutet, dass die Umweltbilanz von Aluminium nur dann besser ist, wenn es nach der Nutzung konsequent recycelt wird.
|
||||
## Recyclingfähigkeit
|
||||
Sowohl Kupfer als auch Aluminium sind vollständig recycelbar, allerdings gibt es Unterschiede in der Praxis:
|
||||
- **Kupfer** hat eine **hohe Recyclingquote**, da es sehr wertvoll ist und fast immer wiederverwertet wird.
|
||||
- **Aluminium **kann mit** geringem Energieaufwand recycelt **werden, doch ein Teil der Aluminiumproduktion basiert weiterhin auf neuem Bauxit.
|
||||
|
||||
## Langfristige Nachhaltigkeit in Windparks
|
||||
Aluminium bietet klare Vorteile in der Herstellung und im Recycling, während Kupfer aufgrund seiner Langlebigkeit und geringen Wartungsanforderungen langfristig nachhaltiger sein kann. Für Windparks bedeutet dies, dass die Wahl des richtigen Materials auch eine ökologische Entscheidung ist.
|
||||
Fazit: Aluminium punktet durch seinen geringeren CO₂-Fußabdruck in der Herstellung und seine hervorragende Recyclingfähigkeit, während Kupfer durch seine Langlebigkeit weniger häufig ersetzt werden muss und dadurch ebenfalls zur Nachhaltigkeit beiträgt.
|
||||
|
||||
<ComparisonGrid
|
||||
title="Welche Lösung ist die beste für Windparks?"
|
||||
leftLabel="Kupfer"
|
||||
rightLabel="Aluminium"
|
||||
items={[
|
||||
{ label: "Effizienz", leftValue: "Besser", rightValue: "Höhere Verluste" },
|
||||
{ label: "Kosten (Material & Anschaffung)", leftValue: "Teurer", rightValue: "Günstiger" },
|
||||
{ label: "Installationsaufwand", leftValue: "Schwerer, aufwendiger", rightValue: "Leichter, einfacher" },
|
||||
{ label: "Betriebskosten (Verluste & Wartung)", leftValue: "Geringer", rightValue: "Höher" },
|
||||
{ label: "Korrosionsbeständigkeit", leftValue: "Sehr gut", rightValue: "Mittel" },
|
||||
{ label: "Lebensdauer", leftValue: "Länger", rightValue: "Kürzer" },
|
||||
{ label: "Umweltfreundlichkeit", leftValue: "Hoher Energieaufwand", rightValue: "Besser mit Recycling" }
|
||||
]}
|
||||
/>
|
||||
|
||||
## Empfohlene Anwendung je nach Einsatzzweck
|
||||
- Aluminium eignet sich für lange **Mittelspannungs-Trassen**, wo Gewicht und Kosten entscheidend sind.
|
||||
- Kupfer ist ideal für **Netzübergänge, Umspannwerke **und** kritische Bereiche**, wo Effizienz und Langlebigkeit im Fokus stehen.
|
||||
|
||||
Fazit: Die optimale Lösung ist oft eine Kombination aus beiden Materialien, um Kosten und Effizienz in Einklang zu bringen.
|
||||
# Fazit: Kupfer oder Aluminium – welche Wahl lohnt sich?
|
||||
Die Wahl zwischen Kupfer- und Aluminiumkabeln hängt stark von den Anforderungen des jeweiligen Windparkprojekts ab. Aluminium bietet niedrigere Materialkosten und ein geringeres Gewicht, was die Installation erleichtert. Kupfer hingegen überzeugt durch eine höhere Effizienz, geringere Wartungskosten und eine längere Lebensdauer.
|
||||
Die beste Lösung besteht oft darin, beide** Materialien gezielt **einzusetzen: Aluminium für lange Übertragungswege und Kupfer für kritische Netzübergänge. So lassen sich sowohl **Kosten optimieren **als auch die** Betriebssicherheit **langfristig** gewährleisten**.
|
||||
Wer Kabel wie das **NA2XS(F)2Y kaufen** möchte, sollte neben dem reinen Materialpreis auch die Verlegeumgebung, die Belastung und den Projektzeitraum im Blick haben. Für viele **Onshore-Windparks** ergibt sich ein klarer Kostenvorteil durch Aluminium – bei anderen lohnt sich der Griff zum robusteren Kupferkabel **NAYY**.
|
||||
## Sie brauchen eine fundierte Beratung zur Kabelwahl?
|
||||
Dann sprechen Sie gerne mit unseren Experten bei KLZ! Wir helfen Ihnen, das optimale Kabel für Ihr Windpark-Projekt zu finden.
|
||||
@@ -1,51 +0,0 @@
|
||||
---
|
||||
title: 'Milliarden-Paket für Infrastruktur: Der Kabel-Boom steht bevor'
|
||||
date: '2025-04-06T08:00:07'
|
||||
featuredImage: '/uploads/2025/03/closeup-shot-of-a-person-presenting-a-euro-rain-wi-2025-02-02-14-02-05-utc-scaled.webp'
|
||||
locale: de
|
||||
category: Kabel Technologie
|
||||
---
|
||||
# Milliarden-Paket für Infrastruktur: Der Kabel-Boom steht bevor
|
||||
Was dabei besonders interessant ist: **100 Milliarden Euro **davon sind** speziell für Klimaschutz **und den klimafreundlichen Umbau der Wirtschaft reserviert. Diese Mittel sollen über den bestehenden [**Klima- und Transformationsfonds (KTF)**](https://de.wikipedia.org/wiki/Klima-_und_Transformationsfondsgesetz) verteilt werden, ein klarer Fingerzeig in Richtung einer nachhaltigeren, grüneren Zukunft.
|
||||
Während Politiker noch heftig über Sinn und Unsinn der Mittelverwendung diskutieren, steht für uns als Kabellieferanten eine Sache fest: Ohne Kabel wird nichts funktionieren. Weder beim Ausbau von Windparks, noch bei der Verlegung von Stromtrassen oder der Modernisierung von Energieinfrastrukturen. Der Kabelbedarf wird also steigen – und zwar erheblich.
|
||||
## Das Milliarden-Paket und seine Aufteilung – Wer bekommt was?
|
||||
Die Verteilung des Geldes ist klar festgelegt und umfasst drei große Bereiche:
|
||||
- **500 Milliarden Euro Gesamtbudget:**<br />Diese Summe wird über **zwölf Jahre hinweg** bereitgestellt. Ein ambitioniertes Vorhaben, das mit viel Hoffnung und ebenso viel Skepsis verfolgt wird.
|
||||
- **100 Milliarden Euro für die Länder:**<br />Hiermit sollen die Bundesländer in die Lage versetzt werden, eigene Infrastrukturprojekte voranzutreiben. Dazu gehören unter anderem der Ausbau von Stromnetzen, der Anschluss neuer Wind- und Solarparks sowie Maßnahmen zur Erhöhung der Netzstabilität.
|
||||
- **100 Milliarden Euro für Klimaschutz:**<br />Der grüne Anteil des Pakets, der klar auf die Umstellung der Wirtschaft auf klimafreundliche Technologien abzielt. Das bedeutet: Mehr Onshore-Windkraftanlagen, mehr Solarparks, mehr Kabel.<br />Diese Mittel werden über den bestehenden Klima- und Transformationsfonds (KTF) bereitgestellt und sollen dabei helfen, CO2-Emissionen zu senken und gleichzeitig eine stabile Energieversorgung zu garantieren.
|
||||
|
||||
Eine detaillierte Aufschlüsselung der Mittelverteilung und ihrer Auswirkungen finden Sie im nachfolgenden Artikel <em>„Das Milliarden-Schuldenpaket: So setzt es sich zusammen“</em>.
|
||||
<VisualLinkPreview
|
||||
url="https://www.zdf.de/nachrichten/politik/deutschland/sondervermoegen-schuldenbremse-infrastruktur-verteidigung-bundesrat-100.html"
|
||||
title="Das Milliarden-Schuldenpaket: So setzt es sich zusammen"
|
||||
summary="Im politischen Berlin sind derzeit astronomische Beträge rund um das geplante Schuldenpaket zu hören. Doch für was? Und mit welchem Ziel?"
|
||||
image="https://www.zdf.de/assets/bundestag-berlin-118~1280x720?cb=1741856505967"
|
||||
/>
|
||||
## Warum Kabelhersteller jetzt durchstarten sollten
|
||||
Es wird viel über Subventionen, Fördergelder und deren Verwendung gesprochen. Doch die eigentliche Herausforderung bleibt: Die notwendige Infrastruktur muss geschaffen werden – und das gelingt nur mit leistungsfähigen Kabeln.
|
||||
Die folgenden Trends sind für uns besonders relevant:
|
||||
- <strong>Ausbau von Stromleitungen und Netzanschlussprojekten:<br /></strong>Mit dem beschlossenen Milliardenpaket ist klar: Stromleitungen, die erneuerbare Energiequellen wie Onshore-Windparks oder Solaranlagen anbinden, müssen massiv ausgebaut werden. Dabei geht es in erster Linie um die Integration der Stromerzeugung aus Windkraftanlagen ins Netz.Unsere Nieder-, Mittel- und Hochspannungskabel sind dafür ausgelegt, diesen Anforderungen gerecht zu werden.
|
||||
- <strong>Dezentralisierung der Energieversorgung:<br /></strong>Ein weiteres zentrales Thema ist der Trend zur [dezentralen Energieversorgung](https://energas-gmbh.de/dezentrale-energieerzeugung/). Immer mehr Energie wird direkt vor Ort erzeugt – und muss zuverlässig ins Netz eingespeist werden. Auch hier sind leistungsfähige Erdkabelsysteme gefragt, die sich durch hohe Belastbarkeit und Widerstandsfähigkeit auszeichnen.
|
||||
- <strong>Klimaschutzmaßnahmen und klimafreundlicher Umbau der Wirtschaft:<br /></strong>Da 100 Milliarden Euro speziell für den klimafreundlichen Umbau vorgesehen sind, können wir davon ausgehen, dass Projekte zur Elektrifizierung, CO2-Reduktion und zum Ausbau regenerativer Energien massiv gefördert werden.
|
||||
Dies betrifft insbesondere Kabelsysteme, die für hohe Leistung und Stabilität ausgelegt sind – so wie die, die wir bei **KLZ** liefern.
|
||||
## Die Rolle von KLZ in dieser gigantischen Investitionsoffensive
|
||||
Mit diesen milliardenschweren Investitionen wird der Bedarf an Erdkabeln, insbesondere Mittelspannungskabeln, geradezu explodieren. Die Frage ist nicht, **ob** Kabel gebraucht werden – sondern **wann und in welchen Mengen**. Und genau da kommen wir ins Spiel.
|
||||
<h4>**Unsere Stärken:**</h4>
|
||||
- **Hochwertige Kabel:**<br />Wir liefern nur [hochwertige Kabel](/de/stromkabel/), wie das **NA2XS(F)2Y**, **NAYY** oder auch das **NAYY-J**. Diese sind optimal für den Einsatz in Onshore-Windparks, Solarfeldern und Transformatorstationen geeignet. Sie bieten hohe Zuverlässigkeit, Belastbarkeit und Langlebigkeit.
|
||||
- **Schnelle Lieferung durch logistische Effizienz:**<br />Dank unseres zentralen Logistik-Hubs können wir schnell und zuverlässig liefern – auch an unsere Kunden in den Niederlanden. Das ist ein entscheidender Vorteil, wenn Projekte unter Zeitdruck realisiert werden müssen.
|
||||
- **Nachhaltigkeit:**<br />Während die Bundesregierung ihre Klimaziele vorantreibt, leisten wir ebenfalls unseren Beitrag. Wir legen bereits seit Langen einen großen Wert auf nachhaltige Lösungen, die den Anforderungen der Zukunft gerecht werden.
|
||||
|
||||
## Warum der Zeitpunkt für den Netzausbau ideal ist
|
||||
Natürlich wird dieses Mega-Projekt nicht von allen gutgeheißen. Es gibt Stimmen, die das Vorhaben als zu ambitioniert oder schlecht geplant kritisieren. Doch eines ist sicher: Die Nachfrage nach moderner Infrastruktur wird steigen, und zwar gewaltig.
|
||||
Statt zu diskutieren, ob es die beste Lösung ist, konzentrieren wir uns darauf, dass **die beste Kabeltechnik bereitsteht, wenn sie gebraucht wird**. Die Energiewende wird kommen – und wir sorgen dafür, dass sie auch wirklich funktioniert.
|
||||
Und während andere noch darüber diskutieren, was sinnvoll ist und was nicht, haben wir längst den Fokus darauf gelegt, unser Produktportfolio so zu optimieren, dass sie den wachsenden Anforderungen des Marktes gerecht werden.
|
||||
Mehr Infos zum Thema Netzausbau für eine grüne Zukunft finden Sie hier:
|
||||
<VisualLinkPreview
|
||||
url="/de/netzausbau-2025-warum-jede-neue-leitung-ein-schritt-zur-energiewende-ist/"
|
||||
title="Netzausbau: Schlüssel zur erfolgreichen Energiewende"
|
||||
summary="Erfahre, wie neue Stromleitungen den Weg zur klimaneutralen Zukunft ebnen. Herausforderungen und Lösungen für eine nachhaltige Energieversorgung."
|
||||
image="/uploads/2025/01/power-grid-station-electrical-distribution-statio-2023-11-27-05-25-36-utc-scaled.webp"
|
||||
/>
|
||||
## KLZ ist bereit – seid ihr es auch?
|
||||
Das Milliarden-Paket ist mehr als nur eine Finanzspritze für den Ausbau der Infrastruktur. Es ist ein klares Zeichen, dass Deutschland den Weg in eine grüne Zukunft gehen will – und muss.
|
||||
Jetzt heißt es für uns als Kabellieferanten: Bereit sein. Denn der Bedarf wird schneller steigen, als so mancher es erwartet. Und mit unseren Produkten sind wir bereit, diese Herausforderung zu meistern.
|
||||
@@ -1,151 +0,0 @@
|
||||
---
|
||||
title: Warum das NA2XS(F)2Y das ideale Kabel für Ihr Energieprojekt ist
|
||||
date: '2025-09-29T12:33:25'
|
||||
featuredImage: /uploads/2025/04/image_fx_-2025-02-22T132138.470.webp
|
||||
locale: de
|
||||
category: Kabel Technologie
|
||||
---
|
||||
# Warum das NA2XS(F)2Y das ideale Kabel für Ihr Energieprojekt ist
|
||||
## Warum die Kabelwahl über den Projekterfolg entscheidet
|
||||
Ob Windpark, Industrieanlage oder städtisches Verteilnetz – wer Mittelspannung plant, entscheidet nicht nur über Kabelmeter, sondern über **[Systemstabilität](https://www.vde.com/de/fnn/themen/tar/tar-mittelspannung-vde-ar-n-4110), Ausfallsicherheit** und **langfristige Betriebskosten**. Die Kabelwahl hat mehr Einfluss, als oft angenommen wird. Denn während sich viele Komponenten austauschen lassen, wird ein verlegtes Mittelspannungskabel schnell zum dauerhaften Bestandteil der Infrastruktur – und muss daher von Anfang an passen.
|
||||
Ein Kabel wie das [**NA2XS(F)2Y**](/de/products/medium-voltage-cables/na2xsf2y/) überzeugt genau dort, wo andere an Grenzen stoßen. Im Folgenden zeigen wir, warum.
|
||||
<h4>Typische Herausforderungen in der Mittelspannungsverkabelung</h4>
|
||||
Projekte im Bereich von 10 bis 30 kV bringen wiederkehrende Anforderungen mit sich – unabhängig davon, ob es sich um Neubauten, Umbauten oder Erweiterungen handelt. Dazu zählen:
|
||||
- **Hohe [Dauerstrombelastungen](https://www.vde-verlag.de/buecher/leseprobe/9783800746910_PROBE_01.pdf)** über viele Jahre hinweg
|
||||
- **Mechanische Beanspruchungen** bei der Verlegung (z. B. in engen Trassen)
|
||||
- **Störungen durch elektromagnetische Felder** (z. B. bei paralleler Leitungsführung)
|
||||
- **Normvorgaben nach IEC und VDE**, die eingehalten werden müssen
|
||||
- Unterschiedliche **Verlegearten**: [Erdverlegung](https://www.elektrikerwissen.de/erdkabel-verlegen/), Trasse, Kleeblatt etc.
|
||||
|
||||
Die Realität auf der Baustelle zeigt: Ein Kabel, das nicht flexibel genug ist, zu hohe Biegeradien hat oder thermisch schnell an seine Grenzen kommt, verzögert nicht nur die Umsetzung – es gefährdet auch die Betriebssicherheit.
|
||||
<h4>Was das NA2XS(F)2Y für moderne Energieinfrastruktur interessant macht</h4>
|
||||
Das [**NA2XS(F)2Y**](/de/products/medium-voltage-cables/na2xsf2y/) begegnet diesen Anforderungen mit einer durchdachten, praxisbewährten Konstruktion. Es ist ausgelegt für den **langfristigen Einsatz unter Last** und zeigt seine Stärken besonders in industriellen und energietechnischen Netzen.
|
||||
|
||||
<TechnicalGrid
|
||||
title="Wichtige Merkmale im Überblick"
|
||||
items={[
|
||||
{ label: "Aluminiumleiter", value: "Hohe Leitfähigkeit, geringe Übertragungsverluste" },
|
||||
{ label: "XLPE-Isolierung", value: "Hohe thermische Belastbarkeit, langlebig und stabil" },
|
||||
{ label: "EMV-optimiertes Design", value: "Störungsfreier Betrieb in sensiblen Netzumgebungen" },
|
||||
{ label: "Normgerechter Aufbau (IEC)", value: "Sicherheit bei Ausschreibung, Prüfung und Betrieb" },
|
||||
{ label: "Robuste Außenkonstruktion", value: "Geeignet für alle gängigen Verlegeverfahren" }
|
||||
]}
|
||||
/>
|
||||
|
||||
Das bedeutet: Mit dem [NA2XS(F)2Y](/de/products/medium-voltage-cables/na2xsf2y/) lassen sich Netze realisieren, die nicht nur auf dem Papier funktionieren, sondern auch im praktischen Betrieb – dauerhaft, wartungsarm und sicher.
|
||||
Warum der Netzausbau wichtig ist, erfahren Sie hier:
|
||||
<VisualLinkPreview
|
||||
url="https://www.netze-bw.de/unsernetz/netzausbau"
|
||||
title="Netzausbau - Netze BW GmbH"
|
||||
summary="Die Netze BW ist daran interessiert und dazu verpflichtet, ihr Netz im Sinne einer effizienten und sicheren Stromversorgung stetig zu optimieren."
|
||||
image="https://www.netze-bw.de/logo-seo.png"
|
||||
/>
|
||||
## Technik, auf die Sie sich verlassen können
|
||||
Wenn Mittelspannung zur tragenden Infrastruktur wird, braucht es Kabel, auf deren technische Eigenschaften absolut Verlass ist – nicht nur unter Idealbedingungen, sondern gerade dann, wenn Umgebungsbedingungen, Belastung und Systemkomplexität zunehmen.
|
||||
Das [**NA2XS(F)2Y**](/de/products/medium-voltage-cables/na2xsf2y/) wurde genau für solche Situationen entwickelt. Aufbau und Materialwahl zielen auf maximale elektrische Sicherheit, lange Lebensdauer und bestmögliche Integration in moderne Energieprojekte ab.
|
||||
<h4>Aufbau: Aluminiumleiter, XLPE-Isolierung, robuste Konstruktion</h4>
|
||||
Das Innenleben des NA2XS(F)2Y folgt einer klaren Logik: **[Leitfähigkeit](https://kupfer.de/anwendungen/elektrotechnik-und-energie/elektrische-leiterwerkstoffe/), Isolation und Schutz** in optimaler Balance.
|
||||
Aufbau im Detail:
|
||||
- **Leiter:** Aluminium
|
||||
- **Innere Leitschicht:** leitfähige Kunststoffe zur Feldsteuerung
|
||||
- **Isolation:** **vernetzter Polyethylen-Kunststoff (XLPE)** mit exzellenter Temperaturbeständigkeit
|
||||
- **Äußere Leitschicht:** leitfähiger Kunststoff zur Begrenzung des elektrischen Feldes
|
||||
- **Schirm:** Wicklung aus blanken Kupferdrähten (ggf. mit Cu-Band) für effektive elektrische Abschirmung
|
||||
- **Außenmantel:** robustes PE, mechanisch belastbar und feuchtigkeitsresistent
|
||||
|
||||
Diese Kombination ermöglicht einen stabilen Betrieb auch unter hoher thermischer Last und in [EMV-sensiblen Umgebungen](https://heinen-elektronik.de/glossar/emv-elektromagnetische-vertraeglichkeit/) – bei sachgemäßer Verlegung.
|
||||
<h4>Ausgelegt für Spannungsklassen bis 30 kV – normgerecht und zukunftssicher</h4>
|
||||
Das [NA2XS(F)2Y](/de/products/medium-voltage-cables/na2xsf2y/) ist erhältlich in den [Spannungsklassen](https://www.elandcables.com/de/company/news-and-events/mv-cables-the-lowdown) bis 18/30 kV – für Nennspannungen bis 30 kV laut IEC 60502-2. Das bietet entscheidende Vorteile:
|
||||
- **Internationale Vergleichbarkeit** in Ausschreibungen
|
||||
- **Sichere Abnahme** durch Netzbetreiber oder Behörden
|
||||
- **Zukunftssichere Integration** in bestehende oder neu geplante Systeme
|
||||
|
||||
Wer auf Planbarkeit, technische Klarheit und reibungslose Dokumentation Wert legt, trifft mit diesem Kabel die richtige Wahl.
|
||||
## Leistungsstark, zuverlässig, langlebig
|
||||
Ein gutes Mittelspannungskabel erkennt man nicht nur an Normen, sondern an seiner Fähigkeit, **unter realen Bedingungen dauerhaft stabil zu funktionieren**. Das [NA2XS(F)2Y](/de/products/medium-voltage-cables/na2xsf2y/) wurde für genau solche Anforderungen entwickelt – und bringt technische Vorteile mit, die in der Praxis zählen.
|
||||
<h4>Hohe Strombelastbarkeit für dauerhafte Betriebsstabilität</h4>
|
||||
Das Kabel ist auf **kontinuierlich hohe Strombelastungen** ausgelegt – ohne dass [thermische Probleme](https://calcul-electrique.com/de/artikel/ueberpruefung-der-thermischen-spannungen-in-einem-leiter/), Alterung oder Leistungsverluste zu befürchten sind. Die Kombination aus Aluminiumleiter und XLPE-Isolierung sorgt dafür, dass die maximale [Dauerstromtragfähigkeit](https://www.vde-verlag.de/buecher/leseprobe/9783800746910_PROBE_01.pdf) auch unter erschwerten Bedingungen erhalten bleibt.
|
||||
Vorteile:
|
||||
- Zuverlässiger Dauerbetrieb auch bei Vollauslastung
|
||||
- Die [XLPE-Isolierung](https://de.sxjshcable.com/info/what-is-the-meaning-of-xlpe-insulated-cable-94248457.html) zeigt unter normalen Betriebsbedingungen eine sehr geringe Alterungsrate
|
||||
- Geringere Wärmeentwicklung im Vergleich zu minderwertigen Materialien
|
||||
|
||||
<h4>Sicher bei Kurzschluss und hoher thermischer Belastung</h4>
|
||||
Die XLPE-Isolierung des Kabels hält auch **kurzzeitigen Extrembedingungen** stand, wie sie z. B. bei Schaltvorgängen oder Fehlerströmen auftreten können.
|
||||
- Hohe [**Kurzschlussstromfestigkeit**](https://de.electrical-installation.org/dewiki/Pr%C3%BCfen_der_Kurzschlussfestigkeit_von_Kabeln_und_Leitungen) (auch bei >20 kA, abhängig vom Querschnitt)
|
||||
- Bei fachgerechter Auslegung und Verlegung bleibt die mechanische Integrität auch bei hoher thermischer Belastung erhalten
|
||||
- Schnelle Rückkehr in den stabilen Betriebszustand
|
||||
|
||||
<h4>Starke EMV-Werte für sensible Umgebungen</h4>
|
||||
In Netzen mit vielen parallelen Leitungen oder empfindlichen Steuerkreisen ist **elektromagnetische Verträglichkeit (EMV)** essenziell. Das NA2XS(F)2Y ist darauf ausgelegt, **Feldstörungen zu minimieren** und **Spannungsinduktionen** in benachbarten Leitungen zu verhindern.
|
||||
Ihr Vorteil:
|
||||
- Weniger EMV-Probleme im laufenden Betrieb
|
||||
- Stabilere Mess-, Steuer- und Regeltechnik
|
||||
- Zukunftssicher auch für komplexe Automatisierungsumgebungen
|
||||
|
||||
Schon überzeugt? Dann bestellen Sie Ihr Mittelspannungskabel direkt bei uns:
|
||||
|
||||
<VisualLinkPreview
|
||||
url="/de/contact/"
|
||||
title="Kontakt – Lassen Sie uns Ihre Energieprojekte voranbringenSchnell, verlässlich und unkompliziert – nehmen Sie Kontakt auf für individuelle Kabel- und Energielösungen."
|
||||
summary="Wir sind für Sie da."
|
||||
image="/uploads/2025/02/og-2.webp"
|
||||
/>
|
||||
<h4>Ideal für Industrieanlagen, Energieverteilungen, Umspannwerke</h4>
|
||||
In industriellen Umgebungen sind Stromflüsse oft dauerhaft hoch, die Belastung ist kontinuierlich – und Ausfälle teuer. Das NA2XS(F)2Y ist daher eine solide Lösung für:
|
||||
- **Produktionsbetriebe mit konstantem Lastprofil**
|
||||
- **[Transformatoranschlüsse](https://www.netze-duisburg.de/fileadmin/user_upload/Anschliessen/Neuanschluesse/VDN_Richtlinie_Transformatorstationen_am_Mittelspannungsnetz.pdf) mit hohen Leistungswerten**
|
||||
- **Verteilungen innerhalb größerer Industrieareale**
|
||||
- **Umspannwerke im kommunalen oder regionalen Netzbetrieb**
|
||||
|
||||
Die hohe **thermische Beständigkeit**, gepaart mit normgerechter Bauweise, sorgt für Sicherheit im laufenden Betrieb – und reduziert das Risiko ungeplanter Stillstände.
|
||||
<h4>Speziell für komplexe Netzstrukturen mit EMV-Anforderungen</h4>
|
||||
In energieintensiven Projekten mit sensiblen Steuerungen oder paralleler Kabelverlegung wird [EMV](https://www.conrad.de/de/ratgeber/industrie-40/elektromagnetische-vertraeglichkeit.html) zu einem echten Thema. Hier punktet das NA2XS(F)2Y mit:
|
||||
- Der **Schirmaufbau** in Kombination mit fachgerechter Erdung **reduziert** **Störungen** auf benachbarte Steuer- und Kommunikationsleitungen – gerade in paralleler Verlegung
|
||||
- **Reduzierter Störanfälligkeit** bei Steuer-, Daten- und Kommunikationsleitungen
|
||||
- **Erhöhter Netzqualität** durch stabile Spannungsübertragung
|
||||
|
||||
Gerade in **Windparks, Speicherlösungen, Quartiersnetzen** oder im **Zusammenspiel mit [dezentraler Einspeisung](https://www.stadtwerke-weisswasser.de/netz/stromnetz/dezentrale-einspeisung)** bietet das Kabel die nötige Störfestigkeit und Betriebssicherheit.
|
||||
## Einfache Integration in bestehende Projekte
|
||||
Die beste Technik nützt wenig, wenn sie sich in der Praxis schwer umsetzen lässt. Gerade bei Mittelspannungskabeln ist entscheidend, dass sie sich **reibungslos in bestehende Netze und neue [Trassenkonzepte](https://deutscher-bauservice.de/kabeltrassensicherung-planung/) integrieren lassen** – ohne Planungsaufwand, Sonderlösungen oder Zeitverlust auf der Baustelle.
|
||||
Das NA2XS(F)2Y erfüllt genau diesen Anspruch. Es ist geeignet für Erdverlegung, offene Trassen und bei angepasstem Biegeradius auch für platzsparende Verlegeformen wie Kleeblattstrukturen und bietet damit eine hohe Flexibilität für verschiedenste Projekte im Energie- und Industriebereich.
|
||||
<h4>Erdverlegung, Kabeltrasse oder Kleeblatt – alles möglich</h4>
|
||||
Egal ob in der klassischen [**Erdverlegung**](https://www.emc-direct.de/blog/kabelschutz-bei-der-erdverlegung-von-kabeln-und-leitungen), auf der **offenen Kabeltrasse** oder in der **Kleeblattverlegung** mit begrenztem Bauraum – das NA2XS(F)2Y lässt sich überall dort einsetzen, wo Mittelspannung **sicher, effizient und raumsparend** verlegt werden muss.
|
||||
Diese Flexibilität ist besonders relevant beim:
|
||||
- **Netzausbau von [Windkraftanlagen](https://deutsche-windindustrie.de/wiki/mittelspannung/)**
|
||||
- **Anschluss von Transformatorstationen**
|
||||
- **Aufbau von Stromtrassen in Gewerbegebieten**
|
||||
- **Industrieanlagen mit begrenztem Installationsraum**
|
||||
|
||||
Für Planer:innen und Bauverantwortliche bedeutet das: Das Kabel passt sich dem Projekt an – nicht umgekehrt.
|
||||
<h4>Planbar, normgerecht, betriebssicher</h4>
|
||||
Das NA2XS(F)2Y ist nach [**IEC 60502-2** zertifiziert](https://www.dke.de/de/ueber-uns/dke-organisation-auftrag/external-relations-and-support/iec-internationale-elektrotechnische-normungsorganisation) und erfüllt sämtliche Anforderungen an moderne Energieinfrastrukturen. Das bringt entscheidende Vorteile:
|
||||
- **Klarheit in der Ausschreibung und Planung**
|
||||
- **Sichere Genehmigungsprozesse** bei Netzbetreibern
|
||||
- **Reibungslose Dokumentation und Abnahme**
|
||||
- **Hohe Betriebssicherheit über Jahrzehnte**
|
||||
|
||||
Wer bei KLZ ein **Mittelspannungskabel kauft**, bekommt also nicht nur ein Produkt – sondern eine Lösung, die **technisch fundiert, normgerecht und sofort einsetzbar** ist.
|
||||
Gerade bei Energieprojekten, die unter Zeitdruck oder im laufenden Betrieb umgesetzt werden müssen, macht das NA2XS(F)2Y den entscheidenden Unterschied: **keine Diskussionen, keine Nacharbeiten, keine Kompromisse**.
|
||||
Sie wollen mehr zum Thema Erdverlegung und Erdkabeln wissen? Dieser Artikel bietet interessante Informationen zum Kabelschutz bei Erdverlegung.
|
||||
<VisualLinkPreview
|
||||
url="https://www.richterbaustoffe.de/article/kabelschutz-bei-erdverlegung"
|
||||
title="Kabelschutz bei Erdverlegung"
|
||||
summary="Beim Um- und Ausbau der Stromnetze für die Energiewende werden ein Großteil der Leitungen und Kabel unterirdisch verlegt – um den äußeren Einflüssen unter der Erde standzuhalten und sie sicher zu isolieren, kommen…"
|
||||
image="https://images.ctfassets.net/74nz86copyef/1CDlYm1yT02sRPwG1piRUo/dc25523b67f1efc4fae65cc978f900db/hagebau_Ostendorf_Kabelschutz_Headerbild.webp"
|
||||
/>
|
||||
## Fazit:
|
||||
Wenn Sie ein Mittelspannungskabel brauchen, das zuverlässig funktioniert – auch unter realen Betriebsbedingungen, ist das NA2XS(F)2Y die richtige Wahl.
|
||||
Ob Industrieanwendung, Windpark-Netzanschluss oder Energieverteilung im städtischen Raum – wer ein [Mittelspannungskabel](http://bauer-generator.de/glossar/mittelspannung/) sucht, das **technisch überzeugt, betrieblich zuverlässig ist und sich ohne Zusatzaufwand integrieren lässt**, landet beim NA2XS(F)2Y genau richtig.
|
||||
Die Kombination aus **hoher Strombelastbarkeit**, **robuster Isolierung**,** EMV-Verträglichkeit** und **flexibler Verlegbarkeit** macht dieses Kabel zu einer Lösung, die in der täglichen Praxis funktioniert – nicht nur auf dem Datenblatt.
|
||||
<h4>Für welche Projekte dieses Kabel die optimale Wahl ist</h4>
|
||||
Das NA2XS(F)2Y empfiehlt sich besonders für:
|
||||
- **[Onshore-Windparks](https://deutsche-windindustrie.de/wiki/onshore-windpark-windenergieanlagen/) und [Hybridkraftwerke](http://statkraft.de/explained-by-statkraft/hybridkraftwerke-kombination-erneuerbare-energie-mit-batteriespeicher/)**, bei denen EMV-Schutz und Dauerlast entscheidend sind
|
||||
- **Industrieanlagen**, die dauerhaft hohe Strommengen sicher übertragen müssen
|
||||
- **Transformatoranschlüsse **und** Mittelspannungsnetze**, bei denen Wartungsfreiheit und Betriebssicherheit im Fokus stehen
|
||||
- **Projekte mit anspruchsvollen Verlegebedingungen**, z. B. in Trassen, Schächten oder beengten Infrastrukturen
|
||||
|
||||
Kurz: Dieses Kabel passt immer dann, wenn aus technischer Anforderung eine verlässliche und wirtschaftlich sinnvolle Lösung werden soll.
|
||||
<h4>Beratung und schnelle Lieferung direkt über KLZ</h4>
|
||||
Wenn Sie ein Mittelspannungskabel suchen, das nicht nur auf dem Papier überzeugt, sondern sich auch in der Praxis bewährt, sprechen Sie uns an. Bei KLZ liefern wir **NA2XS(F)2Y **in verschiedenen Querschnitten mit kurzen Lieferzeiten** – **mit fundierter technischer Beratung und echtem Projektverständnis.
|
||||
Denn wer Energie sicher transportieren will, braucht nicht irgendein Kabel – sondern das Richtige.
|
||||
@@ -1,119 +0,0 @@
|
||||
---
|
||||
title: Engpass bei NA2XSF2Y? Wir haben das Dreileiter-Mittelspannungskabel
|
||||
date: '2025-08-14T08:46:27'
|
||||
featuredImage: /uploads/2025/08/NA2XSF2X_3x1x300_RM-25_12-20kV-3.webp
|
||||
locale: de
|
||||
category: Kabel Technologie
|
||||
---
|
||||
# Engpass bei NA2XSF2Y? Wir haben das Dreileiter-Mittelspannungskabel
|
||||
# Warum ist das Dreileiterkabel NA2XS(F)2Y derzeit kaum verfügbar?
|
||||
## Ein Kabel mit Schlüsselrolle
|
||||
Das [**NA2XSF2Y**](/de/products/medium-voltage-cables/na2xsf2y/) gehört zu den wichtigsten Mittelspannungskabeln in der Energieinfrastruktur – insbesondere in der dreileitrigen Ausführung NA2XSF2Y 3x1x. Es ist mechanisch belastbar, längswasserdicht, direkt erdverlegbar und damit ideal für moderne Netzanwendungen in Onshore-Windparks und Solaranlagen.
|
||||
Vor allem Mittelspannungskabel wie das **[NA2XS(F)2Y](/de/products/medium-voltage-cables/na2xsf2y/) 3x1x300 RM/25 12/20kV** werden aktuell besonders stark nachgefragt – nicht nur wegen ihrer technischen Leistungsfähigkeit, sondern auch wegen ihrer universellen Einsetzbarkeit in anspruchsvollen Umgebungen.
|
||||
## Engpass mit Folgen
|
||||
Was früher problemlos verfügbar war, ist heute schwer zu beschaffen. Die Ursache liegt in einem Mix aus Lieferkettenproblemen, knappen Rohstoffen und einem überlasteten Produktionsmarkt. Viele Anbieter sind schlichtweg ausverkauft oder können nur mit monatelanger Verzögerung liefern – mit drastischen Auswirkungen auf Bauzeiten und Projektkosten.
|
||||
## Wo noch Reserven existieren
|
||||
Trotz der angespannten Lage gibt es vereinzelt noch Bezugsquellen mit sofortiger Verfügbarkeit – dank strategischer Bevorratung und schlanker Logistik. Wir von [KLZ](/) gehören zu den Lieferanten, die das gefragte dreileitrige [Mittelspannungskabel](/de/products/medium-voltage-cables/na2xsf2y/) liefern können. Wer heute noch auf das **[NA2XSF2Y](/de/products/medium-voltage-cables/na2xsf2y/) 3x1x** oder das **NA2XS(F)2Y 3x1x300 RM/25 12/20kV** zugreifen kann, verschafft sich einen entscheidenden Zeitvorteil – und verhindert Verzögerungen, bevor sie entstehen.
|
||||
# Was ist das NA2XSF2Y überhaupt?
|
||||
## Aufbau und Material
|
||||
Das **NA2XSF2Y** ist ein einadriges Mittelspannungskabel mit folgenden Eigenschaften:
|
||||
- Aluminium-Rundleiter (RM)
|
||||
- Vernetzte Polyethylen-Isolierung (VPE)
|
||||
- Innen- und Außenleiterschicht
|
||||
- Schirm aus Kupferdrähten und Kupferband
|
||||
- Längswasserdichtigkeit in Leiter- und Mantelzone
|
||||
- Außenmantel aus Polyethylen (PE), schwarz, UV-beständig
|
||||
|
||||
Die derzeit so gefragte dreileitrige Ausführung **NA2XSF2Y 3x1x** besteht aus drei separat verlegten Einleitern – ideal für flexible Trassenführung und leistungsstarke Installationen.
|
||||
## Technische Eigenschaften
|
||||
Die Dreileiter-Variante **[NA2XS(F)2Y](/de/products/medium-voltage-cables/na2xsf2y/) 3x1x300 RM/25 12/20kV** erfüllt alle Anforderungen für den Einsatz in anspruchsvollen Umgebungen:
|
||||
- **Nennspannung:** 12/20 kV
|
||||
- **Leiterquerschnitt:** 300 mm² Aluminium
|
||||
- **Leiterschirm:** extrudiert leitfähig
|
||||
- **Längswasserdichtigkeit:** über quellfähige Bänder
|
||||
- **Verlegeart:** direkt erdverlegbar
|
||||
|
||||
## Warum Längswasserdichtheit bei Mittelspannungskabeln entscheidend ist
|
||||
Gerade bei der Erdverlegung ist Feuchtigkeit ein permanentes Risiko. Die integrierte Längswasserdichtheit verhindert:
|
||||
- Kapillare Ausbreitung von Wasser entlang des Leiters
|
||||
- Kurzschlüsse durch eindringende Feuchtigkeit
|
||||
- Folgeschäden bei punktueller Beschädigung der Kabelummantelung
|
||||
|
||||
Deshalb ist das **NA2XSF2Y 3x1x** die sichere Wahl für langlebige, unterirdische Energieinfrastruktur.
|
||||
Mehr Infos zur Freileitung vs. Erdverlegung finden Sie hier:
|
||||
<VisualLinkPreview
|
||||
url="https://www.hochspannungsblog.at/wissenswertes/netzaufbau/vergleich-freileitung-erdkabel"
|
||||
title="Freileitung und Erdkabel sind „Stand der Technik“"
|
||||
summary="Freileitung oder Erdkabel? Wir erklären Ihnen die Unterschiede und Möglichkeiten, aber auch warum was möglich ist und warum was nicht."
|
||||
image="https://www.hochspannungsblog.at/201210-netzbau-110kv-wegscheid-mast-kabelanschluss-1723.jpg?ch=dhsowxyq&:hp=9;1;de"
|
||||
/>
|
||||
# Typische Einsatzbereiche für das NA2XSF2Y
|
||||
## Netzanschluss in Windkraftanlagen
|
||||
In Onshore-Windparks übernimmt das Dreileiter-Mittelspannungskabel **[NA2XSF2Y](/de/products/medium-voltage-cables/na2xsf2y/) 3x1x** eine tragende Rolle: Es verbindet Windenergieanlagen mit Trafostationen oder direkt mit dem [Mittelspannungsnetz](https://www.stromerzeuger-lexikon.de/mittelspannungsnetz/). Die robuste Ausführung und Längswasserdichtheit machen es ideal für:
|
||||
- direkte Verlegung im Erdreich ohne zusätzlichen Schutz
|
||||
- lange Trassen mit wechselnden Bodenverhältnissen
|
||||
- hohe elektrische Belastbarkeit über Jahrzehnte
|
||||
|
||||
## Einsatz in Umspannwerken und Trafostationen
|
||||
Ob als Zuleitung zum Transformator oder zur Verteilung im Mittelspannungsfeld – die dreilitrige Ausführung **[NA2XS(F)2Y](/de/products/medium-voltage-cables/na2xsf2y/) 3x1x300 RM/25 12/20kV** ist in Umspannstationen ein echter Standard. Vorteile:
|
||||
- kompakte Verlegung auch bei begrenztem Platz
|
||||
- UV-beständiger PE-Mantel für Innen- und Außenbereiche
|
||||
- geringere Brandlast gegenüber PVC-basierten Kabeln
|
||||
|
||||
## Anwendung bei schwierigen Bodenverhältnissen
|
||||
Feuchter Lehmboden? Hohe Grundwasserrisiken? Gerade in solchen Szenarien überzeugt das **NA2XSF2Y** durch seine [Längswasserdichtheit](https://www.bkw-kabel.de/de/laengswasserdicht-wozu/). Es kommt bevorzugt zum Einsatz bei:
|
||||
- Trassen durch sumpfiges oder unverdichtetes Gelände
|
||||
- Installationen mit hoher mechanischer Belastung (z. B. unter Straßen)
|
||||
- Verlegung ohne Kabelschutzrohr in sensiblen Regionen
|
||||
|
||||
Diese Vielseitigkeit macht das **NA2XSF2Y 3x1x** zu einem der universellsten Mittelspannungskabel am Markt. Gerade für die Kabelinfrastruktur in Onshore-Windparks ist das [NA2XS(F)2Y](/de/products/medium-voltage-cables/na2xsf2y/) die erste Wahl.
|
||||
# Warum der Markt leergefegt ist
|
||||
## Ursachen des Engpasses
|
||||
Die derzeitige Knappheit des dreileitrigen **NA2XSF2Y** hat mehrere Ursachen, die sich gegenseitig verstärken:
|
||||
- **Stark gestiegene Nachfrage** durch [beschleunigten Netzausbau](https://www.nabu.de/umwelt-und-ressourcen/klima-und-luft/klimaschutz-deutschland-und-europa/28432.html) in Europa, insbesondere in Wind- und Solarparks
|
||||
- **Produktionsengpässe** bei Isoliermaterialien wie VPE sowie bei Aluminium
|
||||
- **Lange Lieferzyklen** durch begrenzte Fertigungskapazitäten bei den Herstellern
|
||||
- **Logistikprobleme** durch überlastete Transportrouten und Verzögerungen in der Kettenlogistik
|
||||
|
||||
## Folgen für laufende Projekte
|
||||
Die Auswirkungen sind in der Branche deutlich spürbar – nicht nur bei Großprojekten. Verzögerungen bei der Lieferung des Dreileiterkabels **NA2XSF2Y 3x1x** führen zu:
|
||||
- Stillstand auf der Baustelle, insbesondere beim Netzanschluss
|
||||
- Vertragsstrafen bei nicht termingerechter Inbetriebnahme
|
||||
- hohem Planungsaufwand durch kurzfristige Umstellungen auf Alternativlösungen
|
||||
|
||||
## Was Planer und EPCs jetzt beachten sollten
|
||||
Angesichts der prekären Versorgungslage empfehlen wir:
|
||||
- **Frühzeitige Kabelabfrage** bei [Lieferanten](/) – bereits in der Planungsphase
|
||||
- **Projektpuffer einkalkulieren** – sowohl zeitlich als auch im Budget
|
||||
- **Verfügbarkeit vor Preis** – kurzfristig lieferbare Typen sichern oft den Projektfortschritt
|
||||
|
||||
Vor allem, wenn der Einsatz von **[NA2XS(F)2Y](/de/products/medium-voltage-cables/na2xsf2y/) 3x1x300 RM/25 12/20kV** geplant ist, lohnt sich der Blick auf aktuelle Lagerverfügbarkeiten – bevor die Optionen ausgehen.
|
||||
# Wie wir liefern können, wenn andere vertrösten
|
||||
## Strategische Lagerhaltung statt Reaktion auf Knappheit
|
||||
Während viele erst dann nachbestellen, wenn der Markt längst ausverkauft ist, setzen wir auf vorausschauende Lagerhaltung. Bereits frühzeitig haben wir zentrale Typen wie das beliebte Dreileiter-Mittelspannungskabel **[NA2XSF2Y](/de/products/medium-voltage-cables/na2xsf2y/) 3x1x** gezielt in relevanten Mengen bevorratet – weil wir wissen, wie kritisch diese für den Netzausbau sind.
|
||||
Und genau das macht jetzt den Unterschied: Diese Kabel haben wir als Lieferant strategisch eingeplant – und sind bei uns verfügbar.
|
||||
Alle Details und technischen Daten finden Sie hier:
|
||||
<VisualLinkPreview
|
||||
url="/de/products/medium-voltage-cables/na2xsf2y/"
|
||||
title="NA2XS(F)2Y-Mittelspannungskabel | KLZ"
|
||||
summary="NA2XS(F)2Y-Mittelspannungskabel, Spannungsklasse bis 36 kV, Kupferleiter, XLPE-Isolation, geeignet für extreme Temperaturen, konform mit IEC/VDE, ideal für erneuerbare Energien und Industrieanlagen."
|
||||
image="/uploads/2025/01/NA2XSF2Y-3-scaled.webp"
|
||||
/>
|
||||
## Logistik, die mitdenkt
|
||||
Unsere Logistikprozesse sind auf Geschwindigkeit und Flexibilität ausgelegt. Durch unser Lager mit direkter Anbindung nach Deutschland und in die Niederlande können wir Baustellen in kürzester Zeit versorgen.
|
||||
- Reaktionszeiten in Tagen statt Wochen
|
||||
- Zuverlässige Lieferung durch erfahrene Speditionen
|
||||
- Flexible Lieferung je nach Baufortschritt
|
||||
|
||||
Wir liefern nicht nur die Kabel die Sie benötigen, sondern das Gesamtpaket. Von professioneller Beratung zur richtigen Kabelwahl bis hin zur Lieferung auf der Baustelle – wir betreuen Ihr gesamtes Projekt. Zuverlässig, gekonnt und zeitnah.
|
||||
## Redundanz statt Risiko
|
||||
Wir setzen auf mehrere Lieferketten und haben bewusst Lagerkapazitäten aufgebaut. So stellen wir sicher, dass selbst bei branchenweiten Engpässen noch geliefert werden kann – ohne Improvisation. Auch Typen wie das gefragte Dreileiterkabel **[NA2XS(F)2Y](/de/products/medium-voltage-cables/na2xsf2y/) 3x1x300 RM/25 12/20kV** sind bei uns verfügbar.
|
||||
Keine Ausreden – wir liefern, was andere nur anbieten.
|
||||
|
||||
Wir liefern Ihnen die Kabel, die Sie brauchen!<br />
|
||||
[Kontaktieren Sie uns für eine konkrete Anfrage.](/contact/)
|
||||
# FAQs rund ums NA2XSF2Y
|
||||
## Ist das NA2XSF2Y für direkte Erdverlegung geeignet?
|
||||
Ja, das [**NA2XSF2Y**](/de/products/medium-voltage-cables/na2xsfl2y-mv/) ist speziell für die direkte Verlegung im Erdreich entwickelt. Dank seiner Längswasserdichtheit und der robusten Außenmantelkonstruktion eignet es sich ideal für unterirdische Trassen – selbst bei schwierigen Bodenverhältnissen oder wechselnden Feuchtigkeitszonen.
|
||||
## Welche CPR-Klasse erfüllt das Kabel?
|
||||
Die [CPR-Klassifizierung](https://www.serverschrank24.de/wissensdatenbank/klassifikation-von-verlegekabeln.html) (Construction Products Regulation) hängt von der spezifischen Ausführung und dem Hersteller ab. Üblich für das **NA2XSF2Y 3x1x** sind Klassen wie Eca oder besser, abhängig vom eingesetzten Mantelmaterial. Im Zweifel liefern wir die konkrete Deklaration für das gewünschte Produkt mit.
|
||||
@@ -1,70 +0,0 @@
|
||||
---
|
||||
title: 'Netzausbau 2025: Warum jede neue Leitung ein Schritt zur Energiewende ist'
|
||||
date: '2025-02-10T13:00:38'
|
||||
featuredImage: '/uploads/2025/01/power-grid-station-electrical-distribution-statio-2023-11-27-05-25-36-utc-scaled.webp'
|
||||
locale: de
|
||||
category: Kabel Technologie
|
||||
---
|
||||
# Netzausbau 2025: Warum jede neue Leitung ein Schritt zur Energiewende ist
|
||||
## TL;DR
|
||||
- **Netzausbau **ist** zentral** für die Energiewende und Versorgungssicherheit.
|
||||
- Bis 2024: **3.085 km neue Leitungen**, bis 2030: weitere 12.000 km geplant.
|
||||
- **Erdkabel** bevorzugt wegen Umwelt- und Akzeptanzvorteilen.
|
||||
- **Herausforderungen:** Bürokratie, Widerstände, Fachkräftemangel.
|
||||
- **Lösungen:** Bürgerbeteiligung, smarte Technologien, innovative Kabel.
|
||||
- **Ziel:** Klimaneutralität und nachhaltige Energieversorgung bis 2045. 🌍
|
||||
|
||||
## Warum der Netzausbau unverzichtbar ist
|
||||
Ein **leistungsfähiges Stromnetz** ist die Grundlage für die Energiewende. Es gewährleistet, dass die wachsende Menge an erneuerbaren Energien, die durch Wind- und Solarparks erzeugt wird, **sicher** und **effizient** dorthin gelangt, wo sie benötigt wird – in Haushalte, Unternehmen und Industrie. Doch der Weg zu einem zukunftsfähigen Netz ist nicht einfach.
|
||||
Zu den zentralen Herausforderungen gehören komplexe Genehmigungsverfahren, die oft mehrere Jahre in Anspruch nehmen, sowie Widerstände aus der Bevölkerung, insbesondere in ländlichen Gebieten. Trotz dieser Hürden bietet der **Netzausbau enorme Chancen**: Er fördert Innovationen in der Energiebranche, schafft Arbeitsplätze und trägt maßgeblich zur Erreichung der Klimaziele bei.
|
||||
💡 Gut zu wissen: Ein effizientes Stromnetz kann bis zu 90 % der erneuerbaren Energien direkt integrieren und so fossile Energieträger schneller ablösen!
|
||||
## Zahlen, Daten, Fakten: Der Stand des Netzausbaus in Deutschland
|
||||
Deutschland hat beim Ausbau der Stromnetze in den letzten Jahren wichtige Fortschritte erzielt. Bis Ende 2024 wurden bereits 3.085 Kilometer neuer Leitungen fertiggestellt, wobei ein Großteil davon Erdkabel umfasst. Diese sind besonders in dicht besiedelten Gebieten oder Landschaftsschutzgebieten von Vorteil.
|
||||
<h4>Regionale Schwerpunkte</h4>
|
||||
Großprojekte wie “SuedLink” oder “Ultranet” spielen eine Schlüsselrolle. SuedLink wird beispielsweise über 700 Kilometer lang sein und Nord- mit Süddeutschland verbinden, um überschüssigen Windstrom effizient zu transportieren.
|
||||
<h4>Geplante Projekte bis 2030</h4>
|
||||
Bis Ende dieses Jahrzehnts sollen über 12.000 Kilometer an zusätzlichen Leitungen gebaut werden. Ziel ist es, den Stromtransport so zu optimieren, dass erneuerbare Energien nahezu verlustfrei zu den Verbrauchszentren gelangen können.
|
||||
<h4>Internationaler Vergleich</h4>
|
||||
Deutschland gehört bei der Umsetzung des Netzausbaus zu den führenden Nationen in Europa, obwohl Länder wie die Niederlande durch ihre kompaktere Netzstruktur in manchen Bereichen schneller vorankommen.
|
||||
📊 Wussten Sie schon? Fast 80 % der geplanten neuen Projekte setzen auf Erdkabel – eine Technologie, die sowohl die Landschaft schont als auch die Akzeptanz in der Bevölkerung erhöht.
|
||||
## Die Rolle von Hoch- und Höchstspannungsleitungen
|
||||
Hoch- und Höchstspannungsleitungen sind unverzichtbar für den Stromtransport über mittlere und große Entfernungen. Dabei erfüllen sie unterschiedliche Aufgaben:
|
||||
- **Hochspannungsleitungen (110 kV):** Diese Leitungen sind hauptsächlich für die regionale Stromverteilung verantwortlich und sorgen dafür, dass Energie aus großen Umspannwerken in lokale Netze eingespeist wird.
|
||||
- **Höchstspannungsleitungen (220–380 kV):** Sie transportieren Strom über große Entfernungen mit minimalen Verlusten und sind essenziell, um Energie von Erzeugungsregionen (z. B. Windparks in Norddeutschland) in Verbrauchszentren (z. B. industrielle Ballungsräume im Süden) zu bringen.
|
||||
|
||||
<h4>Freileitungen vs. Erdkabel</h4>
|
||||
Während Freileitungen günstiger und schneller zu bauen sind, punkten Erdkabel durch eine geringere visuelle Beeinträchtigung und weniger elektromagnetische Emissionen. Erdkabel eignen sich besonders für Naturschutzgebiete oder dicht besiedelte Regionen, wo Freileitungen auf Widerstände stoßen.
|
||||
🔍 Expertentipp: Mit innovativen Kabeltechnologien wie NA2XS(F)2Y können Effizienz und Umweltfreundlichkeit in Einklang gebracht werden – die ideale Lösung für die Energiewende!
|
||||
## „Die Wahl zwischen Freileitung und Erdkabel ist nicht nur eine Frage der Technik, sondern auch der Akzeptanz. Beide Technologien haben ihren Platz – die Kunst liegt in der richtigen Kombination.“
|
||||
## Hindernisse und Lösungen beim Netzausbau
|
||||
Der Netzausbau ist nicht nur eine technische, sondern auch eine gesellschaftliche Herausforderung. Lange Genehmigungsverfahren, die bis zu zehn Jahre dauern können, und der Widerstand von Bürgerinitiativen machen vielen Projekten zu schaffen.
|
||||
<h4>Typische Hindernisse</h4>
|
||||
- **Bürokratische Prozesse:** Die Abstimmung zwischen verschiedenen Behörden verzögert oft den Projektstart.
|
||||
- **Regionale Akzeptanzprobleme:** Bürger kritisieren oft Eingriffe in die Landschaft oder befürchten negative Auswirkungen durch elektromagnetische Felder.
|
||||
- **Fachkräftemangel:** Die Nachfrage nach spezialisierten Arbeitskräften in der Kabel- und Netzbauindustrie übersteigt das Angebot.
|
||||
|
||||
<h4>Lösungsansätze</h4>
|
||||
- **Transparenz und Beteiligung:** Bürger sollten frühzeitig in Planungen einbezogen werden, um Ängste und Vorurteile abzubauen.
|
||||
- **Technologieeinsatz:** Digitale Werkzeuge wie 3D-Modellierungen helfen, Projekte schneller und effizienter zu planen.
|
||||
- **Zusammenarbeit:** Netzbetreiber, Politik und Unternehmen müssen enger zusammenarbeiten, um Hürden schneller zu überwinden.
|
||||
|
||||
📢 Wussten Sie schon? Projekte mit aktiver Bürgerbeteiligung werden in der Regel doppelt so schnell genehmigt wie solche ohne!
|
||||
## Der Netzausbau als Motor für die Energiewende
|
||||
Ohne einen umfassenden Ausbau der Stromnetze bleibt die Energiewende eine Vision. Neue Leitungen verbinden die stark regenerativ geprägten Erzeugungsregionen mit den Verbrauchszentren in ganz Deutschland. Dadurch wird nicht nur die Versorgungssicherheit erhöht, sondern auch der Einsatz fossiler Energien drastisch reduziert.
|
||||
<h4>Versorgungssicherheit</h4>
|
||||
Ein stark ausgebautes Netz kann Schwankungen in der Stromerzeugung – etwa durch windstille oder sonnenarme Tage – besser ausgleichen. Durch die Integration von Speichersystemen wird das Netz zudem robuster gegenüber Belastungsspitzen.
|
||||
<h4>Klimaziele</h4>
|
||||
Deutschland hat sich verpflichtet, bis 2045 klimaneutral zu sein. Der Netzausbau ist dabei essenziell, um die wachsenden Kapazitäten an Wind- und Solarstrom aufzunehmen und effizient zu nutzen.
|
||||
⚡ Gut zu wissen: Moderne Kabel können heute bis zu 40 % mehr Strom transportieren als ihre Vorgänger und tragen so aktiv zu einer höheren Netzkapazität bei!
|
||||
## Ausblick: Wie geht es bis 2025 weiter?
|
||||
Die nächsten Jahre werden entscheidend für die Energiewende sein. Projekte wie SuedLink, A-Nord und Ultranet stehen kurz vor der Fertigstellung und werden das Rückgrat des neuen deutschen Stromnetzes bilden.
|
||||
<h4>Digitalisierung des Netzes</h4>
|
||||
Neue Technologien wie smarte Überwachungssysteme und KI-gestützte Analysen werden dazu beitragen, Netzstörungen schneller zu erkennen und zu beheben.
|
||||
<h4>Integration neuer Technologien</h4>
|
||||
Die Einbindung von Wasserstofftechnologien und dezentralen Speichersystemen wird das Netz flexibler und widerstandsfähiger machen. Dies ermöglicht es, erneuerbare Energien noch besser zu nutzen und die Versorgung zu optimieren.
|
||||
🚀 Wussten Sie schon? Deutschland investiert jährlich über 15 Milliarden Euro in den Netzausbau – eine der höchsten Summen weltweit!
|
||||
## Gemeinsam die Energiezukunft gestalten
|
||||
Der Netzausbau ist das Rückgrat der Energiewende – ohne ihn bleibt grüner Strom oft ungenutzt, weil er die Verbrauchszentren nicht erreicht. Mit jedem neuen Kilometer Leitung kommen wir den Klimazielen näher, stärken die Versorgungssicherheit und schaffen die Grundlage für eine nachhaltige Energiezukunft.
|
||||
Doch der Weg ist nicht ohne Herausforderungen: Bürokratische Prozesse, technologische Anforderungen und lokale Widerstände bremsen Projekte oft aus. Genau hier setzt KLZ an: Mit einem breiten Portfolio an innovativen Kabeltechnologien, wie NA2XS(F)2Y oder NAYY, liefern wir die nötige Infrastruktur für moderne und effiziente Stromnetze.
|
||||
Unsere schnelle Lieferung, tiefes Marktwissen und die Nähe zu unseren Kunden in Deutschland und den Niederlanden machen uns zu einem zuverlässigen Partner für Netzbetreiber und Installateure. Darüber hinaus setzen wir auf Nachhaltigkeit, sei es durch Recycling, die Nutzung von Sekundärrohstoffen oder unsere kostenfreie Trommel-Rücknahme.
|
||||
Kurz gesagt: KLZ steht bereit, die Energiewende mit hochwertigen Kabeln, technischer Expertise und nachhaltigen Lösungen zu unterstützen. Gemeinsam können wir die Energiezukunft aktiv gestalten! 🌱⚡
|
||||
@@ -1,51 +0,0 @@
|
||||
---
|
||||
title: 'Recycling von Kabeltrommeln: Nachhaltigkeit im Windkraftprojekt'
|
||||
date: '2025-03-03T09:30:21'
|
||||
featuredImage: /uploads/2025/02/5.webp
|
||||
locale: de
|
||||
category: Kabel Technologie
|
||||
---
|
||||
# Recycling von Kabeltrommeln: Nachhaltigkeit im Windkraftprojekt
|
||||
## Die Herausforderung des Kabeltrommel-Recyclings
|
||||
Kabeltrommeln spielen eine essenzielle Rolle in der Windkraftbranche – sie ermöglichen den sicheren Transport und die Lagerung von Stromkabeln. Doch was geschieht mit ihnen, wenn die Kabel verlegt sind? Jährlich fallen unzählige Trommeln an, die entweder entsorgt oder einer sinnvollen Wiederverwendung zugeführt werden müssen.
|
||||
Ohne ein durchdachtes Recyclingkonzept würden enorme Mengen an Holz, Stahl und Kunststoff ungenutzt bleiben. Dabei gibt es längst effiziente Lösungen, um Kabeltrommeln in den Rohstoffkreislauf zurückzuführen und die Umweltbelastung zu minimieren.
|
||||
<hr />
|
||||
## Materialien und ihre Wiederverwertung
|
||||
Kabeltrommeln bestehen aus unterschiedlichen Materialien, die jeweils verschiedene Recyclingmöglichkeiten bieten. Eine gezielte Rückführung hängt davon ab, ob das Material wiederverwertet oder weiterverarbeitet werden kann.
|
||||
|
||||
<StickyNarrative
|
||||
title="Materialien und ihre Wiederverwertung"
|
||||
items={[
|
||||
{ title: "Holz", content: "**Eigenschaften:** Biologisch abbaubar, leicht zu reparieren. **Recycling:** Upcycling, Biomasse, Palettenbau." },
|
||||
{ title: "Stahl", content: "**Eigenschaften:** Stabil, wiederverwendbar, korrosionsbeständig. **Recycling:** Einschmelzen, Wiederverwertung." },
|
||||
{ title: "Kunststoff", content: "**Eigenschaften:** Witterungsbeständig, leicht, langlebig. **Recycling:** Granulat-Herstellung, Upcycling." }
|
||||
]}
|
||||
/>
|
||||
|
||||
Je nach Zustand der Trommeln können sie direkt wiederverwendet, repariert oder in ihre Einzelbestandteile zerlegt werden. Besonders Holz kann vielseitig genutzt werden, während Stahl und Kunststoff wertvolle Rohstoffe für neue Produkte liefern.
|
||||
Um Rohstoffverluste zu vermeiden, ist es entscheidend, beschädigte Kabeltrommeln nicht als Abfall zu betrachten, sondern als wertvolle Ressource.
|
||||
## Der Recyclingprozess: Von der Rücknahme zur Wiederverwertung
|
||||
Ein funktionierendes Recycling beginnt mit einer klaren Struktur für die Rücknahme und Verwertung der Trommeln. Der Prozess umfasst mehrere Schritte, die sicherstellen, dass möglichst viele Materialien wiederverwendet werden.
|
||||
<h4>Recyclingablauf in fünf Schritten</h4>
|
||||
- **Rückholung** – Die gebrauchten Trommeln werden durch ein Pfandsystem oder eine kostenlose Rücknahme eingesammelt.
|
||||
- **Zustandsprüfung** – Eine Inspektion entscheidet, ob sie direkt wiederverwendet oder aufbereitet werden müssen.
|
||||
- **Reparatur **und** Aufbereitung** – Defekte Teile werden ersetzt, gereinigt oder abgeschliffen.
|
||||
- **Wiederverwendung **oder** Recycling** – Intakte Trommeln gehen erneut in den Einsatz, beschädigte werden dem Materialkreislauf zugeführt.
|
||||
- **Neuproduktion** – Falls eine Trommel nicht mehr nutzbar ist, werden ihre Materialien für neue Produkte eingesetzt.
|
||||
|
||||
Mit diesem Kreislauf lassen sich bis zu **90 %** der eingesetzten** Materialien wiederverwenden**, was sowohl ökologisch als auch ökonomisch von Vorteil ist.
|
||||
## Vorteile eines geschlossenen Recycling-Kreislaufs
|
||||
Ein konsequentes Recycling von Kabeltrommeln bringt zahlreiche Vorteile für Unternehmen, Netzbetreiber und die Umwelt. Neben der Einsparung von Ressourcen und der Reduzierung von Abfall trägt es auch zur Nachhaltigkeitsstrategie vieler Unternehmen bei.
|
||||
<h4>Die wichtigsten Vorteile im Überblick:</h4>
|
||||
✔ **Kostenersparnis** durch reduzierte Anschaffung neuer Trommeln<br />✔ **Ressourcenschonung**, da weniger Holz, Stahl und Kunststoff benötigt werden<br />✔ **CO₂-Reduktion**, da der Produktionsaufwand für neue Trommeln sinkt<br />✔ **Umweltfreundlichkeit** durch Abfallvermeidung und weniger Deponiemüll<br />✔ **Verbessertes Unternehmensimage** dank nachhaltiger Prozesse
|
||||
Gerade im Kontext der Energiewende ist es entscheidend, auch die Logistik rund um den Netzaufbau umweltfreundlicher zu gestalten.
|
||||
## Zukunftsperspektiven: Nachhaltigkeit weiterdenken
|
||||
Während das Recycling von Kabeltrommeln bereits viele Fortschritte gemacht hat, gibt es noch Optimierungspotenzial. Neue Technologien und innovative Ansätze können die Nachhaltigkeit weiter vorantreiben.
|
||||
<h4>Drei mögliche Entwicklungen für die Zukunft:</h4>
|
||||
🔍 **RFID-Chips zur Nachverfolgung** – Intelligente Trommeln könnten mit RFID-Technologie ausgestattet werden, um ihre Standorte zu tracken und eine effizientere Rückholung zu ermöglichen.
|
||||
🔧 **Modulare Trommel-Systeme** – Künftig könnten beschädigte Trommelteile gezielt ersetzt werden, anstatt die gesamte Trommel zu entsorgen.
|
||||
🌱 **Materialinnovationen** – Forschung an neuen Materialien könnte langlebigere und besser recycelbare Trommeln ermöglichen, beispielsweise durch umweltfreundlichere Kunststoffe oder stabilere Holzverbindungen.
|
||||
Die Windkraftbranche trägt eine große Verantwortung für nachhaltiges Handeln – ein funktionierendes Recycling von Kabeltrommeln ist dabei ein wichtiger Baustein für eine ressourcenschonende Zukunft.
|
||||
<blockquote>
|
||||
💡 Durch die Rückgabe und Wiederverwertung von Kabeltrommeln lassen sich nicht nur Kosten sparen, sondern auch wertvolle Ressourcen schützen – ein Gewinn für Unternehmen und Umwelt gleichermaßen.
|
||||
</blockquote>
|
||||
@@ -1,54 +0,0 @@
|
||||
---
|
||||
title: Reicht Windenergie wirklich nicht? Ein Blick hinter die Schlagzeilen
|
||||
date: '2025-02-03T11:30:21'
|
||||
featuredImage: '/uploads/2025/01/offshore-wind-power-and-energy-farm-with-many-wind-2023-11-27-04-51-29-utc-scaled.webp'
|
||||
locale: de
|
||||
category: Kabel Technologie
|
||||
---
|
||||
# Reicht Windenergie wirklich nicht? Ein Blick hinter die Schlagzeilen
|
||||
## Die Diskussion um die Windenergie
|
||||
Die Schlagzeilen machen es sich oft leicht: „Windenergie reicht nicht aus.“ Solche Aussagen ignorieren jedoch, dass Windparks in Deutschland oft mehr Strom produzieren, als aktuell ins Netz eingespeist werden kann. Das Problem ist also weniger die Erzeugung, sondern vielmehr die **Verteilung**.
|
||||
Viele Menschen sind überrascht, dass Windenergie rein rechnerisch bereits heute einen Großteil unseres **Energiebedarfs** decken könnte – wenn die Netze entsprechend ausgebaut wären. Doch veraltete Leitungen, fehlende Speichertechnologien und der schleppende Netzausbau verhindern, dass das volle Potenzial der Windenergie genutzt wird.
|
||||
🧐 **Erkenntnis:** Die Windräder drehen sich – es liegt an uns, die Energie dort hinzubringen, wo sie gebraucht wird!
|
||||
## Die Herausforderungen der Windenergie
|
||||
Windenergie hat ein großes Potenzial, stößt aber auch auf einige natürliche und technische Grenzen. Von ungleichmäßigen Windverhältnissen bis hin zu fehlenden Speicherlösungen – diese Herausforderungen zeigen, dass es nicht nur auf die Windräder ankommt, sondern auf das gesamte Energiesystem.
|
||||
- **Schwankungen und Dunkelflauten:** Wind ist eine variable Energiequelle. Es gibt Zeiten mit zu wenig Wind und damit weniger Stromerzeugung (Dunkelflaute) sowie windstarke Tage, an denen mehr Energie produziert wird, als das Netz aufnehmen kann. Diese Schwankungen stellen besondere Anforderungen an das Energiesystem.
|
||||
- **Speichertechnologien als Schlüssel:** Speicher wie Batterien, Pumpspeicherkraftwerke oder Wasserstoffanlagen sind die ideale Ergänzung zur Windenergie. Sie helfen, überschüssige Energie aus windreichen Zeiten für windstille Tage zu speichern. Allerdings sind solche Technologien oft noch teuer und nicht flächendeckend verfügbar.
|
||||
- **Flexibles Netzmanagement:** Ein intelligentes Stromnetz ist entscheidend, um die Energie immer dorthin zu leiten, wo sie gerade gebraucht wird. Hier stehen wir noch am Anfang, denn viele Stromleitungen sind weder digital vernetzt noch auf erneuerbare Energien ausgelegt.
|
||||
|
||||
🔄 **Tipp:** Speicher und smarte Netze sind nicht nur für Windenergie wichtig – sie sind der Schlüssel zu einer stabilen, nachhaltigen Energiezukunft!
|
||||
## Die wahre Schwäche: Die Infrastruktur
|
||||
Ein häufig übersehenes Problem bei der Windenergie ist die Infrastruktur. Offshore-Windparks produzieren **riesige Mengen Strom**, doch oft können sie **nicht vollständig ins Netz eingespeist** werden, da die Stromleitungen auf dem Festland nicht ausreichend Kapazität bieten.
|
||||
Ein weiteres Problem ist die geografische Verteilung: Windparks stehen oft in Norddeutschland, während ein Großteil des Strombedarfs in südlicheren Regionen liegt. Ohne leistungsfähige Stromleitungen bleibt viel Energie auf der Strecke.
|
||||
Hier zeigt sich, wie wichtig der **Netzausbau** ist. Neue Kabel mit höherer Übertragungskapazität und optimierter Isolierung können helfen, Energieverluste zu minimieren und Engpässe zu verhindern.
|
||||
📉 **Gedanke:** Nicht der Wind ist das Problem – wir brauchen Leitungen, die mit ihm mithalten können!
|
||||
## Kabel als Herzstück der Energiewende
|
||||
Kabel sind die unsichtbaren Helden der Energieversorgung. Ohne sie würde kein einziger Windpark ans Netz gehen. Unsere Kabel, wie **NA2XS(F)2Y** oder **NAYY**, sind speziell für diese Herausforderungen ausgelegt.
|
||||
- **NA2XS(F)2Y:** Ein hochmodernes Mittelspannungskabel, das selbst auf langen Strecken zuverlässigen und verlustarmen Energietransport gewährleistet. Ideal für die Verbindung von Windparks mit Umspannwerken.
|
||||
- **NAYY und NAYY-J:** Diese Kabel sind echte Alleskönner. Sie finden vor allem im Mittel- und Niederspannungsbereich Anwendung, z. B. bei der Einspeisung ins regionale Netz.
|
||||
- **Warum Qualität entscheidend ist:** Minderwertige Kabel können nicht nur Energieverluste verursachen, sondern auch das Netz belasten. Hochwertige Kabel tragen zur Effizienz und Zuverlässigkeit der gesamten Energieinfrastruktur bei.
|
||||
|
||||
🔌 **Zusammenfassung:** Die Energiewende beginnt im Detail – und das Detail sind die Kabel!
|
||||
## Nachhaltige Lösungen in der Infrastruktur
|
||||
In einer grünen Zukunft geht es nicht nur darum, Energie nachhaltig zu erzeugen, sondern auch darum, sie nachhaltig zu verteilen. Wir setzen deshalb auf Recycling und innovative Ansätze:
|
||||
- **Ressourcenschonung:** Alte Kabel und Materialien werden wiederverwendet, um die Umwelt zu entlasten.
|
||||
- **Trommel-Rückgabesystem:** Unsere Kunden können Kabeltrommeln kostenlos zurückgeben. Diese werden repariert und wiederverwendet, was Abfall reduziert und Ressourcen spart.
|
||||
- **Klimafreundliche Logistik:** Wir minimieren Transportwege und setzen auf effiziente Lieferketten, um den CO₂-Ausstoß zu senken.
|
||||
|
||||
🌱 **Wertvoller Hinweis:** Nachhaltigkeit ist mehr als nur ein Schlagwort – sie beginnt bei jedem Detail der Infrastruktur.
|
||||
## Ein Mix aus Lösungen: Windenergie im System
|
||||
Windenergie allein ist nicht die Antwort auf alle Energiefragen – und das war auch nie ihr Anspruch. Der Schlüssel zu einer stabilen, nachhaltigen Energieversorgung liegt in einem klug abgestimmten Mix aus verschiedenen erneuerbaren Energien. Windparks liefern eine große Menge Strom, wenn der Wind weht, während Solarenergie ihre Stärke an sonnigen Tagen zeigt. Ergänzt durch Biomasse und Wasserkraft entsteht ein System, das die Schwankungen einzelner Energiequellen ausgleicht.
|
||||
<h4>Das Zusammenspiel von Speicher und Netz</h4>
|
||||
Doch selbst der beste Energiemix kann seine Stärken nur dann ausspielen, wenn Speichertechnologien und Netze die Energie dorthin bringen, wo sie gebraucht wird. Pumpspeicherwerke, Batterien und Wasserstoffspeicher fangen Überschüsse aus windreichen oder sonnigen Zeiten auf und geben sie bei Bedarf wieder ab. Gleichzeitig müssen die Netze flexibel und leistungsstark genug sein, um den Strom zu verteilen – sowohl regional als auch international.
|
||||
<h4>Die entscheidende Rolle von KLZ</h4>
|
||||
Hier kommen wir ins Spiel. Mit unseren leistungsstarken Kabeln und unserem tiefen Verständnis für die Anforderungen moderner Energieinfrastrukturen unterstützen wir die Umsetzung solcher Lösungen.
|
||||
- Unsere **NA2XS(F)2Y-Mittelspannungskabel** sorgen für verlustarmen Energietransport über große Strecken, z. B. von Windparks in die Umspannwerke.
|
||||
- Mit **NAYY- und NAYY-J-Kabeln** stellen wir sicher, dass Energie zuverlässig ins Mittel- und Niederspannungsnetz eingespeist wird.
|
||||
- Darüber hinaus setzen wir auf nachhaltige Logistik und Recycling, um den ökologischen Fußabdruck der Energiewende zu minimieren.
|
||||
|
||||
Unsere Expertise und unser Angebot ermöglichen es, die verschiedenen Bausteine des Energiemixes effizient miteinander zu verknüpfen. Denn nur mit der passenden Infrastruktur können Windenergie, Solarenergie und Co. ihr volles Potenzial entfalten.
|
||||
⚡ **Erkenntnis:** Der Energiemix kann nur erfolgreich sein, wenn alle Teile – von der Erzeugung bis zur Verteilung – reibungslos zusammenarbeiten. Mit den richtigen Kabeln und Lösungen schaffen wir die Verbindungen für eine grüne Zukunft!
|
||||
Die Windenergie ist oft zu Unrecht Zielscheibe der Kritik. Sie produziert bereits heute genug Energie, um Millionen Haushalte zu versorgen – vorausgesetzt, sie wird richtig ins Netz eingebunden. Der Ausbau von Infrastruktur und Kabeln, wie **NA2XS(F)2Y** und **NAYY**, ist der entscheidende Schritt, um ihr volles Potenzial auszuschöpfen.
|
||||
Wie groß dieses Potenzial tatsächlich ist, zeigt eine neue [Studie der Deutschen WindGuard](https://www.wind-energie.de/presse/pressemitteilungen/detail/neue-studie-windstrompotenziale-noch-hoeher-als-gedacht/), die vom Bundesverband WindEnergie (BWE) und dem Landesverband Erneuerbare Energien NRW (LEE NRW) in Auftrag gegeben wurde. Die Untersuchung ergab, dass durch den Einsatz moderner Windenergieanlagen mit höheren Volllaststunden allein auf den bisher ausgewiesenen Flächen die Windstromerzeugung bis 2030 auf über 200 Terawattstunden (TWh) verdoppelt werden könnte. Durch zusätzliche Flächenausweisungen wäre sogar eine Steigerung auf 500 TWh möglich.
|
||||
Mit moderner Technologie, nachhaltigen Lösungen und innovativen Ideen können wir die Energiewende meistern.
|
||||
🏗️ **Gedanke für die Zukunft:** Die Windenergie kann uns tragen – wenn wir ihr die richtigen Wege bauen!
|
||||
@@ -1,95 +0,0 @@
|
||||
---
|
||||
title: 'Sicherheit bei Kabeltrommeln: Unfallfrei und effizient arbeiten'
|
||||
date: '2025-01-15T11:18:33'
|
||||
featuredImage: '/uploads/2024/12/large-rolls-of-wires-against-the-blue-sky-at-sunse-2023-11-27-05-20-33-utc-Large.webp'
|
||||
locale: de
|
||||
category: Kabel Technologie
|
||||
---
|
||||
# Sicherheit bei Kabeltrommeln: Unfallfrei und effizient arbeiten
|
||||
<h4>Warum die Sicherheit von Kabeltrommeln so wichtig ist</h4>
|
||||
Kabeltrommeln dienen dazu, Kabel sicher zu lagern und zu schützen. Eine unsachgemäße Handhabung kann jedoch diese Vorteile zunichtemachen. Sowohl die Unversehrtheit der Kabel als auch die Sicherheit der Belegschaft können durch falschen Umgang erheblich beeinträchtigt werden.
|
||||
Die wichtigsten Gründe, Kabeltrommelsicherheit zu priorisieren:
|
||||
- **Längere Lebensdauer der Kabel:** Vermeidung von Abnutzung, mechanischen Schäden und schädlichen Umwelteinflüssen.
|
||||
- **Kostenreduktion:** Vermeidung unnötiger Reparaturen, Austauschkosten und betrieblicher Verzögerungen.
|
||||
- **Einhaltung von Sicherheitsvorschriften:** Sicherstellung von Arbeitsplatzstandards und Vermeidung potenzieller Bußgelder.
|
||||
|
||||
## 1. Richtige Lagerung: Die Grundlage schaffen
|
||||
Eine sichere Lagerung ist der erste Schritt für die Sicherheit von Kabeltrommeln. Fehlerhafte Lagerung kann Kabel beschädigen, ihre Funktion beeinträchtigen und die Risiken bei der Handhabung erhöhen.
|
||||
<h4>Schutz vor Umweltschäden</h4>
|
||||
- **Mechanischer Schutz:** Halten Sie Trommeln von scharfen Gegenständen, schweren Maschinen oder Werkzeugen fern, die Kabel durchbohren oder abreiben könnten.
|
||||
- **UV-Beständigkeit:** Lagern Sie Trommeln in Innenräumen oder unter UV-schutzenden Abdeckungen, um Kabel vor langfristiger Sonneneinstrahlung zu schützen, die Isolierungen abbauen und Risse verursachen kann.
|
||||
- **Temperatur beachten:** Kälte kann Kabel spröde machen, während übermäßige Hitze sie schwächen kann. Lagern Sie Trommeln in Umgebungen, die den empfohlenen Temperaturbereich der Kabel einhalten.
|
||||
|
||||
<h4>Optimierung des Lagerplatzes</h4>
|
||||
- **Ausreichender Abstand:** Sorgen Sie für genügend Platz zwischen den Trommeln, um ein Verheddern oder unbeabsichtigten Kontakt mit scharfen Oberflächen zu vermeiden.
|
||||
- **Durchhängen verhindern:** Stapeln Sie Trommeln niemals direkt auf den Kabeln, da dies zu dauerhafter Verformung oder Leistungseinbußen führen kann.
|
||||
|
||||
📦 Expertentipp: Eine fachgerechte Lagerung schützt Ihre Kabel und erleichtert die Handhabung auf lange Sicht!
|
||||
## 2. Feuchtigkeitsschutz: Alles dicht machen
|
||||
Wasser und Feuchtigkeit gehören zu den größten Gefahren für die Integrität von Kabeln. Dringt Feuchtigkeit in die Kabelenden ein, kann dies zu zahlreichen Problemen führen, darunter Korrosion der Leiter, Kurzschlüsse und letztlich der Ausfall der Isolierung. Der Schutz der Kabel vor Feuchtigkeit ist entscheidend für ihre Langlebigkeit und Leistungsfähigkeit.
|
||||
<h4>Abdichtung der Kabelenden</h4>
|
||||
Die Kabelenden sind besonders anfällig für Feuchtigkeitseintritt. Um dieses Risiko zu minimieren:
|
||||
- **Feuchtigkeitsdichte Kappen verwenden:** Decken Sie die Kabelenden mit speziellen Kappen ab, die Feuchtigkeit abhalten und eine feste Abdichtung gewährleisten.
|
||||
- **Regelmäßige Inspektion:** Überprüfen Sie die Kappen regelmäßig auf Verschleiß, Beschädigungen oder eine unsachgemäße Passform. Ersetzen Sie sie sofort, wenn sie Anzeichen von Schwächen aufweisen, um eine sichere Barriere gegen Feuchtigkeit aufrechtzuerhalten.
|
||||
|
||||
<h4>Erhöhte Lagerung</h4>
|
||||
Auch die richtige Lagerung spielt eine wichtige Rolle beim Schutz vor Feuchtigkeit:
|
||||
- **Regale oder Paletten verwenden:** Lagern Sie Kabeltrommeln erhöht, um direkten Kontakt mit feuchten oder nassen Oberflächen zu vermeiden. Dadurch wird das Risiko minimiert, dass Wasser in die Kabel eindringt.
|
||||
- **Geeignete Lagerorte wählen:** Bewahren Sie Kabel in gut belüfteten, trockenen Bereichen auf, die fern von Wasserquellen oder übermäßiger Luftfeuchtigkeit liegen.
|
||||
|
||||
Durch die Umsetzung dieser Vorsichtsmaßnahmen können Sie das Risiko von feuchtigkeitsbedingten Schäden erheblich reduzieren und die Qualität sowie Sicherheit Ihrer Kabel langfristig bewahren.
|
||||
💧 Clevere Strategie: Ein effektiver Feuchtigkeitsschutz hält Ihre Kabel in Top-Zustand und sorgt für zuverlässige Leistung über viele Jahre hinweg!
|
||||
## 3. Handhabung von Kabeltrommeln: Sicherheit beginnt hier
|
||||
Kabeltrommeln sind schwer, unhandlich zu bewegen und kippen leicht um, wenn sie unsachgemäß gehandhabt werden. Ein durchdachter Umgang minimiert Risiken für Personal und Ausrüstung.
|
||||
<h4>Vor der Handhabung: Inspektionen</h4>
|
||||
- **Gefahren erkennen:** Suchen Sie nach hervorstehenden Nägeln, Splittern oder anderen Defekten, die Kabel oder die Personen bei der Handhabung verletzen könnten.
|
||||
- **Trommelzustand überprüfen:** Stellen Sie sicher, dass die Spule frei von Rissen, Verwerfungen oder anderen strukturellen Schwächen ist.
|
||||
|
||||
<h4>Tipps zur Handhabung</h4>
|
||||
- **Geeignetes Equipment verwenden:** Nutzen Sie Gabelstapler oder Kräne für schwere Trommeln. Überprüfen Sie vorab die Tragfähigkeit Ihrer Ausrüstung.
|
||||
- **Bewegungen kontrollieren:** Vermeiden Sie abrupte Bewegungen, um ein Umkippen oder Verrutschen der Kabel zu verhindern.
|
||||
|
||||
🛠️ Profi-Sicherheitstipp: Gründliche Inspektionen und richtige Handhabungstechniken bilden die Grundlage für ein sicheres und effizientes Kabeltrommel-Management!
|
||||
## 4. Transport von Kabeltrommeln: Stabilität in Bewegung
|
||||
Ein sicherer Transport verhindert das Verrutschen, Rollen oder andere Probleme, die Ihre Kabel beschädigen könnten.
|
||||
<h4>Be- und Entladen</h4>
|
||||
- **Vorausplanen:** Verwenden Sie Geräte, die dem Gewicht und der Größe der Trommel entsprechen. Heben oder lassen Sie Trommeln niemals manuell fallen.
|
||||
- **Richtungsanweisungen beachten:** Rollen Sie Trommeln immer in die angegebene Richtung, um die Kabelspannung zu erhalten und Verhedderungen zu vermeiden.
|
||||
|
||||
<h4>Sicherung der Ladung</h4>
|
||||
- **Horizontale Positionierung:** Halten Sie die Achse der Trommel stets horizontal, um unkontrolliertes Rollen zu verhindern.
|
||||
- **Keile oder Klammern verwenden:** Stabilisieren Sie die Trommeln, um Bewegungen während des Transports zu vermeiden.
|
||||
|
||||
<h4>Stapelhinweise</h4>
|
||||
- Nur mit Schutzgehäusen stapeln: Stellen Sie sicher, dass die untere Lage ausreichend gestützt wird. Ohne Schutzmaßnahmen kann es zu strukturellen Schäden kommen.
|
||||
|
||||
🚛 Logistik-Tipp: Sorgfältige Vorbereitung und sichere Transportmethoden schützen Ihre Kabel und sorgen für einen reibungslosen Betrieb. Brauchen Sie Unterstützung? Kontaktieren Sie uns!
|
||||
## 5. Häufige Herausforderungen und Lösungen für die Sicherheit von Kabeltrommeln
|
||||
Diebstahl, Schäden während der Lagerung und unsachgemäße Handhabung sind häufige Probleme. Hier sind praktische Ansätze, um diese Herausforderungen zu bewältigen:
|
||||
<h4>Diebstahl verhindern</h4>
|
||||
Kabeltrommeln, insbesondere solche mit Kupfer, sind wertvolle Ziele für Diebe. So können Sie sich schützen:
|
||||
- **Anti-Diebstahl-Technologien nutzen:** Installieren Sie GPS-Tracker oder manipulationssichere Siegel an den Trommeln. Weitere Lösungen finden Sie in <em>Effektive Strategien zur Reduzierung von Kabeldiebstahl</em>.
|
||||
- **Gesicherte Lagerung:** Bewahren Sie Trommeln in eingezäunten oder überwachten Bereichen auf. Überwachungssysteme wie in <em>So verhindern Sie Kupfer- und Kabeldiebstahl</em> beschrieben, wirken abschreckend.
|
||||
|
||||
<h4>Schäden bei der Handhabung vermeiden</h4>
|
||||
- **Richtlinien einhalten:** Verwenden Sie geeignetes Hebe-Equipment und vermeiden Sie es, Trommeln fallen zu lassen, da dies die Kabelintegrität beeinträchtigen kann.
|
||||
|
||||
<h4>Schutz vor Umwelteinflüssen</h4>
|
||||
- **Regelmäßige Inspektionen:** Stellen Sie sicher, dass Trommeln während der Langzeitlagerung in gutem Zustand bleiben.
|
||||
- **Investieren in Schutzmaßnahmen:** Langlebige, feuchtigkeitsbeständige Kappen, wie in <em>Einfache Methoden zur Vermeidung von Kabeldiebstahl</em> beschrieben, sind eine kostengünstige Lösung.
|
||||
|
||||
🔒 Sicherheits-Tipp: Proaktive Maßnahmen schützen nicht nur Ihre Kabeltrommeln, sondern sparen auch Zeit und Kosten, indem sie Diebstahl, Schäden und Umwelteinflüsse vermeiden!
|
||||
## Häufig gestellte Fragen zur Sicherheit von Kabeltrommeln
|
||||
- **Wie erkenne ich Schäden an einer Kabeltrommel?**<br />
|
||||
|
||||
Suchen Sie nach Anzeichen wie Rissen in der Spule, beschädigten Siegeln oder freiliegenden Kabelenden. Eine schnelle Inspektion vor jeder Handhabung kann Ihnen größere Probleme ersparen.
|
||||
- **Gibt es Hilfsmittel zum Sichern von Trommeln während des Transports?**<br />
|
||||
|
||||
Ja, Keile, Klammern und Schutzgehäuse sind effektive Hilfsmittel. Investieren Sie in hochwertige Lösungen wie die, die in <em>Anti-Diebstahl-Kupferkabeln</em> beschrieben werden.
|
||||
- **Kann ich Kabeltrommeln wiederverwenden?**<br />
|
||||
|
||||
Ja, viele Kabeltrommeln sind für die Wiederverwendung ausgelegt. Stellen Sie sicher, dass sie sich in gutem Zustand befinden und den Anforderungen Ihres Projekts entsprechen.
|
||||
## Fazit: Sicherheit ist eine Investition
|
||||
Die Umsetzung robuster Sicherheitspraktiken für Kabeltrommeln sorgt für einen reibungslosen Arbeitsablauf, schützt wertvolle Ressourcen und reduziert Risiken. Vom Feuchtigkeitsschutz bis hin zur Diebstahlprävention trägt jeder Schritt zur langfristigen Zuverlässigkeit bei.
|
||||
Indem Sie die Sicherheit von Kabeltrommeln priorisieren, können Sie die Lebensdauer Ihrer Kabel verlängern, Ausfallzeiten minimieren und eine sichere Arbeitsumgebung aufrechterhalten. Weitere Einblicke in die Diebstahlprävention finden Sie in [<em>Die Beendigung des Kupferdiebstahls</em>](https://www.southwire.com/newsroom/archive/putting-an-end-to-copper-theft).
|
||||
Brauchen Sie Unterstützung bei der Sicherung Ihrer Kabeloperationen? Kontaktieren Sie uns noch heute für Expertenrat, nachhaltige Lösungen und erstklassige Kabelprodukte, die auf Ihre Bedürfnisse abgestimmt sind.
|
||||
@@ -1,33 +0,0 @@
|
||||
---
|
||||
title: So wählen Sie das richtige Kabel für Ihr nächstes Projekt aus
|
||||
date: '2025-01-15T13:20:06'
|
||||
featuredImage: /uploads/2024/11/low-voltage-category.webp
|
||||
locale: de
|
||||
category: Kabel Technologie
|
||||
---
|
||||
# So wählen Sie das richtige Kabel für Ihr nächstes Projekt aus
|
||||
## Verstehen von Kabelstandards: VDE und NEN
|
||||
In Europa sind Kabelstandards wichtige Maßstäbe für Sicherheit und Leistung. Die VDE-Standards (Verband der Elektrotechnik) sind in Deutschland unverzichtbar und stellen sicher, dass Kabel strengen elektrischen und mechanischen Anforderungen entsprechen. In den Niederlanden sind die NEN-Standards ebenso entscheidend, da sie lokale Vorschriften und Umweltbedingungen widerspiegeln.
|
||||
Durch die Einhaltung dieser Standards schützen Sie Ihr Projekt vor Misserfolgen und stellen gleichzeitig sicher, dass alle lokalen Vorschriften eingehalten werden – eine klare Win-win-Situation!
|
||||
## Wichtige Faktoren bei der Auswahl eines Kabels
|
||||
- **Anwendungsanforderungen**<br />
|
||||
|
||||
Die Norm gibt das Wesentliche vor. Es ist dann die Frage, ob der Gürtel reicht, oder Hosenträger und Gürtel besser sind, wenn die Verlegekriterien Einem nicht geheuer sind. Die Norm hat Varianten vom Standardkabel bis zum Kabel mit erweiterten Fähigkeiten. Nimmt man ein Standard-Mittelspannungskabel NA2XS2Y und den richtigen Querschnitt, fließt der Strom. Aber ist der Boden voller Steine und zudem feucht, ist vielleicht ein NA2XS(FL)2Y die bessere Variante mit dickerem Außenmantel. Und beim Niederspannungskabel mal überlegen, ob ein NA2XY vielleicht doch die bessere Wahl ist, um nicht immer dickere Querschnitte zu fahren. Kostenbetrachtung inklusive der ganzen Kette des Projektes.
|
||||
- **Die meisten Fehler passieren bei der Verlegung**<br />
|
||||
|
||||
Das Kabel ist auf Herz und Nieren geprüft, wenn es aus der Fertigung kommt. Nur selten gibt es größere Fehler, da der Prozess sehr detailliert überwacht ist. Und dann droht die Gefahr! Folgt man Statistiken der Energieversorgern treten die meisten Fehler bei der Verlegung auf, und beim Verbinden der Kabel. Nicht immer direkt fällt das auf. Es kann Jahre dauern, bis eine Mantelbeschädigung zum Durchschlag führt. Wer gute Kabel will, soll nicht bei der Verlegung sparen.
|
||||
- **Umweltfaktoren**<br />
|
||||
|
||||
Außen-, Untergrund- oder raue industrielle Umgebungen erfordern Kabel, die extremen Temperaturen, UV-Strahlung oder Feuchtigkeit standhalten können. Für diese Bedingungen ist genau zu überlegen, was die beste Option ist. Und auch herstellerabhängig weiß man um die Unterschiede von Qualität, auch wenn alle eine Norm erfüllt haben.
|
||||
- **Konformität und Tests**<br />
|
||||
|
||||
Stellen Sie sicher, dass das Kabel den VDE- oder NEN-Standards entspricht, je nachdem, wo Ihr Projekt stattfindet. Hersteller, die diese Norm geschafft haben, haben in zum Teil jahrelangen Tests bewiesen, dass man den Prozess der Kabelherstellung im Detail versteht. Wir haben Partner, die noch erweitert getestet wurden, um den höchsten Anforderungen zu entsprechen.
|
||||
<h4>Die Risiken einer falschen Wahl oder die Umweltparameter falsch eingeschätzt</h4>
|
||||
Die Verwendung eines minderwertigen oder falsch gewähltem Kabels ist nicht nur ein kleiner Fehler – sie kann zu folgenden Problemen führen:
|
||||
- **Vermehrte Ausfälle:** Falsche oder schlecht verlegte Kabel verschleißen schneller und erfordern kostspielige Reparaturen oder müssen gewechselt werden
|
||||
- **Sicherheitsrisiken:** Überhitzung oder elektrische Fehler können gefährliche Brände oder Stromschläge verursachen.
|
||||
- **Rechtliche Nichtkonformität:** Die Nichteinhaltung von Standards wie VDE oder NEN kann Ihr Projekt in rechtliche Schwierigkeiten bringen, was zu hohen Strafen oder Stilllegungen führen kann.
|
||||
|
||||
## Warum bei uns kaufen?
|
||||
Bei KLZ bieten wir mehr als nur Kabel – wir bieten Ihnen Sicherheit. Unser Sortiment umfasst NA2XS(F)2Y-, NAYY- und NAYY-J-Kabel, die alle getestet wurden, um die strengen VDE- und NEN-Standards (soweit es um niederländische Kabel geht), zu erfüllen. Mit unseren Herstellern und logistischen Partnern gewährleisten wir eine schnelle Lieferung in ganz Deutschland und den Niederlanden, so dass Ihr Projekt im Zeitrahmen bleibt.
|
||||
Außerdem legen wir großen Wert auf Nachhaltigkeit. Unser Trommel-Rückgabeservice ist kostenlos, und unsere Hersteller verwenden Recycling-Materialien da ein, wo es die Kabelqualität und die Normvorgaben nicht beeinflusst. Mit globalen Partnern wie beispielsweise Elsewedy haben wir uns bei den namhaftesten Energieversorgern qualifiziert, die höchste Anforderungen an uns stellen.
|
||||
@@ -1,90 +0,0 @@
|
||||
---
|
||||
title: 'Von smart bis nachhaltig: So sieht die Energiewirtschaft in naher Zukunft aus'
|
||||
date: '2025-03-24T11:00:21'
|
||||
featuredImage: /uploads/2025/02/image_fx_-7.webp
|
||||
locale: de
|
||||
category: Kabel Technologie
|
||||
---
|
||||
# Von smart bis nachhaltig: So sieht die Energiewirtschaft in naher Zukunft aus
|
||||
Eine sichere und nachhaltige Energiezukunft ist nur mit neuen Technologien, smarter Infrastruktur und effizienter Nutzung von Ressourcen möglich.
|
||||
Doch wie sieht die Energieversorgung der Zukunft aus? Welche Rolle spielen Solarenergie, Windkraft und Kabelinfrastruktur? In diesem Artikel werfen wir einen Blick auf die wichtigsten Entwicklungen – von intelligenter Netzsteuerung bis hin zu nachhaltigen Kabelsystemen.
|
||||
# Solarenergie: Die Revolution auf unseren Dächern und Feldern
|
||||
Solarenergie hat sich längst von einer Nischenlösung zur tragenden Säule der Energiewende entwickelt. Neue Technologien machen Photovoltaik effizienter, flexibler und wirtschaftlicher – und das nicht nur auf Hausdächern, sondern auch auf Ackerflächen, in Fassaden und schwimmend auf Seen.
|
||||
|
||||
<StickyNarrative
|
||||
title="Innovationen in der Photovoltaik"
|
||||
items={[
|
||||
{ title: "Tandem-Solarzellen", content: "**Beschreibung:** Kombination aus Silizium und Perowskit für höhere Effizienz. **Vorteil:** Bis zu 30 % mehr Leistung." },
|
||||
{ title: "Agri-PV", content: "**Beschreibung:** Solarmodule über landwirtschaftlichen Flächen. **Vorteil:** Doppelte Flächennutzung für Energie und Ernte." },
|
||||
{ title: "Bifaziale Module", content: "**Beschreibung:** Nutzen Licht von beiden Seiten. **Vorteil:** 10–20 % mehr Ertrag durch Reflexion." }
|
||||
]}
|
||||
/>
|
||||
|
||||
Doch die größte Herausforderung bleibt die Netzintegration: Solarenergie wird vor allem tagsüber produziert – doch unser Strombedarf ist morgens und abends am höchsten. Die Lösung? Smarte Speichertechnologien und intelligente Netzsteuerung, die Sonnenstrom genau dann verfügbar macht, wenn er gebraucht wird.
|
||||
# Windkraft: Höher, stärker, effizienter
|
||||
Windkraft ist neben der Solarenergie der wichtigste Pfeiler der erneuerbaren Energien. Während Offshore-Windparks auf dem Meer gigantische Mengen Strom liefern, sind Onshore-Windkraftanlagen nach wie vor das Rückgrat der nachhaltigen Energieversorgung.
|
||||
## Die neuesten Entwicklungen in der Windkraft
|
||||
- **Größere Rotorblätter**: Je größer die Fläche, desto mehr Energie kann eine Turbine aus dem Wind holen. Neue Materialien und Designs ermöglichen es, die Rotorblätter weiter zu vergrößern, ohne dass sie instabil werden.
|
||||
- **Höhere Türme**: Je höher eine Windkraftanlage, desto konstanter die Windgeschwindigkeit. Moderne Türme erreichen inzwischen über 200 Meter Höhe.
|
||||
- **Intelligente Steuerung**: Künstliche Intelligenz optimiert die Ausrichtung der Rotoren und passt die Leistung an die Wetterbedingungen an.
|
||||
|
||||
Ein entscheidender Faktor für den Erfolg der Windkraft bleibt die Netzanbindung. Ohne eine leistungsfähige Kabelinfrastruktur bleibt die beste Windkraftanlage ungenutzt.
|
||||
# Smarte Energienetze: Intelligenz statt Überlastung
|
||||
Die Energiewende braucht mehr als nur saubere Stromerzeugung – sie braucht auch ein Netz, das intelligent genug ist, den schwankenden Strom aus erneuerbaren Quellen effizient zu verteilen.
|
||||
💡 **Was macht ein Energienetz smart?**<br />✔ **Digitale Messsysteme**: Intelligente Zähler überwachen den Verbrauch und optimieren die Netzlast.<br />✔ **Automatisierte Netzsteuerung**: KI-gestützte Systeme balancieren Angebot und Nachfrage aus.<br />✔ **Flexibilitätsmärkte**: Verbraucher können ihren Strom gezielt einspeisen oder verbrauchen, wenn es am besten passt.
|
||||
Ohne diese Technologien würden unsere Stromnetze durch die stark schwankende Produktion aus Wind- und Solarparks an ihre Grenzen kommen. Smarte Netze sind also nicht nur eine Ergänzung – sie sind essenziell für eine nachhaltige Energiezukunft.
|
||||
# Nachhaltige Energieinfrastruktur: Kabel, Netzausbau und Recycling
|
||||
Die Energiewende erfordert massive Investitionen in die Infrastruktur. Erneuerbare Energiequellen sind oft weit entfernt von den Verbrauchszentren, was leistungsfähige Kabelverbindungen notwendig macht.
|
||||
## Drei zentrale Säulen der nachhaltigen Energieinfrastruktur:
|
||||
- **Hochleistungskabel für erneuerbare Energien**
|
||||
- Moderne Kabeltechnologien reduzieren Energieverluste auf langen Strecken.
|
||||
- Innovative Isolationsmaterialien erhöhen die Lebensdauer und Widerstandsfähigkeit.
|
||||
- **Netzanschlüsse für Wind- und Solarparks**
|
||||
- Dezentrale Einspeisung erfordert flexible Netzanschlüsse.
|
||||
- Neue Konzepte wie „Supergrids“ verbinden ganze Regionen effizienter.
|
||||
- **Recycling und Kreislaufwirtschaft in der Kabeltechnik**
|
||||
- Alte Kabel enthalten wertvolle Rohstoffe wie Kupfer und Aluminium.
|
||||
- Moderne Recyclingmethoden ermöglichen eine Wiederverwertung von bis zu 95 %.
|
||||
|
||||
Ein nachhaltiger Netzausbau bedeutet also nicht nur, neue Verbindungen zu schaffen, sondern auch, bestehende Ressourcen klug zu nutzen.
|
||||
# Kabel als Rückgrat der Energiewende
|
||||
Ohne leistungsfähige Kabel wären weder Windparks noch Solaranlagen mit dem Netz verbunden. Die Wahl der richtigen Kabel spielt daher eine zentrale Rolle.
|
||||
## Vergleich: Hochspannungs- vs. Mittelspannungskabel
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Kabeltyp</th>
|
||||
<th>Spannungsebene</th>
|
||||
<th>Anwendung</th>
|
||||
<th>Vorteile</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>**Mittelspannungskabel (z. B. NA2XS(F)2Y)**</td>
|
||||
<td>10 – 36 kV</td>
|
||||
<td>Netzanschluss von Wind- und Solarparks</td>
|
||||
<td>Flexibel, kostengünstig</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>**Hochspannungskabel (z. B. NA2XS(F)2Y 110 kV)**</td>
|
||||
<td>110 – 380 kV</td>
|
||||
<td>Transport von Strom über weite Strecken</td>
|
||||
<td>Geringe Verluste, hohe Kapazität</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
Aber was genau unterscheidet **Hochspannungs- von Niederspannungskabeln**? Die Antwort darauf gibt dieser [Artikel zu den Unterschieden zwischen Hoch- und Niederspannungskabeln](https://de.kbs-connector.com/news/differences-between-hv-and-lv-cables-62284565.html). Dort wird ausführlich erklärt, welche Isolationsmaterialien verwendet werden, wie sich Kabel im Stromtransport unterscheiden und worauf es bei der Installation ankommt.
|
||||
🔧 **Die Zukunft der Kabeltechnologie:**
|
||||
- **Supraleitende Kabel** ermöglichen nahezu verlustfreien Stromtransport.
|
||||
- **Recyclingfreundliche Materialien** senken die Umweltbelastung.
|
||||
- **KI-gestützte Überwachungssysteme** erkennen Schäden frühzeitig und verlängern die Lebensdauer.
|
||||
|
||||
Damit ist klar: Kabel sind mehr als nur Verbindungen – sie sind das Rückgrat einer nachhaltigen Energieversorgung.
|
||||
# Der Weg in eine intelligente und nachhaltige Energiezukunft
|
||||
Die Energiewirtschaft der Zukunft ist smart, nachhaltig und vernetzt. Doch um diesen Wandel zu vollziehen, sind Investitionen in Infrastruktur, neue Technologien und Recycling unverzichtbar.
|
||||
- **Solarenergie **und** Windkraft** sind die Hauptpfeiler der Energiewende.
|
||||
- **Smarte Netze** sorgen dafür, dass erneuerbare Energien effizient genutzt werden.
|
||||
- **Leistungsfähige Kabelsysteme** sind die unsichtbaren Helden der Transformation.
|
||||
|
||||
Jetzt liegt es an Politik, Wirtschaft und Gesellschaft, diese Zukunft aktiv mitzugestalten. Denn die Energiewende passiert nicht irgendwann – sie passiert jetzt. 🚀
|
||||
@@ -1,56 +0,0 @@
|
||||
---
|
||||
title: Warum die richtigen Kabel der geheime Held der grünen Energie sind
|
||||
date: '2025-01-27T11:30:48'
|
||||
featuredImage: '/uploads/2025/01/technicians-inspecting-wind-turbines-in-a-green-en-2024-12-09-01-25-20-utc-scaled.webp'
|
||||
locale: de
|
||||
category: Kabel Technologie
|
||||
---
|
||||
# Warum die richtigen Kabel der geheime Held der grünen Energie sind
|
||||
## Warum Kabel mehr als nur ein Bindeglied sind
|
||||
Wenn wir an **grüne Energie** denken, kommen uns Bilder von **Windrädern**, **Solarpanels** und großen **Batteriespeichern** in den Sinn. Doch diese beeindruckenden Technologien wären nutzlos ohne ein entscheidendes Element: die **Kabel**. Sie sind die unsichtbaren Lebensadern der Energiewende, die den Strom aus erneuerbaren Quellen sicher und effizient zu den Verbrauchern transportieren.
|
||||
Dabei übernehmen Kabel weit mehr Aufgaben, als man auf den ersten Blick vermuten würde. Sie tragen dazu bei, Energieverluste zu minimieren, die Sicherheit der Stromübertragung zu gewährleisten und die langfristige Zuverlässigkeit von Energieanlagen sicherzustellen. Mit anderen Worten: Ohne die richtigen Kabel bleibt die Energiewende auf halber Strecke stehen.
|
||||
⚡ Zusammengefasst: Kabel sind keine nebensächlichen Bauteile, sondern die Basis jeder funktionierenden Energieinfrastruktur.
|
||||
## Die Rolle der Kabel in Wind- und Solarparks
|
||||
Wind- und Solarparks sind komplexe Netzwerke, in denen Kabel eine zentrale Rolle spielen. Von der Verbindung einzelner Solarmodule bis hin zur Anbindung ganzer Windturbinen an das zentrale Stromnetz – ohne leistungsstarke und robuste Kabel würde keine dieser Anlagen funktionieren.
|
||||
Die Anforderungen an Kabel in solchen Parks sind enorm:
|
||||
- **Mechanische Belastungen:** Kabel in Windparks werden oft durch den Boden verlegt und müssen dabei hohem Druck standhalten. Offshore kommen noch die Bewegungen von Wellen und Turbinen hinzu.
|
||||
- **Witterungsbeständigkeit:** In Solarparks sind Kabel starker UV-Strahlung und extremen Temperaturschwankungen ausgesetzt, während sie in Windparks gegen Feuchtigkeit und salzhaltige Luft resistent sein müssen.
|
||||
- **Leitfähigkeit:** Kabel in diesen Anlagen müssen so konzipiert sein, dass Energieverluste bei der Übertragung minimiert werden, um den erzeugten Strom maximal effizient zu nutzen.
|
||||
- **Chemikalienresistenz:** Besonders bei Offshore-Windparks können Chemikalien und Salzwasser die Kabel langfristig angreifen, weshalb spezielle Isolierungen notwendig sind.
|
||||
|
||||
Ein guter Überblick über die spezifischen Herausforderungen, denen Kabel in Windenergieanlagen ausgesetzt sind, findet sich im Artikel [„Was muss ein Windenergie-Kabel aushalten?“](https://www.elektro.net/79661/was-muss-ein-windenergie-kabel-aushalten/). Dort wird detailliert beschrieben, wie Kabel extremen mechanischen Belastungen, widrigen Umweltbedingungen und anspruchsvollen Sicherheitsanforderungen gerecht werden.
|
||||
Der Einsatz spezialisierter Kabeltypen wie NA2XS(F)2Y, NAYY oder NAYY-J ist daher unerlässlich. Diese Kabel wurden speziell für den Einsatz in solchen anspruchsvollen Umgebungen entwickelt und garantieren eine zuverlässige Stromübertragung über Jahre hinweg.
|
||||
🌬️ Merke: Je extremer die Umgebung, desto wichtiger ist die Qualität und Spezifikation der eingesetzten Kabel. Planen Sie vorausschauend!
|
||||
<h4>Materialien und Nachhaltigkeit: Warum die Wahl des Kabels zählt</h4>
|
||||
Nachhaltigkeit endet nicht bei der Erzeugung von Strom aus erneuerbaren Energien – sie fängt bereits bei den verwendeten Materialien an. Kabel spielen dabei eine Schlüsselrolle, da sie nicht nur **energieeffizient** sein sollten, sondern auch **umweltfreundlich** hergestellt werden müssen.
|
||||
Die modernsten Kabel auf dem Markt werden aus **recycelbaren** Materialien gefertigt, die die Umwelt weniger belasten. Zudem sind sie frei von Schadstoffen wie Blei oder Halogenen, was ihre Sicherheit und Umweltverträglichkeit erhöht. Darüber hinaus sorgen hochwertige Kabel dafür, dass Energieverluste während der Übertragung minimiert werden, was sich **positiv** auf die **CO₂-Bilanz** eines Projekts auswirkt.
|
||||
Ein weiterer wichtiger Aspekt ist die **Wiederverwendbarkeit**. Viele Hersteller bieten mittlerweile Systeme an, um alte Kabel effizient zu recyceln, was den Rohstoffverbrauch und den Abfall reduziert. KLZ setzt in diesem Bereich auf Partner, die strengste Umweltstandards einhalten und innovative Recyclinglösungen anbieten.
|
||||
🌱 Empfehlung: Entscheiden Sie sich für umweltfreundliche Kabel, die recycelbar und schadstofffrei sind. Damit leisten Sie einen doppelten Beitrag zur Nachhaltigkeit.
|
||||
<h4>Sicher, effizient, langlebig: Eigenschaften von Qualitätskabeln</h4>
|
||||
Hochwertige Kabel zeichnen sich durch drei wesentliche Eigenschaften aus: Sicherheit, Effizienz und Langlebigkeit. Sie müssen extremen Belastungen standhalten, sei es durch mechanische Beanspruchung, extreme Wetterbedingungen oder chemische Einflüsse.
|
||||
- **Sicherheit:** Hochwertige Kabel minimieren das Risiko von Kurzschlüssen, Stromlecks oder Bränden. Eine gute Isolierung und robuste Konstruktion sind entscheidend, insbesondere in Anlagen mit hoher Leistung.
|
||||
- **Effizienz:** Effiziente Kabel transportieren Strom mit minimalen Verlusten, was die Wirtschaftlichkeit einer Anlage deutlich verbessert. Das wirkt sich nicht nur positiv auf die Betriebskosten, sondern auch auf die Umwelt aus.
|
||||
- **Langlebigkeit:** Qualitativ hochwertige Kabel haben eine Lebensdauer von Jahrzehnten. Sie sind eine Investition, die sich langfristig auszahlt, da sie Reparaturen und Ersatz deutlich reduzieren.
|
||||
|
||||
Mit Produkten wie NAYY-J oder NA2XS(F)2Y, die genau auf diese Anforderungen abgestimmt sind, stellt KLZ sicher, dass Ihre Projekte maximale Effizienz und Sicherheit erreichen.
|
||||
🛡️ Profi-Tipp: Sparen Sie nicht an der falschen Stelle – Investitionen in Qualitätskabel zahlen sich über die gesamte Lebensdauer Ihrer Anlage aus.
|
||||
<h4>Innovationen bei Energiekabeln: Beispiele aus der Praxis</h4>
|
||||
Die Anforderungen an Energiekabel steigen mit den technologischen Fortschritten in der Energiewende. Moderne Kabel müssen nicht nur zuverlässig sein, sondern sich auch flexibel an neue Herausforderungen anpassen. Innovationen in der Kabeltechnologie eröffnen hier spannende Möglichkeiten.
|
||||
Ein Beispiel ist die Entwicklung von Kabeln mit **integriertem Monitoring**, die Fehler, Überlastungen oder Abnutzung frühzeitig erkennen und melden. Diese Echtzeitüberwachung erhöht die Betriebssicherheit und minimiert das Risiko teurer Ausfälle. In großen Wind- oder Solarparks, wo die Identifikation eines Problems oft schwierig ist, kann dies entscheidend sein.
|
||||
Zusätzlich ermöglichen neue Materialien eine verbesserte Isolierung und höhere Leitfähigkeit. Das sorgt nicht nur für Energieeinsparungen, sondern auch für eine längere Lebensdauer der Kabel. Fortschrittliche Leiterdesigns, etwa aus Aluminium- und Kupferlegierungen, verbinden hohe Leitfähigkeit mit geringem Gewicht – ein klarer Vorteil für Transport und Installation.
|
||||
- **Fallbeispiel:** In einem Offshore-Windpark wurden Kabel mit UV- und salzwasserresistenter Isolierung eingesetzt, die zusätzlich mit Monitoring-Sensoren ausgestattet waren. Das Ergebnis: eine drastische Reduzierung von Wartungskosten und längere Betriebszeiten.
|
||||
|
||||
💡 Profi-Tipp: Nutzen Sie Innovationen wie smarte Kabel, um langfristig Betriebskosten zu senken und die Zuverlässigkeit Ihrer Anlagen zu maximieren.
|
||||
<h4>Wie KLZ zur Zukunft der grünen Energie beiträgt</h4>
|
||||
KLZ sieht sich als Partner für nachhaltige und zukunftsorientierte Energielösungen. Unser Fokus liegt nicht nur auf der Lieferung hochwertiger Kabel, sondern auch auf umfassender Beratung und einer schnellen, effizienten Logistik. Dies ist besonders wichtig in einer Branche, in der Verzögerungen hohe Kosten verursachen können.
|
||||
Mit unserem breiten Portfolio an Kabeln wie NAYY, NA2XS(F)2Y und NAYY-J decken wir die unterschiedlichsten Anforderungen ab – von der zuverlässigen Stromübertragung in Wind- und Solarparks bis hin zu industriellen Anwendungen.
|
||||
Doch es geht uns um mehr als nur Produkte:
|
||||
- **Nachhaltigkeit:** Wir setzen auf umweltfreundliche Materialien und unterstützen Recycling-Initiativen, etwa durch unseren kostenlosen **Trommel-Rücknahmeservice**.
|
||||
- **Flexibilität:** Unser Logistikzentrum ist strategisch so aufgestellt, dass wir schnelle Lieferungen in Deutschland und den Niederlanden garantieren können.
|
||||
- **Beratung:** Unser erfahrenes Team hilft Ihnen, die richtigen Kabel für Ihre spezifischen Anforderungen auszuwählen und Projekte effizient umzusetzen.
|
||||
|
||||
🚛 Profi-Tipp: Nutzen Sie unseren Trommel-Rücknahmeservice – das schont die Umwelt und spart Ihnen Kosten.
|
||||
<h4>Fazit: Kleine Helden mit großer Wirkung</h4>
|
||||
Ohne die richtigen Kabel würde grüne Energie niemals dort ankommen, wo sie gebraucht wird. Diese oft übersehenen Komponenten sind der unsichtbare Motor hinter der Energiewende. Sie verbinden, schützen und optimieren – und tragen entscheidend dazu bei, dass Wind- und Solarparks zuverlässig, sicher und effizient arbeiten.
|
||||
Die Wahl des passenden Kabels ist dabei kein Nebenschauplatz, sondern eine strategische Entscheidung, die den Erfolg eines Projekts maßgeblich beeinflusst. Qualität, Innovation und Nachhaltigkeit sind die Schlüssel, um die Anforderungen der modernen Energieinfrastruktur zu erfüllen und langfristig Kosten sowie Ressourcen zu sparen.
|
||||
✨ Zusammengefasst: Kabel mögen unscheinbar sein, doch ihre Wirkung ist immens. Planen Sie weitsichtig, setzen Sie auf Qualität und profitieren Sie von der Expertise erfahrener Partner wie KLZ – denn die Energiewende verdient nichts weniger als die besten Verbindungen.
|
||||
@@ -1,89 +0,0 @@
|
||||
---
|
||||
title: Warum Windpark-Netzanschlusskabel extremen Belastungen standhalten müssen
|
||||
date: '2025-03-10T09:30:51'
|
||||
featuredImage: /uploads/2025/02/image_fx_-9.webp
|
||||
locale: de
|
||||
category: Kabel Technologie
|
||||
---
|
||||
# Warum Windpark-Netzanschlusskabel extremen Belastungen standhalten müssen
|
||||
Windenergie ist die Zukunft – aber nur, wenn der produzierte Strom auch zuverlässig ins Netz gelangt. Das Rückgrat dieser Einspeisung? **Netzanschlusskabel, **die** extremen Belastungen **trotzen müssen. Sie müssen kilometerlange Strecken überbrücken, unterirdisch oder in rauen Umgebungen verlegt werden und dabei höchsten mechanischen, thermischen und elektrischen Anforderungen gerecht werden.
|
||||
Doch was genau macht ein Windpark-Netzanschlusskabel so widerstandsfähig? Welche Herausforderungen müssen sie meistern, und welche Technologien sorgen für eine lange Lebensdauer? Antworten gibt’s hier.
|
||||
# Die extremen Belastungen im Windpark-Netzanschluss
|
||||
Netzanschlusskabel für Windparks sind nicht einfach nur dickere Versionen von Standard-Energiekabeln. Sie müssen spezifische Herausforderungen meistern, die in diesem Bereich auftreten:
|
||||
## Mechanische Belastungen
|
||||
✔ **Hohe Zugkräfte** beim Einziehen und Verlegen der Kabel<br />✔ **Biegeradien**, die eingehalten werden müssen, um Schäden an der Isolierung zu vermeiden<br />✔ **Vibrationen durch Windkraftanlagen**, die sich über die Fundamente auf die Kabel übertragen
|
||||
## Elektrische Beanspruchung
|
||||
- Hohe **Spannungsspitzen** durch plötzliche Einspeisungsschwankungen
|
||||
- **Teilentladungen**, die über Jahre hinweg die Isolierung schädigen können
|
||||
- Elektromagnetische Einflüsse, die **Schirmung und Erdung** der Kabel erforderlich machen
|
||||
|
||||
<TechnicalGrid
|
||||
title="Thermische Belastungen"
|
||||
items={[
|
||||
{ label: "Temperaturwechsel", value: "Materialausdehnung, Risse in der Isolation" },
|
||||
{ label: "Dauerbelastung", value: "Erwärmung der Kabeladern durch hohe Ströme" },
|
||||
{ label: "Wärmeableitung", value: "Entscheidend für die zulässige Strombelastbarkeit" }
|
||||
]}
|
||||
/>
|
||||
|
||||
## Umwelteinflüsse
|
||||
🌧 **Feuchtigkeit & Wasser** – Eindringen von Wasser kann die Isolation zerstören<br />🔥 **UV-Strahlung & extreme Temperaturen** – Gerade bei oberirdischer Verlegung relevant<br />🌍 **Chemische Einwirkungen & Bodenbewegungen** – Besonders bei Erdkabeln ein kritischer Faktor
|
||||
# Material und Konstruktion – Was macht ein gutes Netzanschlusskabel aus?
|
||||
Die Widerstandsfähigkeit eines Kabels beginnt bei seiner Konstruktion. Hier zählen hochwertige Materialien und durchdachte Schutzmechanismen.
|
||||
## Leitermaterialien
|
||||
- **Kupfer:** Hervorragende Leitfähigkeit, aber teuer und schwer
|
||||
- **Aluminium:** Günstiger und leichter, aber mit größerem Querschnitt nötig
|
||||
|
||||
## Isolierungstechnologien
|
||||
- **VPE (Vernetztes Polyethylen):** Hohe thermische Belastbarkeit und geringe Teilentladungsanfälligkeit
|
||||
- **XLPE (Cross-Linked Polyethylene):** Noch bessere Widerstandsfähigkeit gegen thermische und elektrische Beanspruchung
|
||||
|
||||
## Schutzschichten und Ummantelung
|
||||
- Mechanische Beständigkeit gegen Druck, Zug und Biegung
|
||||
- Chemische Resistenz gegen Öl, Säuren und Feuchtigkeit
|
||||
- Wasserblockende Materialien zur Vermeidung von Durchfeuchtung
|
||||
|
||||
Ein hochwertiges Netzanschlusskabel kombiniert all diese Eigenschaften und garantiert so jahrzehntelange Betriebssicherheit.
|
||||
# Planung und Installation – Die wichtigsten Faktoren für einen langlebigen Netzanschluss
|
||||
Ein Kabel allein reicht nicht – die richtige Installation entscheidet über seine Lebensdauer. Fehler in der Verlegung können dazu führen, dass selbst die besten Materialien frühzeitig versagen.
|
||||
## Warum die richtige Verlegeart entscheidend ist
|
||||
Die Art der Verlegung hat einen direkten Einfluss auf die Kabelbelastung:
|
||||
- **Direkte Erdverlegung:**
|
||||
– Hohe Wärmeableitung, da der Boden Wärme aufnimmt.
|
||||
– Gefahr durch Erdbewegungen und Setzungen.
|
||||
- **Kabelschutzrohre:**
|
||||
– Schutz vor mechanischen Belastungen.
|
||||
– Kann Wärmeabfuhr einschränken, wenn nicht ausreichend belüftet.
|
||||
- **Freiluftverlegung:**
|
||||
– Schnelle Wartung und Austauschmöglichkeit.
|
||||
– Höhere Beanspruchung durch UV-Strahlung und Witterung.
|
||||
## Thermische Belastung: Ein oft unterschätzter Faktor
|
||||
Die Betriebstemperatur beeinflusst maßgeblich die Lebensdauer eines Kabels. Jede** Temperaturerhöhung **um 10 °C** halbiert **die** Lebensdauer **des** Isolationsmaterials.**
|
||||
Daher müssen Kabel richtig dimensioniert werden, um eine Überhitzung zu vermeiden. Zusätzliche Maßnahmen wie Wärmeableitungsgräben oder spezielle Bettungsmaterialien können helfen, die Temperaturen im Betrieb zu kontrollieren.
|
||||
# Zukunftssichere Netzanschlusskabel – Was kommt als Nächstes?
|
||||
Die Technologie bleibt nicht stehen – neue Entwicklungen verbessern die Belastbarkeit und Haltbarkeit von Netzanschlusskabeln stetig.
|
||||
## Die wichtigsten Trends
|
||||
- **Intelligente Kabel mit Sensorik:** Echtzeitüberwachung von Temperatur, Spannung und Materialzustand.
|
||||
- **Neue Materialien **mit noch **höherer Widerstandsfähigkeit:** Spezielle Polymere, die extremen Temperaturen und Feuchtigkeit trotzen.
|
||||
- **Recycling-Konzepte:** Nachhaltige Wiederverwertung von Altmaterialien, um Ressourcen zu schonen.
|
||||
|
||||
Ein besonders spannender Bereich ist die Entwicklung von **Supraleitungskabeln**, die nahezu verlustfrei Energie transportieren könnten. Noch sind sie nicht im großflächigen Einsatz, doch sie könnten in Zukunft die Effizienz von Windpark-Netzanschlüssen erheblich steigern.
|
||||
# Fazit – Warum die richtige Kabelwahl über den Erfolg eines Windparks entscheidet
|
||||
Netzanschlusskabel in Windparks sind **Hochleistungskomponenten**, die dauerhaft extremen Belastungen standhalten müssen. Mechanische Kräfte, elektrische Spannungen und wechselnde Umweltbedingungen setzen ihnen über Jahrzehnte hinweg zu. Fehlerhafte Auswahl oder unsachgemäße Installation können erhebliche wirtschaftliche Folgen haben – von Energieverlusten bis hin zu kompletten Kabelausfällen.
|
||||
## Drei zentrale Erkenntnisse zur Langlebigkeit von Netzanschlusskabeln
|
||||
- **Material und Konstruktion sind entscheidend**
|
||||
- Hochwertige Isolierungen wie **XLPE** bieten Schutz gegen Spannungsspitzen und Teilentladungen.
|
||||
- Wasserblockende Schichten und robuste Ummantelungen verlängern die Lebensdauer, gerade bei Erdkabeln.
|
||||
- Die Wahl zwischen **Kupfer und Aluminium** hängt von den spezifischen Anforderungen des Projekts ab.
|
||||
- **Die richtige Verlegung entscheidet über die Betriebsdauer**
|
||||
- Eine zu starke mechanische Beanspruchung bei der Installation kann das Kabel bereits beschädigen, bevor es überhaupt in Betrieb geht.
|
||||
- **Ausreichende Wärmeableitung** durch korrekte Dimensionierung und Einbettung des Kabels ist essenziell, um Überhitzung zu vermeiden.
|
||||
- Unterschiedliche **Verlegearten** (Erdkabel, Freiluft, Seekabel) haben spezifische Vor- und Nachteile, die in der Planung berücksichtigt werden müssen.
|
||||
- **Regelmäßige Wartung und Monitoring verhindern vorzeitige Ausfälle**
|
||||
- Moderne **Diagnoseverfahren** wie Teilentladungsmessung und Thermografie helfen, Schäden frühzeitig zu erkennen.
|
||||
- Intelligente Sensorik in neuen Kabelgenerationen kann Echtzeitdaten zu Temperatur und Belastung liefern.
|
||||
- Eine vorausschauende Wartung kann teure Notfallreparaturen vermeiden und die Betriebssicherheit erhöhen.
|
||||
|
||||
## Ein Kabel ist mehr als nur ein Stromleiter – es ist das Rückgrat eines Windparks
|
||||
Die Qualität des Netzanschlusskabels beeinflusst nicht nur die Effizienz der Energieübertragung, sondern auch die Wirtschaftlichkeit des gesamten Windparks. Wer hier spart, riskiert hohe Folgekosten und Leistungseinbußen.
|
||||
Daher gilt: **Investitionen **in** hochwertige Materialien, **eine** fachgerechte Installation **und** regelmäßige Wartung **zahlen sich langfristig aus. In einer Zeit, in der die Netzinfrastruktur immer stärker belastet wird, sind zuverlässige Kabelsysteme der Schlüssel zur erfolgreichen Energiewende.
|
||||
@@ -1,129 +0,0 @@
|
||||
---
|
||||
title: Was macht ein erstklassiges Kabel aus? Finden Sie es hier heraus!
|
||||
date: '2025-01-15T11:31:46'
|
||||
featuredImage: '/uploads/2024/12/production-of-cable-wire-at-cable-factory-2023-11-27-05-18-33-utc-Large.webp'
|
||||
locale: de
|
||||
category: Kabel Technologie
|
||||
---
|
||||
# Was macht ein erstklassiges Kabel aus? Finden Sie es hier heraus!
|
||||
<h4>Deshalb ist die Wahl des richtigen Kabels entscheidend</h4>
|
||||
Ein erstklassiges Kabel zeichnet sich durch Langlebigkeit, Effizienz und Sicherheit aus. Minderwertige Kabel hingegen können schnell verschleißen, Energieverluste verursachen oder sogar Brände auslösen. Die Qualität der Kabel ist besonders wichtig im Bereich der erneuerbaren Energien, wie bei Solaranlagen oder Windparks. Sie müssen den widrigsten Umwelteinflüssen standhalten und über Jahrzehnten zuverlässig funktionieren.
|
||||
Hochwertige Kabel tragen nicht nur dazu bei, Betriebskosten durch geringere Energieverluste zu senken, sondern minimieren auch Wartungskosten. Das bedeutet, dass ein gut gewähltes Kabel langfristig Ressourcen und Geld spart – ein klarer Vorteil für Unternehmen und Haushalte gleichermaßen.
|
||||
- **Langlebigkeit für extreme Bedingungen**<br />
|
||||
|
||||
Erstklassige Kabel sind darauf ausgelegt, extremen Umweltbedingungen standzuhalten, insbesondere in Projekten der erneuerbaren Energien wie Solar- und Windparks.
|
||||
- **Effizienz bei der Energieübertragung**<br />
|
||||
|
||||
Hochwertige Kabel minimieren Energieverluste und gewährleisten maximale Effizienz beim Stromtransport.
|
||||
- **Sicherheit als oberste Priorität**<br />
|
||||
|
||||
Premium-Kabel reduzieren Risiken wie Überhitzung oder Brände und bieten sowohl Unternehmen als auch Haushalten Sicherheit.
|
||||
- **Geringere Betriebskosten**<br />
|
||||
|
||||
Der Einsatz von hochwertigen Kabeln senkt Energieverluste und führt langfristig zu erheblichen Einsparungen.
|
||||
- **Reduzierte Wartungskosten**<br />
|
||||
|
||||
Langlebige Kabel erfordern weniger häufige Wartung, was sowohl Zeit als auch Geld spart.
|
||||
- **Nachhaltigkeit durch recycelbare Materialien**<br />
|
||||
|
||||
Umweltfreundliche Kabel aus recycelbaren Materialien tragen dazu bei, die Umweltbelastung zu verringern.
|
||||
- **Nahtlose Integration in erneuerbare Energien**<br />
|
||||
|
||||
Zuverlässige Kabel gewährleisten einen effizienten Stromtransport aus erneuerbaren Quellen in das Stromnetz.
|
||||
- **Beitrag zu einer klimaneutralen Zukunft**<br />
|
||||
|
||||
Durch die Reduzierung von Energieverlusten und die Verwendung nachhaltiger Materialien unterstützen hochwertige Kabel die globalen Ziele der Kohlenstoffneutralität.
|
||||
- **Erhöhte Lebensdauer der Infrastruktur**<br />
|
||||
|
||||
Premium-Kabel bieten Jahrzehnten zuverlässige Leistung und verlängern somit die Lebensdauer der Energieinfrastruktur.
|
||||
- **Eine kluge Investition für Unternehmen und Haushalte**<br />
|
||||
|
||||
Die Wahl des richtigen Kabels ist eine langfristige Investition, die sich in Sicherheit, Kosteneinsparungen und Nachhaltigkeit auszahlt.
|
||||
<h4>Die Bedeutung hochwertiger Kabel für eine nachhaltige Zukunft</h4>
|
||||
In einer Welt, die zunehmend auf eine kohlenstoffneutrale Energieversorgung setzt, leisten erstklassige Kabel einen wichtigen Beitrag zur Erreichung dieser Ziele. Nachhaltige Kabel bestehen aus recycelbaren Materialien, die die Umweltbelastung minimieren. Sie unterstützen zudem die Integration erneuerbarer Energien in das Stromnetz, indem sie sicherstellen, dass der erzeugte Strom effizient und verlustfrei transportiert wird.
|
||||
Die Wahl des richtigen Kabels ist daher nicht nur eine technische Entscheidung, sondern auch ein Beitrag zu einer nachhaltigeren Zukunft. Durch den Einsatz hochwertiger Kabel kann der CO2-Fußabdruck von Infrastrukturprojekten erheblich reduziert werden. Dies ist ein wichtiger Schritt hin zu einer umweltfreundlicheren und energieeffizienteren Gesellschaft.Ein erstklassiges Kabel ist daher mehr als nur ein technisches Bauteil – es ist der Schlüssel zu einer stabileren, umweltfreundlicheren und effizienteren Energieversorgung.
|
||||
<VisualLinkPreview
|
||||
url="https://www.konnworld.com/why-cable-quality-matters-the-impact-on-energy-efficiency-and-longevity"
|
||||
title="Why Cable Quality Matters: The Impact on Energy Efficiency and Longevity"
|
||||
summary="In the electrical systems that we have today, there’s no denying that cable quality is important in ensuring optimal performance and safety."
|
||||
image="https://www.konnworld.com/wp-content/uploads/2018/08/konn-b-logo.png"
|
||||
/>
|
||||
<h4>Materialien: Was macht ein Kabel langlebig und effizient?</h4>
|
||||
Die Wahl des richtigen Materials ist entscheidend, um Kabel sowohl langlebig als auch effizient zu gestalten. Zwei der häufigsten und wichtigsten Materialien, die in Kabeln verwendet werden, sind Kupfer und Aluminium. Sie spielen eine zentrale Rolle in der elektrischen Leitfähigkeit und Haltbarkeit von Kabeln.
|
||||
Die Rolle von Kupfer und Aluminium
|
||||
Kupfer gehört zu den besten Materialien für die Stromleitung, da es eine hervorragende elektrische Leitfähigkeit aufweist. Es minimiert den Widerstand, was zu weniger Energieverlust und besserer Effizienz führt. Kupferkabel sind außerdem äußerst langlebig, da Kupfer korrosionsbeständig ist und auch bei extremen Temperaturen zuverlässig funktioniert. Aus diesem Grund ist Kupfer besonders in den Bereichen Elektronik, Energie und Automobilindustrie sehr beliebt.
|
||||
Aluminium hingegen ist günstiger und leichter als Kupfer, was es zu einer bevorzugten Wahl für größere Kabelanwendungen wie in der Hochspannungsübertragung macht. Allerdings hat Aluminium eine geringere elektrische Leitfähigkeit als Kupfer, weshalb es in der Regel bei größeren Querschnitten eingesetzt wird, um den gleichen Widerstand zu erzielen. Dennoch machen sein geringeres Gewicht und die Materialkosten es zu einer attraktiven Alternative zu Kupfer, besonders in großen Infrastrukturprojekten.Beide Materialien sind daher unerlässlich für die Produktion von Kabeln, die sowohl zuverlässig als auch wirtschaftlich sind. Doch um eine nachhaltigere Zukunft zu fördern, sind umweltfreundliche Alternativen und das Recyclingpotenzial ebenfalls von großer Bedeutung.
|
||||
Umweltfreundliche Alternativen und Recyclingpotenzial<br />
|
||||
Die Nachfrage nach umweltfreundlichen Materialien wächst, da immer mehr Unternehmen und Verbraucher Wert auf Nachhaltigkeit legen. Einige Hersteller setzen auf innovative Alternativen, die die Umweltbelastung der Kabelproduktion minimieren können:
|
||||
- **Kupfer-Recycling:** Kupfer gehört zu den am meisten recycelten Metallen der Welt. Recycling kann den Bedarf an neu abgebautem Kupfer verringern, was nicht nur die Umwelt schont, sondern auch Kosten spart. Der Kupfer-Recyclingprozess ist äußerst energieeffizient und benötigt nur einen Bruchteil der Energie, die für die Gewinnung von frischem Kupfer erforderlich ist.
|
||||
- **Aluminium-Recycling:** Auch Aluminium ist ein hochgradig recycelbares Material. Der Recyclingprozess für Aluminium erfordert nur etwa 5% der Energie, die für die Produktion von neuem Aluminium benötigt wird. Viele Hersteller setzen auf recyceltes Aluminium, um ihre Umweltbilanz zu verbessern und gleichzeitig die Effizienz ihrer Kabelprodukte zu steigern.
|
||||
- **Biologisch abbaubare Isolierung:** Ein weiterer Trend ist die Entwicklung von biologisch abbaubaren oder umweltfreundlicheren Isoliermaterialien. Diese Materialien reduzieren nicht nur den Einsatz toxischer Substanzen, sondern tragen auch dazu bei, Abfall nach der Lebensdauer des Kabels zu minimieren.
|
||||
|
||||
Zusammenfassend lässt sich sagen, dass die Wahl der richtigen Materialien für Kabel nicht nur einen Einfluss auf ihre Langlebigkeit und Effizienz hat, sondern auch entscheidend für eine nachhaltige Zukunft ist. Kupfer und Aluminium bieten hervorragende Leistung, aber der Fokus auf Recycling und die Suche nach umweltfreundlicheren Alternativen machen die Kabelindustrie zunehmend grüner und ressourcenschonender. So kann ein Kabel nicht nur heute effizient arbeiten, sondern auch in der Zukunft einen kleineren ökologischen Fußabdruck hinterlassen.
|
||||
<VisualLinkPreview
|
||||
url="https://insights.regencysupply.com/pros-and-cons-of-copper-and-aluminum-wire"
|
||||
title="Pros and Cons of Copper and Aluminum Wire"
|
||||
summary="Copper wire and aluminum wire — which option is better? We weight the pros and cons."
|
||||
image="https://insights.regencysupply.com/hubfs/copper%20wire.jpg"
|
||||
/>
|
||||
<h4>Technologie: Fortschrittliche Designs für optimale Leistung</h4>
|
||||
Fortschrittliche Kabeltechnologien sind entscheidend, um die Leistung und Sicherheit elektrischer Systeme zu maximieren, insbesondere in Bezug auf erneuerbare Energiequellen. Zwei Schlüsselaspekte sind die Isolierung und Ummantelung sowie spezialisierte Kabel für erneuerbare Energien.
|
||||
Isolierung und Ummantelung: Qualität trifft Sicherheit<br />
|
||||
Die Isolierung eines Kabels schützt vor Kurzschlüssen und äußeren Einflüssen wie Feuchtigkeit oder mechanischen Schäden. Materialien wie PVC, PE und XLPE bieten ausgezeichneten Schutz und garantieren eine sichere Stromübertragung. Die schützende Ummantelung bewahrt das Kabel vor UV-Strahlung und extremen Temperaturen, was die Lebensdauer erheblich verlängert und die Sicherheit erhöht.
|
||||
Kabel für erneuerbare Energiequellen
|
||||
Solar- und Windenergie erfordern spezialisierte Kabel, die extremen Wetterbedingungen und hohen Belastungen standhalten können. Solarkabel müssen UV-beständig und für Gleichstromsysteme geeignet sein, während Windkraftkabel flexibel und korrosionsbeständig sein müssen, um der ständigen Bewegung der Rotorblätter standzuhalten. Diese fortschrittlichen Kabel ermöglichen den effizienten und sicheren Transport von Energie, was für die Nachhaltigkeit und wirtschaftliche Rentabilität erneuerbarer Energien von entscheidender Bedeutung ist.
|
||||
Insgesamt tragen diese Technologien dazu bei, die Effizienz und Sicherheit von Kabeln zu maximieren und unterstützen eine nachhaltige Energiezukunft.
|
||||
<VisualLinkPreview
|
||||
url="https://www.cables-unlimited.com/renewable-energy-cable-assemblies-weve-got-you-covered/"
|
||||
title="Renewable Energy Cable Assemblies — We’ve Got You Covered - Cables Unlimited Inc."
|
||||
summary="Cable assemblies used in renewable energy installations, what they are, their benefits and cable systems for renewable energy design factors."
|
||||
image="http://www.cables-unlimited.com/wp-content/uploads/2023/02/Cables-Unlimited_Featured-Renewable-Energy-Cable-Assemblies-%E2%80%94-Weve-Got-You-Covered.jpg"
|
||||
/>
|
||||
<h4>Zertifikate und Standards: Eine Garantie für Qualität</h4>
|
||||
Die Qualität von Kabeln wird nicht nur durch ihre Materialien und Technologien bestimmt, sondern auch durch die Einhaltung von Zertifikaten und Standards. Diese garantieren, dass Kabel sicher, effizient und langlebig sind. Sie spielen eine entscheidende Rolle bei der Sicherstellung der Produktqualität und sind ein wichtiges Kriterium bei der Auswahl von Kabeln für verschiedene Anwendungen, insbesondere im Hinblick auf Nachhaltigkeit und Umweltschutz.**Wichtige Standards und Siegel für erstklassige Kabel**
|
||||
Es gibt zahlreiche Standards und Zertifikate, die Kabelhersteller einhalten müssen, um sicherzustellen, dass ihre Produkte die höchsten Qualitätsanforderungen erfüllen:
|
||||
- **IEC (International Electrotechnical Commission):** Diese internationale Organisation legt weltweite Standards für elektrische und elektronische Produkte fest. Kabel, die den IEC-Standards entsprechen, bieten ein hohes Maß an Sicherheit und Zuverlässigkeit.
|
||||
- **UL (Underwriters Laboratories):** Besonders in den USA ist das UL-Zertifikat ein wichtiger Standard, der die Sicherheitsanforderungen für Kabel prüft. Kabel mit dem UL-Zeichen garantieren, dass sie die höchsten Sicherheitsstandards erfüllen.
|
||||
- **CE-Kennzeichnung:** In Europa zeigt die CE-Kennzeichnung an, dass ein Kabel alle relevanten EU-Anforderungen erfüllt und somit für den europäischen Markt zugelassen ist. Dies betrifft nicht nur die Sicherheit, sondern auch die Umweltverträglichkeit der Produkte.
|
||||
- **RoHS (Restriction of Hazardous Substances):** Dieser Standard stellt sicher, dass Kabel keine gefährlichen Substanzen wie Blei oder Quecksilber enthalten, was sowohl die Sicherheit der Verbraucher als auch den Umweltschutz gewährleistet.
|
||||
|
||||
Insgesamt tragen diese Standards dazu bei, die Effizienz und Sicherheit von Kabeln zu maximieren und unterstützen eine nachhaltige Energiezukunft.
|
||||
## Verstehen von VDE- und NEN-Standards für hochwertige Kabel
|
||||
Wenn es darum geht, Sicherheit, Effizienz und Compliance in der Kabelindustrie zu gewährleisten, spielen Standards wie VDE und NEN eine entscheidende Rolle. Als Experten auf diesem Gebiet stellen wir sicher, dass unsere Produkte diese strengen Standards nicht nur erfüllen, sondern oft übertreffen, was Ihnen Sicherheit für Ihre Projekte gibt.
|
||||
<h4>**VDE: Ein Maßstab für Sicherheit und Qualität**</h4>
|
||||
Die VDE-Zertifizierung (Verband der Elektrotechnik, Elektronik und Informationstechnik) steht für hohe Sicherheits- und Qualitätsstandards in Deutschland und Europa. Produkte mit dem VDE-Zeichen haben umfassende Tests durchlaufen in Bezug auf:
|
||||
- **Elektrische Sicherheit**, um Schutz vor Gefahren wie Kurzschlüssen und Überhitzung zu gewährleisten.
|
||||
- **Umweltverträglichkeit**, um sicherzustellen, dass die verwendeten Materialien nachhaltig sind und den Vorschriften entsprechen.
|
||||
- **Langlebigkeit unter anspruchsvollen Bedingungen**, wodurch sie für Anwendungen in der erneuerbaren Energie und in rauen Umgebungen geeignet sind.
|
||||
|
||||
Die Wahl von Kabeln mit VDE-Zertifizierung bedeutet, dass Sie sich für Zuverlässigkeit, Effizienz und langfristigen Wert entscheiden – Qualitäten, die wir in jedem Produkt gewährleisten, das wir anbieten.
|
||||
NEN: Maßgeschneiderte Standards für die Niederlande<br />
|
||||
In den Niederlanden setzt das NEN (Nederlands Normalisatie-instituut) die nationalen Standards und stimmt diese mit den europäischen und internationalen Vorschriften ab. Beispiele hierfür sind:
|
||||
- **NEN 1010**, das die Sicherheit von Elektroinstallationen regelt und Kabel fordert, die spezifische Leistungs- und Umweltstandards erfüllen.
|
||||
- Weitere **NEN-Standards**, die oft den Schwerpunkt auf Nachhaltigkeit legen und sicherstellen, dass Kabel mit den grünen Energiezielen des Landes in Einklang stehen.
|
||||
|
||||
Durch die Bereitstellung von Kabeln, die den NEN-Standards entsprechen, bieten wir maßgeschneiderte Lösungen für den niederländischen Markt und gewährleisten eine nahtlose Integration in lokale Vorschriften und Branchenpraktiken.
|
||||
Warum Nachhaltigkeitszertifikate immer wichtiger werden
|
||||
In einer Welt, die zunehmend auf Nachhaltigkeit fokussiert ist, spielen Nachhaltigkeitszertifikate eine immer größere Rolle. Diese Zertifikate bestätigen, dass Kabelprodukte unter umweltfreundlichen Bedingungen hergestellt werden und einen minimalen ökologischen Fußabdruck hinterlassen. Besonders wichtig sind hier:
|
||||
- **Recyclingzertifikate:** Kabel, die aus recyceltem Material hergestellt oder recycelbar sind, tragen häufig ein entsprechendes Zertifikat. Dies reduziert den Bedarf an Rohmaterialien und hilft, Abfälle zu minimieren.
|
||||
- **Energieeffizienz:** Einige Kabel tragen Zertifikate, die bestätigen, dass sie den Energieverbrauch während der Nutzung minimieren, was zur Reduzierung von CO₂-Emissionen beiträgt.
|
||||
- **Umweltfreundliche Produktion:** Zertifikate wie ISO 14001 beweisen, dass Hersteller umweltfreundliche Produktionsprozesse verwenden, die den Energieverbrauch und Abfall minimieren.
|
||||
|
||||
Die zunehmende Bedeutung von Nachhaltigkeitszertifikaten ist nicht nur eine Reaktion auf gesetzliche Anforderungen, sondern auch auf das wachsende Bewusstsein von Verbrauchern und Unternehmen, die umweltfreundliche Produkte suchen. In einer Branche, die zunehmend von grünen Technologien dominiert wird, verschaffen solche Zertifikate Unternehmen einen Wettbewerbsvorteil und bieten Verbrauchern die Gewissheit, dass sie verantwortungsbewusst produzierte Produkte wählen.
|
||||
<VisualLinkPreview
|
||||
url="https://www.flukenetworks.com/blog/cabling-chronicles/cabling-certification"
|
||||
title="Three Reasons Cabling Certification Is More Important Than Ever"
|
||||
summary="Every time you complete the installation of a structured cabling system, you can choose whether to certify it. All links in the system should be tested in some way to make sure that they’re connected properly, but is it necessary to measure and document the performance of every link?"
|
||||
image="https://www.flukenetworks.com/sites/default/files/blog/fn-dsx-8000_14a_w.jpg"
|
||||
/>
|
||||
<h4>Fazit: Was macht ein erstklassiges Kabel aus?</h4>
|
||||
Ein erstklassiges Kabel zeichnet sich durch ein perfektes Gleichgewicht zwischen Qualität, Effizienz und Nachhaltigkeit aus. Die Wahl des richtigen Kabels ist nicht nur eine Frage technischer Anforderungen, sondern auch ein wichtiger Schritt in Richtung einer nachhaltigeren Zukunft. Ein hochwertiges Kabel gewährleistet zuverlässige Leistung und maximale Effizienz, reduziert Energieverluste und bietet gleichzeitig einen hohen Sicherheitsstandard.**Qualität und Effizienz**<br />
|
||||
Ein gutes Kabel ist darauf ausgelegt, langfristig effizient zu arbeiten. Materialien wie Kupfer und Aluminium gewährleisten hervorragende Leitfähigkeit, während moderne Isoliermaterialien und Schutzschichten die Lebensdauer des Kabels verlängern und es vor äußeren Einflüssen wie Feuchtigkeit und Korrosion schützen. Dies ist besonders wichtig in Anwendungen wie der Energieübertragung und der Nutzung erneuerbarer Energien, bei denen Effizienz und Zuverlässigkeit oberste Priorität haben.
|
||||
Nachhaltigkeit<br />
|
||||
In einer Welt, die zunehmend auf Nachhaltigkeit fokussiert ist, spielt der Umweltschutz bei der Wahl eines Kabels eine immer größere Rolle. Recyclingfähigkeit, nachhaltige Produktionsprozesse und Zertifikate wie RoHS oder Recycling-Siegel sind entscheidende Faktoren, die den ökologischen Fußabdruck eines Kabels bestimmen. Die Integration dieser Elemente in die Kabelproduktion hilft, den Ressourcenkonsum zu minimieren und Abfälle zu reduzieren, was zu einer umweltfreundlicheren und ressourceneffizienteren Zukunft beiträgt.
|
||||
<VisualLinkPreview
|
||||
url="https://sustainablebrands.com/read/evolving-infrastructure-wire-cable-prioritize-sustainability"
|
||||
title="Evolving Our Infrastructure Means the Wire and Cable Industry Must Prioritize Sustainability | Sustainable Brands"
|
||||
summary="To sustainably support the tremendous global demand for connectivity, collaboration is needed across the value chain to create solutions that enable more inf…"
|
||||
image="https://sb-web-assets.s3.amazonaws.com/production/46426/conversions/keyart-fbimg.jpg"
|
||||
/>
|
||||
@@ -1,145 +0,0 @@
|
||||
---
|
||||
title: 'Welche Kabel für Windkraft? Unterschiede von Nieder- bis Höchstspannung erklärt'
|
||||
date: '2025-06-10T10:36:45'
|
||||
featuredImage: /uploads/2025/04/image_fx_-2025-02-20T185502.688.webp
|
||||
locale: de
|
||||
category: Kabel Technologie
|
||||
---
|
||||
# Welche Kabel für Windkraft? Unterschiede von Nieder- bis Höchstspannung erklärt
|
||||
# Kabel: Das Nervensystem der Energiewende
|
||||
Ohne Kabel kein Strom. Und ohne passenden Kabeltyp auch kein funktionierender Windpark. In modernen **Onshore-Windkraftprojekten** spielt die Wahl der richtigen Spannungsklasse eine zentrale Rolle – nicht nur für die Effizienz, sondern auch für die Sicherheit und Langlebigkeit der gesamten Anlage.
|
||||
Auch der Europäische Rechnungshof fordert verstärkte Investitionen in den Ausbau der Stromnetze, um die Energiewende erfolgreich voranzubringen. Denn nur mit modernen Kabeln und leistungsfähiger Infrastruktur lassen sich erneuerbare Energien zuverlässig integrieren und eine nachhaltige Energiezukunft sichern. Hier finden Sie mehr Infos zu diesem Thema.
|
||||
<VisualLinkPreview
|
||||
url="https://www.klimareporter.de/strom/stromnetze-fuer-die-energiewende"
|
||||
title="Stromnetze für die Energiewende"
|
||||
summary="Der Europäische Rechnungshof dringt auf mehr Investitionen, um die Elektrizitätsnetze in der EU fit für erneuerbare Energien zu machen. Eine dezentrale und flex"
|
||||
image="https://www.klimareporter.de/images/karo3imgmanager/resized/standard-1/power-line-at-sunset-1100-733-80-ccb.webp"
|
||||
/>
|
||||
In dem nachfolgenden Beitrag werfen wir einen genauen Blick auf die verschiedenen Spannungsklassen – von der Niederspannung über Mittel- und Hochspannung bis hin zur Höchstspannung – und zeigen, wo sie im Windpark konkret zum Einsatz kommen. Denn wer die Unterschiede kennt, kann Projekte nicht nur effizienter planen, sondern auch günstiger und zuverlässiger umsetzen.
|
||||
# Niederspannungskabel – Einfach, günstig, unverzichtbar
|
||||
Niederspannung ist der Einstiegspunkt jeder elektrischen Infrastruktur. Kabel dieser Kategorie sind für **Spannungen bis 1.000 Volt (1 kV)** konzipiert und kommen in nahezu allen klassischen Installationen vor – vom Wohnhaus bis zur Trafostation. Auch in Windparks übernehmen sie wichtige Aufgaben, etwa in der Versorgung von Nebenaggregaten oder der Steuerung technischer Systeme.
|
||||
Spannungsbereich: bis 1.000 Volt (1 kV)<br />**Typisches Kabel:** NAYY
|
||||
Anwendungsorte:
|
||||
- Wohn- und Gewerbeinstallationen
|
||||
- Steuerleitungen in Windparks
|
||||
- Kleinverbraucher und Nebensysteme
|
||||
|
||||
Vorteile:
|
||||
- Günstig in der Anschaffung
|
||||
- Einfach zu verlegen
|
||||
- Ideal für kurze Distanzen
|
||||
|
||||
Aufbau:
|
||||
- Leiter: Kupfer oder Aluminium
|
||||
- Isolierung: PVC (preiswert) oder XLPE (wärmebeständig)
|
||||
- Mantel: robust gegen mechanische Belastung
|
||||
|
||||
In der Windkraftinfrastruktur wird das **NAYY** häufig für Beleuchtung, Kontrollsysteme oder die interne Stromverteilung in Betriebsgebäuden genutzt. Es ist robust, wartungsarm und bewährt sich seit Jahrzehnten in der Praxis.
|
||||
# Mittelspannungskabel – Die Arbeitstiere im Windpark
|
||||
Mittelspannungskabel sind das Rückgrat eines jeden Windparks. Sie decken den Spannungsbereich von **1 kV bis 45 kV** ab und sind essenziell für die Energieverteilung zwischen Windenergieanlagen und den Sammelpunkten. Diese Kabel sind enorm belastbar, müssen hohen Temperaturen, Spannungsfeldern und mechanischen Einflüssen standhalten.
|
||||
|
||||
<TechnicalGrid
|
||||
title="Aufbau (am Beispiel NA2XS(F)2Y)"
|
||||
items={[
|
||||
{ label: "Leiter", value: "Stromübertragung (Kupfer oder Aluminium)" },
|
||||
{ label: "Innenleiterschicht", value: "Feldsteuerung, Spannungsoptimierung" },
|
||||
{ label: "Isolierung (XLPE)", value: "Hohe elektrische Festigkeit, temperaturbeständig" },
|
||||
{ label: "Schirmung", value: "Schutz vor Störungen, Erdung" },
|
||||
{ label: "Außenmantel", value: "Mechanischer Schutz, UV- und wasserresistent" }
|
||||
]}
|
||||
/>
|
||||
|
||||
Typische Kabeltypen:
|
||||
- NA2XS(F)2Y (Aluminiumleiter, mit Feldsteuerung)
|
||||
- N2XSY (Kupferleiter, besonders leitfähig)
|
||||
- NA2XS2Y (optimiert für geringe Kapazitäten bei langen Verläufen)
|
||||
|
||||
Einsatzbereiche:
|
||||
- Turbinenanschlüsse im Windpark
|
||||
- Sammelleitungen zu Trafostationen
|
||||
- Verbindungen in Hybridanlagen (z. B. Solar-Wind-Projekte)
|
||||
|
||||
Wer sich für das **NA2XS(F)2Y **entscheidet, setzt auf eine bewährte Lösung für die Mittelspannungsebene. Diese Kabel sind nicht nur leistungsfähig, sondern auch langlebig und wirtschaftlich – eine sichere Bank für die Energieverteilung im Windpark.
|
||||
Dieses Kabel erhalten Sie auch direkt bei uns (KLZ). Mehr Informationen und [Bestellmöglichkeiten](/de/contact/) finden Sie hier:
|
||||
<VisualLinkPreview
|
||||
url="/de/start/"
|
||||
title="Lassen Sie uns Ihre Energieprojekte voranbringen"
|
||||
summary="Schnell, verlässlich und unkompliziert – nehmen Sie Kontakt auf für individuelle Kabel- und Energielösungen. Wir sind für Sie da."
|
||||
image="/uploads/2025/02/og-2.webp"
|
||||
/>
|
||||
|
||||
# Hochspannungskabel – Wenn Leistung auf Strecke geht
|
||||
Ab 45 kV beginnt der Bereich der Hochspannung, der bis 230 kV reicht. Diese Spannungsebene ist vor allem für die Anbindung größerer Windparks an regionale oder überregionale Netze entscheidend. Die Kabel müssen enorme Mengen Strom verlustarm und sicher transportieren – oft über viele Kilometer hinweg.
|
||||
Typische Merkmale:
|
||||
- XLPE-Isolierung in mehreren Lagen, für höchste elektrische Belastung
|
||||
- Kupfer- oder Aluminiumschirmungen gegen Überspannung und elektrische Felder
|
||||
- Verstärkte Außenmäntel, geschützt gegen Wasser, Druck und UV-Strahlung
|
||||
|
||||
Anwendungen:
|
||||
- Netzanbindung entlegener Windparks
|
||||
- Fernleitungen zu Umspannwerken
|
||||
- Übergang in übergeordnete Hochspannungsnetze
|
||||
|
||||
Beispielkabel:<br />**NA2XS(F)2Y** – dieser Kabeltyp erfüllt alle Anforderungen für moderne Hochspannungsnetze. Er bietet hohe Betriebssicherheit und ist durch seinen modularen Aufbau leicht plan- und kalkulierbar.
|
||||
Hochspannungskabel bilden das Bindeglied zwischen Windpark und Stromnetz. Wer hier auf Qualität achtet, sichert nicht nur die Einspeisung, sondern auch die langfristige Betriebssicherheit des Projekts.
|
||||
# Höchstspannungskabel – Die Stromautobahnen der Zukunft
|
||||
Über **230 kV** beginnt die Höchstspannungsebene. Diese Kabel kommen vor allem dort zum Einsatz, wo es um großflächige Stromverteilung und überregionale Verbindung von Energiezentren geht. In Zeiten von Energiewende und internationalem Stromhandel sind Höchstspannungskabel nicht nur eine technische Notwendigkeit – sie sind strategisch entscheidend.
|
||||
Technische Anforderungen:
|
||||
- XLPE-Isolierungen mit mehrlagigem Aufbau
|
||||
- Metallische Schirme und Erdungselemente
|
||||
- Armierungen gegen mechanische Einwirkungen
|
||||
- Glasfasersysteme zur kontinuierlichen Überwachung (Temperatur, Belastung)
|
||||
|
||||
Typische Anwendungen:
|
||||
- Netzanbindung großer Offshore- oder Hybridkraftwerke
|
||||
- Interregionale Energieverbindungen
|
||||
- **Smart-Grid Kabel Windkraft** in intelligenten Verteilnetzen
|
||||
|
||||
Solche Kabel sind meist Sonderanfertigungen, perfekt auf das jeweilige Projekt abgestimmt. Sie transportieren nicht nur Strom, sondern übernehmen auch Steuerungs- und Kommunikationsaufgaben – alles in einem einzigen Leitungssystem.
|
||||
Höchstspannungskabel sind eine technische Meisterleistung. Wer diese richtig einsetzt, kann erneuerbare Energien effizient, intelligent und über Landesgrenzen hinweg verfügbar machen.
|
||||
# Vergleichstabelle – Spannungsklassen und ihre Rolle
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Kategorie</th>
|
||||
<th>Spannung</th>
|
||||
<th>Typische Kabel</th>
|
||||
<th>Einsatz im Windpark</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Niederspannung (LV)</td>
|
||||
<td>bis 1 kV</td>
|
||||
<td>[N2X2Y](/de/products/low-voltage-cables/n2x2y/), [N2XY](/de/products/low-voltage-cables/n2xy/), [NA2X2Y](/de/products/low-voltage-cables/na2x2y/), [NA2XY](/de/products/low-voltage-cables/na2xy/), [NAY2Y](/de/products/low-voltage-cables/nay2y/), [NAYCWY](/de/products/low-voltage-cables/naycwy/), [NAYY](/de/products/low-voltage-cables/nayy/), [NY2Y](/de/products/low-voltage-cables/ny2y/), [NYCWY](/de/products/low-voltage-cables/nycwy/), [NYY](/de/products/low-voltage-cables/nyy/)</td>
|
||||
<td>Steuerung, Nebenaggregate</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Mittelspannung (MV)</td>
|
||||
<td>1 – 45 kV</td>
|
||||
<td>[N2XS(F)2Y](/de/products/medium-voltage-cables/n2xsf2y/), [N2XS(FL)2Y](/de/products/medium-voltage-cables/n2xsfl2y-mv/), [N2XS2Y](/de/products/medium-voltage-cables/n2xs2y/), [N2XSY](/de/products/medium-voltage-cables/n2xsy/), [NA2XS(F)2Y](/de/products/medium-voltage-cables/na2xsf2y/), [NA2XS(FL)2Y](/de/products/medium-voltage-cables/na2xsfl2y-mv/), [NA2XS2Y](/de/products/medium-voltage-cables/na2xs2y/), [NA2XSY](/de/products/medium-voltage-cables/na2xsy/)</td>
|
||||
<td>Haupttrassen, Turbinen-zu-Trafo</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Hochspannung (HV)</td>
|
||||
<td>45 – 230 kV</td>
|
||||
<td>NA2XS(F)2Y Hochspannung</td>
|
||||
<td>Netzanschluss, Fernleitung</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Höchstspannung (EHV)</td>
|
||||
<td>über 230 kV</td>
|
||||
<td>Spezialanfertigung</td>
|
||||
<td>Internationale Stromtrassen, Smart Grids</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
Die Tabelle verdeutlicht: Je höher die Spannung, desto spezialisierter das Kabel. Gleichzeitig steigen die Anforderungen an Planung, Verlegung und Überwachung.
|
||||
In diesem Artikel können Sie nachlesen, wie sich unsere Energie smart und nachhaltig verteilen lässt.
|
||||
|
||||
<VisualLinkPreview
|
||||
url="https://www.enercity.de/magazin/unsere-welt/bedeutung-von-smart-grids-fuer-die-energiewende"
|
||||
title="Stromversorgung: Wie das Smart Grid die Energiewende ermöglichtAbertausende Klein- und Kleinstkraftwerke, eine sicherzustellende Versorgung, hoher Bedarf: Das Stromnetz der Zukunft muss intelligent sein."
|
||||
summary="## Fazit – Strom ist nur so stark wie sein Kabel"
|
||||
image="https://www.enercity.de/assets/cms/enercity-de/magazin/bedeutung-von-smart-grids-fuer-die-energiewende/306_460751759_1944x822_header.jpg"
|
||||
/>
|
||||
@@ -1,53 +0,0 @@
|
||||
---
|
||||
title: Wie die Kabelbranche Nachhaltigkeit und erneuerbare Energien vorantreibt
|
||||
date: '2025-04-14T10:00:41'
|
||||
featuredImage: /uploads/2025/02/image_fx_-2.webp
|
||||
excerpt: Die Kabelbranche ist ein unsichtbarer, aber unverzichtbarer Treiber der Energiewende. Erfahren Sie, wie moderne Kabelsysteme Nachhaltigkeit fördern und erneuerbare Energien erst möglich machen.
|
||||
category: Erneuerbare Energien
|
||||
locale: de
|
||||
---
|
||||
# Die unsichtbare Basis: Warum Kabel für nachhaltige Energie unverzichtbar sind
|
||||
Wenn von erneuerbaren Energien die Rede ist, denken viele sofort an Windräder, Photovoltaik oder vielleicht noch Wasserstoff. Was fast nie vorkommt: Kabel. Dabei sind sie das entscheidende Verbindungselement im Energiesystem der Zukunft. Sie vernetzen [**dezentrale Energiequellen**](https://www.ibm.com/de-de/think/topics/distributed-generation), leiten Strom über weite Strecken hinweg, sichern Spannungsstabilität und reduzieren Übertragungsverluste.
|
||||
Ob in Städten, auf freiem Feld oder unter dem Meer: **Energie muss transportiert werden**, und das möglichst effizient, sicher und umweltfreundlich. Genau dafür braucht qualitativ hochwertige Erdkabel, kombiniert mit intelligenter Netztechnik. Erst diese Infrastruktur macht es möglich, Wind und Sonne in echten Nutzen für Haushalte, Gewerbe und Industrie zu verwandeln.
|
||||
Die Herausforderung liegt in der **Skalierung**: Neue Energiequellen kommen schneller ans Netz als je zuvor. Der Bedarf an modernen Kabelsystemen wächst entsprechend rasant – ebenso wie die Anforderungen an Material, Verlegetechnik und Nachhaltigkeitskriterien.
|
||||
# Nachhaltigkeit durch Technik: Kabel als ökologische Hebel
|
||||
Die Kabelbranche liefert nicht einfach nur Produkte. Sie liefert Systeme, Konzepte und Lösungen, die **konkret zur Reduktion von CO₂ beitragen**. Moderne **Erdkabel** etwa ersetzen zunehmend Freileitungen – mit vielen Vorteilen:
|
||||
- geringerer Flächenverbrauch
|
||||
- kein Eingriff ins Landschaftsbild
|
||||
- weniger Risiko durch Witterungseinflüsse
|
||||
- längere Lebensdauer bei geringerer Wartung
|
||||
|
||||
Zudem sind viele Materialien in heutigen Kabeln deutlich nachhaltiger als noch vor wenigen Jahrzehnten. Aluminium und Kupfer aus Sekundärquellen senken den Primärbedarf.
|
||||
Das Ganze ist kein grünes Wunschdenken, sondern gelebte Praxis bei vielen Kabelherstellern und spezialisierten Anbietern wie KLZ. Unsere Kabeltypen – darunter der bewährte Kabeltypen wie **NA2XS(F)2Y** und **NAYY** für Wind-und Solarparks und klassischen Erdkabelanwendungen – sind nicht nur leistungsfähig, sondern auch auf Langlebigkeit und in großen Teilen auf Recyclingfähigkeit ausgelegt.
|
||||
Sie wollen wissen, wie die Kabelindustrie sich noch für Nachhaltigkeit engagiert? [Hier klicken!](https://www.zvei.org/themen/nachhaltigkeit-die-kabelindustrie-engagiert-sich)
|
||||
# Netzausbau, der mitwächst: Herausforderungen und Chancen der Kabelindustrie
|
||||
Die Energiewende bringt nicht nur saubere Energie, sondern auch massive Anforderungen an die Netzinfrastruktur. Denn Strom, der dezentral erzeugt wird, muss zentral verteilt – oder dezentral weitergereicht – werden. Das bedeutet:
|
||||
- **mehr Leitungen** in ländlichen Räumen
|
||||
- **höhere Leistungsanforderungen** durch E-Mobilität und Wärmepumpen
|
||||
- **komplexere Trassierungen** in dicht besiedelten Gebieten
|
||||
- **höhere Anforderungen an Verlegearten** wie grabenloser Ausbau
|
||||
|
||||
All das lässt sich nur mit einer gut aufgestellten Kabelbranche bewältigen – also mit Experten, die nicht nur produzieren und liefern, sondern auch vorausdenken. KLZ zum Beispiel setzt auf intelligente Verfügbarkeit, klare Lieferketten und ein tiefes Verständnis für die spezifischen Herausforderungen von Windkraft- und Solarprojekten.
|
||||
Ob Mittelspannungskabel für die Verbindung von Windrädern zur Umspannstation oder Hochspannungskabel für den Ferntransport: Die richtige Kabelauswahl, kombiniert mit dem passenden Zubehör (Muffen, Endverschlüsse, Garnituren), entscheidet über **Wirtschaftlichkeit und Nachhaltigkeit** des gesamten Projekts.
|
||||
# Die Kreislaufwirtschaft kommt – auch unterirdisch
|
||||
Nachhaltigkeit endet nicht beim Einbau eines Kabels. Auch **Rückbau und Recycling** sind entscheidende Themen. Gerade bei Infrastruktur, die auf Jahrzehnte angelegt ist, lohnt sich ein zweiter Blick:
|
||||
- Was passiert nach vielen Jahrzehnten Betrieb?
|
||||
- Können die Materialien wieder in den Produktionszyklus zurückgeführt werden?
|
||||
- Wie sieht es mit der Entsorgung von Isolierstoffen aus?
|
||||
|
||||
Die gute Nachricht: Die Kabelindustrie denkt mit. Viele Anbieter setzen heute auf rückbaubare Systeme, sortenreine Materialien und logistische Rücknahmesysteme für Altmaterialien. Auch Projekte zur **CO₂-armen Produktion von Kupferleitern** und zur **Regranulierung von Isoliermaterialien** zeigen Fortschritte: Die Branche bewegt sich.
|
||||
# KLZ – der passende Partner für eine grüne Energiezukunft
|
||||
Während viele über Nachhaltigkeit reden, leben wir sie – und das nicht erst seit gestern. [**KLZ**](/de/start/) legt seit Jahren Wert auf eine **durchdachte, ressourcenschonende Lieferkette**, auf die Auswahl hochwertiger, langlebiger Kabeltypen und auf eine partnerschaftliche Zusammenarbeit mit Kunden aus der **Windkraft- und Solartechnik**.
|
||||
Unsere **Logistikstrategie** vermeidet Engpässe, unsere Nähe zu den Projektstandorten (z. B. durch unser Logistikzentrum nahe der niederländischen Grenze) garantiert kurze Wege und schnelle Reaktion. Ob Mittelspannungs-, Hochspannungs- oder Niederspannungskabel – wir liefern, was gebraucht wird.
|
||||
Vom NAYY 0,6/1,0 kV über NA2XS(F)2Y als Mittelspannungskabel bis zum N2X (FL)KLD2Y 64/110 kV. Und wir hören erst auf, wenn das Projekt läuft.
|
||||
Wer nachhaltige Projekte plant, braucht nicht nur Kabel – sondern **einen Kabellieferanten, der mitdenkt**. Willkommen bei [KLZ](/de/start/).
|
||||
# Fazit: Nachhaltige Energien brauchen mehr als Technik – sie brauchen Verbindung
|
||||
Kabel sind keine Nebensache – sie sind das Nervensystem der Energiewende. Sie verbinden **Ideen mit Realität, Quellen mit Verbrauchern, Visionen mit Machbarkeit**. Und sie tun das unauffällig, zuverlässig und auf Jahrzehnte hinaus.
|
||||
Wer heute **erneuerbare Energien** denkt, sollte sich auch mit dem beschäftigen, was diese Energie in Bewegung hält: **Die Kabelindustrie.** Sie liefert nicht nur Kupfer und Isoliermaterial – sondern Lösungen, die unseren Weg in die **grüne Zukunft** erst möglich machen.
|
||||
Wie Sie selbst zu einer nachhaltigen Energieversorgung beitragen können, erfahren Sie in dem nachfolgenden Artikel.
|
||||
<VisualLinkPreview
|
||||
url="https://money-for-future.com/nachhaltige-energieversorgung-erneuerbare-energie"
|
||||
title="Nachhaltige Energieversorgung und erneuerbare Energie erklärt"
|
||||
summary="Nachhaltige Energieversorgung. Was kann ich tun, um die Energiewende voranzubringen? 7 Schritte zu einer nachhaltigen Lebensweise."
|
||||
image="https://money-for-future.com/wp-content/uploads/2022/01/Image-153-1.jpg"
|
||||
/>
|
||||
@@ -1,73 +0,0 @@
|
||||
---
|
||||
title: 'Willkommen in der Zukunft von KLZ: Unsere neue Website ist online!'
|
||||
date: '2025-01-15T13:38:36'
|
||||
featuredImage: /uploads/2024/12/mockup_03-copy-scaled.webp
|
||||
locale: de
|
||||
category: Kabel Technologie
|
||||
---
|
||||
|
||||
<HighlightBox title="Willkommen in der Zukunft von KLZ: Unsere neue Website ist online! 🎉" color="primary">
|
||||
Es ist schneller, intelligenter und voller Funktionen, um Ihr Erlebnis nahtlos und effizient zu gestalten. Entwickelt, um den Bedürfnissen unserer Kunden gerecht zu werden und die Zukunft unserer Branche widerzuspiegeln, ist dies nicht nur ein neuer Look – es ist ein ganz neues Service-Level. Lassen Sie uns die Highlights durchgehen.
|
||||
</HighlightBox>
|
||||
|
||||
## Das neue KLZ-Logo: modern, mutig und zukunftsorientiert
|
||||
Eine der auffälligsten Änderungen in unserem Rebranding ist das aktualisierte KLZ-Logo, das perfekt den Geist der Innovation und des Fortschritts einfängt, der unsere Arbeit antreibt. Lassen Sie uns die Details genauer betrachten:
|
||||
- **Vereinfachte Typografie:** Das neue Logo zeigt eine elegante und moderne Schriftart, die klar, mutig und leicht erkennbar ist. Sie repräsentiert unsere unkomplizierte und zuverlässige Herangehensweise an das Geschäft.
|
||||
- **Ein dynamisches Symbol:** Die subtilen Designelemente symbolisieren Konnektivität, Energiefluss und Nachhaltigkeit und unterstreichen unser Engagement, eine grünere Zukunft zu ermöglichen.
|
||||
- **Farben, die auffallen:** Das Logo beinhaltet nun kräftige, lebendige Farben, die Energie und Professionalität ausstrahlen und unsere führende Rolle in der Branche widerspiegeln.
|
||||
|
||||
Und es gibt eine entscheidende visuelle Veränderung, die Ihnen sicherlich aufgefallen ist: „KLZ (Vertriebs GmbH)“ wurde in unserem Branding zu „KLZ Cables“. Diese prägnante, moderne Darstellung macht sofort klar, wer wir sind und was wir tun.
|
||||
Natürlich bleibt unser rechtlicher Name, KLZ Vertriebs GmbH, unverändert. Diese Änderung dient dazu, es unseren Kunden und Partnern zu erleichtern, unsere Mission und Dienstleistungen sofort zu erkennen.
|
||||
Dieses neue Logo und Branding sind nicht nur ästhetische Veränderungen – sie repräsentieren ein stärkeres, klareres KLZ, während wir in das Jahr 2025 und darüber hinaus gehen. Es ist ein Design, das unsere Geschichte mit unserer Zukunft verbindet: eine Zukunft, die von Innovation, Zuverlässigkeit und Nachhaltigkeit angetrieben wird.
|
||||
|
||||
<AnimatedImage src="/uploads/2024/11/white_logo_transparent_background.svg" alt="Neues KLZ Logo" width={541} height={540} className="max-w-xs mx-auto bg-primary p-8" />
|
||||
|
||||
## Ein frisches, modernes Design für eine zukunftsorientierte Branche
|
||||
Unsere neue Website spiegelt die Mission von KLZ wider: Menschen und Energie durch innovative, nachhaltige Lösungen zu verbinden.
|
||||
- **Kraftvolle und klare visuelle Elemente** machen die Navigation mühelos, egal ob Sie unseren Katalog durchstöbern oder mehr über unsere Dienstleistungen erfahren möchten.
|
||||
- **Optimiert für alle Geräte** sorgt sie für ein nahtloses Erlebnis auf Ihrem Desktop, Tablet oder Smartphone.
|
||||
- Das aufgefrischte Branding, einschließlich unseres **eleganten neuen Logos**, repräsentiert unsere Weiterentwicklung als führendes Unternehmen in der Energielösungsbranche.
|
||||
|
||||
Jedes Element wurde mit Ihnen im Blick gestaltet, um es Ihnen noch einfacher zu machen, das zu finden, wonach Sie suchen.
|
||||
|
||||
## Entdecken Sie unseren umfassenden Kabelkatalog
|
||||
Unser brandneuer Kabelkatalog ist das Herzstück der Website und bietet detaillierte Einblicke in jedes Kabel, das wir anbieten:
|
||||
- **NA2XS(F)2Y** – perfekt für Hochspannungsanwendungen.
|
||||
- **NAYY und NAYY-J** – zuverlässige Optionen für Niederspannungsnetze.
|
||||
- Eine breite Palette weiterer Kabel, die speziell für Wind- und Solarenergieprojekte entwickelt wurden.
|
||||
|
||||
Jedes Produkt enthält klare Spezifikationen, Anwendungen und Vorteile, die Ihnen helfen, schnell fundierte Entscheidungen zu treffen.
|
||||
|
||||
<AnimatedImage src="/uploads/2024/12/NA2XSY-scaled.webp" alt="Kabelkatalog Vorschau" width={2560} height={533} />
|
||||
|
||||
## Das Team hinter der Transformation
|
||||
Ein neues Website-Projekt zu realisieren, ist keine kleine Aufgabe – es erfordert Vision, Engagement und ein Team, das weiß, wie man liefert. Bei KLZ war dieses Redesign mehr als nur ein Projekt; es war eine gemeinschaftliche Anstrengung, um sicherzustellen, dass unsere digitale Präsenz die Zuverlässigkeit, Innovation und Expertise widerspiegelt, die uns auszeichnen.
|
||||
Besondere Anerkennung gilt **Michael** und **Klaus**, die diese Initiative mit ihrem zukunftsorientierten Ansatz vorangetrieben haben. Sie verstanden die Bedeutung, nicht nur die Funktionalität zu verbessern, sondern auch eine Benutzererfahrung zu schaffen, die wirklich mit unseren Kunden und Partnern in Verbindung steht. Ihr engagierter Einsatz stellte sicher, dass jedes Detail mit den Werten und der Mission von KLZ in Einklang stand.
|
||||
Natürlich war die Umsetzung dieser Vision nur mit einem kreativen Experten möglich, und hier spielte **Marc Mintel von Cable Creations** eine Schlüsselrolle. Vom eleganten Design bis hin zu den hochwertigen Renderings, die unsere Produkte und Dienstleistungen lebendig werden lassen – Marcs Fähigkeiten und Liebe zum Detail sind auf jeder Seite sichtbar.
|
||||
Diese Zusammenarbeit zwischen unserem internen Team und externen Partnern ist ein Beweis für das, was wir am meisten schätzen: Partnerschaften, Präzision und das Streben nach Exzellenz. Gemeinsam haben wir eine Plattform geschaffen, die nicht nur eine Ressource ist, sondern auch das Wachstum und die Ambitionen von KLZ widerspiegelt.
|
||||
Während wir weiter wachsen und uns weiterentwickeln, ist diese neue Website nur ein Beispiel dafür, wie unser Team kontinuierlich den Herausforderungen mit Energie und Expertise begegnet – ganz wie die Netzwerke, die wir unterstützen.
|
||||
|
||||
<AnimatedImage src="/uploads/2024/12/DSC08057-Large.webp" alt="KLZ Team" width={1280} height={853} />
|
||||
|
||||
<ChatBubble author="KLZ Assistent" role="Warum das für Sie wichtig ist" align="right">
|
||||
Diese neue Website ist nicht nur eine ästhetische Verbesserung – sie bietet echten Mehrwert für unsere Kunden und Partner. Hier sind die Vorteile für Sie:
|
||||
|
||||
- **Schnellerer Zugriff auf Informationen:** Mit unserem verbesserten Design und einer PageSpeed-Bewertung von über 90 war es nie einfacher, die richtigen Produkte, Dienstleistungen oder Informationen zu finden. Zeit ist Geld, und wir helfen Ihnen, beides zu sparen.
|
||||
- **Verbesserte Benutzerfreundlichkeit:** Ob auf dem Desktop oder mobil – das intuitive Layout sorgt für ein reibungsloses und nahtloses Erlebnis. Sie verbringen weniger Zeit mit Suchen und mehr Zeit mit Handeln.
|
||||
- **Eine umfassende Ressource:** Vom vollständigen Kabelkatalog bis hin zu detaillierten Servicebeschreibungen – alles, was Sie brauchen, um informierte Entscheidungen zu treffen, finden Sie mit nur wenigen Klicks.
|
||||
|
||||
Aber es geht um mehr als nur technische Verbesserungen. Diese neue Plattform spiegelt die klare Vision von KLZ für die Zukunft wider, die Nachhaltigkeit, Zuverlässigkeit und Innovation priorisiert. Für unsere Kunden bedeutet das, mit einem Unternehmen zusammenzuarbeiten, das versteht, wohin sich die Branche entwickelt – und bereit ist, den Weg zu weisen.
|
||||
|
||||
Indem wir unsere digitale Präsenz mit unserer Mission in Einklang bringen, verbessern wir nicht nur Ihre Erfahrung mit KLZ, sondern verstärken auch unser Engagement, ein Partner zu sein, dem Sie über Jahre hinweg vertrauen können. Wenn wir in Klarheit und Effizienz investieren, profitieren Sie von einer reibungsloseren und stärkeren Verbindung zu den Produkten und Dienstleistungen, auf die Sie angewiesen sind.
|
||||
|
||||
Diese Website ist nicht nur ein Upgrade – sie ist ein Versprechen, Ihnen mehr von dem zu liefern, was für Sie am wichtigsten ist: Qualität, Zuverlässigkeit und Vision.
|
||||
</ChatBubble>
|
||||
|
||||
<PowerCTA locale="de" />
|
||||
|
||||
## Beginnen Sie noch heute mit der Erkundung
|
||||
Sie sind bereits hier, also nehmen Sie sich einen Moment Zeit, um die Website zu entdecken. Durchstöbern Sie den Katalog, erfahren Sie mehr über unsere Reise oder entdecken Sie, wie unsere Dienstleistungen Ihr nächstes großes Projekt unterstützen können.
|
||||
2025 wird ein spannendes Jahr, und diese neue Website ist erst der Anfang. Begleiten Sie uns, während wir weiterhin Innovationen vorantreiben und eine hellere, grünere Zukunft gestalten.
|
||||
|
||||
## Was kommt als Nächstes? Deutschsprachige Unterstützung!
|
||||
Wir setzen uns dafür ein, das KLZ-Erlebnis für alle zugänglich zu machen. Bald wird die **deutsche Sprachunterstützung** verfügbar sein, damit unsere deutschsprachigen Kunden und Partner die Seite in ihrer bevorzugten Sprache genießen können. Bleiben Sie dran – es ist auf dem Weg!
|
||||
@@ -1,113 +0,0 @@
|
||||
---
|
||||
title: 'Windparkbau im Fokus: drei typische Kabelherausforderungen'
|
||||
date: '2025-01-05T10:16:10'
|
||||
featuredImage: /uploads/2025/04/image_fx_-2025-02-20T193520.620.webp
|
||||
locale: de
|
||||
category: Kabel Technologie
|
||||
---
|
||||
# Windparkbau im Fokus: drei typische Kabelherausforderungen
|
||||
Der Bau eines [**Onshore-Windparks**](https://www.verivox.de/strom/themen/windpark/) ist eine technische Meisterleistung – und die **Verkabelung** spielt dabei eine entscheidende Rolle. Zwischen Windturbine, Transformator und Netzanschluss verlaufen hunderte Meter [**Mittelspannungskabel**](https://www.dosensecable.es/de/diferencia-entre-cable-de-media-tension/), die die erzeugte Energie sicher und effizient ins Stromnetz leiten. Doch genau diese **Windpark Kabel** sind oft der kritischste Punkt im gesamten Projekt.
|
||||
Die **Windkraftverkabelung** ist weit mehr als nur Materialbeschaffung. Sie erfordert präzise Planung, Koordination und Erfahrung – von der Auswahl des richtigen **Kabeltyps** bis zur termingerechten Lieferung auf die Baustelle. Schon kleine Verzögerungen oder Planänderungen können den Baufortschritt erheblich beeinflussen und hohe Zusatzkosten verursachen.
|
||||
Hinzu kommen logistische Herausforderungen: **große Kabeltrommeln**, unterschiedliche [**Leiterquerschnitte**](https://www.conrad.de/de/ratgeber/handwerk/kabelquerschnitt-berechnen.html), spezielle **Verpackungen** und wechselnde Baustellenbedingungen. Wer hier nicht vorausplant, riskiert Engpässe – und das kann den gesamten [**Netzanschluss des Windparks**](https://www.enargus.de/pub/bscw.cgi/d7842-2/*/*/Netzanschluss%20einer%20Windkraftanlage?op=Wiki.getwiki&search=Windpark) verzögern.
|
||||
In diesem Beitrag beleuchten wir die** 3 größten Herausforderungen im Windparkbau** – und zeigen, wie man mit einer vorausschauenden Logistik und der richtigen Kabelstrategie Projekte terminsicher und effizient umsetzt.
|
||||
Warum besonders Onshore-Windparks ein starker Pfeiler der Energiewende sind, erfahren Sie hier:
|
||||
<VisualLinkPreview
|
||||
url="https://www.enbw.com/unternehmen/themen/windkraft/onshore-wind-pfeiler-der-energiewende.html"
|
||||
title="Onshore-Windenergie als Pfeiler der Energiewende | EnBW"
|
||||
summary="Viele Faktoren haben den Bau von Windenergieanlagen in den letzten Jahren gebremst. Lesen Sie hier die Gründe!"
|
||||
image="https://www.enbw.com/media/image-proxy/1600x914,q70,focus50x49,zoom1.0/https://www.enbw.com/media/presse/images/newsroom/onshore-windpark-langenburg-7zu4_1701415033580.jpg"
|
||||
/>
|
||||
# Herausforderung 1: Enge Bauzeiten und Fixtermine
|
||||
Im **Windparkbau** sind Zeitpläne selten flexibel. Jede Verzögerung bei der [**Kabelverlegung**](https://www.eef.de/news/die-infrastruktur-hinter-windparks) wirkt sich direkt auf den gesamten Bauablauf aus – vom Fundament über die Turmstellung bis hin zur Inbetriebnahme. Da die **Netzanschlussfristen** meist vertraglich festgelegt sind, kann ein fehlendes [**Mittelspannungskabel**](/de/stromkabel/mittelspannungskabel/) schnell zur teuren Baustellenpause führen.
|
||||
Typische Ursachen für Verzögerungen:
|
||||
- verspätete **Kabelanlieferung** oder unklare Terminabsprachen
|
||||
- unpräzise **Materialdisposition** bei großen Projekten
|
||||
- Witterungseinflüsse, die das [**Erdkabellegen**](https://www.eww.at/magazin/beitraege/detail/erdkabel-sichere-stromversorgung) verzögern
|
||||
- fehlende Abstimmung zwischen Lieferanten, Tiefbau und Montage
|
||||
|
||||
Gerade bei **Windparkprojekten** mit mehreren Kilometern des [**NA2XS(F)2Y**](/de/products/medium-voltage-cables/na2xsf2y/) ist eine exakte **Lieferkoordination** entscheidend. Teil- und Komplettlieferungen müssen so geplant sein, dass sie sich an den tatsächlichen **Baufortschritt** anpassen.
|
||||
|
||||
<TechnicalGrid
|
||||
title="Effiziente Logistiklösungen"
|
||||
items={[
|
||||
{ label: "Unterschiedliche Baufortschritte pro Turbine", value: "Teil- und Abschnittslieferungen passend zum Bauplan" },
|
||||
{ label: "Eng getaktete Montagefenster", value: "Just-in-Time-Kabellieferung auf Baustelle" },
|
||||
{ label: "Fehlende Lagerflächen vor Ort", value: "Temporäre, projektbezogene Zwischenlagerung" },
|
||||
{ label: "Witterungsabhängige Arbeiten", value: "Flexible Umlenkung von Lieferterminen und Materialzuteilung" }
|
||||
]}
|
||||
/>
|
||||
|
||||
Mit einer präzisen Planung der [**Kabelkapazitäten**](https://www.a-eberle.de/infobrief/infobrief-20/) und einer reaktionsfähigen Logistik lässt sich auch unter hohem Zeitdruck effizient arbeiten. So bleibt der **Netzanschluss des Windparks** termingerecht – und der Energiefluss gesichert.
|
||||
Sie möchten wissen, welche Kabelarten in einem Windpark verlegt werden? Dann schauen Sie sich diesen Artikel an:
|
||||
|
||||
<VisualLinkPreview
|
||||
url="https://wind-turbine.com/magazin/ratgeber/250713/welche-arten-von-kabeln-benoetigt-man-fuer-den-bau-eines-windparks.html"
|
||||
title="Welche Arten von Kabeln benötigt man für den Bau eines Windparks?"
|
||||
summary="Die Verkabelung ist ein zentrales Element jeder Windkraftanlage und beeinflusst maßgeblich die Effizienz, Sicherheit und Wirtschaftlichkeit eines Windparks.…"
|
||||
image="https://wind-turbine.com/i/53689/68738caa5e58ffdf06031cf2/2/1200/630/68738c85497af_KabelfreinenWindparkpng.png"
|
||||
/>
|
||||
|
||||
<TechnicalGrid
|
||||
title="Herausforderungen in der Praxis"
|
||||
items={[
|
||||
{ label: "Hohe Liefermengen auf engem Baustellenareal", value: "Projektbezogene Lagerung in regionalen Hubs" },
|
||||
{ label: "Unterschiedliche Trommelgrößen", value: "Abstimmung der Trommelabmessungen auf Zugkraft und Trommelgewicht" },
|
||||
{ label: "Empfindliche Kabelmäntel", value: "Witterungsbeständige Spezialverpackung und UV-Schutz" },
|
||||
{ label: "Fehlende Übersicht", value: "Digitale Lieferübersichten und klare Trommelkennzeichnung" }
|
||||
]}
|
||||
/>
|
||||
|
||||
Eine klare [**Kabellogistikstrategie**](https://logistik-heute.de/galerien/mammutprojekt-kabellogistik-wie-kommen-tausende-tonnen-hgue-erdkabel-fuer-die-energiewende-zum-einsatzort-40875.html) ist der Schlüssel, um Materialengpässe und teure Stillstände zu vermeiden. So bleibt der Überblick gewahrt – selbst bei Projekten mit mehreren dutzend Kilometern **Windparkverkabelung**.
|
||||
Wer die **Verpackung, Lagerung und Kennzeichnung** frühzeitig in die Planung integriert, stellt sicher, dass die **Windpark Kabel** genau dort ankommen, wo sie gebraucht werden – ohne Zeitverlust und ohne Risiko für die Bauabfolge.
|
||||
# Herausforderung 3: Kurzfristige Projektänderungen
|
||||
Kaum ein **Windparkprojekt** läuft exakt nach Plan. Baustellenbedingungen, Lieferengpässe oder neue Vorgaben der [Netzbetreiber](https://windpark-altdorferwald.de/wissenswertes-windenergie/wie-wird-die-erzeugte-energie-ins-stromnetz-eingespeist/) führen oft zu spontanen Anpassungen – und genau hier zeigt sich, wie flexibel die **Kabellogistik** wirklich ist.
|
||||
Typische Szenarien:
|
||||
- Eine Trasse muss aufgrund geologischer Gegebenheiten verlegt werden.
|
||||
- Die **Kabeltypen** oder **Leiterquerschnitte** ändern sich nach einer Netzberechnung.
|
||||
- Der **Lieferort** verschiebt sich kurzfristig, weil Bauabschnitte schneller oder langsamer voranschreiten.
|
||||
|
||||
In solchen Fällen ist entscheidend, dass der Lieferant **eigene Lagerbestände** und eine **kurze Reaktionszeit** hat. Nur so lassen sich geänderte **Kabellängen** oder zusätzliche **Erdungskomponenten** kurzfristig bereitstellen, ohne das Bauprojekt zu verzögern.
|
||||
Ein erfahrener Partner kann hier den Unterschied machen:
|
||||
- **Schnelle Nachlieferung** aus zentralem Lagerbestand in Deutschland
|
||||
- **Flexible Umlenkung** von Lieferungen bei Planänderung
|
||||
- **Enge Abstimmung** mit Projektleitern, Tiefbau und Montagepersonal
|
||||
- **Dokumentierte Rückverfolgbarkeit**, um jede Änderung transparent zu halten
|
||||
|
||||
Kurzfristige Änderungen sind kein Ausnahmefall – sie gehören zum Alltag im **Windparkbau**. Entscheidend ist, darauf vorbereitet zu sein. Eine durchdachte [**Lieferkette**](https://bwo-offshorewind.de/pressemitteilung-roadmap-ist-wichtiger-schritt-fuer-resiliente-lieferketten/), klare Kommunikation und reaktionsfähige Lagerstrukturen sorgen dafür, dass das Projekt trotz Anpassungen im Zeitplan bleibt – und der Windpark termingerecht ans Netz geht.
|
||||
Vermeiden Sie Verzögerungen oder Probleme beim Bau Ihres Windkraftprojektes, indem Sie schon im Vorfeld wissen, warum der NABU gegen manche Projekte klagt:
|
||||
<VisualLinkPreview
|
||||
url="https://www.nabu.de/umwelt-und-ressourcen/energie/erneuerbare-energien-energiewende/windenergie/26913.html"
|
||||
title="Wann klagt der NABU gegen Windkraftprojekte?"
|
||||
summary="45 Klagen wurden wegen Fehlplanungen bei Windenergie zwischen 2010 und 2019 vom NABU auf den Weg gebracht. Nicht weil der Windenergieausbau aufgehalten werden soll, sondern weil immer wieder Vorhaben und Planungen eklatant gegen Naturschutzrecht verstoßen."
|
||||
image="https://www.nabu.de/imperia/md/nabu/images/umwelt/energie/energietraeger/windkraft/161125-nabu-windrad-allgaeu-heidrun-burchard.jpeg"
|
||||
/>
|
||||
<AnimatedImage src="/uploads/2025/02/image_fx_-7.webp" alt="Windpark Baustelle" width={1408} height={768} />
|
||||
|
||||
# Qualität und Nachhaltigkeit als Erfolgsfaktor
|
||||
Neben Zeit und Logistik spielt auch die [**Kabelqualität**](https://www.windkraft-journal.de/2025/07/14/planungsempfehlung-bei-der-verkabelung-von-windparks-durch-wind-turbine-com/214028) eine entscheidende Rolle für die langfristige Performance eines **Windparks**. Schließlich sollen die installierten **[Mittelspannungs](/de/stromkabel/mittelspannungskabel/)– und [Hochspannungskabel](/de/stromkabel/hochspannungskabel/)** über Jahrzehnte zuverlässig Energie übertragen – selbst unter extremen Witterungsbedingungen und wechselnden Lastzyklen.
|
||||
Ein hochwertiges **Kabelsystem für Windkraftanlagen** zeichnet sich durch mehrere Faktoren aus:
|
||||
- **Materialqualität:** VPE-isolierte Kabel wie [**NA2XS(F)2Y** ](/de/products/medium-voltage-cables/na2xsf2y/)oder [**N2XS(F)2Y**](/de/products/medium-voltage-cables/n2xsf2y/) bieten hohe elektrische Festigkeit und exzellenten Langzeitschutz.
|
||||
- **Normkonformität (PDF):** [Alle eingesetzten Komponenten sollten den einschlägigen Normen](https://www.zvei.org/fileadmin/user_upload/Presse_und_Medien/Publikationen/2017/September/ZVEI_Leitfaden_Kabel_und_Leitungen_in_Windkraftanlagen/ZVEI-Leitfaden-Kabel-und-Leitungen-in-Windkraftanlagen-September-2017.pdf) wie **DIN VDE 0276**, **VDE 0298** oder **IEC 60502** entsprechen.
|
||||
- **Montagefreundlichkeit:** Die Kabelkonstruktion muss so ausgelegt sein, dass sie sich effizient und sicher verlegen lässt – auch bei schwierigen Bodenbedingungen.
|
||||
- **Umweltaspekte:** Recyclingfähige Materialien und die [Wiederverwendung von Trommeln oder Leitermaterialien](/de/recycling-von-kabeltrommeln-nachhaltigkeit-im-windkraftprojekt/) reduzieren den ökologischen Fußabdruck.
|
||||
|
||||
Immer mehr Projektentwickler legen Wert auf **nachhaltige Kabelsysteme**, die Energieeffizienz und Langlebigkeit miteinander verbinden. Das betrifft nicht nur die **Materialauswahl**, sondern auch die **Lieferketten**: kurze Transportwege, projektnahe Lagerung und optimierte Verpackungskonzepte verringern Emissionen und Transportaufwand.
|
||||
Die Kombination aus **technischer Qualität**, **ökologischer Verantwortung** und **effizienter Logistik** macht moderne **Windparkverkabelung** zu einem zentralen Erfolgsfaktor im Netzausbau. Wer hier auf durchdachte Lösungen setzt, schafft die Basis für einen stabilen und nachhaltigen Energiefluss – heute und in Zukunft.
|
||||
[Welche Kabel Sie für Ihr Windparkprojekt brauchen und welche Unterschiede es gibt, erklären wir Ihnen hier.](/de/welche-kabel-fuer-windkraft-unterschiede-von-nieder-bis-hoechstspannung-erklaert/)
|
||||
|
||||
<AnimatedImage src="/uploads/2025/01/offshore-wind-power-and-energy-farm-with-many-wind-2023-11-27-04-51-29-utc-scaled.webp" alt="Windpark Landschaft" width={2560} height={1707} />
|
||||
|
||||
# Fazit: Erfolgreich ans Netz
|
||||
Die Verkabelung ist das Rückgrat jedes **Windparks** – und gleichzeitig einer der sensibelsten Projektbereiche. Enge Zeitpläne, komplexe Logistik und spontane Änderungen sind dabei keine Ausnahme, sondern Alltag. Wer diese Herausforderungen frühzeitig erkennt und gezielt plant, verhindert Stillstand, Kostensteigerungen und Terminverschiebungen.
|
||||
Erfolgreiche **Windpark-Kabelprojekte** zeichnen sich durch drei Dinge aus:
|
||||
- **Strukturierte Planung** – klare Abläufe, abgestimmte Liefertermine und definierte Verantwortlichkeiten.
|
||||
- **Flexibilität** – eigene Lagerbestände und kurze Reaktionszeiten bei Änderungen.
|
||||
- **Qualität** – langlebige, normgerechte Kabelsysteme und nachhaltige Logistikprozesse.
|
||||
|
||||
Mit der richtigen Kombination aus Erfahrung, Organisation und technischer Kompetenz lassen sich selbst komplexe **Windparkverkabelungen** effizient umsetzen. So bleibt der Bau im Zeitplan – und der Windpark liefert seine Energie genau dann, wenn sie gebraucht wird.
|
||||
## KLZ – Ihr Partner für erfolgreiche Windparkverkabelung
|
||||
Ob [**Mittelspannung**](/de/stromkabel/mittelspannungskabel/), **Erdkabel** oder komplette **Netzanschlusslösungen** – bei uns bekommen Sie nicht nur das passende Material, sondern auch die Erfahrung, die Projekte wirklich voranbringt. Seit Jahren begleiten wir **Windkraftprojekte** in ganz Deutschland und den Niederlanden – von der technischen Beratung über die **Materialauswahl** bis hin zur **termingenauen Lieferung**.
|
||||
Unser Vorteil liegt in der **Praxisnähe**: Wir wissen, wie eng Bauzeiten im Windparkbau sind, welche Kabelsysteme sich bewährt haben und worauf es bei der Logistik wirklich ankommt. Durch unsere **Lagerkapazitäten in der Mitte Deutschlands** reagieren wir schnell auf Änderungen und halten Lieferketten stabil – auch wenn Projekte dynamisch verlaufen.
|
||||
Mit unserem Netzwerk, unserer Marktkenntnis und unserer Leidenschaft für erneuerbare Energien sorgen wir dafür, dass Ihr **Windkraftprojekt** pünktlich und reibungslos ans Netz geht.
|
||||
➡️ **Planen Sie ein neues Windparkprojekt oder benötigen Unterstützung bei der Kabelauswahl?**Dann sprechen Sie uns an – wir liefern die **Kabel, Lösungen und Erfahrung**, die Ihr Projekt erfolgreich machen.
|
||||
[Jetzt Kontakt aufnehmen](/de/kontakt/)
|
||||
@@ -1,114 +0,0 @@
|
||||
---
|
||||
title: 'Zukunft sichern mit H1Z2Z2-K: Unser Solarkabel zur Intersolar 2025'
|
||||
date: '2025-04-30T09:17:33'
|
||||
featuredImage: /uploads/2025/04/inter-solar.webp
|
||||
locale: de
|
||||
category: Kabel Technologie
|
||||
---
|
||||
# Zukunft sichern mit H1Z2Z2-K: Unser Solarkabel zur Intersolar 2025
|
||||
Rund um die [Intersolar Europe](https://www.intersolar.de/start) rückt das Thema Photovoltaik wieder stärker in den Fokus. Ein guter Anlass, sich ein spezielles Solarkabel näher anzusehen, das für den Einsatz in PV-Anlagen entwickelt wurde – robust, witterungsbeständig und konform mit den geltenden Normen.
|
||||
<VisualLinkPreview
|
||||
url="https://youtu.be/YbtdyvQFoVM"
|
||||
title="Intersolar Europe 2025 | Save The Date | May 7–9, 2025"
|
||||
summary="As the world’s leading exhibition for the solar industry, Intersolar Europe demonstrates the enormous vitality of the solar market. For more than 30 years, i…"
|
||||
image="https://i.ytimg.com/vi/YbtdyvQFoVM/maxresdefault.jpg?sqp=-oaymwEmCIAKENAF8quKqQMa8AEB-AH-CYAC0AWKAgwIABABGEQgSyhyMA8=&rs=AOn4CLBx90qdBxgYcyMttgdOGs3-m0udZQ"
|
||||
/>
|
||||
Was hinter der Konstruktion steckt, welche Auswahlkriterien bei Solarkabeln zählen und warum es bei Photovoltaikprojekten auf jedes Detail ankommt – genau darum geht es in diesem Artikel.
|
||||
# Was ist das H1Z2Z2-K 6mm² Solarkabel?
|
||||
Das H1Z2Z2-K 6mm² ist ein hochspezialisiertes, elektronenstrahl-vernetztes Solarkabel, entwickelt für die besonderen Anforderungen von Photovoltaikanlagen. In der Praxis bedeutet das: Dieses Kabel transportiert den erzeugten Gleichstrom (DC) vom Solarmodul zum Wechselrichter – zuverlässig, effizient und vor allem: sicher.
|
||||
## Warum 6mm²?
|
||||
Der Querschnitt von 6mm² hat sich in PV-Systemen als besonders leistungsstark und vielseitig erwiesen. Er bietet ein gutes Verhältnis zwischen Stromtragfähigkeit und Spannungsfall, gerade bei längeren Leitungswegen – ein häufiger Punkt bei Freiflächenanlagen oder komplexeren Dachstrukturen.
|
||||
## Aufbau und Materialwahl
|
||||
Was das H1Z2Z2-K besonders macht, ist seine Materialzusammensetzung. Das Kabel verwendet keine herkömmlichen PVC-Isolierungen, sondern halogenfreie, flammwidrige und vernetzte Polyolefine. Diese bieten:
|
||||
- **Hohe thermische Belastbarkeit** – auch bei direkter Sonneneinstrahlung
|
||||
- **UV- und ozonbeständige Außenhaut**, ideal für offene Verlegung
|
||||
- **Mechanische Widerstandskraft** gegen Abrieb, Quetschung und Biegung
|
||||
|
||||
## Mehr als nur ein Kabel
|
||||
Während Standardleitungen bei extremen Temperaturen, mechanischen Belastungen oder UV-Einstrahlung schnell an ihre Grenzen kommen, bleibt das H1Z2Z2-K 6mm² standhaft – und das über Jahrzehnte. Es wurde explizit nach EN 50618 entwickelt, um den extremen Bedingungen in Photovoltaikanlagen gerecht zu werden – ob auf 3.000 Metern Höhe in den Alpen oder bei 50 °C in der prallen Sonne Südeuropas.
|
||||
## Anwendungsbereiche auf einen Blick:
|
||||
- DC-Verbindung von Solarmodulen zu Stringboxen oder Wechselrichtern
|
||||
- Integration in Speichersysteme
|
||||
- Einsatz in Aufdach-, Freiflächen- und Agri-PV-Anlagen
|
||||
- Geeignet für Innenräume, freie Verlegung, Kabelkanäle und Erdverlegung
|
||||
|
||||
Kurz gesagt: Das H1Z2Z2-K 6mm² ist keine Lösung von der Stange – es ist ein spezialisiertes Energiekabel für eine Branche, die keine Kompromisse kennt.
|
||||
# Technische Daten und Aufbau im Detail
|
||||
Eine der Stärken dieses Kabels liegt in seinem Materialaufbau und der daraus resultierenden thermischen und mechanischen Belastbarkeit.
|
||||
|
||||
<TechnicalGrid
|
||||
title="Technische Daten & Aufbau"
|
||||
items={[
|
||||
{ label: "Leiter", value: "Feindrähtiger, verzinnter Kupferleiter (Klasse 5)" },
|
||||
{ label: "Nennspannung", value: "1500 V DC (EN 50618 konform)" },
|
||||
{ label: "Prüfspannung", value: "6.5 kV" },
|
||||
{ label: "Temperaturbereich Betrieb", value: "-40 °C bis +90 °C (Leiter max. +120 °C)" },
|
||||
{ label: "Isolierung und Mantel", value: "Vernetztes Polyolefin, halogenfrei" },
|
||||
{ label: "Außendurchmesser (6mm²)", value: "ca. 6,4 mm" },
|
||||
{ label: "Biegeradius", value: "min. 4 × Kabeldurchmesser" },
|
||||
{ label: "Max. Strombelastbarkeit", value: "bis 70 A (je nach Umgebungstemperatur)" }
|
||||
]}
|
||||
/>
|
||||
|
||||
# Normen und Zertifizierungen: EN 50618 & Co.
|
||||
Das H1Z2Z2-K 6mm² erfüllt alle wesentlichen Standards für den Einsatz in Photovoltaikanlagen. Diese Normen garantieren Sicherheit, Langlebigkeit und Konformität mit gesetzlichen Vorgaben.
|
||||
## EN 50618 – europäischer Standard für Solarkabel
|
||||
Diese Norm definiert die technischen Anforderungen an Materialien, elektrische Eigenschaften und mechanische Beständigkeit. Vorgeschrieben sind:
|
||||
- Halogenfreie, flammwidrige Isolation
|
||||
- UV- und witterungsbeständige Materialien
|
||||
- Nennspannung bis 1500 V DC
|
||||
- Betriebsdauer von über 25 Jahren
|
||||
|
||||
## TÜV 2 PfG 1169/08.2007
|
||||
Eine zusätzliche Qualitätsprüfung durch den TÜV Rheinland bestätigt:
|
||||
- Beständigkeit gegenüber Ozon und Feuchtigkeit
|
||||
- Langzeitverhalten unter realen Bedingungen
|
||||
- Thermische Belastbarkeit
|
||||
|
||||
## CPR-Klassifizierung (BauPVO)
|
||||
Für Gebäudeinstallationen ist das Brandverhalten entscheidend. Das H1Z2Z2-K erreicht je nach Ausführung B2ca oder Cca:
|
||||
- Geringe Rauchentwicklung
|
||||
- Flammenhemmung
|
||||
- Keine korrosiven Brandgase
|
||||
|
||||
Fazit: Die umfassende Normkonformität macht das H1Z2Z2-K 6mm² zu einer zuverlässigen und rechtlich sicheren Lösung für alle professionellen PV-Anwendungen.
|
||||
# Einsatzbereiche: Wo das H1Z2Z2-K 6mm² seine Stärken ausspielt
|
||||
Ob in der freien Natur, im Gewerbebau oder integriert in Hybridkraftwerke – dieses Kabel liefert zuverlässig ab.
|
||||
## Typische Anwendungsfelder:
|
||||
- **Freiflächen-Solarparks**
|
||||
- **Industriedächer und Carports**
|
||||
- **Agri-PV-Anlagen **(z. B. über Feldern, Tierställen)
|
||||
- **PV-Inselanlagen**
|
||||
- **Wechselrichter-Anbindung**
|
||||
- **Speichersysteme und DC-Netze**
|
||||
|
||||
Zudem bewährt sich das H1Z2Z2-K durch seine Widerstandsfähigkeit auch in Sonderanwendungen, etwa in der Nähe salzhaltiger Luftzonen oder bei extremen Temperaturschwankungen.
|
||||
# Erdverlegung von PV-Kabeln – das ist zu beachten
|
||||
Ein Pluspunkt des H1Z2Z2-K ist seine Eignung zur direkten Erdverlegung – ohne Schutzrohr. Doch auch hier gelten bestimmte Regeln:
|
||||
## Best Practices für die Verlegung:
|
||||
- Bettung in Sand oder feinkörnigem Material
|
||||
- Schutz vor scharfkantigen Steinen durch Kiesaustausch
|
||||
- Verlegung mit Mindestabstand zu anderen Leitungen
|
||||
- Kennzeichnung durch Warnband 30 cm über dem Kabel
|
||||
- Vermeidung von Zugbeanspruchung während der Installation
|
||||
|
||||
Wichtig: Für Projekte ab mehreren hundert Metern lohnt sich eine Spannungsfallberechnung – 6mm² ist nicht immer automatisch die optimale Wahl.
|
||||
<hr />
|
||||
# FAQ: Die häufigsten Fragen rund um H1Z2Z2-K Solarkabel
|
||||
Was bedeutet H1Z2Z2-K?<br />Die Bezeichnung steht für einen Kabeltyp mit bestimmten Isoliermaterialien und Eigenschaften laut EN 50618, geeignet für DC-Strom bis 1500 V.
|
||||
Ist das Kabel für Erdverlegung zugelassen?<br />Ja, inklusive direkter Erdverlegung ohne zusätzliche Schutzrohre.
|
||||
Welche Querschnitte sind erhältlich?<br />Typischerweise: 1,5 / 2,5 / 4 / 6 / 10 mm² – 6mm² ist der bewährte Allrounder.
|
||||
Warum halogenfrei?<br />Im Brandfall entstehen keine giftigen Dämpfe – ideal für sensible Gebäudeumgebungen.
|
||||
Wie lang ist die maximale Verlegelänge bei 6mm²?<br />Abhängig vom Strombedarf und Spannungsfall – oft zwischen 30 m und 100 m sinnvoll.
|
||||
# Fazit: Qualität, die den Unterschied macht
|
||||
Das H1Z2Z2-K 6mm² steht für technische Reife und konsequente Ausrichtung auf den professionellen Einsatz in Photovoltaikanlagen. Von der hohen Temperatur- und Spannungsbeständigkeit bis zur geprüften Normkonformität – dieses Kabel vereint alles, was moderne Energieinfrastrukturen heute brauchen.
|
||||
Besonders hervorzuheben ist seine Vielseitigkeit: Ob auf Dächern, in Erdverlegung oder in PV-Großanlagen – das H1Z2Z2-K überzeugt durch Zuverlässigkeit und eine beeindruckende Lebensdauer. Damit leistet es einen direkten Beitrag zur Wirtschaftlichkeit und Nachhaltigkeit von Solarsystemen.
|
||||
Weitere Informationen, technische Daten und Bestelloptionen finden sich auf der Produktseite: 👉 [Zum H1Z2Z2-K bei KLZ](/de/products/solar-cables/h1z2z2-k-2/)
|
||||
Alles Wichtige zur Intersolar Europe finden Sie hier:
|
||||
|
||||
<VisualLinkPreview
|
||||
url="https://www.intersolar.de/messe-kompakt?ref=m5f53a666f3a2cb2fee160554-s65eec4739108db093b003a02-t1746004197-cf3c592e7"
|
||||
title="Link Preview"
|
||||
summary="Intersolar Europe at a GlanceIntersolar Europe | Exhibition Quick Facts | Date, Venue, Opening Hours, Exhibitors"
|
||||
image="https://www.intersolar.de/media/image/6311c9ee98bbc414b66305e2/750"
|
||||
/>
|
||||
@@ -1,102 +0,0 @@
|
||||
---
|
||||
title: 100% renewable energy? Only with the right cable infrastructure!
|
||||
date: '2025-03-31T12:00:23'
|
||||
featuredImage: /uploads/2025/02/image_fx_-6.webp
|
||||
locale: en
|
||||
category: Kabel Technologie
|
||||
---
|
||||
# 100% renewable energy? Only with the right cable infrastructure!
|
||||
The vision is clear: A Europe powered 100% by renewable energy. But while solar and wind farms are booming, the expansion of power grids is lagging behind. The reason? An infrastructure built for fossil fuel power plants that can’t keep up with new demands.
|
||||
💡 Fact: A modern power grid is more than just generation—without the right cabling, electricity remains trapped in wind turbines or solar panels.
|
||||
In the end, it’s not just about generating more power, but about smart grids that can transport it reliably and with minimal losses.
|
||||
# The problem: Old grids for a new energy future
|
||||
Today’s power infrastructure was built for centralized large-scale power plants. But renewable energy works differently: It is decentralized, weather-dependent, and requires flexible grids. This creates a massive need for restructuring.
|
||||
|
||||
<StickyNarrative
|
||||
title="Why our grid is currently overwhelmed"
|
||||
items={[
|
||||
{ title: "Grid bottlenecks", content: "**Cause:** Old power lines designed for central plants, not decentralized energy. **Solution:** New high- & medium-voltage cables." },
|
||||
{ title: "Curtailment of solar & wind power", content: "**Cause:** Grid cannot absorb enough electricity. **Solution:** Smart grids & storage solutions." },
|
||||
{ title: "Long transmission distances", content: "**Cause:** Generation is often far from consumption. **Solution:** High-performance cables & local grids." }
|
||||
]}
|
||||
/>
|
||||
|
||||
⚠️ A grid from the past cannot transport the energy of the future!
|
||||
Anyone investing only in renewable energy systems today while ignoring cable infrastructure will be left with expensive, unused electricity tomorrow.
|
||||
# Which cables do we need for the energy transition?
|
||||
Not all cables are created equal – and not every cable is suited for the challenges of the energy transition. Voltage level, capacity, and efficiency are key factors.
|
||||
## The three pillars of energy transition cabling:
|
||||
⚡ [**High-voltage cables**](https://en.wikipedia.org/wiki/High-voltage_cable) → Long-distance power transmission<br />⚡ [**Medium-voltage cables**](https://en.wikipedia.org/wiki/Power_cable) → Grid connections for solar & wind farms<br />⚡ [**Low-voltage cables**](https://en.wikipedia.org/wiki/Low_voltage) → Connecting households & storage systems
|
||||
🔍 What makes a good renewable energy cable?<br />✔ High load capacity for fluctuating power inputs<br />✔ Weather- and temperature-resistant insulation<br />✔ Sustainable materials for a low-carbon power grid
|
||||
💡 The better the cable, the less electricity is lost along the way – and the greener the energy becomes!
|
||||
# Solar and wind farms aren’t enough
|
||||
Without the right cables, electricity stays where it’s generated. But what kind of grid expansion really makes sense?
|
||||
|
||||
<ComparisonGrid
|
||||
title="Underground cables vs. overhead lines – which is the better choice?"
|
||||
leftLabel="Underground Cable"
|
||||
rightLabel="Overhead Line"
|
||||
items={[
|
||||
{ label: "Grid stability", leftValue: "Very high", rightValue: "Moderate" },
|
||||
{ label: "Environmental impact", leftValue: "Unobtrusive, no disruption to landscapes", rightValue: "Visible, problematic for birds" },
|
||||
{ label: "Maintenance & lifespan", leftValue: "Minimal maintenance, long lifespan", rightValue: "Weather-sensitive, shorter lifespan" },
|
||||
{ label: "Costs", leftValue: "Higher installation costs, but more efficient operation", rightValue: "Cheaper to build, but higher long-term costs" }
|
||||
]}
|
||||
/>
|
||||
|
||||
In the past, overhead lines were favored due to lower construction costs. However, modern demands for grid stability, environmental protection, and aesthetics increasingly support underground cables. As a result, many countries are now adopting underground cabling as the standard for new high- and medium-voltage power lines.
|
||||
For those who want to dive deeper into the topic, here’s a **detailed analysis** comparing overhead lines and underground cables:
|
||||
<VisualLinkPreview
|
||||
url="https://www.hochspannungsblog.at/wissenswertes/netzaufbau/vergleich-freileitung-erdkabel"
|
||||
title="Freileitung und Erdkabel sind „Stand der Technik“"
|
||||
summary="Freileitung oder Erdkabel? Wir erklären Ihnen die Unterschiede und Möglichkeiten, aber auch warum was möglich ist und warum was nicht."
|
||||
image="https://www.hochspannungsblog.at/201210-netzbau-110kv-wegscheid-mast-kabelanschluss-1723.jpg?ch=dhsowxyq&:hp=9;1;de"
|
||||
/>
|
||||
|
||||
<VisualLinkPreview
|
||||
url="https://www.hochspannungsblog.at/wissenswertes/netzaufbau/vergleich-freileitung-erdkabel"
|
||||
title="Freileitung und Erdkabel sind „Stand der Technik“"
|
||||
summary="Freileitung oder Erdkabel? Wir erklären Ihnen die Unterschiede und Möglichkeiten, aber auch warum was möglich ist und warum was nicht."
|
||||
image="https://www.hochspannungsblog.at/201210-netzbau-110kv-wegscheid-mast-kabelanschluss-1723.jpg?ch=dhsowxyq&:hp=9;1;de"
|
||||
/>
|
||||
|
||||
<VisualLinkPreview
|
||||
url="https://www.hochspannungsblog.at/wissenswertes/netzaufbau/vergleich-freileitung-erdkabel"
|
||||
title="Freileitung und Erdkabel sind „Stand der Technik“"
|
||||
summary="Freileitung oder Erdkabel? Wir erklären Ihnen die Unterschiede und Möglichkeiten, aber auch warum was möglich ist und warum was nicht."
|
||||
image="https://www.hochspannungsblog.at/201210-netzbau-110kv-wegscheid-mast-kabelanschluss-1723.jpg?ch=dhsowxyq&:hp=9;1;de"
|
||||
/>
|
||||
|
||||
<VisualLinkPreview
|
||||
url="https://www.hochspannungsblog.at/wissenswertes/netzaufbau/vergleich-freileitung-erdkabel"
|
||||
title="Freileitung und Erdkabel sind „Stand der Technik“"
|
||||
summary="Freileitung oder Erdkabel? Wir erklären Ihnen die Unterschiede und Möglichkeiten, aber auch warum was möglich ist und warum was nicht."
|
||||
image="https://www.hochspannungsblog.at/201210-netzbau-110kv-wegscheid-mast-kabelanschluss-1723.jpg?ch=dhsowxyq&:hp=9;1;de"
|
||||
/>
|
||||
⚡ **The energy transition can only succeed if the infrastructure keeps up.** Those who invest in the right cables now will secure the power supply for decades to come.
|
||||
# The future: Smart grids need smart cables
|
||||
The energy transition isn’t just about expanding renewable energy sources – it also requires a fundamental modernization of the power grid. The challenge isn’t just the amount of electricity being generated, but how intelligently it is distributed. Wind and solar power generation is volatile, meaning that sometimes there’s too much electricity, and sometimes too little. This is where modern grid technologies come into play.
|
||||
A future-proof power grid must be **flexible**, capable of balancing load peaks intelligently, and transporting energy with minimal losses. The key technologies enabling this transformation are **smart grids, battery storage, and intelligent cable systems** that don’t just conduct electricity but actively contribute to network control.
|
||||
## How modern cables contribute to grid stability
|
||||
- **[Smart grids ](https://en.wikipedia.org/wiki/Smart_grid#:~:text=%22A%20Smart%20Grid%20is%20an,and%20security%20of%20supply%20and)**and digital control: Intelligent cables with integrated sensors enable real-time monitoring of power flows. This allows the grid to detect load peaks and respond flexibly.
|
||||
- **Load management **through battery storage: Energy that isn’t immediately needed can be stored in batteries and fed into the grid later. The right cable infrastructure ensures this happens efficiently and with minimal losses.
|
||||
- **Modern cables **with improved insulation and materials: High-quality cables with optimized cross-sections reduce transmission losses, making energy use more efficient.
|
||||
- **Decentralized energy distribution**: Instead of central power plants, countless small producers are now feeding electricity into the grid. This requires a new generation of medium- and low-voltage cables that can handle flexible load distribution.
|
||||
|
||||
The future belongs to grids that don’t just transport electricity but actively manage it. This means we don’t just need more cables, but the right cables—equipped with intelligent technology.
|
||||
# Conclusion: The energy transition starts underground
|
||||
Discussions about renewable energy often focus on expanding wind and solar farms. Yet, the crucial infrastructure needed to make this energy reliably usable is rarely addressed.
|
||||
The reality is clear: A modern power grid is the key to the energy transition. If electricity cannot be efficiently transported or stored, grid bottlenecks and curtailments occur—the exact opposite of what the energy transition aims to achieve.
|
||||
## Three key takeaways:
|
||||
- **Renewable energy needs powerful grids.** Without a solid cable infrastructure, much of the electricity generated remains unused because the grid cannot absorb it.
|
||||
- **Investing in cables is just as important as investing in generation.** While new wind turbines and solar plants are visible, the necessary grid expansion remains largely invisible—and is therefore underestimated.
|
||||
- **Without smart grid technology, fluctuations cannot be managed.** Modern cables with **integrated control technology** are essential for delivering energy exactly where it’s needed.
|
||||
|
||||
When it comes to the future of energy supply, there is no alternative to high-performance cable systems. The energy transition is not just about generation—it’s fundamentally about transport and distribution.
|
||||
# KLZ – Your partner for a green energy future
|
||||
The energy transition demands a new generation of grid infrastructure. KLZ is your trusted partner for the reliable cabling of solar and wind power projects—from medium to high voltage.
|
||||
With decades of experience in the cable industry, we know exactly what matters when connecting renewable energy sources to the grid. Our cables are specifically designed for high loads and fluctuating power inputs. But we don’t just supply materials—we also provide expert advice on the best solutions for efficient and sustainable power distribution.
|
||||
## Our strengths:
|
||||
✔ **Fast & reliable delivery** – We ensure your projects start on time, without delays.<br />✔ **Technical consulting & planning** – Not sure which cables are best for your project? We provide expert guidance.<br />✔ **Sustainable cable technology** – Eco-friendly materials and durable cables for a **future-proof energy supply**.<br />✔ **Specialized in renewable energy** – Our solutions are tailored to the specific needs of **wind and solar farms**.
|
||||
Whether it’s grid connections, high-voltage lines, or cabling infrastructure for large solar parks, we’ve got the expertise you need.
|
||||
⚡ Let’s shape the future of energy together. [Contact us](/contact/) for a consultation or a customized quote.
|
||||
@@ -1,46 +0,0 @@
|
||||
---
|
||||
title: 'Billion-euro package for infrastructure: The cable boom is coming'
|
||||
date: '2025-04-06T08:05:19'
|
||||
featuredImage: '/uploads/2025/03/closeup-shot-of-a-person-presenting-a-euro-rain-wi-2025-02-02-14-02-05-utc-scaled.webp'
|
||||
locale: en
|
||||
category: Kabel Technologie
|
||||
---
|
||||
# Billion-euro package for infrastructure: The cable boom is coming
|
||||
What is particularly interesting is that **100 billion euros of this is specifically reserved for climate protection and the climate-friendly transformation of the economy**. These funds are to be distributed via the existing Climate and Transformation Fund (KTF), a clear pointer towards a more sustainable, greener future.
|
||||
While politicians are still debating the sense and nonsense of the use of the funds, one thing is certain for us as a cable supplier: nothing will work without cables. Neither in the expansion of wind farms, nor in the laying of power lines or the modernization of energy infrastructures. The demand for cable will therefore increase – considerably.
|
||||
## The billion-euro package and its distribution – who gets what?
|
||||
The distribution of the money is clearly defined and comprises three major areas:
|
||||
- **500 billion euros total budget:**
|
||||
This sum will be made available over **twelve** years. An ambitious project that is being pursued with a lot of hope and just as much skepticism.
|
||||
- **100 billion euros for the federal states:**
|
||||
This is intended to enable the federal states to push ahead with their own infrastructure projects. These include the expansion of electricity grids, the connection of new wind and solar parks and measures to increase grid stability.
|
||||
- **100 billion euros for climate protection:**
|
||||
The green part of the package, which is clearly aimed at converting the economy to climate-friendly technologies. This means: more onshore wind turbines, more solar parks, more cables.
|
||||
These funds will be made available via the existing **Climate and Transformation Fund (KTF)** and are intended to help reduce CO2 emissions while guaranteeing a stable energy supply.
|
||||
## Why cable suppliers should hit the ground running now
|
||||
There is a lot of talk about subsidies, funding and how to use it. But the real challenge remains: The necessary infrastructure must be created – and that only works with high-performance cables.
|
||||
The following trends are particularly relevant for us:
|
||||
<h4>**1. Expansion of power lines and grid connection projects:**</h4>
|
||||
With the billion-euro package that has been agreed, it is clear that power lines connecting renewable energy sources such as onshore wind farms or solar parks need to be massively expanded. This primarily concerns the integration of electricity generation from wind turbines into the grid.
|
||||
Our low-, medium- and high-voltage cables are designed to meet these requirements.
|
||||
<h4>**2. Decentralization of the energy supply:**</h4>
|
||||
Another important topic is the trend towards decentralized energy supply. More and more energy is being produced directly on site – and must be reliably fed into the grid. Here, too, underground cable systems are in demand, which are characterized by their high load-bearing capacity and resistance.
|
||||
<h4>**3. Climate protection measures and climate-friendly restructuring of the economy:**</h4>
|
||||
As 100 billion euros have been earmarked specifically for climate-friendly conversion, we can assume that projects for electrification, CO2 reduction and the expansion of renewable energies will receive massive funding.
|
||||
This applies in particular to cable systems that are designed for high performance and stability – like the ones we supply at **KLZ**.
|
||||
## KLZ’s role in this gigantic investment offensive
|
||||
With these billion-euro investments, the demand for underground cables, especially medium-voltage cables, will virtually explode. The question is not **whether** cables will be needed – but **when** and in **what** quantities. And that’s where we come in.
|
||||
<h4>Our strengths:</h4>
|
||||
- **High-quality cables:**
|
||||
We only supply [high-quality cables](/power-cables/), such as the **NA2XS(F)2Y**, **NAYY** or even the **NAYY-J**. These are ideally suited for use in onshore wind farms, solar fields and transformer stations. They offer high reliability, resilience and durability.
|
||||
- **Fast delivery thanks to logistical efficiency:**
|
||||
Thanks to our central logistics hub, we can deliver quickly and reliably – including to our customers in the Netherlands. This is a decisive advantage when projects have to be realized under time pressure.
|
||||
- **Sustainability:**
|
||||
While the German government is pushing ahead with its climate targets, we are also doing our bit. We have long attached great importance to sustainable solutions that meet the requirements of the future.
|
||||
## Why the timing is ideal for grid expansion
|
||||
Of course, not everyone approves of this mega project. There are those who criticize the project as being too ambitious or poorly planned. But one thing is certain: the demand for modern infrastructure will increase, and it will increase dramatically.
|
||||
Instead of discussing whether it is the best solution, we are concentrating on **ensuring that the best cable technology is available when it is needed**. The energy transition will come – and we will make sure that it really works.
|
||||
And while others are still debating what makes sense and what doesn’t, we have long since focused on optimizing our product portfolio to meet the growing demands of the market.
|
||||
## KLZ is ready – are you too?
|
||||
The billion-euro package is more than just a financial injection for the expansion of infrastructure. It is a clear sign that Germany wants to – and must – move towards a green future.
|
||||
Now is the time for us as cable suppliers: Be ready. Because demand will increase faster than many people expect. And with our products, we are ready to meet this challenge.
|
||||
@@ -1,61 +0,0 @@
|
||||
---
|
||||
title: Cable abbreviations decoded – the key to choosing the right cable
|
||||
date: '2025-03-17T10:00:16'
|
||||
featuredImage: '/uploads/2024/12/Medium-Voltage-Cables-–-KLZ-Cables-12-30-2024_05_20_PM-scaled.webp'
|
||||
locale: en
|
||||
category: Kabel Technologie
|
||||
---
|
||||
# Cable abbreviations decoded – the key to choosing the right cable
|
||||
A **cable** is not just an electrical conductor – there are various **insulations, protective sheaths, shielding, and mechanical reinforcements** that distinguish it for specific applications. Without **standardized abbreviations**, each cable designation would become unnecessarily long and confusing.
|
||||
But don’t worry: Once you understand the system, you can **instantly recognize** what a cable is suitable for. Here is an **overview of the most important abbreviations** and what they mean.
|
||||
## Structure and protection: The most important cable abbreviations
|
||||
Each cable has specific properties, which result from its mechanical protection, shielding, and other special features. Especially when laid underground or in demanding industrial environments, additional protective mechanisms are crucial.
|
||||
- **A **– After N: Aluminum conductor, at the end: Outer sheath made of jute<br /><em>Aluminum is frequently used as a conductor material because it is cheaper and lighter than copper. However, it has a higher electrical resistance, which is why cross-sections often need to be larger.</em>
|
||||
- **B **– Steel tape armoring<br /><em>This mechanical protective layer provides greater resistance against external stress, e.g., when buried underground.</em>
|
||||
- **C **– Concentric conductor or shield made of copper wires or bands<br /><em>This design improves electromagnetic compatibility and ensures an even field distribution around the conductor.</em>
|
||||
- **CW **– Concentric conductor made of copper, applied in a wave pattern
|
||||
- **CE** – Individual core shielding
|
||||
- **E **– After N: Individual core shielding, at the end: Protective sheath made of plastic tape
|
||||
- **F **– Longitudinally water-tight cable<br /><em>A must for cables used in moist or buried environments. The sealing prevents the penetration of water along the cable.</em>
|
||||
- **FL** – Longitudinally and transversely water-tight cable<br /><em>This cable not only provides protection against water in the longitudinal direction, but also prevents moisture from penetrating sideways through the sheath.</em>
|
||||
- **GB **– Counter-wound steel tape
|
||||
- **H –** High-voltage cable with metallized shielding of individual cores (Höchstädter cable)<br /><em>An H cable is a high-voltage cable with three conductors for three-phase alternating current, developed by Martin Höchstädter. The metallized shielding of each core ensures an even field distribution, reduces insulation stress, and allows higher operating voltages. It is used in high-voltage networks, substations, and wind farms.</em>
|
||||
- **K **– Cable with lead sheath<br /><em>Lead sheaths were frequently used in the past as protection against moisture and chemical influences. However, due to environmental concerns, they have long been replaced by modern materials.</em>
|
||||
- **L **– Smooth aluminum sheath
|
||||
- **N** – Cable according to standard<br /><em>This letter indicates that the cable has been manufactured according to standardized specifications – an important quality feature for planning and safety.</em>
|
||||
- **Ö **– Oil cable<br /><em>Oil cables are high-voltage cables that operate internally with thin mineral oil under pressure. Since the 1930s, they have been used for 100 kV to 500 kV as underground cables, especially in urban high-voltage networks such as the 380 kV transmission lines in Berlin and Vienna.</em>
|
||||
- **Q **– Braiding made of galvanized steel wire
|
||||
- **R **– Round wire armoring
|
||||
- **S **– Copper shield (≥ 6 mm²) for touch protection or to conduct fault currents<br /><em>A copper shield reduces electromagnetic interference and, in some applications, serves as a protective conductor.</em>
|
||||
- **SE **– Instead of H; similar to S, but for multi-core cables; then applies to each core individually
|
||||
|
||||
## Insulation materials: Protection against electrical breakdowns
|
||||
A key feature of a cable is its insulation. It must prevent electrical breakdowns while also resisting mechanical and chemical influences. Depending on the application, different materials are used.
|
||||
- **2X** – Insulation made of cross-linked polyethylene (XLPE)<br /><em>Cross-linked polyethylene is particularly temperature- and voltage-resistant and is commonly used in medium- and high-voltage cables.</em>
|
||||
- **Y** – Insulation or sheath made of PVC<br /><em>PVC is the standard material for many cable sheaths, as it is flexible and cost-effective. However, it is increasingly being replaced by more</em> <em>environmentally friendly alternatives.</em>
|
||||
- **2Y** – Insulation or sheath made of thermoplastic polyethylene (PE)
|
||||
- **4Y** – Insulation made of polyamide (nylon)<br />Polyamide is extremely resistant to abrasion and mechanical stress – ideal for demanding industrial applications.
|
||||
- **9Y** – Insulation made of polypropylene (PP)
|
||||
- **11Y** – Insulation made of polyurethane (PUR)<br /><em>Polyurethane offers high flexibility and is resistant to chemicals and abrasion – often used for mobile applications.</em>
|
||||
- **12Y** – Insulation made of polyethylene terephthalate (PET)
|
||||
- **4G** – Insulation made of ethylene-vinyl acetate (EVA)
|
||||
|
||||
## Conductor structure: The inner composition of a cable
|
||||
In addition to insulation, the conductor structure also determines how flexible or stable a cable is. This plays a major role, especially in energy distribution or for movable applications.
|
||||
- **RE** – Solid round conductor<br /><em>These solid conductors are stable and have high mechanical strength but are not very flexible.</em>
|
||||
- **RF** – Fine-stranded round conductor<br /><em>Consists of many thin individual wires, making it particularly flexible – ideal for movable applications.</em>
|
||||
- **RM** – Multi-stranded round conductor
|
||||
- **SE** – Solid sector conductor<br />Sector conductors allow for a more compact cable design for large cross-sections.
|
||||
- **SM** – Multi-stranded sector conductor
|
||||
|
||||
## Conclusion: Knowing what’s behind the abbreviations
|
||||
With this knowledge, cable designations can be quickly deciphered. Anyone familiar with the abbreviations can instantly recognize a cable’s properties and its suitable applications.
|
||||
An example: **NA2XY**
|
||||
N – Cable according to standard<br />**A** – Aluminum conductor<br />**2X** – Insulation made of cross-linked polyethylene (XLPE)<br />**Y** – PVC sheath
|
||||
Once these abbreviations are understood, cable designations can not only be read but also used to specifically select the right product for the application. Whether for high-voltage lines, industrial control systems, or the grid connection of a wind farm – choosing the right cable is crucial for a safe and long-lasting installation.
|
||||
## KLZ – Your go-to partner when it comes to cables
|
||||
Now that we’ve decoded the world of cable abbreviations, one thing is clear: A cable is much more than just a wire with insulation. The combination of **conductor material, insulation, shielding, and mechanical protection** determines whether a cable meets the demands of a specific application. And this is where things often get complicated – because not every project has the same requirements for **installation, load capacity, or environmental resistance**.
|
||||
When it comes to finding the right cable for a specific application, it helps to have a partner who knows the industry inside out. **That’s where KLZ comes in.** Whether you need a **longitudinally and transversely water-tight cable** for demanding underground installation, a **high-voltage cable with metallized shielding**, or a **flexible cable with a PUR sheath** – we’ll help you make the right choice.
|
||||
Because in the end, it’s not just about finding a cable that fits – it’s about ensuring **long-term, reliable performance**. And for those who have taken the time to understand the abbreviations, one thing is clear: A **NA2XSEYRGY** isn’t just any cable – it’s a **tailor-made solution** for a specific challenge. And **that’s exactly what we deliver**.
|
||||
🔗 **Looking for the right cable?** Check out our [**product overview**](/products/).<br />🔗 **Got questions?** Contact us directly via our [**contact page**](/contact/).
|
||||
Let’s work together to find the **perfect cable for your project**.
|
||||
@@ -1,326 +0,0 @@
|
||||
---
|
||||
title: 'Cable drum quality: the foundation of cable reliability'
|
||||
date: '2024-11-09T12:14:30'
|
||||
featuredImage: /uploads/2024/11/1234adws21312-scaled.jpg
|
||||
locale: en
|
||||
category: Kabel Technologie
|
||||
---
|
||||
# Cable drum quality: the foundation of cable reliability
|
||||
## Why cable drum quality matters
|
||||
Cable drums endure a range of challenges, from harsh weather conditions to the wear and tear of transportation. Inferior materials or poor manufacturing practices can result in:
|
||||
- **Cracking or Splintering:** Weak or untreated wood is prone to damage, especially under heavy loads or rough handling.
|
||||
- **Warping:** Poorly treated materials can bend or deform, making the drum unstable.
|
||||
- **Loose or Missing Fasteners:** Low-quality screws or nails can fail, causing drums to collapse at critical moments.
|
||||
- **Inconsistent Dimensions:** Poorly calibrated manufacturing leads to drums that don’t fit your cable requirements, complicating transport and deployment.
|
||||
|
||||
Investing in high-quality drums minimizes these risks, saving you time, money, and headaches down the line.
|
||||
## Our commitment to cable drum quality
|
||||
At KLZ, we don’t cut corners when it comes to the quality of our cable drums. Every drum we supply is meticulously designed and crafted to ensure long-lasting performance. Here’s how we guarantee excellence:
|
||||
- **Premium materials** We use only high-grade wood and reinforced components to ensure structural integrity, even under demanding conditions.
|
||||
- **Weather-resistant construction** Our drums are treated with advanced coatings and finishes that protect against moisture, UV exposure, and temperature fluctuations.
|
||||
- **Precision engineering** Exacting standards in manufacturing mean our drums are dimensionally accurate, providing a perfect fit for cables of all sizes.
|
||||
- **Reinforced fastenings** We prioritize robust assembly, using high-strength nails and screws that resist loosening over time.
|
||||
- **Quality-certified suppliers** Every drum we provide comes from manufacturers who meet our strict quality benchmarks.
|
||||
- **Tailored solutions** From compact drums for lighter loads to massive models capable of handling up to 7,600 kg, we offer options for every project.
|
||||
- **Sustainability focus** Where possible, we incorporate recycled and sustainable materials without compromising quality.
|
||||
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Identifier / Number</th>
|
||||
<th>empty weight kg</th>
|
||||
<th>max. load kg</th>
|
||||
<th>Flange diameter mm</th>
|
||||
<th>Core diameter mm</th>
|
||||
<th>Core width mm</th>
|
||||
<th>Overall width mm</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Т-6</td>
|
||||
<td>30<span> kg</span></td>
|
||||
<td>250<span> kg</span></td>
|
||||
<td>630<span> mm</span></td>
|
||||
<td>315<span> mm</span></td>
|
||||
<td>315<span> mm</span></td>
|
||||
<td>415<span> mm</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Т-6,3</td>
|
||||
<td>30<span> kg</span></td>
|
||||
<td>250<span> kg</span></td>
|
||||
<td>630<span> mm</span></td>
|
||||
<td>315<span> mm</span></td>
|
||||
<td>315<span> mm</span></td>
|
||||
<td>415<span> mm</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Т-7</td>
|
||||
<td>30<span> kg</span></td>
|
||||
<td>250<span> kg</span></td>
|
||||
<td>710<span> mm</span></td>
|
||||
<td>334<span> mm</span></td>
|
||||
<td>400<span> mm</span></td>
|
||||
<td>520<span> mm</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Т-8</td>
|
||||
<td>40<span> kg</span></td>
|
||||
<td>400<span> kg</span></td>
|
||||
<td>800<span> mm</span></td>
|
||||
<td>400<span> mm</span></td>
|
||||
<td>400<span> mm</span></td>
|
||||
<td>520<span> mm</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Т-9</td>
|
||||
<td>47<span> kg</span></td>
|
||||
<td>750<span> kg</span></td>
|
||||
<td>900<span> mm</span></td>
|
||||
<td>450<span> mm</span></td>
|
||||
<td>560<span> mm</span></td>
|
||||
<td>690<span> mm</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>T-10</td>
|
||||
<td>57<span> kg</span></td>
|
||||
<td>1600<span> kg</span></td>
|
||||
<td>1000<span> mm</span></td>
|
||||
<td>545<span> mm</span></td>
|
||||
<td>500<span> mm</span></td>
|
||||
<td>600<span> mm</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>T-12</td>
|
||||
<td>90<span> kg</span></td>
|
||||
<td>1600<span> kg</span></td>
|
||||
<td>1220<span> mm</span></td>
|
||||
<td>650<span> mm</span></td>
|
||||
<td>500<span> mm</span></td>
|
||||
<td>600<span> mm</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>T-12</td>
|
||||
<td>140<span> kg</span></td>
|
||||
<td>1600<span> kg</span></td>
|
||||
<td>1220<span> mm</span></td>
|
||||
<td>650<span> mm</span></td>
|
||||
<td>710<span> mm</span></td>
|
||||
<td>810<span> mm</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>T-12</td>
|
||||
<td>150<span> kg</span></td>
|
||||
<td>1600<span> kg</span></td>
|
||||
<td>1220<span> mm</span></td>
|
||||
<td>650<span> mm</span></td>
|
||||
<td>650<span> mm</span></td>
|
||||
<td>780<span> mm</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>T-14</td>
|
||||
<td>146<span> kg</span></td>
|
||||
<td>1900<span> kg</span></td>
|
||||
<td>1400<span> mm</span></td>
|
||||
<td>750<span> mm</span></td>
|
||||
<td>710<span> mm</span></td>
|
||||
<td>830<span> mm</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>T-14</td>
|
||||
<td>200<span> kg</span></td>
|
||||
<td>1900<span> kg</span></td>
|
||||
<td>1400<span> mm</span></td>
|
||||
<td>750<span> mm</span></td>
|
||||
<td>670<span> mm</span></td>
|
||||
<td>780<span> mm</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>T-14</td>
|
||||
<td>250<span> kg</span></td>
|
||||
<td>1900<span> kg</span></td>
|
||||
<td>1400<span> mm</span></td>
|
||||
<td>750<span> mm</span></td>
|
||||
<td>670<span> mm</span></td>
|
||||
<td>780<span> mm</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Т-14</td>
|
||||
<td>200<span> kg</span></td>
|
||||
<td>2000<span> kg</span></td>
|
||||
<td>1400<span> mm</span></td>
|
||||
<td>750<span> mm</span></td>
|
||||
<td>884<span> mm</span></td>
|
||||
<td>1000<span> mm</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>T-16</td>
|
||||
<td>260<span> kg</span></td>
|
||||
<td>2500<span> kg</span></td>
|
||||
<td>1600<span> mm</span></td>
|
||||
<td>800<span> mm</span></td>
|
||||
<td>800<span> mm</span></td>
|
||||
<td>924<span> mm</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>T-18</td>
|
||||
<td>320<span> kg</span></td>
|
||||
<td>3800<span> kg</span></td>
|
||||
<td>1800<span> mm</span></td>
|
||||
<td>1120<span> mm</span></td>
|
||||
<td>900<span> mm</span></td>
|
||||
<td>1068<span> mm</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>T-18</td>
|
||||
<td>330<span> kg</span></td>
|
||||
<td>3800<span> kg</span></td>
|
||||
<td>1800<span> mm</span></td>
|
||||
<td>900<span> mm</span></td>
|
||||
<td>900<span> mm</span></td>
|
||||
<td>1068<span> mm</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>T-20</td>
|
||||
<td>340<span> kg</span></td>
|
||||
<td>5000<span> kg</span></td>
|
||||
<td>2000<span> mm</span></td>
|
||||
<td>1220<span> mm</span></td>
|
||||
<td>1000<span> mm</span></td>
|
||||
<td>1188<span> mm</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>T-20</td>
|
||||
<td>380<span> kg</span></td>
|
||||
<td>5000<span> kg</span></td>
|
||||
<td>2000<span> mm</span></td>
|
||||
<td>1000<span> mm</span></td>
|
||||
<td>900<span> mm</span></td>
|
||||
<td>1248<span> mm</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>T-22</td>
|
||||
<td>550<span> kg</span></td>
|
||||
<td>6000<span> kg</span></td>
|
||||
<td>2200<span> mm</span></td>
|
||||
<td>1320<span> mm</span></td>
|
||||
<td>980<span> mm</span></td>
|
||||
<td>1167<span> mm</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>T-22</td>
|
||||
<td>716<span> kg</span></td>
|
||||
<td>6000<span> kg</span></td>
|
||||
<td>2200<span> mm</span></td>
|
||||
<td>1020<span> mm</span></td>
|
||||
<td>1370<span> mm</span></td>
|
||||
<td>1590<span> mm</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>T-22</td>
|
||||
<td>800<span> kg</span></td>
|
||||
<td>6000<span> kg</span></td>
|
||||
<td>2200<span> mm</span></td>
|
||||
<td>1320<span> mm</span></td>
|
||||
<td>1100<span> mm</span></td>
|
||||
<td>1340<span> mm</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>T-22</td>
|
||||
<td>850<span> kg</span></td>
|
||||
<td>6000<span> kg</span></td>
|
||||
<td>2200<span> mm</span></td>
|
||||
<td>1320<span> mm</span></td>
|
||||
<td>1040<span> mm</span></td>
|
||||
<td>1340<span> mm</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Т-24</td>
|
||||
<td>450<span> kg</span></td>
|
||||
<td>4000<span> kg</span></td>
|
||||
<td>2390<span> mm</span></td>
|
||||
<td>1020<span> mm</span></td>
|
||||
<td>1000<span> mm</span></td>
|
||||
<td>1150<span> mm</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Т-24</td>
|
||||
<td>800<span> kg</span></td>
|
||||
<td>5000<span> kg</span></td>
|
||||
<td>2400<span> mm</span></td>
|
||||
<td>1020<span> mm</span></td>
|
||||
<td>1320<span> mm</span></td>
|
||||
<td>1600<span> mm</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Т-25</td>
|
||||
<td>900<span> kg</span></td>
|
||||
<td>7600<span> kg</span></td>
|
||||
<td>2500<span> mm</span></td>
|
||||
<td>1500<span> mm</span></td>
|
||||
<td>1300<span> mm</span></td>
|
||||
<td>1560<span> mm</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Т-25</td>
|
||||
<td>900<span> kg</span></td>
|
||||
<td>7600<span> kg</span></td>
|
||||
<td>2500<span> mm</span></td>
|
||||
<td>1020<span> mm</span></td>
|
||||
<td>1320<span> mm</span></td>
|
||||
<td>1600<span> mm</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Т-25</td>
|
||||
<td>950<span> kg</span></td>
|
||||
<td>7600<span> kg</span></td>
|
||||
<td>2500<span> mm</span></td>
|
||||
<td>1500<span> mm</span></td>
|
||||
<td>1210<span> mm</span></td>
|
||||
<td>1560<span> mm</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Т-25</td>
|
||||
<td>950<span> kg</span></td>
|
||||
<td>7600<span> kg</span></td>
|
||||
<td>2500<span> mm</span></td>
|
||||
<td>1500<span> mm</span></td>
|
||||
<td>1210<span> mm</span></td>
|
||||
<td>1560<span> mm</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Т-26</td>
|
||||
<td>1350<span> kg</span></td>
|
||||
<td>7600<span> kg</span></td>
|
||||
<td>2650<span> mm</span></td>
|
||||
<td>1500<span> mm</span></td>
|
||||
<td>1400<span> mm</span></td>
|
||||
<td>1680<span> mm</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Т-26</td>
|
||||
<td>1000<span> kg</span></td>
|
||||
<td>7600<span> kg</span></td>
|
||||
<td>2600<span> mm</span></td>
|
||||
<td>1300<span> mm</span></td>
|
||||
<td>1320<span> mm</span></td>
|
||||
<td>1600<span> mm</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Т-26</td>
|
||||
<td>1350<span> kg</span></td>
|
||||
<td>7600<span> kg</span></td>
|
||||
<td>2650<span> mm</span></td>
|
||||
<td>1500<span> mm</span></td>
|
||||
<td>1310<span> mm</span></td>
|
||||
<td>1680<span> mm</span></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
## Best practices for maintaining cable drum quality
|
||||
Even the best drums require proper handling to preserve their integrity. Here are a few tips to keep your cable drums in top condition:
|
||||
- **Inspect regularly:** Check for any signs of wear, cracks, or loose components before use.
|
||||
- **Store smartly:** Place drums on level, dry ground to prevent warping or moisture absorption.
|
||||
- **Handle with care:** Train staff to use forklifts and other equipment properly to avoid accidental damage.
|
||||
- **Rotate during storage:** Periodically rotating drums prevents deformation and maintains cable roundness.
|
||||
@@ -1,90 +0,0 @@
|
||||
---
|
||||
title: 'Cable drum safety: Ensuring smooth operations and accident-free environments'
|
||||
date: '2025-01-14T12:23:33'
|
||||
featuredImage: '/uploads/2024/12/large-rolls-of-wires-against-the-blue-sky-at-sunse-2023-11-27-05-20-33-utc-Large.webp'
|
||||
locale: en
|
||||
category: Kabel Technologie
|
||||
---
|
||||
# Cable drum safety: Ensuring smooth operations and accident-free environments
|
||||
## Why cable drum safety is crucial
|
||||
Cable drums are designed to house and protect cables, but mishandling can render their benefits moot. From the integrity of the cable itself to the safety of your workforce, improper handling can have far-reaching consequences.
|
||||
Key reasons to prioritize cable drum safety:
|
||||
- **Prolonged cable lifespan**: Prevent wear, mechanical damage, and exposure to harmful elements.
|
||||
- **Reduced costs**: Avoid unnecessary repairs, replacements, and operational delays.
|
||||
- **Compliance with safety regulations**: Meet workplace safety standards and avoid potential fines.
|
||||
- ### 1. Proper storage practices: Setting the foundation
|
||||
|
||||
Safe storage is the first step in cable drum safety. Improper storage can lead to cable damage, loss of functionality, and increased risks during handling.
|
||||
<h4>Protect against environmental damage</h4>
|
||||
- **Mechanical protection**: Keep drums away from sharp objects, heavy machinery, or tools that might puncture or abrade the cables.
|
||||
- **UV resistance**: Store drums indoors or under UV-protective covers to shield cables from prolonged sun exposure, which can degrade insulation and cause cracking.
|
||||
- **Temperature considerations**: Cold can make cables brittle, while excessive heat can weaken them. Store drums in environments that comply with the cables’ recommended temperature range.
|
||||
|
||||
<h4>Optimize storage space</h4>
|
||||
- **Spacing is key**: Ensure adequate clearance between drums to prevent tangling or accidental contact with sharp surfaces.
|
||||
- **Prevent sagging**: Never stack drums directly on cables; this can lead to permanent deformation or performance issues.
|
||||
|
||||
📦 **Expert Advice:** Proper storage safeguards your cables and ensures smooth handling for the long term!
|
||||
## 2. Moisture-proofing: Seal the Deal
|
||||
Water and humidity are among the most significant threats to cable integrity. When moisture infiltrates cable ends, it can lead to a host of problems, including corrosion of conductors, short circuits, and eventual insulation failure. Protecting cables from moisture is critical to ensuring their longevity and performance.
|
||||
<h4>Sealing Cable Ends</h4>
|
||||
The ends of cables are particularly vulnerable to moisture ingress. To mitigate this risk:
|
||||
- **Use moisture-proof caps:** Cover cable ends with caps designed to resist moisture and provide a tight seal.
|
||||
- **Regular inspection:** Periodically examine these caps for signs of wear, damage, or improper fitting. Replace them immediately if they show any signs of compromise to maintain a secure barrier against moisture.
|
||||
|
||||
<h4>Elevating Storage</h4>
|
||||
Proper storage practices play a vital role in moisture protection:
|
||||
- **Utilize racks or pallets:** Keep cable drums elevated to prevent direct contact with damp or wet surfaces. This minimizes the risk of water wicking into the cables.
|
||||
- **Choose suitable storage locations:** Store cables in well-ventilated, dry areas away from sources of water or excessive humidity.
|
||||
|
||||
By implementing these precautions, you can significantly reduce the likelihood of moisture-related damage, preserving both the quality and safety of your cables over time.
|
||||
💧 **Smart Strategy:** Effective moisture-proofing keeps your cables in top condition and ensures reliable performance for years to come!
|
||||
## 3. Handling cable drums: Safety starts here
|
||||
Cable drums are heavy, awkward to maneuver, and prone to tipping when improperly handled. A thoughtful approach minimizes risks to personnel and equipment.
|
||||
<h4>Pre-handling inspections</h4>
|
||||
- **Check for hazards**: Look for protruding nails, splinters, or other defects that might harm cables or handlers.
|
||||
- **Verify drum integrity**: Ensure the spool is free of cracks, warping, or other structural weaknesses.
|
||||
|
||||
<h4>Handling tips</h4>
|
||||
- **Use proper equipment**: Forklifts and cranes are best for heavy drums. Verify the load capacity of your equipment before use.
|
||||
- **Control movements**: Avoid abrupt movements to prevent tipping or cable dislodgment.
|
||||
|
||||
🛠️ **Pro Safety Tip:** Careful inspections and proper handling techniques are the foundation of safe and efficient drum management!
|
||||
## 4. Transporting cable drums: Stability in motion
|
||||
Safe transport prevents shifting, rolling, or other issues that might damage your cables.
|
||||
<h4>Loading and unloading</h4>
|
||||
- **Plan ahead**: Use equipment suited for the drum’s weight and size. Never lift or drop drums manually.
|
||||
- **Follow the directional arrows**: When rolling drums, move them in the direction indicated to maintain cable tension and prevent tangling.
|
||||
|
||||
<h4>Securing the load</h4>
|
||||
- **Horizontal positioning**: Always keep the drum’s reel axis horizontal to avoid uncontrolled rolling.
|
||||
- **Use wedges or clamps**: Stabilize drums to prevent movement during transit.
|
||||
|
||||
<h4>Stacking considerations</h4>
|
||||
- Only stack drums with protective casings, and ensure the bottom layer is adequately supported. Stacking without protective measures can lead to structural failure.
|
||||
|
||||
🚛 **Logistics Tip:** Thoughtful preparation and secure transport practices safeguard your cables and keep operations running smoothly! Need help with this? Contact us!
|
||||
## 5. Common challenges and solutions in cable drum security
|
||||
Cable theft, damage during storage, and improper handling are common concerns. Here are practical ways to address these issues.
|
||||
<h4>Preventing theft</h4>
|
||||
Cable drums, especially those containing copper, are high-value targets for theft. Implement these strategies:
|
||||
- **Use anti-theft technology**: Install GPS trackers or tamper-proof seals on drums. Learn more about such solutions in [Reducing cable theft effectively](https://transportbusiness.net/features/reducing-cable-theft-effectively).
|
||||
- **Secure storage**: Lock up drums in fenced or monitored areas. Surveillance systems like the ones described in [How to prevent copper and cable theft](https://www.wcctv.co.uk/how-to-prevent-copper-and-cable-theft/) can deter theft.
|
||||
|
||||
<h4>Avoiding damage during handling</h4>
|
||||
- Follow guidelines for using appropriate lifting equipment. Dropping a drum can compromise cable integrity, leading to costly replacements.
|
||||
|
||||
<h4>Protecting against environmental factors</h4>
|
||||
Regular inspections ensure that drums remain in good condition during long-term storage. Investing in durable, moisture-proof caps, as discussed in [Easy ways to prevent cable theft](https://electronics360.globalspec.com/article/18413/easy-ways-to-prevent-cable-theft), is a cost-effective solution.
|
||||
🔒 **Security Insight:** Proactive measures not only protect your cable drums but also save time and costs by avoiding theft, damage, or environmental degradation!
|
||||
## Frequently asked questions about cable drum safety
|
||||
1. How do I identify damage to a cable drum?<br />
|
||||
Look for signs like cracks in the spool, damaged seals, or exposed cable ends. A quick inspection before each handling session can save you from bigger problems.
|
||||
2. Are there tools for securing drums during transport?<br />
|
||||
Yes, wedges, clamps, and protective casings are all effective tools. Invest in high-quality solutions like those discussed in [Anti-theft copper cables](https://www.nariasecurity.it/en/applications/anti-theft-copper-cables/).
|
||||
3. Can I reuse cable drums?<br />
|
||||
Yes, many cable drums are designed for reuse. Ensure they are in good condition and comply with your project’s requirements.
|
||||
## Conclusion: Safety is an investment
|
||||
Implementing robust safety practices for cable drums ensures a seamless workflow, protects valuable assets, and reduces risks. From moisture-proofing to theft prevention, each step contributes to long-term reliability.
|
||||
By prioritizing cable drum safety, you can extend the lifespan of your cables, minimize downtime, and maintain a secure work environment. For more insights into theft prevention, explore [Putting an end to copper theft](https://www.southwire.com/newsroom/archive/putting-an-end-to-copper-theft).
|
||||
Need help securing your cable operations? Contact us today for expert advice, sustainable solutions, and top-tier cable products tailored to your needs.
|
||||
@@ -1,82 +0,0 @@
|
||||
---
|
||||
title: Climate neutral by 2050? What we need to do to achieve this goal
|
||||
date: '2025-01-20T12:30:17'
|
||||
featuredImage: '/uploads/2025/01/business-planning-hand-using-laptop-for-working-te-2024-11-01-21-25-44-utc-scaled.webp'
|
||||
locale: en
|
||||
category: Kabel Technologie
|
||||
---
|
||||
# Climate neutral by 2050? What we need to do to achieve this goal
|
||||
## TL;DR
|
||||
To achieve climate neutrality by 2050, we need to massively expand renewable energy, boost energy efficiency, and build sustainable infrastructure. Political action, economic innovation, and societal support are essential. Only through global collaboration can we tackle the climate crisis effectively.
|
||||
## Why climate neutrality is essential
|
||||
Climate neutrality means emitting no more greenhouse gases into the atmosphere than we can offset through natural or technological processes. This goal is not just ambitious—it’s critical. Without drastic action, global temperatures could rise by more than 2°C by the end of the century, with catastrophic consequences for both nature and humanity.
|
||||
The European Union is aiming to become the first climate-neutral continent by 2050 through its [Green Deal](https://www.europarl.europa.eu/topics/de/article/20190926STO62270/was-versteht-man-unter-klimaneutralitat). This commitment became legally binding with the adoption of the Climate Law by the European Parliament and Council in 2021.
|
||||
The question is no longer whether we need to act, but how quickly and decisively we can move forward. Achieving this requires more than a shift to renewable energy; it calls for a transformation across all sectors—from energy supply and industry to the way we live our daily lives.
|
||||
🌍 **Climate neutrality ensures a livable future and protects our planet for generations to come.**
|
||||
## The current challenges on the path to climate neutrality
|
||||
The journey to climate neutrality is full of obstacles. Political, economic, and technological barriers are slowing progress.
|
||||
<h4>Political and economic hurdles</h4>
|
||||
One of the biggest challenges is the lack of global consensus. While some countries pursue ambitious climate goals, others continue to heavily invest in fossil fuels. In resource-dependent economies, the transition to renewable energy is often seen as a risk to economic growth.
|
||||
Financing the transformation is another major issue. Trillions are needed to modernize infrastructure, develop new technologies, and enable the shift to renewable energy. Although many nations offer funding programs, the current level of investment falls far short of what is required.
|
||||
<h4>Technological limits and opportunities</h4>
|
||||
Technology has the potential to save us—but only if we use it wisely. Right now, we lack efficient solutions for energy storage and transport. Batteries remain costly, and grid failures continue to pose significant challenges. On the other hand, innovations like smart grids and advanced recycling processes could significantly accelerate the transition to a sustainable future.
|
||||
🚧 **Achieving climate neutrality is possible, but we must overcome political, economic, and technological barriers together.**
|
||||
## The key role of renewable energy
|
||||
Renewable energy is at the heart of climate neutrality. It provides clean, inexhaustible energy sources while reducing our dependence on fossil fuels.
|
||||
<h4>Why renewable energy is crucial</h4>
|
||||
- **Inexhaustible resources**: Sun, wind, and water are limitless.
|
||||
- **Zero direct emissions**: Unlike coal or oil, renewables produce no CO₂ emissions.
|
||||
- **Regional economic benefits**: Renewable energy supports local economies and supply chains.
|
||||
|
||||
<h4>Expanding wind and solar energy</h4>
|
||||
A major step toward climate neutrality is the large-scale development of wind and solar farms. However, there are challenges:
|
||||
- Lengthy approval processes that delay projects.
|
||||
- Resistance from local communities against new installations.
|
||||
- The urgent need to develop large-scale storage systems for surplus energy.
|
||||
|
||||
<h4>**The importance of smart grids**</h4>
|
||||
As energy generation becomes more decentralized, the demands on power grids grow. Smart grids offer solutions by enabling:
|
||||
- The integration of wind and solar power, even with fluctuating supply.
|
||||
- Efficient distribution of energy between producers and consumers.
|
||||
- Greater stability, particularly during periods of high demand.
|
||||
|
||||
🌞 **Renewable energy sources like wind and solar are the foundation of a green energy future—smart grids ensure efficient distribution.**
|
||||
## Energy efficiency as a game changer
|
||||
Energy efficiency is one of the simplest and most effective ways to reduce emissions. Using less energy automatically means less CO₂ output—without sacrificing comfort.
|
||||
<h4>Why is energy efficiency so important?</h4>
|
||||
- It saves resources and cuts costs.
|
||||
- It eases the strain on power grids.
|
||||
- It delivers quick results, while expanding renewable energy infrastructure takes more time.
|
||||
|
||||
Examples of energy-efficient measures
|
||||
- **Building renovations**: Insulating walls and roofs can cut energy demand by up to 30%.
|
||||
- **Modern technologies**: Energy-efficient devices and smart systems help optimize consumption.
|
||||
- **Industrial optimization**: Upgraded production processes require less energy, while better heat recovery systems increase efficiency.
|
||||
|
||||
💡 **Smart energy savings and modern technology can take us significant steps closer to climate neutrality.**
|
||||
## Sustainable infrastructure: A must for the energy transition
|
||||
The energy transition hinges on infrastructure. From generation to distribution, every component must be designed with sustainability in mind.
|
||||
<h4>The role of the cable industry</h4>
|
||||
Cables are the lifelines of the energy transition, carrying electricity from wind and solar farms to where it’s needed. Sustainable solutions are key:
|
||||
- **Recycling cable materials**: Reusable raw materials help reduce the environmental footprint.
|
||||
- **Durable products**: High-quality cables require less maintenance and boost efficiency.
|
||||
- **Free drum return programs**: Initiatives like our drum-return service prevent unnecessary waste and support a circular economy.
|
||||
|
||||
Expanding the grid is equally important. Without robust networks, the transport of renewable energy will falter, slowing progress toward climate goals.
|
||||
🔗 **Green cables and recycled materials play a vital role in making the energy transition environmentally friendly and future-proof.**
|
||||
## Collaboration: Achieving the goal together
|
||||
The climate crisis can only be solved if **politics**, **business**, and **society** work together. Each of these groups has a vital role to play.
|
||||
Politics must establish clear frameworks: binding climate targets, CO₂ pricing, and funding programs for green technologies. These measures are essential to motivate both companies and individuals to take action.
|
||||
Business plays a pivotal role by adopting sustainable business models, investing in green technologies, and transitioning to climate-friendly production processes. Innovations in these areas can make a significant impact.
|
||||
Society also bears responsibility. Conscious consumption, sustainable mobility, and support for climate initiatives are key. Every daily decision matters.
|
||||
At the same time, **international cooperation** is essential to advance global climate protection. Technology transfer, financial aid, and shared standards are crucial for success.
|
||||
Climate protection is teamwork. Only by working together can we create a sustainable and livable future.
|
||||
🤝 **When politics, business, and society join forces, climate action becomes a global success story.**
|
||||
## Conclusion: Act now – time is running out
|
||||
2050 may seem far away, but the time to slow climate change is slipping through our fingers. Achieving climate neutrality isn’t just an aspiration—it’s a necessity.
|
||||
To reach this goal, we need:
|
||||
- **Bold decisions**: From governments, businesses, and every individual.
|
||||
- **Innovative technologies**: To power a clean energy future and streamline processes.
|
||||
- **Unity and determination**: Only together can we tackle the climate crisis effectively.
|
||||
|
||||
The future is in our hands—let’s get to work!
|
||||
@@ -1,115 +0,0 @@
|
||||
---
|
||||
title: 'Copper or aluminum cable? Cost comparison for underground cable and grid connection'
|
||||
date: '2025-02-24T08:30:23'
|
||||
featuredImage: /uploads/2024/11/medium-voltage-category.webp
|
||||
locale: en
|
||||
category: Kabel Technologie
|
||||
---
|
||||
# Copper or aluminum cable? Cost comparison for underground cable and grid connection
|
||||
Particularly with cables such as **NA2XS(F)2Y** or **NAYY** for **wind turbines**, the choice of material determines costs, performance and service life. Copper impresses with its high electrical conductivity, while aluminum scores with low costs and low weight. But which material is technically and economically the better choice in the long term? This article provides a detailed analysis of the advantages and disadvantages of both options.
|
||||
## Electrical and Mechanical Properties Compared
|
||||
Copper has been the preferred material for electrical wiring for decades. It offers high conductivity and excellent mechanical stability. Aluminum, on the other hand, is significantly lighter but has lower electrical conductivity. This means aluminum cables require a larger cross-section to transmit the same current.
|
||||
|
||||
<ComparisonGrid
|
||||
title="Comparison of Properties"
|
||||
leftLabel="Copper"
|
||||
rightLabel="Aluminum"
|
||||
items={[
|
||||
{ label: "Electrical Conductivity", leftValue: "58 MS/m", rightValue: "35 MS/m" },
|
||||
{ label: "Density (g/cm³)", leftValue: "8.96", rightValue: "2.70" },
|
||||
{ label: "Corrosion Resistance", leftValue: "Very high", rightValue: "Medium (oxidation)" },
|
||||
{ label: "Mechanical Strength", leftValue: "High", rightValue: "Medium" },
|
||||
{ label: "Weight", leftValue: "High", rightValue: "Low" },
|
||||
{ label: "Price per ton", leftValue: "€8,000 – 9,000", rightValue: "€2,300 – 2,500" }
|
||||
]}
|
||||
/>
|
||||
|
||||
Although aluminum offers weight savings in transport and installation, it requires larger cross-sections to achieve the same performance. This can impact space requirements in cable trays and mechanical stability. Additionally, aluminum is more prone to oxidation, which can lead to contact issues, whereas copper maintains its conductivity over long periods without significant quality loss. In humid or salty environments, such as offshore wind farms, this can be a crucial factor.
|
||||
## Costs: Acquisition, Installation, and Operation
|
||||
<h4>Material Costs</h4>
|
||||
The biggest advantage of aluminum is its lower purchase cost. While copper prices fluctuate significantly, aluminum remains relatively stable.
|
||||
In a direct comparison, aluminum cables such as **NA2XS(F)2Y** often perform better economically for long installation routes and large power lines – despite their lower conductivity compared to copper.
|
||||
Cost per ton (as of 2024):
|
||||
- **Copper:** €8,000 – 9,000
|
||||
- **Aluminum:** €2,300 – 2,500
|
||||
|
||||
For long cable routes, this price difference can add up to a substantial amount.
|
||||
<h4>Installation Effort</h4>
|
||||
- **Copper cables** are heavier, making transport and installation more labor-intensive.
|
||||
- **Aluminum cables** are lighter, simplifying mounting and logistics.
|
||||
|
||||
Especially in offshore wind farms or hard-to-reach locations, aluminum can offer significant advantages.
|
||||
<h4>Operating Costs and Energy Losses</h4>
|
||||
- **Copper cables** have lower transmission losses due to their superior conductivity.
|
||||
- **Aluminum cables** require larger cross-sections to transmit the same power, increasing costs for cable tray construction and materials.
|
||||
|
||||
Aluminum saves on initial purchase and installation but may become more expensive in the long run due to higher energy losses.
|
||||
## Lifespan and Maintenance
|
||||
Another crucial factor is the durability of the materials.
|
||||
<h4>Corrosion Behavior</h4>
|
||||
- **Copper** is highly resistant and barely oxidizes.
|
||||
- **Aluminum** forms an oxide layer that can degrade electrical contacts.
|
||||
|
||||
In humid or salty environments, such as offshore wind farms, aluminum can become problematic.
|
||||
<h4>Mechanical Durability</h4>
|
||||
- **Copper cables** are more robust and less prone to material fatigue.
|
||||
- **Aluminum** is softer and requires special connection techniques to ensure long-term reliability.
|
||||
|
||||
<h4>Maintenance Effort</h4>
|
||||
- **Copper connections** remain stable for decades.
|
||||
- **Aluminum connections** require regular inspections to prevent contact issues.
|
||||
|
||||
Copper lasts longer and requires less maintenance. Aluminum may lead to higher long-term costs.
|
||||
<blockquote>
|
||||
## Longevity matters: while **copper** remains maintenance-free for decades, **aluminum** requires regular inspections to prevent performance losses.
|
||||
</blockquote>
|
||||
## Environmental Friendliness and Sustainability
|
||||
Environmental impact is becoming increasingly important in modern energy industries. Sustainability doesn’t start with operating a wind farm—it begins with selecting the right materials for its infrastructure. Copper and aluminum differ not only in production but also in recyclability and overall environmental impact.
|
||||
<h4>Energy Consumption in Production</h4>
|
||||
Copper is an excellent conductor, but its extraction and processing are highly energy-intensive. Mining requires massive open pits or underground mines, consuming vast resources. Refining copper also demands extremely high temperatures, leading to significant energy use. Studies show that producing one kilogram of copper requires **four to five times more energy** than the same amount of aluminum.
|
||||
Aluminum, in contrast, is extracted from **bauxite**, which is more abundant than copper ore. However, refining aluminum requires the **energy-intensive Hall-Héroult process** (electrolysis). The advantage? **Recycling aluminum uses only about 5%** of the energy required for its initial production.
|
||||
<h4>CO₂ Footprint and Environmental Impact</h4>
|
||||
Copper production generates **significantly more CO₂ emissions** than aluminum—**if the aluminum is sourced from recycled material**. While both metals are recyclable, copper’s **primary extraction has a higher environmental toll**.
|
||||
Another key factor: **lifespan and maintenance**. Aluminum cables **wear out faster** than copper cables and need more frequent replacements. This means that aluminum’s **environmental benefits rely on consistent recycling** after use.
|
||||
<h4>Recyclability</h4>
|
||||
Both copper and aluminum are **fully recyclable**, but in practice, there are differences:
|
||||
- **Copper** has a high recycling rate because of its **high value**—it’s rarely discarded.
|
||||
- **Aluminum** is easier and cheaper to recycle, but a significant portion of global production still **depends on virgin bauxite**.
|
||||
|
||||
<h4>Long-Term Sustainability in Wind Farms</h4>
|
||||
Aluminum excels in **production efficiency and recycling**, while **copper’s durability and lower maintenance needs** make it a long-term sustainable choice. For wind farms, choosing the right material is also an **environmental decision**.
|
||||
Conclusion
|
||||
- **Aluminum** wins with its **lower CO₂ footprint** in production and excellent recyclability.
|
||||
- **Copper** lasts longer, requires **fewer replacements**, and thus also contributes to sustainability.
|
||||
|
||||
Ultimately, the best choice depends on **whether short-term efficiency or long-term durability** is the priority.
|
||||
|
||||
<ComparisonGrid
|
||||
title="Which Solution is Best for Wind Farms?"
|
||||
leftLabel="Copper"
|
||||
rightLabel="Aluminum"
|
||||
items={[
|
||||
{ label: "Efficiency", leftValue: "Better", rightValue: "Higher losses" },
|
||||
{ label: "Cost (Material & Purchase)", leftValue: "More expensive", rightValue: "Cheaper" },
|
||||
{ label: "Installation Effort", leftValue: "Heavier, more complex", rightValue: "Lighter, easier" },
|
||||
{ label: "Operating Costs (Losses & Maintenance)", leftValue: "Lower", rightValue: "Higher" },
|
||||
{ label: "Corrosion Resistance", leftValue: "Very good", rightValue: "Medium" },
|
||||
{ label: "Lifespan", leftValue: "Longer", rightValue: "Shorter" },
|
||||
{ label: "Environmental Impact", leftValue: "High energy consumption", rightValue: "Better with recycling" }
|
||||
]}
|
||||
/>
|
||||
|
||||
## Recommended Applications
|
||||
- **Aluminum** is ideal for **long medium-voltage routes**, where weight and cost are crucial factors.
|
||||
- **Copper** is the better choice for **grid connections, substations, and critical areas**, where **efficiency and longevity** matter most.
|
||||
|
||||
The best solution is often a **combination of both materials** to balance **cost and efficiency** effectively.
|
||||
## Copper or Aluminum – Which choice pays off?
|
||||
The decision between copper and aluminum cables depends heavily on the specific requirements of a wind farm project. **Aluminum** offers **lower material costs and reduced weight**, making installation easier. **Copper**, on the other hand, excels with **higher efficiency, lower maintenance costs, and longer lifespan**.
|
||||
The best approach is often a **strategic combination** of both materials:
|
||||
- **Aluminum** for **long transmission routes** where cost and weight matter.
|
||||
- **Copper** for **critical grid connections**, ensuring long-term reliability and efficiency.
|
||||
|
||||
This way, **costs can be optimized while maintaining operational security**.
|
||||
Anyone wishing to purchase cables such as **NA2XS(F)2Y** should consider the installation environment, the load and the project period in addition to the pure material price. For many **onshore wind farms**, aluminum offers a clear cost advantage – for others, the more robust NAYY copper cable is worthwhile.
|
||||
Need expert advice on cable selection?<br />Get in touch with **our specialists at KLZ**—we’ll help you find the perfect cable for your wind farm project!
|
||||
@@ -1,70 +0,0 @@
|
||||
---
|
||||
title: 'Expanding the grid by 2025: Building the foundation for a successful energy transition'
|
||||
date: '2025-02-10T13:00:36'
|
||||
featuredImage: '/uploads/2025/01/power-grid-station-electrical-distribution-statio-2023-11-27-05-25-36-utc-scaled.webp'
|
||||
locale: en
|
||||
category: Kabel Technologie
|
||||
---
|
||||
# Expanding the grid by 2025: Building the foundation for a successful energy transition
|
||||
TL;DR
|
||||
- **Grid expansion** is crucial for the energy transition and energy security.
|
||||
- By 2024: **3,085 km of new power line**s; by 2030: another 12,000 km planned.
|
||||
- **Underground cables** are preferred for environmental and public acceptance reasons.
|
||||
- **Challenges**: bureaucracy, opposition, and labor shortages.
|
||||
- **Solutions**: public involvement, smart technologies, and innovative cables.<br />
|
||||
|
||||
Goal: Climate neutrality and sustainable energy supply by 2045. 🌍
|
||||
## Why grid expansion is essential
|
||||
A reliable power grid is the backbone of the energy transition. It ensures that the **growing volume of renewable energy** generated by wind and solar farms can be safely and efficiently delivered where it’s needed – to households, businesses, and industries. However, building a future-proof grid is no simple task.
|
||||
Key challenges include complex approval processes, which can take several years, and resistance from local communities, particularly in rural areas. Despite these obstacles, **grid expansion presents significant opportunities**: it drives innovation in the energy sector, creates jobs, and plays a crucial role in achieving climate goals.
|
||||
💡 <em>Good to know:</em> An efficient power grid can directly integrate up to 90% of renewable energy, accelerating the transition away from fossil fuels!
|
||||
## Facts and figures: The current state of grid expansion in Germany
|
||||
Germany has made significant progress in expanding its power grid in recent years. By the end of 2024, 3,085 kilometers of new lines will have been completed, with a large portion consisting of underground cables. These are particularly advantageous in densely populated areas or protected landscapes.
|
||||
<h4>Regional focus</h4>
|
||||
Major projects like <em>SuedLink</em> and <em>Ultranet</em> are playing a key role. For instance, SuedLink will span over 700 kilometers, connecting northern and southern Germany to efficiently transport surplus wind energy.
|
||||
<h4>Projects planned through 2030</h4>
|
||||
By the end of this decade, more than 12,000 kilometers of additional lines are set to be built. The goal is to optimize electricity transport so that renewable energy reaches consumption centers with minimal losses.
|
||||
<h4>International comparison</h4>
|
||||
Germany is among Europe’s leaders in grid expansion, although countries like the Netherlands, with their more compact grid structures, are advancing more quickly in certain areas.
|
||||
📊 **Did you know? **Nearly 80% of the planned new projects involve underground cables – a technology that protects the landscape while increasing public acceptance.
|
||||
## The role of high- and extra-high-voltage lines
|
||||
High- and extra-high-voltage lines are essential for transporting electricity over medium to long distances. They serve distinct purposes:
|
||||
- **High-voltage lines (110 kV):** Primarily used for regional power distribution, these lines deliver energy from large substations to local networks.
|
||||
- **Extra-high-voltage lines (220–380 kV):** These transport electricity over long distances with minimal losses and are critical for moving energy from generation hubs (e.g., wind farms in northern Germany) to consumption centers (e.g., industrial regions in the south).
|
||||
|
||||
## Overhead lines vs. underground cables
|
||||
While overhead lines are more cost-effective and quicker to install, underground cables offer advantages like reduced visual impact and lower electromagnetic emissions. They are particularly suitable for nature reserves or densely populated areas where overhead lines often face opposition.
|
||||
🔍 **Expert tip**: Innovative cable technologies like NA2XS(F)2Y combine efficiency with environmental sustainability, making them an ideal solution for advancing the energy transition!
|
||||
## “The choice between overhead lines and underground cables is not just a technical decision but also one of public acceptance. Both technologies have their place – the key lies in finding the right balance.”
|
||||
## Obstacles and solutions in grid expansion
|
||||
Grid expansion is not just a technical endeavor but also a societal challenge. Lengthy approval processes, which can take up to ten years, and resistance from community initiatives often hinder progress on many projects.
|
||||
<h4>Common obstacles</h4>
|
||||
- **Bureaucratic hurdles:** Coordination between multiple authorities often delays project starts.
|
||||
- **Regional acceptance issues:** Citizens frequently criticize the impact on landscapes or fear negative effects from electromagnetic fields.
|
||||
- **Skilled labor shortages:** Demand for specialized workers in the cable and grid construction industry exceeds supply.
|
||||
|
||||
<h4>Proposed solutions</h4>
|
||||
- **Transparency and engagement:** Involving citizens early in the planning process helps reduce fears and misconceptions.
|
||||
- **Technology adoption:** Digital tools like 3D modeling can make planning faster and more efficient.
|
||||
- **Collaboration:** Closer cooperation between grid operators, policymakers, and businesses is essential to overcome barriers more quickly.
|
||||
|
||||
📢 **Did you know?** Projects with active public participation are typically approved twice as fast as those without!
|
||||
## Grid expansion as a driver of the energy transition
|
||||
Without a comprehensive expansion of power grids, the energy transition will remain a vision. New power lines connect regions with high renewable energy generation to consumption hubs across Germany. This not only enhances energy security but also drastically reduces reliance on fossil fuels.
|
||||
<h4>Energy security</h4>
|
||||
An expanded grid can better manage fluctuations in power generation – such as during windless or cloudy days. The integration of storage systems further strengthens the grid, making it more resilient to peak loads.
|
||||
<h4>Climate goals</h4>
|
||||
Germany has committed to achieving climate neutrality by 2045. Grid expansion is essential to accommodate the growing capacities of wind and solar energy and to utilize them efficiently.
|
||||
⚡ **Good to know:** Modern cables can transport up to 40% more electricity than older systems, actively increasing grid capacity!
|
||||
## Outlook: What’s next by 2025?
|
||||
The coming years will be pivotal for the energy transition. Projects like SuedLink, A-Nord, and Ultranet are nearing completion and will form the backbone of Germany’s new power grid.
|
||||
<h4>Digitizing the grid</h4>
|
||||
Emerging technologies such as smart monitoring systems and AI-driven analytics will help detect and resolve grid disruptions more quickly.
|
||||
<h4>Integrating new technologies</h4>
|
||||
The adoption of hydrogen technologies and decentralized storage systems will make the grid more flexible and resilient. This will allow for even better utilization of renewable energy and further optimization of energy supply.
|
||||
🚀 **Did you know?** Germany invests over €15 billion annually in grid expansion – one of the highest amounts worldwide!
|
||||
## Shaping the energy future together
|
||||
Grid expansion is the backbone of the energy transition – without it, green electricity often goes unused because it cannot reach consumption centers. Every new kilometer of power line brings us closer to** climate goals**, strengthens energy security, and lays the foundation for a sustainable energy future.
|
||||
However, the journey is not without challenges: bureaucratic hurdles, technological demands, and local resistance often slow down projects. That’s where KLZ comes in. With a wide range of **innovative cable technologies**, such as NA2XS(F)2Y and NAYY, we provide the infrastructure needed for modern and efficient power grids.
|
||||
Our quick delivery, in-depth market knowledge, and close relationships with our customers in Germany and the Netherlands make us a reliable partner for grid operators and installers. Additionally, we are committed to sustainability – whether through recycling, using secondary raw materials, or offering free drum return services.
|
||||
In short, **KLZ** is ready to support the energy transition with high-quality cables, technical expertise, and sustainable solutions. Together, we can actively shape the energy future! 🌱⚡
|
||||
@@ -1,44 +0,0 @@
|
||||
---
|
||||
title: Eye-opening realities of green energy transformation
|
||||
date: '2024-12-30T10:55:32'
|
||||
featuredImage: '/uploads/2024/12/green-electric-plug-concept-2023-11-27-05-30-00-utc-scaled.webp'
|
||||
locale: en
|
||||
category: Kabel Technologie
|
||||
---
|
||||
# Eye-opening realities of green energy transformation
|
||||
<h4>Despite its importance, this invisible infrastructure is often overlooked.</h4>
|
||||
In many areas, the technologies are not yet fully developed and there is still a lot of potential for improvement. The cable industry is a key factor in the efficiency of the energy transition. It can and should make an important contribution to making the use of green energy truly sustainable. It is time to focus more on the details of the infrastructure in order to drive forward the entire energy transition and ensure that renewable energy can be used reliably and efficiently in the long term.
|
||||
## TLDR;
|
||||
- Over 10% of solar energy is lost due to poor-quality cables.
|
||||
- Poor-quality cables with high resistance increase energy losses.
|
||||
- High-quality cables with better conductivity reduce losses and improve efficiency.
|
||||
- Wind farms without energy storage lose surplus energy.
|
||||
- Energy storage systems like batteries or pumped storage plants enable efficient use of surplus energy.
|
||||
- High costs and limited capacities are challenges for energy storage, but technological progress is improving the situation.
|
||||
- Power line corridors can serve as habitats for wildflowers, bees, and endangered species.
|
||||
- In Germany, “ecological route maintenance” is used to promote natural habitats along power lines.
|
||||
- Similar projects to enhance nature along power lines also exist in Switzerland.
|
||||
|
||||
<h4>Fact 1: Over 10% of solar power is lost through bad cables</h4>
|
||||
There is an often overlooked problem with solar power systems: energy loss due to bad cables. Imagine you have a system that generates power from solar energy, but some of that power is simply lost before it even reaches you. This happens due to the resistance in the cables that carry the electricity from the solar panels to the appliances or to the grid. If the cables are not of good quality, this resistance increases and more energy is lost – and this can account for over **10% of the total solar power generated**.
|
||||
But why does this happen? Every cable has a resistance that slows down the flow of electricity. The poorer the quality of the cable, the more energy is lost in the form of heat. This means that less of the electricity produced by the solar system actually reaches you and can be used. And that is obviously a problem, especially when you consider how much is invested in the installation of a solar system.
|
||||
## Green energy is a central component of our future today … But it is not enough to simply rely on these energy sources. The infrastructure that brings this energy to us efficiently plays an equally crucial role.
|
||||
High-quality cables, on the other hand, have better conductivity and lower resistance. This ensures that the **electricity flows more efficiently and less is lost**. This leaves more of the generated energy for you to use – which is not only good for your electricity bill, but also helps to maximize the sustainability of your solar system. So it’s worth paying attention to quality when choosing cables in order to exploit the full potential of green energy.
|
||||
<VisualLinkPreview
|
||||
url="https://ratedpower.com/blog/utility-scale-pv-losses/"
|
||||
title="Ultimate guide to utility-scale PV system losses — RatedPower"
|
||||
summary="What are solar PV system losses and how can you avoid them to maximize the electrical output from your utility-scale plant project?"
|
||||
image="https://assets.ratedpower.com/1694509274-aerial-view-solar-panels-top-building-eco-building-factory-solar-photovoltaic-cell.jpg?auto=format&fit=crop&h=630&w=1200"
|
||||
/>
|
||||
<h4>Fact 2: Wind farms without energy storage are not that efficient</h4>
|
||||
Wind farms have a similar problem to solar plants: energy losses due to fluctuating power generation. Imagine a wind farm produces electricity, but the wind does not blow constantly. This means that at certain times the wind turbines generate more electricity than is actually needed, while at other times, when the wind drops, they can supply almost no electricity at all. In both cases, a lot of energy is lost or not used. Without a way to **store surplus energy**, there is a gap between the energy generated and the actual use, which significantly reduces the efficiency of the entire system.The solution to this problem lies in** energy storage systems** such as batteries or pumped storage power plants. These technologies make it possible to store surplus energy when the wind is blowing strongly and therefore more electricity is produced than is required at the moment. This stored energy can then be used on demand when the wind dies down or demand is particularly high. This ensures that all the electricity generated is used efficiently instead of being lost unused. Without these storage technologies, the full potential of wind energy remains untapped and the efficiency of wind farms remains far below their actual value.
|
||||
However, despite their importance, energy storage systems are associated with challenges. High costs and limited capacity continue to make the development and installation of these storage technologies a difficult endeavor. But technological progress has not stood still: New innovations in storage technologies and increasingly improved scalability are making it more and more realistic to equip wind farms with **effective and cost-efficient storage systems**. This is crucial for the future of wind energy, because only by overcoming these challenges can wind energy fully contribute to ensuring a stable and sustainable energy supply.
|
||||
<VisualLinkPreview
|
||||
url="https://www.solarenergie.de/stromspeicher/arten/stromspeicher-windkraft"
|
||||
title="Speicher für Windenergie: Welche Möglichkeiten gibt es?"
|
||||
summary="Speicher für Windenergie: Welche Möglichkeiten gibt es? Windkraftanlagen mit Speicher im privaten und im öffentlichen Bereich ✓ Wie kann man Windenergie speichern? – Lernen Sie hier bereits existente und sich derzeit in der Forschung befindende Verfahren der Zukunft kennen!"
|
||||
image="https://assets.solarwatt.de/Resources/Persistent/e084aa09af5f0cdef386088bc558a52d81509cc0/Regenerative%20Energie-1200x628.jpg"
|
||||
/>
|
||||
<h4>Fact 3: Power lines can be used as habitats for biodiversity</h4>
|
||||
Did you know that power lines – the high-voltage lines that transport electricity from power plants to our homes and businesses – can also be used as** habitats for animals and plants**? These areas, which often need to be kept clear to make room for the power lines, provide a valuable opportunity to actively promote biodiversity and contribute to environmental stewardship at the same time.Traditionally, the areas along power lines have often been regarded as “wasteland” with no particular significance. However, innovative approaches to green infrastructure are increasingly creating valuable habitats here. Today, wildflower meadows, bee pastures and shrubs are planted along power lines, providing habitats for many endangered species. These meadows are not only a source of food for bees, butterflies and other pollinators, but also a refuge for birds and small animals that are finding less and less habitat in other parts of the landscape.
|
||||
In Germany, this is a growing concept known as “**ecological route maintenance**”. Here, care is taken to ensure that the areas along the power lines are designed in a near-natural way so that biodiversity is promoted. This creates flowering meadows and habitats for numerous insect species, which are finding less and less space due to the intensive use of agriculture and urbanization. There are also similar projects in Switzerland in which nature is specifically promoted along power lines.
|
||||
@@ -1,167 +0,0 @@
|
||||
---
|
||||
title: 'Focus on wind farm construction: three typical cable challenges'
|
||||
date: '2025-01-05T10:16:15'
|
||||
featuredImage: /uploads/2025/04/image_fx_-2025-02-20T193520.620.webp
|
||||
locale: en
|
||||
category: Kabel Technologie
|
||||
---
|
||||
|
||||
# Focus on wind farm construction: three typical cable challenges
|
||||
|
||||
<Callout type="info" title="TL;DR">
|
||||
- **Grid expansion** is crucial for the energy transition and energy security.
|
||||
- By 2024: **3,085 km of new power line**s; by 2030: another 12,000 km planned.
|
||||
- **Underground cables** are preferred for environmental and public acceptance reasons.
|
||||
- **Challenges**: bureaucracy, opposition, and labor shortages.
|
||||
- **Solutions**: public involvement, smart technologies, and innovative cables.
|
||||
|
||||
Goal: Climate neutrality and sustainable energy supply by 2045. 🌍
|
||||
</Callout>
|
||||
|
||||
Building an [**onshore wind farm**](https://www.verivox.de/strom/themen/windpark/) is a technical masterpiece – and **cable installation** plays a crucial role. Between wind turbines, transformers and grid connection points run hundreds of meters of [**medium-voltage cables**](https://www.dosensecable.es/de/diferencia-entre-cable-de-media-tension/) that transfer the generated energy safely and efficiently to the grid. But it’s exactly these **wind farm cables** that often become the most critical bottleneck in the entire project.
|
||||
|
||||
Wind power cabling is far more than just sourcing materials. It requires precise planning, coordination and experience – from choosing the right **cable type** to ensuring timely delivery to the construction site. Even small delays or changes in plans can significantly affect progress and trigger high additional costs.
|
||||
|
||||
Add to this the logistical challenges: **large cable drums**, different [**conductor cross sections**](https://www.conrad.de/de/ratgeber/handwerk/kabelquerschnitt-berechnen.html), special **packaging**, and ever-changing construction site conditions. Without forward planning, you risk bottlenecks – and that can delay the entire [**grid connection of the wind farm**](https://www.enargus.de/pub/bscw.cgi/d7842-2/*/*/Netzanschluss%20einer%20Windkraftanlage?op=Wiki.getwiki&search=Windpark).
|
||||
|
||||
In this article, we look at the** 3 biggest challenges in wind farm construction** – and show how proactive logistics and the right cable strategy can help you stay on schedule and maximize efficiency.
|
||||
|
||||
Find out why onshore wind farms are a crucial pillar of the energy transition here:
|
||||
|
||||
<VisualLinkPreview
|
||||
url="https://www.enbw.com/unternehmen/themen/windkraft/onshore-wind-pfeiler-der-energiewende.html"
|
||||
title="Onshore-Windenergie als Pfeiler der Energiewende | EnBW"
|
||||
summary="Viele Faktoren haben den Bau von Windenergieanlagen in den letzten Jahren gebremst. Lesen Sie hier die Gründe!"
|
||||
image="https://www.enbw.com/media/image-proxy/1600x914,q70,focus50x49,zoom1.0/https://www.enbw.com/media/presse/images/newsroom/onshore-windpark-langenburg-7zu4_1701415033580.jpg"
|
||||
/>
|
||||
|
||||
<AnimatedImage src="/uploads/2025/02/image_fx_-7.webp" alt="Wind farm construction site" width={1408} height={768} />
|
||||
|
||||
# Challenge 1: Tight construction timelines and fixed deadlines
|
||||
|
||||
In **wind farm construction**, schedules are rarely flexible. Any delay in [**cable laying**](https://www.eef.de/news/die-infrastruktur-hinter-windparks) directly impacts the entire build process – from foundation and tower installation to commissioning. Since **grid connection deadlines** are usually contractually binding, a missing [**medium-voltage cable**](/de/stromkabel/mittelspannungskabel/) can quickly lead to costly site downtime.
|
||||
|
||||
Typical causes of delays:
|
||||
- delayed **cable deliveries** or unclear scheduling
|
||||
- inaccurate **material planning** in large-scale projects
|
||||
- weather conditions delaying [**underground cable installation**](https://www.eww.at/magazin/beitraege/detail/erdkabel-sichere-stromversorgung)
|
||||
- lack of coordination between suppliers, civil engineers and installers
|
||||
|
||||
Especially for **wind farm projects** involving several kilometers of [**NA2XS(F)2Y**](/en/products/medium-voltage-cables/na2xsf2y/), precise **delivery coordination** is essential. Partial and complete deliveries must be scheduled to match the actual **construction progress**.
|
||||
|
||||
<TechnicalGrid
|
||||
title="Efficient Logistics Solutions"
|
||||
items={[
|
||||
{ label: "Different construction progress per turbine", value: "Partial and phased deliveries matched to the build schedule" },
|
||||
{ label: "Tight installation windows", value: "Just-in-time cable delivery to site" },
|
||||
{ label: "Limited storage space on site", value: "Temporary, project-specific intermediate storage" },
|
||||
{ label: "Weather-dependent operations", value: "Flexible adjustment of delivery schedules and material allocation" }
|
||||
]}
|
||||
/>
|
||||
|
||||
With precise [**cable capacity**](https://www.a-eberle.de/infobrief/infobrief-20/) planning and responsive logistics, even high-pressure timelines can be handled efficiently. This ensures the **wind farm’s grid connection** stays on schedule – and energy flows reliably.
|
||||
|
||||
Want to know which cable types are used in wind farms? Check out this article:
|
||||
|
||||
<VisualLinkPreview
|
||||
url="https://wind-turbine.com/magazin/ratgeber/250713/welche-arten-von-kabeln-benoetigt-man-fuer-den-bau-eines-windparks.html"
|
||||
title="Welche Arten von Kabeln benötigt man für den Bau eines Windparks?"
|
||||
summary="Die Verkabelung ist ein zentrales Element jeder Windkraftanlage und beeinflusst maßgeblich die Effizienz, Sicherheit und Wirtschaftlichkeit eines Windparks.…"
|
||||
image="https://wind-turbine.com/i/53689/68738caa5e58ffdf06031cf2/2/1200/630/68738c85497af_KabelfreinenWindparkpng.png"
|
||||
/>
|
||||
|
||||
# Challenge 2: Large delivery volumes and specialized packaging
|
||||
|
||||
A modern **onshore wind farm** requires several kilometers of **medium-voltage cables** – often of the type [**NA2XS(F)2Y**](/en/products/medium-voltage-cables/na2xsf2y/), [**N2XSY**](/en/products/medium-voltage-cables/n2xsy/) or [**NAYY**](/en/products/low-voltage-cables/nayy/). These cables weigh several tons per drum and require smart logistics to avoid damage, confusion and costly delays.
|
||||
|
||||
The bigger the project, the more complex the **material coordination** becomes:
|
||||
- Different **cable cross-sections** and **conductor types** must be clearly assigned.
|
||||
- **Drum sizes** and [**installation units**](https://www.elektrofachkraft.de/sicheres-arbeiten/neue-mindestanforderungen-fuer-kabelverlegung) vary by cable length and location.
|
||||
- Clear **markings** and **packaging systems** on-site are key to avoid installation mistakes.
|
||||
|
||||
Our experience shows: Planning for storage and packaging units in advance not only saves time but also reduces the risk of material loss and reorders.
|
||||
|
||||
<TechnicalGrid
|
||||
title="Typical Requirements and Solutions"
|
||||
items={[
|
||||
{ label: "High delivery volumes on tight site space", value: "Project-specific storage in regional hubs" },
|
||||
{ label: "Different drum sizes", value: "Adjust drum dimensions to pulling force and weight" },
|
||||
{ label: "Sensitive cable sheaths", value: "Weatherproof packaging and UV protection" },
|
||||
{ label: "Lack of overview", value: "Digital delivery summaries and clear drum labeling" }
|
||||
]}
|
||||
/>
|
||||
|
||||
A clear [**cable logistics strategy**](https://logistik-heute.de/galerien/mammutprojekt-kabellogistik-wie-kommen-tausende-tonnen-hgue-erdkabel-fuer-die-energiewende-zum-einsatzort-40875.html) is the key to avoiding material shortages and costly downtime. This helps maintain control – even for projects involving dozens of kilometers of **wind farm cabling**.
|
||||
|
||||
Anyone who integrates **packaging, storage and labeling** early into the planning process ensures that the **wind farm cables** arrive exactly where they’re needed – with no time lost and no disruption to the construction flow.
|
||||
|
||||
<AnimatedImage src="/uploads/2025/08/NA2XSF2X_3x1x300_RM-25_12-20kV-3.webp" alt="NA2XSF2Y Cable" width={1920} height={1080} />
|
||||
|
||||
# Challenge 3: Last-minute project changes
|
||||
|
||||
Hardly any **wind farm project** goes exactly to plan. Construction site conditions, supply bottlenecks, or new requirements from the [grid operator](https://windpark-altdorferwald.de/wissenswertes-windenergie/wie-wird-die-erzeugte-energie-ins-stromnetz-eingespeist/) often lead to spontaneous adjustments – and this is where the true flexibility of **cable logistics** is revealed.
|
||||
|
||||
Typical scenarios:
|
||||
- A cable route has to be changed due to geological conditions.
|
||||
- **Cable types** or **conductor cross-sections** change after a new grid calculation.
|
||||
- The **delivery location** changes at short notice because sections progress faster or slower than expected.
|
||||
|
||||
In such cases, it’s crucial that the supplier has **its own stock** and a **quick response time**. Only then can changes to **cable lengths** or additional **earthing components** be provided promptly, without delaying the project.
|
||||
|
||||
An experienced partner can make all the difference:
|
||||
- **Rapid re-delivery** from central stock within Germany
|
||||
- **Flexible redirection** of deliveries in case of planning changes
|
||||
- **Close coordination** with project managers, civil engineers and installation teams
|
||||
- **Documented traceability** to keep all changes transparent
|
||||
|
||||
Short-term changes aren’t the exception – they’re part of everyday life in **wind farm construction**. What matters is being prepared. A well-designed [**supply chain**](https://bwo-offshorewind.de/pressemitteilung-roadmap-ist-wichtiger-schritt-fuer-resiliente-lieferketten/), clear communication, and agile warehousing structures ensure the project stays on schedule – and the wind farm connects to the grid on time.
|
||||
|
||||
Avoid delays or issues during your wind power project by understanding early on why NABU may file objections to certain sites:
|
||||
|
||||
<VisualLinkPreview
|
||||
url="https://www.nabu.de/umwelt-und-ressourcen/energie/erneuerbare-energien-energiewende/windenergie/26913.html"
|
||||
title="Wann klagt der NABU gegen Windkraftprojekte?"
|
||||
summary="45 Klagen wurden wegen Fehlplanungen bei Windenergie zwischen 2010 und 2019 vom NABU auf den Weg gebracht. Nicht weil der Windenergieausbau aufgehalten werden soll, sondern weil immer wieder Vorhaben und Planungen eklatant gegen Naturschutzrecht verstoßen."
|
||||
image="https://www.nabu.de/imperia/md/nabu/images/umwelt/energie/energietraeger/windkraft/161125-nabu-windrad-allgaeu-heidrun-burchard.jpeg"
|
||||
/>
|
||||
|
||||
# Quality and sustainability as success factors
|
||||
|
||||
In addition to time and logistics, [**cable quality**](https://www.windkraft-journal.de/2025/07/14/planungsempfehlung-bei-der-verkabelung-von-windparks-durch-wind-turbine-com/) plays a decisive role in the long-term performance of a **wind farm**. After all, the installed **[medium-voltage](/de/stromkabel/mittelspannungskabel/) and [high-voltage cables](/de/stromkabel/hochspannungskabel/)** are expected to transmit energy reliably for decades – even under extreme weather and changing load conditions.
|
||||
|
||||
A high-quality **cable system for wind power** stands out due to several factors:
|
||||
- **Material quality:** XLPE-insulated cables like [**NA2XS(F)2Y**](/en/products/medium-voltage-cables/na2xsf2y/) or [**N2XS(F)2Y**](/en/products/medium-voltage-cables/n2xsf2y/) provide high dielectric strength and excellent long-term protection.
|
||||
- **Standards compliance (PDF):** [All components used should meet key standards](https://www.zvei.org/fileadmin/user_upload/Presse_und_Medien/Publikationen/2017/September/ZVEI_Leitfaden_Kabel_und_Leitungen_in_Windkraftanlagen/ZVEI-Leitfaden-Kabel-und-Leitungen-in-Windkraftanlagen-September-2017.pdf) such as **DIN VDE 0276**, **VDE 0298**, or **IEC 60502**.
|
||||
- **Ease of installation:** Cable design must allow for efficient and safe installation – even under difficult ground conditions.
|
||||
- **Environmental aspects:** Recyclable materials and the [reuse of drums or conductor materials](/de/recycling-von-kabeltrommeln-nachhaltigkeit-im-windkraftprojekt/) help reduce ecological footprint.
|
||||
|
||||
More and more project developers are placing value on **sustainable cable systems** that combine energy efficiency with durability. This applies not only to the **material selection**, but also to **supply chains**: short transport routes, local storage near the project, and optimized packaging concepts reduce emissions and logistics effort.
|
||||
|
||||
The combination of **technical quality**, **ecological responsibility**, and **efficient logistics** makes modern **wind farm cabling** a central success factor for grid expansion. Anyone who invests in smart solutions here builds the foundation for stable and sustainable energy flow – now and in the future.
|
||||
|
||||
[Find out here which cables are suitable for your wind farm project and what makes the difference between low and high voltage options.](/de/welche-kabel-fuer-windkraft-unterschiede-von-nieder-bis-hoechstspannung-erklaert/)
|
||||
|
||||
<AnimatedImage src="/uploads/2025/01/offshore-wind-power-and-energy-farm-with-many-wind-2023-11-27-04-51-29-utc-scaled.webp" alt="Wind farm landscape" width={2560} height={1707} />
|
||||
|
||||
# Conclusion: Successfully connected to the grid
|
||||
|
||||
Cabling is the backbone of any **wind farm** – and at the same time one of the most sensitive parts of the project. Tight schedules, complex logistics and last-minute changes aren’t the exception, they’re the norm. Those who identify and address these challenges early avoid standstills, cost overruns and missed deadlines.
|
||||
|
||||
Successful **wind farm cable projects** rely on three core principles:
|
||||
1. **Structured planning** – clear workflows, coordinated delivery schedules and defined responsibilities.
|
||||
2. **Flexibility** – in-house stock and short response times when changes occur.
|
||||
3. **Quality** – durable, standards-compliant cable systems and sustainable logistics processes.
|
||||
|
||||
With the right mix of experience, organization and technical know-how, even complex **wind farm cabling** can be implemented efficiently. This keeps construction on track – and ensures the wind farm delivers power exactly when it’s needed.
|
||||
|
||||
## KLZ – your partner for successful wind farm cabling
|
||||
|
||||
Whether you need [**medium voltage**](/de/stromkabel/mittelspannungskabel/), **underground cables**, or complete **grid connection solutions** – we don’t just provide the right materials, but the kind of experience that actually moves your project forward. For years, we’ve been supporting **wind power projects** throughout Germany and the Netherlands – from technical consulting and **material selection** to **on-time delivery**.
|
||||
|
||||
Our advantage? **Real-world experience**: We know how tight construction timelines in wind projects are, which cable systems have proven themselves, and what really matters in logistics. Thanks to our **central storage facilities in Germany**, we respond quickly to changes and keep supply chains stable – even when your project gets dynamic.
|
||||
|
||||
With our network, market knowledge, and passion for renewable energy, we ensure your **wind power project** connects to the grid on time – and without the drama.
|
||||
|
||||
➡️ **Planning a new wind farm or need help choosing the right cables?** Then talk to us – we deliver the **cables, solutions, and expertise** that make your project a success.
|
||||
|
||||
[Get in touch now](/en/contact/)
|
||||
@@ -1,92 +0,0 @@
|
||||
---
|
||||
title: 'From smart to sustainable: this is what the energy industry will look like in the near future'
|
||||
date: '2025-03-24T11:00:44'
|
||||
featuredImage: /uploads/2025/02/image_fx_-7.webp
|
||||
locale: en
|
||||
category: Kabel Technologie
|
||||
---
|
||||
# From smart to sustainable: this is what the energy industry will look like in the near future
|
||||
A secure and sustainable energy future is only possible with new technologies, smart infrastructure and efficient use of resources.
|
||||
But what will the energy supply of the future look like? What role will solar energy, wind power and cable infrastructure play? In this article, we take a look at the most important developments – from intelligent grid control to sustainable cable systems.
|
||||
# Solar Energy: the revolution on our roofs and fields
|
||||
Solar energy has long evolved from a niche solution into a cornerstone of the energy transition. New technologies are making photovoltaics more efficient, flexible, and economical—not just on rooftops but also on farmland, building facades, and even floating on lakes.
|
||||
|
||||
<StickyNarrative
|
||||
title="Innovations in Photovoltaics"
|
||||
items={[
|
||||
{ title: "Tandem solar cells", content: "**Description:** Combination of silicon and perovskite for higher efficiency. **Advantage:** Up to 30% more power output." },
|
||||
{ title: "Agri-PV", content: "**Description:** Solar panels above agricultural land. **Advantage:** Dual land use for energy and crops." },
|
||||
{ title: "Bifacial modules", content: "**Description:** Capture light from both sides. **Advantage:** 10–20% higher yield through reflection." }
|
||||
]}
|
||||
/>
|
||||
|
||||
However, the biggest challenge remains grid integration: Solar energy is primarily generated during the day, but our electricity demand peaks in the morning and evening. The solution? Smart storage technologies and intelligent grid management that make solar power available exactly when it’s needed.
|
||||
# Wind Power: higher, stronger, more efficient
|
||||
Wind power is, alongside solar energy, the most important pillar of renewable energy. While offshore wind farms at sea generate massive amounts of electricity, onshore wind turbines remain the backbone of sustainable energy supply.
|
||||
## The latest developments in wind power
|
||||
- **Larger rotor blades** – The bigger the surface area, the more energy a turbine can extract from the wind. New materials and designs allow rotor blades to grow even larger without becoming unstable.
|
||||
- **Taller towers** – The higher a wind turbine, the more consistent the wind speed. Modern towers now reach heights of over 200 meters.
|
||||
- **Intelligent control** – Artificial intelligence optimizes rotor alignment and adjusts output based on weather conditions.
|
||||
|
||||
A crucial factor for the success of wind power remains grid connection. Without a powerful cable infrastructure, even the best wind turbine is useless.
|
||||
# Smart Energy Grids: intelligence instead of vverload
|
||||
The energy transition requires more than just clean power generation—it needs a grid smart enough to efficiently distribute the fluctuating electricity from renewable sources.
|
||||
💡 **What makes an energy grid smart?**<br />✔ **Digital metering systems** – Smart meters monitor consumption and optimize grid load.<br />✔ **Automated grid management** – AI-driven systems balance supply and demand.<br />✔ **Flexibility markets** – Consumers can feed in or use electricity exactly when it makes the most sense.
|
||||
Without these technologies, our power grids would struggle to handle the highly variable production from wind and solar farms. Smart grids are not just an addition—they are essential for a sustainable energy future.
|
||||
# Sustainable Energy Infrastructure: cables, grid expansion, and recycling
|
||||
The energy transition requires massive investments in infrastructure. Renewable energy sources are often located far from consumption centers, making high-performance cable connections essential.
|
||||
## Three key pillars of sustainable energy infrastructure:
|
||||
<h4>1. High-performance cables for renewable energy</h4>
|
||||
- Modern cable technologies minimize energy losses over long distances.
|
||||
- Innovative insulation materials increase lifespan and durability.
|
||||
|
||||
<h4>2. Grid connections for wind and solar farms</h4>
|
||||
- Decentralized energy feed-in requires flexible grid connections.
|
||||
- New concepts like **“supergrids”** enable more efficient regional connections.
|
||||
|
||||
<h4>3. Recycling and circular economy in cable technology</h4>
|
||||
- Old cables contain valuable raw materials like copper and aluminum.
|
||||
- Modern recycling methods allow for up to 95% material recovery.
|
||||
|
||||
A sustainable grid expansion isn’t just about creating new connections—it’s about making the most of existing resources.
|
||||
# Cables as the backbone of the energy transition
|
||||
Without high-performance cables, neither wind farms nor solar plants could be connected to the grid. Choosing the right cables is therefore crucial.
|
||||
## Comparison: High-voltage vs. Medium-voltage cables
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Cable type</th>
|
||||
<th>Voltage level</th>
|
||||
<th>Application</th>
|
||||
<th>Advantages</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>**Medium-voltage cables** (e.g., NA2XS(F)2Y)</td>
|
||||
<td>10 – 36 kV</td>
|
||||
<td>Grid connection for wind and solar farms</td>
|
||||
<td>Flexible, cost-effective</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>**High-voltage cables** (e.g., NA2XS(F)2Y 110 kV)</td>
|
||||
<td>110 – 380 kV</td>
|
||||
<td>Long-distance power transmission</td>
|
||||
<td>Low losses, high capacity</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
But what exactly sets high-voltage cables apart from low-voltage cables? This article on the [differences between high- and low-voltage cables](https://de.kbs-connector.com/news/differences-between-hv-and-lv-cables-62284565.html) explains it all—from insulation materials to power transmission characteristics and installation requirements.
|
||||
🔧 The future of cable technology:
|
||||
- **Superconducting cables** enable nearly loss-free power transmission.
|
||||
- **Recyclable materials** reduce environmental impact.
|
||||
- **AI-powered monitoring systems** detect damage early, extending cable lifespan.
|
||||
|
||||
One thing is clear: Cables are more than just connections—they are the backbone of a sustainable energy supply.
|
||||
# The path to an intelligent and sustainable energy future
|
||||
The energy industry of the future is smart, sustainable, and interconnected. But to make this transformation a reality, investments in infrastructure, new technologies, and recycling are essential.
|
||||
- **Solar energy and wind power** are the main pillars of the energy transition.
|
||||
- **Smart grids** ensure that renewable energy is used efficiently.
|
||||
- **High-performance cable systems** are the invisible heroes of the transformation.
|
||||
|
||||
Now it’s up to politics, business, and society to actively shape this future. Because the energy transition isn’t happening someday—it’s happening now. 🚀
|
||||
@@ -1,83 +0,0 @@
|
||||
---
|
||||
title: Green energy starts underground – and with a plan
|
||||
date: '2025-05-22T09:20:07'
|
||||
featuredImage: /uploads/2025/02/image_fx_-9.webp
|
||||
locale: en
|
||||
category: Kabel Technologie
|
||||
---
|
||||
# Green energy starts underground – and with a plan
|
||||
# Invisible Heroes: Underground Cabling as the Backbone of Wind Energy
|
||||
Modern onshore wind farms consist not only of turbines, but of a complex network of power lines, connections, transformer stations and interfaces to the public power supply. The cables that connect all these usually run underground – for good reasons:
|
||||
Advantages of underground cabling:
|
||||
- **Protection from external influences:** Storms, snow or heat do not affect the supply.
|
||||
- **Reduced downtime:** Cable systems require little maintenance and are less prone to faults.
|
||||
- **Visual integration into the landscape:** No pylons, no power lines in the sky.
|
||||
- **Safety and environmental friendliness:** No risk from falling lines or electromagnetic exposure.
|
||||
|
||||
What many underestimate: The cable routes in a wind farm often make up a significant part of the total investment. They are not just a link – they are the **critical infrastructure** on which everything is built.
|
||||
# Holistic Planning: Foundation for Sustainable Infrastructure
|
||||
Integrating wind farms into the power grid requires a systemic approach. Sound planning takes into account not only performance requirements, but also environmental conditions, expansion scenarios and approval processes.
|
||||
|
||||
<StickyNarrative
|
||||
title="Key Planning Aspects"
|
||||
items={[
|
||||
{ title: "Route Guidance", content: "Geology, ownership, protected areas" },
|
||||
{ title: "Grid Connection", content: "Voltage level, feed-in points, redundancy" },
|
||||
{ title: "Load Profile", content: "Design for base and peak loads" },
|
||||
{ title: "Scalability", content: "Expansion potential for future systems" }
|
||||
]}
|
||||
/>
|
||||
|
||||
Professional planning not only ensures security of supply, but also reduces operating costs in the long term and enables flexible responses to grid requirements.
|
||||
You can find more information here on how wind energy basically works:
|
||||
|
||||
<VisualLinkPreview
|
||||
url="https://www.e-werk-mittelbaden.de/wie-funktioniert-windenergie"
|
||||
title="Wie funktioniert Windenergie? - Einfach erklärt | E-Werk Mittelbaden"
|
||||
summary="Erfahren Sie, wie Windenergie funktioniert und wie sie zur nachhaltigen Energieversorgung beiträgt. Jetzt informieren!"
|
||||
image="https://www.e-werk-mittelbaden.de/sites/default/files/media_image/2024-12/DJI_20231105012629_0029_D-HDR.jpg"
|
||||
/>
|
||||
<blockquote>
|
||||
Those who want to transport climate-friendly energy must also build in a climate-conscious way.
|
||||
</blockquote>
|
||||
Key aspects of responsible procurement:
|
||||
- Use of recyclable and durable materials
|
||||
- Proven origin of the raw materials used
|
||||
- Avoidance of environmentally harmful production processes
|
||||
- Selection of certified and audited suppliers
|
||||
|
||||
The cable industry is increasingly moving towards a [circular economy](https://www.ellenmacarthurfoundation.org/topics/circular-economy-introduction/overview) – with improved take-back systems, higher use of secondary raw materials and increasing transparency along the supply chain.
|
||||
# Dismantling with a System – Recycling as Part of the Energy Transition
|
||||
After several decades of operation, every **cable infrastructure** reaches the point where it must be replaced or completely dismantled. This section does not mark the end of a project, but its **final test**. Because those who take **responsibility** from the outset also ensure **clear processes**, **minimal environmental impact** and **maximum recycling** during dismantling.
|
||||
A well-considered dismantling does not begin with removal, but with a **forward-looking choice of materials**: **homogeneous**, **recyclable** and **documented**. **Metals** such as copper or aluminum can largely be recovered, as can certain **plastic sheaths**. Transport aids such as **cable drums** can also often be reused or integrated into **material cycles**.
|
||||
This is not only about **ecological aspects** – a planned dismantling also makes sense **economically**. Projects that are **systematically designed for dismantling** avoid high **disposal costs** and meet future **regulatory requirements** much more easily.
|
||||
Overall, it becomes clear: **Sustainability does not end at the grid connection.** It covers the **entire life cycle** – right up to the **last recycled cable**. Those who think about **infrastructure holistically** think it through **to the end**.
|
||||
In the following article, you can find out how, for example, wind turbines are recycled:
|
||||
<VisualLinkPreview
|
||||
url="https://www.enbw.com/unternehmen/themen/windkraft/windrad-recycling.html"
|
||||
title="Recycling von Windrädern | EnBW"
|
||||
summary="Wie funktioniert das Recycling von Windrädern? Erfahren Sie mehr über Herausforderungen und die neuesten Methoden."
|
||||
image="https://www.enbw.com/media/image-proxy/1600x914,q70,focus60x67,zoom1.45/https://www.enbw.com/media/presse/images/newsroom/windenergie/rueckbau-windpark-hemme-3_1743678993586.jpg"
|
||||
/>
|
||||
# Reliable Grids Don’t Happen by Accident
|
||||
The **requirements** for today’s **energy grids** are constantly **increasing**. Especially for wind power projects realized in remote or structurally weak regions, a stable grid design is crucial. It is no longer enough to transmit power from A to B. The **infrastructure** must also work in unforeseen situations – during peak loads, maintenance or external disruptions.
|
||||
This **resilience** cannot be retrofitted. It must be considered right from the planning stage. **Grid architecture** that can flexibly respond to different operating situations is not a technical extra, but a fundamental part of **sustainable project development**. The ability to switch, use alternative routes, or throttle power without causing supply outages is particularly important.
|
||||
Such a **system** is not only **more stable** – it is **future-proof**. The number of feed-in points is growing, the complexity of network connections is increasing, and regulatory requirements are rising continuously. Anyone investing today should therefore not only secure normal operations, but also plan for the unexpected.
|
||||
To conclude, the most important considerations for a resilient grid infrastructure:
|
||||
- Planning multiple feed-in paths for critical areas
|
||||
- Integration of automated switching functions
|
||||
- Dimensioning with power reserves for load shifting
|
||||
- Construction strategies with an eye on expansion and scalability
|
||||
- Early coordination with grid operators to ensure connectivity
|
||||
|
||||
A **reliable grid** is not a product of chance – it is the result of thoughtful, forward-looking **planning**. And it often determines the **long-term success** of a project right from the construction phase.
|
||||
# Conclusion – a Wind Farm is Only as Green as Its Underground
|
||||
The discussion about renewable energies often revolves around output, storage technologies, and political frameworks. What is rarely discussed is the “invisible part” of the energy transition – what lies underground.
|
||||
But this is precisely where it is decided whether a project is truly sustainable, scalable, and fit for the future.
|
||||
In summary:
|
||||
- A well-designed cable infrastructure is a basic requirement for every onshore wind farm.
|
||||
- Sustainability starts with material selection, logistics and dismantling, not just with operation.
|
||||
- Redundant systems ensure long-term network stability – both technically and economically.
|
||||
- The success of the project does not depend solely on the turbine, but on everything that connects it to the grid.
|
||||
|
||||
Those who understand this are not just planning a wind farm. They are planning a resilient piece of the future.
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user