Borbin the 🐱

🔍 Suche...
🔍
Alle Begriffe müssen vorkommen (UND), "Phrase" für exakte Treffer, r"regex" für Muster (oder ').
  • Sommerzeit-EXIF automatisch korrigieren mit PowerShell

    📅 12. Dezember 2025 · Software · ⏱️ 3 min

    Ein häufiges Problem bei Digitalkameras: Die Sommerzeit ist noch in der Kamera aktiviert, obwohl bereits Winterzeit ist. Die Zeitstempel in den Fotos sind dadurch eine Stunde falsch und das fällt oft erst später auf, wenn man die Bilder sortiert oder mit anderen Fotos abgleicht.

    Viele Kameras speichern die Sommerzeit-Einstellung in den EXIF-Daten. Bei Nikon-Kameras findet sich das "Daylight Savings"-Flag in den MakerNotes. Solange dieses auf "Yes" steht, sind die Zeitstempel um eine Stunde vorgestellt.

    Das PowerShell-Script durchsucht alle Bilddateien (z.B. NEF bei Nikon), prüft ob das Sommerzeit-Flag noch aktiv ist, und korrigiert dann:

    Die EXIF-Zeitstempel werden um 1 Stunde zurückgestellt Das Sommerzeit-Flag wird deaktiviert Die Windows-Datei-Zeitstempel (Erstellt/Geändert) werden angepasst.
    Das Script nutzt das kostenlose Tool exiftool und zeigt für jede Datei übersichtlich an, was geändert wurde. Dateien mit bereits korrekter Zeit werden einfach übersprungen.

    Der exiftool-Pfad ist oben im Script konfigurierbar. Einfach das Script im Foto-Ordner ausführen. Unterordner werden automatisch durchsucht.

    Das Ergebnis: Konsistente, korrekte Zeitstempel in allen Fotos, ohne manuelle Arbeit.

    # PowerShell Script zur Korrektur der Sommerzeit in NEF-Dateien
    # Stellt die EXIF-Zeit um eine Stunde vor für Dateien, die Sommerzeit in Nikon MakerNotes haben
    
    # Testaufruf um DaylightSavings auszulesen:
    # C:\tools\exiftool -DaylightSavings DSC_1234.NEF
    # Daylight Savings                : No
    
    # ===== KONFIGURATION =====
    $exiftoolPath = "C:\tools\exiftool" 
    # =========================
    
    # Pfad zum aktuellen Verzeichnis
    $baseDir = $PSScriptRoot
    
    # Alle NEF-Dateien finden
    $nefFiles = Get-ChildItem -Path $baseDir -Recurse -Filter "*.NEF"
    
    Write-Host "Gefundene NEF-Dateien: $($nefFiles.Count)" -ForegroundColor Cyan
    
    $correctedCount = 0
    $skippedCount = 0
    
    foreach ($file in $nefFiles) {
        Write-Host "`nPrüfe: $($file.FullName)" -ForegroundColor Yellow
    
        try {
            # Lese Nikon Daylight Savings Flag aus MakerNotes
            $daylightSavings = & $exiftoolPath -s -s -s -DaylightSavings $file.FullName 2>&1
    
            if ($LASTEXITCODE -ne 0) {
                Write-Host "⚠ Konnte MakerNotes nicht lesen" -ForegroundColor DarkYellow
                $skippedCount++
                continue
            }
    
            Write-Host "Daylight Savings: $daylightSavings" -ForegroundColor Cyan
    
            # Prüfe, ob Sommerzeit aktiviert ist (Yes oder On)
            if ($daylightSavings -match "Yes|On") {
                Write-Host "→ Sommerzeit ist aktiviert - Korrektur erforderlich" -ForegroundColor Magenta
    
                # Zeige aktuelle Zeit
                $currentTime = & $exiftoolPath -s -s -s -DateTimeOriginal $file.FullName
                Write-Host "Aktuelle Zeit: $currentTime" -ForegroundColor White
    
                # Stellt die Zeit um 1 Stunde zurück (-1 Stunde)
                # -AllDates betrifft DateTimeOriginal, CreateDate und ModifyDate
                Write-Host "Stelle Zeit um 1 Stunde zurück und setze Sommerzeit zurück..." -ForegroundColor Magenta
    
                & $exiftoolPath -AllDates-=1:0:0 -DaylightSavings=No -overwrite_original $file.FullName 2>&1 | Out-Null
    
                if ($LASTEXITCODE -eq 0) {
                    $newTime = & $exiftoolPath -s -s -s -DateTimeOriginal $file.FullName
                    $newDST = & $exiftoolPath -s -s -s -DaylightSavings $file.FullName
                    Write-Host "✓ Erfolgreich aktualisiert: $newTime" -ForegroundColor Green
                    Write-Host "  Sommerzeit jetzt: $newDST" -ForegroundColor Green
    
                    # Setze Windows-Datei-Zeitstempel auf korrigierte EXIF-Zeit
                    try {
                        $exifDateTime = [DateTime]::ParseExact($newTime, "yyyy:MM:dd HH:mm:ss", $null)
                        $file.CreationTime = $exifDateTime
                        $file.LastWriteTime = $exifDateTime
                        Write-Host "  Datei-Zeitstempel aktualisiert" -ForegroundColor Green
                    } catch {
                        Write-Host "  ⚠ Konnte Datei-Zeitstempel nicht setzen: $_" -ForegroundColor DarkYellow
                    }
    
                    $correctedCount++
                } else {
                    Write-Host "✗ Fehler beim Aktualisieren" -ForegroundColor Red
                }
    <#
     #>
            } else {
                Write-Host "→ Keine Sommerzeit - wird übersprungen" -ForegroundColor Gray
                $skippedCount++
            }
        }
        catch {
            Write-Host "✗ Fehler: $_" -ForegroundColor Red
            Write-Host "Stelle sicher, dass exiftool installiert ist und im PATH verfügbar ist." -ForegroundColor Yellow
            break
        }
    }
    
    Write-Host "`n=== Fertig ===" -ForegroundColor Cyan
    Write-Host "Korrigierte Dateien: $correctedCount" -ForegroundColor Green
    Write-Host "Übersprungene Dateien: $skippedCount" -ForegroundColor Gray
    Write-Host "Gesamt geprüft: $($nefFiles.Count)" -ForegroundColor Cyan
  • Building an MCP Server on ESP32: Connecting AI Assistants to Real-World Devices

    📅 2. Dezember 2025 · Electronics · ⏱️ 3 min

    Connecting AI to the Physical World with Model Context Protocol

    As detailed in StickyMCP: Notes That Stick, Even in the Cloud, MCP servers open the door for AI systems to interact with real-world tools far beyond their usual diet of static training data and existential boredom.

    This project brings together two cutting-edge technologies: the Model Context Protocol (MCP) and Arduino Microcontroller. The result is an MCP server running directly on an Arduino Nano ESP32, allowing AI assistants control physical hardware in real-time.


    (Some prompts were typed a bit wrong because I had the camera in the way, but Copilot Chat did not mind at all)

    Your browser does not support the video tag.




    Since there is no MCP SDK for C++, I implemented the RPC protocol myself, kept it small and readable, and made it work to run simple tools like switching lights on and off.

    esp32-mcp on github

    What is it?

    This project implements a fully-compliant JSON-RPC 2.0 MCP server on an Arduino Nano ESP32 microcontroller. It exposes hardware controls (LEDs in this case) as MCP "tools" that can be invoked by AI assistants through natural language commands.

    Key Features
    • MCP Protocol Support: Implements the MCP 2024-11-05 specification with proper initialization, tool listing, and tool execution
    • JSON-RPC 2.0 Compliance: Standard protocol interface for reliable communication
    • WiFi-Enabled: Runs a web server on port 8000, making it accessible over the network
    • Server-Sent Events (SSE): Real-time notifications and logging stream for monitoring
    • Multiple LED Controls: Manages built-in LED plus RGB LEDs (red, green, blue) independently
    • Echo Tool: Simple text echo for testing and demonstration
    Technical Implementation

    The server uses the ESPAsyncWebServer library for handling HTTP requests and ArduinoJson for JSON parsing/serialization. It exposes two main endpoints:

    • POST /mcp - Main JSON-RPC 2.0 endpoint for all MCP methods
    • GET /sse - Server-Sent Events stream for real-time notifications

    Each LED is implemented as an MCP tool with a simple boolean parameter to turn it on or off. The server handles all the MCP lifecycle methods including initialization, capability negotiation, and tool invocation.

    Real-World Applications

    This project demonstrates how AI assistants can seamlessly control physical devices. Instead of writing custom scripts or manual API calls, you can simply tell an AI assistant "turn on the red LED" and it happens. This opens up possibilities for:

    • Smart home automation controlled by natural language
    • Laboratory equipment control through AI assistants
    • Educational demonstrations of AI-hardware integration
    • Rapid prototyping of IoT devices with conversational interfaces

    Technical Stack:

    • Arduino Nano ESP32
    • ESPAsyncWebServer
    • ArduinoJson
    • Model Context Protocol (MCP) 2024-11-05
    • JSON-RPC 2.0
  • Seattle Skyline and Market on a Sunny Sunday

    📅 30. November 2025 · Fotografie · ⏱️ 2 min

    The day began bright and clear, the kind of winter light that makes everything sharp and calm. We drove toward Seattle with the skyline slowly rising ahead, glass and steel catching the sun as the streets narrowed into the heart of the city.

    1/500s f/8 ISO 100/21° 16-50mm f/2,8 VR f=50mm/75mm


    1/400s f/7,1 ISO 100/21° 16-50mm f/2,8 VR f=27mm/40mm


    Pike Place Market was alive with its familiar rhythm. Old wooden storefronts and neon signs stood like markers of time, while the scent of coffee drifted through the crowd. Vendors called out, voices mingling with the hum of conversation, and for a moment it felt like the city was speaking in its own language.

    1/500s f/8 ISO 200/24° 16-50mm f/2,8 VR f=50mm/75mm


    1/250s f/5 ISO 200/24° 16-50mm f/2,8 VR f=31mm/47mm


    1/125s f/2,8 ISO 400/27° 16-50mm f/2,8 VR f=16mm/24mm


    1/125s f/2,8 ISO 900 16-50mm f/2,8 VR f=16mm/24mm


    From the Overlook Walk, the view opened wide. The waterfront stretched below, ferries tracing slow lines across the bay, and behind it all the skyline stood still against the pale sky. The skyline panorama frames capture the city in one continuous sweep, holding its full breadth in a single image.

    1/500s f/8 ISO 100/21° 16-50mm f/2,8 VR f=23mm/35mm


    1/320s f/6,3 ISO 100/21° 16-50mm f/2,8 VR f=16mm/24mm



    1/1000s f/5,6 ISO 100/21° 16-50mm f/2,8 VR f=18mm/27mm


    1/400s f/7,1 ISO 100/21° 16-50mm f/2,8 VR f=16mm/24mm



    1/500s f/8 ISO 100/21°


    1/400s f/8 ISO 100/21°



    1/800s f/5,6 ISO 100/21° 16-50mm f/2,8 VR f=16mm/24mm


    1/400s f/7,1 ISO 100/21° 16-50mm f/2,8 VR f=35mm/52mm


    1/500s f/8 ISO 100/21° f=16mm/17mm


    1/400s f/7,1 ISO 100/21° 16-50mm f/2,8 VR f=16mm/24mm


    On the way back, the Space Needle appeared again, sudden and familiar against the clear blue. One last glance, one last photo, and the day folded into the drive home: simple, bright, and easy to remember.

    1/320s f/6,3 ISO 100/21° 16-50mm f/2,8 VR f=16mm/24mm


  • The Evolution of the Turkey 🦃

    📅 27. November 2025 · Fotografie · ⏱️ 2 min

    Every masterpiece begins in silence. The 👩🏻‍🍳 sets the stage, then time, heat and patience compose a quiet piece of culinary art.

    Stage 1: Raw Ambition

    A turkey in its natural state is like an unread book, full of potential, but mostly cold and uninviting. At this point, the only evolution is your growing doubt about oven size.

    1/13s f/2,8 ISO 250/25° 16-50mm f/2,8 VR f=28mm/42mm


    Stage 2: The Great Migration

    It moves from countertop to oven, a journey as inevitable as Monday mornings. Here, transformation begins quietly under heat and time.

    1/10s f/2,8 ISO 250/25° 16-50mm f/2,8 VR f=44mm/66mm


    Stage 3: The Slow Enlightenment

    Hours pass. The turkey meditates in 170°C silence, contemplating its purpose. It emerges wiser, crispier, and slightly golden, proof that patience and heat can turn blandness into brilliance.

    1/40s f/3,2 ISO 250/25° 16-50mm f/2,8 VR f=50mm/75mm1


    Stage 4: The Final Form

    On the table, surrounded by sides and expectations, the turkey achieves peak relevance. For a brief moment, it is the influencer of the dining room. Then, like all trends, it is consumed and forgotten.

    1/20s f/2,8 ISO 400/27° 16-50mm f/2,8 VR f=34mm/51mm


    A picture impossible to make with a single exposure

    1/25s f/2,8 ISO 400/27° 16-50mm f/2,8 VR f=27mm/41mm


    The shallow depth of field creates a beautifully blurred background, something that gives the image its depth and character. To achieve sharpness across the entire plate without losing that blur, two shots were taken: one focused on the front, the other on the back of the plate and then combined using Focus Stacking

    Simply stopping down the aperture for more depth of field would have rendered the plate sharp, but also flattened the scene, turning it into the kind of phone photo where the background looks lifeless. This blend keeps the plate crisp while preserving the softness behind it.

    Back to the kitchen:

    At first it hides its promise. Add time, heat, and a little seasoning and it becomes a quiet piece of culinary work.


    1. Focused manually because autofocus would have locked on the oven glass instead of the turkey inside.
      And absolutely no permission from the chef to open the oven for a quick snap. This picture had to be captured through the glass, in the heat and haze, without disturbing the masterpiece in progress.  ↩

  • Nikon Z DX 16-50mm f/2.8 VR

    📅 9. November 2025 · Fotografie · ⏱️ 4 min

    The day Nikon announced their new DX 16-50mm f/2.8 lens2, I opened the optical upgrade protocol with a preorder 🚀

    My previous lenses lined up for eBay, forming a support group titled "Former Stars of the Camera Bag". They successfully negotiated their exit strategy with descriptions that read like dating profiles: "Still sharp, loves sunsets, seeks photographer who appreciates vintage charm and no diffraction tests under f/8".

    Inside the Upgrade Shop3



    Announcement - October 16, 2025 📰

    The new NIKKOR DX lens is available soon. Compact, fast, and ready to redefine the setup.
    Optical upgrade protocol signaled.



    Preorder - October 16, 2025 🛒

    Optical upgrade protocol opened.
    Shipping date: October 30, just in time for the Halloween magic4



    Delivery - November 5, 2025 📦

    Signature required delivery confirmed, package has achieved indoor status.



    The First Light 🌅

    Optical upgrade protocol in progress: lens mounted and ready for action.
    Lens on a Z30 and Z50 II



    Through the New Lens

    First Frames In: Precision and Agility from the Start
    (All pictures taken with the Nikon Z50 II)

    1/160s f/6,3 ISO 100/21° 16-50mm f/2,8 VR f=16mm/24mm


    1/320s f/2,8 ISO 100/21° 16-50mm f/2,8 VR f=23mm/35mm


    1/125s f/5,6 ISO 100/21° 16-50mm f/2,8 VR f=50mm/75mm


    1/160s f/5,6 ISO 100/21° 16-50mm f/2,8 VR f=32mm/48mm


    1/3200s f/2,8 ISO 100/21° 16-50mm f/2,8 VR f=50mm/75mm


    1/400s f/2,8 ISO 100/21° 16-50mm f/2,8 VR f=50mm/75mm


    1/80s f/6,3 ISO 100/21° 16-50mm f/2,8 VR f=25mm/37mm


    1/640s f/2,8 ISO 100/21° 16-50mm f/2,8 VR f=50mm/75mm


    1/640s f/11 ISO 1600/33° 16-50mm f/2,8 VR f=50mm/75mm


    1/320s f/16 ISO 1600/33° 16-50mm f/2,8 VR f=50mm/75mm


    1/160s f/22 ISO 1600/33° 16-50mm f/2,8 VR f=50mm/75mm


    1/80s f/4 ISO 100/21° 16-50mm f/2,8 VR f=24mm/36mm


    1/200s f/4 ISO 100/21° 16-50mm f/2,8 VR f=50mm/75mm


    1/640s f/2,8 ISO 100/21° 16-50mm f/2,8 VR f=50mm/75mm


    1/160s f/6,3 ISO 100/21° 16-50mm f/2,8 VR f=16mm/24mm


    1/125s f/6,3 ISO 100/21° 16-50mm f/2,8 VR f=16mm/24mm


    1/200s f/6,3 ISO 100/21° 16-50mm f/2,8 VR f=50mm/75mm


    1/400s f/5,6 ISO 100/21° 16-50mm f/2,8 VR f=50mm/75mm


    1/320s f/2,8 ISO 100/21° 16-50mm f/2,8 VR f=50mm/75mm



    Why Does This Lens Show Strong Vignetting at 50mm f/2.8?

    Observe the heavy vignetting at 50mm f/2.8, along with the visible distortion. Zoom in and it disappears. Left side is without correction, right side with correction using NX Studio.

    The sample image shows noticeable darkening in the corners at 50mm and f/2.8. This effect is called vignetting and it is an unfortunate but common characteristic of optical design, especially in compact zoom lenses with a bright aperture.

    The NIKKOR Z DX 16-50mm f/2.8 VR combines a constant f/2.8 aperture with a small, lightweight form factor. To achieve this, the front element is relatively small. At longer focal lengths and wide apertures, light rays entering from the edges are partially blocked, which results in corner shading.

    Vignetting increases when the angle of light hitting the sensor becomes steeper, as happens when zooming in. Eliminating this effect completely would require much larger lens elements and a heavier construction. A lens designed to avoid vignetting at f/2.8 would be significantly bigger, heavier, and more expensive, which goes against the goal of a compact DX zoom.

    For this reason, some level of vignetting is considered acceptable and is typically corrected in-camera or during post-processing. If you shoot RAW, most software applies lens profiles to fix this. For JPEGs, Nikon's vignette control can reduce the effect.



    Protocol Complete ✅

    Adding this lens makes the setup minimal and faster, ready for decisive moments.
    The 16-50mm f/2.8 combines a constant aperture with a compact design for a balanced, practical setup. From landscapes to portraits, the zoom range provides complete framing control while keeping everything light and portable. No lens swaps, just a responsive system that adapts quickly. Vibration Reduction works together with the bright aperture to maintain sharp, balanced results even in challenging light.


    1. Nikon also announced the NIKKOR Z DX MC 35mm f/1.7 on the same day. ↩

    2. The Bag Chronicles  ↩

    3. Actually shipped November 3, no tricks, just treats 🎃  ↩

Seite 1 von 51 Ältere Beiträge →
ÜBER

Jürgen E
Principal Engineer, Villager, and the creative mind behind lots of projects:
Windows Photo Explorer (cpicture-blog), Android apps AI code rpn calculator and Stockroom, vrlight, 3DRoundview, BitBlog and my github


Blog-Übersicht Chronologisch

KATEGORIEN

Auto • Electronics • Fotografie • Motorrad • Paintings • Panorama • Software • Querbeet


Erstellt mit BitBlog!