Uncategorized

Nikon D500 Remote Control solution from AI prompt

Local LLM Ollama, Deepseek.r1:70b, OpenWebUI

Untuk membuat remote control untuk kamera Nikon D500 menggunakan gphoto2 pada Raspberry Pi Zero dan mengaksesnya melalui REST API dengan FastAPI, Anda perlu melakukan beberapa langkah. Berikut adalah panduan lengkah demi langkah:

Prerequisites

Sebelum memulai, pastikan Anda memiliki:

  1. Raspberry Pi Zero dengan sistem operasi Raspbian.
  2. Kamera Nikon D500 yang terhubung ke Raspberry Pi Zero (via USB atau koneksi lainnya).
  3. Python 3.x dan pip sudah terinstall di Raspberry Pi.
  4. gphoto2 dan libgphoto2-dev sudah terinstall.

Langkah-langkah

1. Installasi gphoto2

Pastikan gphoto2 sudah terinstall dan dapat mendeteksi kamera Nikon D500:

sudo apt-get update && sudo apt-get upgrade -y
sudo apt-get install gphoto2 libgphoto2-dev -y

Setelah instalasi, coba perintah berikut untuk memastikan kamera terdeteksi:

gphoto2 --auto-detect

Anda seharusnya melihat informasi tentang kamera Nikon D500.

2. Installasi FastAPI dan Uvicorn

Install fastapi dan uvicorn untuk membuat REST API:

pip install fastapi uvicorn python-multipart

3. Buat File Konfigurasi gphoto2 (Opsional)

Jika diperlukan, Anda bisa membuat file konfigurasi sederhana untuk mengatur parameter kamera.

4. Buat Aplikasi FastAPI untuk Remote Control

Buat file Python untuk REST API, misalnya main.py, dan tambahkan kode berikut:

from fastapi import FastAPI, File, UploadFile
from fastapi.staticfiles import StaticFiles
import subprocess
import json

app = FastAPI()

# Mount static files (opsional)
app.mount("/static", StaticFiles(directory="static"), name="static")

def execute_gphoto2(command):
    try:
        result = subprocess.run(
            command,
            shell=True,
            check=True,
            capture_output=True,
            text=True
        )
        return {"status": "success", "message": result.stdout}
    except subprocess.CalledProcessError as e:
        return {"status": "error", "message": str(e.stderr)}

@app.get("/")
async def root():
    return {"message": "Nikon D500 Remote Control API"}

# Capture Image
@app.post("/capture")
async def capture_image():
    command = "gphoto2 --trigger-capture"
    return execute_gphoto2(command)

# Start Live View
@app.post("/liveview/start")
async def start_live_view():
    command = "gphoto2 --start-preview"
    return execute_gphoto2(command)

# Stop Live View
@app.post("/liveview/stop")
async def stop_live_view():
    command = "gphoto2 --stop-preview"
    return execute_gphoto2(command)

# Capture and Download Image
@app.post("/capture-and-download")
async def capture_and_download(file_name: str = "image.jpg"):
    command = f"gphoto2 --trigger-capture --keep --filename {file_name}"
    result = execute_gphoto2(command)

    if result["status"] == "success":
        return {"message": f"Image captured and saved as {file_name}"}
    else:
        return result

# Get Camera Info
@app.get("/camera/info")
async def get_camera_info():
    command = "gphoto2 --about"
    return execute_gphoto2(command)

# Set Camera Configuration (contoh: ISO)
@app.post("/config/set/{parameter}/{value}")
async def set_camera_config(parameter: str, value: str):
    command = f"gphoto2 --set-config {parameter}={value}"
    return execute_gphoto2(command)

# Get Camera Configuration (contoh: ISO)
@app.get("/config/get/{parameter}")
async def get_camera_config(parameter: str):
    command = f"gphoto2 --get-config {parameter}"
    return execute_gphoto2(command)

5. Jalankan FastAPI

Untuk menjalankan server, gunakan perintah:

uvicorn main:app --reload

Sekarang Anda bisa mengakses API melalui alamat http://<IP-RPI>:8000/docs untuk melihat dokumentasi Swagger.

6. Akses dan Penggunaan

Anda bisa menggunakan curl atau tools lainnya untuk mengakses API:

  • Capture Image: curl -X POST http://<IP-RPI>:8000/capture
  • Start Live View: curl -X POST http://<IP-RPI>:8000/liveview/start

7. Konfigurasi Gphoto2 (Opsional)

Untuk mengkonfigurasi gphoto2, Anda bisa menambahkan fungsi tambahan dalam kode di atas, misalnya untuk mengatur ISO, white balance, atau parameter lainnya.

8. Testing

Pastikan semua perintah berjalan dengan benar dan kamera merespons. Jika ada error, periksa output dari gphoto2 dan pastikan kamera terhubung dengan baik.

Dengan ini, Anda telah berhasil membuat remote control untuk Nikon D500 menggunakan Raspberry Pi Zero dan FastAPI!

error: Content is protected !!