API Referans

iPixel ESP32 HTTP API Dokümantasyonu

WiFi-BLE köprüsü üzerinden LED matris ekranınızı kontrol edin. Tüm endpoint'ler yerel ağda HTTP GET/POST ile çalışır.

Varsayılan Port: 80 Base URL: http://<ESP32_IP>/ mDNS: http://pixelweb.local/ Protokol: HTTP GET / POST

Şablon API'leri

GET /sablon/uygulama

İkonlu, iki satırlı bildirim gönderir.

ParametreAçıklamaVarsayılan
iİkon adı (LittleFS'de kayıtlı)mail
bÜst satır (başlık)
mAlt satır (mesaj)Zorunlu
bgArka plan rengi (hex)000000
tYazı rengi gradient (hex-hex)ffffff
uBaşlık rengi gradientffffff
aMesaj rengi gradientffffff
wEkran genişliği (64 veya 96)64
sGösterim süresi (ms)0 (sürekli)
kKaydırma aktif (1/0)1
khKaydırma hızı (ms)20
kaKaydırma adımı (piksel)2
curl "http://pixelweb.local/sablon/uygulama?i=mail&b=Yeni&m=Mesaj&bg=1a1a2e&t=ffffff"
GET /sablon/text

Ekranda yatay kayan metin gösterir.

ParametreAçıklamaVarsayılan
mMetin içeriğiZorunlu
hizKayma hızı (ms)50
animasyonGeçiş efekti (1-7)1
tYazı rengi gradientffffff
spHız (0-100)50
rbGökkuşağı modu (0-9)0
curl "http://pixelweb.local/sablon/text?m=Merhaba%20Dünya!&hiz=40"
import requests
requests.get("http://pixelweb.local/sablon/text", params={"m": "Merhaba!", "hiz": 40})
GET /sablon/saat

NTP senkronizasyonlu saat modunu başlatır.

ParametreAçıklamaVarsayılan
stSaat stili (1-8)1
tdTarih göster (1/0)1
f2424 saat formatı (1/0)1
curl "http://pixelweb.local/sablon/saat?st=1&td=1&f24=1"
GET /sablon/run

Kayıtlı şablonu çalıştırır. b ve m parametreleriyle şablondaki başlık/mesaj geçici olarak değiştirilebilir.

ParametreAçıklama
sŞablon adı Zorunlu
bBaşlık (override, isteğe bağlı)
mMesaj (override, isteğe bağlı)
# Kayıtlı şablonu olduğu gibi çalıştır
curl "http://pixelweb.local/sablon/run?s=mail_sablon"

# Mesajı override ederek çalıştır
curl "http://pixelweb.local/sablon/run?s=mail_sablon&b=Yeni+Başlık&m=Yeni+Mesaj"

Cihaz Kontrol API'leri

GET /cihaz/guc

LED ekranı açar/kapatır.

ParametreAçıklama
on1 = açık, 0 = kapalı
curl "http://pixelweb.local/cihaz/guc?on=1"
GET /cihaz/parlaklik

LED parlaklık ayarı.

ParametreAçıklama
pParlaklık değeri (0-100)
curl "http://pixelweb.local/cihaz/parlaklik?p=80"
GET /cihaz/yon

Ekran yönünü değiştirir. Ekran fiziksel olarak ters monte edildiğinde kullanışlıdır.

ParametreAçıklama
o0 = normal, 1 = ters (180°)
# Ekranı ters çevir
curl "http://pixelweb.local/cihaz/yon?o=1"

# Normal yöne geri al
curl "http://pixelweb.local/cihaz/yon?o=0"
GET /cihaz/bilgi

Cihaz bilgilerini JSON olarak döndürür.

curl "http://pixelweb.local/cihaz/bilgi"

Yanıt

{
  "ip": "192.168.1.X",
  "mac": "xx:xx:xx:xx:xx:xx",
  "screenW": 64,
  "brightness": 80,
  "ledOn": true,
  "bleConnected": true,
  "wifiRssi": -45,
  "freeHeap": 120000,
  "uptime": 3600
}
GET /cihaz/ayarlar

Cihaz ayarlarını kaydeder. Ayarlar flash'a yazılır, yeniden başlatma sonrasında da geçerlidir.

ParametreAçıklama
macBLE MAC adresi (xx:xx:xx:xx:xx:xx formatında)
tzSaat dilimi offset (örn. 3 → UTC+3)
wEkran genişliği (64 veya 96)
brightParlaklık (0-100)
flipEkran yönü (1 = ters, 0 = normal)
# Türkiye saat dilimi, 96px ekran, %70 parlaklık
curl "http://pixelweb.local/cihaz/ayarlar?tz=3&w=96&bright=70&flip=0"

# BLE MAC adresini güncelle
curl "http://pixelweb.local/cihaz/ayarlar?mac=AA:BB:CC:DD:EE:FF"
POST /cihaz/fabrika-sifirla

Tüm ayarları, şablonları ve ikonları siler. ⚠ Bu işlem geri alınamaz. Cihaz fabrika ayarlarına döner ve yeniden başlar.

curl -X POST "http://pixelweb.local/cihaz/fabrika-sifirla"

İkon API'leri

GET /icon/list

Kayıtlı ikonları listeler.

curl "http://pixelweb.local/icon/list"

Yanıt

{
  "icons": [
    {"name": "mail", "w": 16, "h": 16},
    {"name": "check", "w": 14, "h": 14}
  ]
}
POST /icon/save

Yeni ikon kaydeder. Her piksel 6 karakter hex (RRGGBB) olarak gönderilir. 000000 şeffaf (arka plan rengi) olarak yorumlanır.

ParametreAçıklama
nameİkon adı Zorunlu
wGenişlik (14 veya 16) Zorunlu
hYükseklik (14 veya 16) Zorunlu
dataHex RGB verisi (w×h×6 karakter) Zorunlu

Renk Kodları

FF0000 = Kırmızı
00FF00 = Yeşil
0000FF = Mavi
000000 = Siyah / Şeffaf (arka plan gösterilir)

Örnek (2×2 piksel test ikonu) - cURL

# 16x16 kırmızı ikon (256 piksel * 6 = 1536 karakter)
curl -X POST "http://pixelweb.local/icon/save" \
  -d "name=test" \
  -d "w=16" \
  -d "h=16" \
  -d "data=$(printf 'FF0000%.0s' {1..256})"

Python ile 16x16 ikon yükleme

import requests

data = "FF0000" * 256  # 16x16 kırmızı ikon
requests.post("http://pixelweb.local/icon/save", data={
    "name": "test",
    "w": 16,
    "h": 16,
    "data": data
})
GET /icon/get

İkon verisini hex formatında getirir.

ParametreAçıklama
nameİkon adı Zorunlu
curl "http://pixelweb.local/icon/get?name=mail"
POST /icon/delete

Belirtilen ikonu LittleFS'den siler.

ParametreAçıklama
nameİkon adı Zorunlu
curl -X POST "http://pixelweb.local/icon/delete" -d "name=mail"

Şablon Yönetimi API'leri

GET /sablon/list

Kayıtlı şablonları listeler.

curl "http://pixelweb.local/sablon/list"

Yanıt

{
  "templates": [
    {"name": "mail_sablon"},
    {"name": "alarm"}
  ]
}
POST /sablon/save

Şablon kaydeder. JSON body URL encoded olarak gönderilir.

ParametreAçıklama
nameŞablon adı
jsonŞablon JSON'u (URL encoded)

JSON Formatı

{
  "type": "uygulama",
  "icon": "mail",
  "title": "Başlık",
  "message": "Mesaj",
  "bg": "1a1a2e-16213e",
  "titleColor": "ffffff-ffffff",
  "messageColor": "85ADBB-E3B6CD",
  "scroll": true,
  "screenW": 64
}

Örnek cURL

curl -X POST "http://pixelweb.local/sablon/save" \
  -d "name=ornek_sablon" \
  -d "json=%7B%22type%22%3A%22uygulama%22%2C%22icon%22%3A%22mail%22%2C%22title%22%3A%22Test%22%2C%22message%22%3A%22Merhaba%22%7D"
POST /sablon/delete

Şablonu siler.

ParametreAçıklama
nameŞablon adı
curl -X POST "http://pixelweb.local/sablon/delete" -d "name=ornek_sablon"

Sistem API'leri

GET /sistem/durum

Sistem durumunu JSON olarak döndürür.

curl "http://pixelweb.local/sistem/durum"

Yanıt

{
  "uptime": {"sec": 3600, "human": "1h 0m 0s"},
  "ble": {"connected": true, "status": "connected", "mac": "xx:xx:xx"},
  "memory": {"freeHeap": 120000, "percent": 45},
  "wifi": {"status": "connected", "rssi": -45, "ip": "192.168.1.X"},
  "time": {"valid": true, "iso": "2024-01-15 14:30:00"}
}
GET /ble/tara

Yakındaki BLE cihazlarını tarar.

curl "http://pixelweb.local/ble/tara"

Yanıt

{
  "devices": [
    {"name": "iPixel", "mac": "xx:xx:xx:xx:xx:xx", "rssi": -45}
  ],
  "count": 1,
  "total": 1
}

WiFi API'leri

GET /wifi/scan

Çevredeki WiFi ağlarını tarar.

curl "http://pixelweb.local/wifi/scan"

Yanıt

[
  {"ssid": "Network1", "rssi": -45, "open": false},
  {"ssid": "Network2", "rssi": -67, "open": true}
]
POST /wifi/connect

Belirtilen WiFi ağına bağlanır.

ParametreAçıklama
ssidAğ adı
passŞifre
curl -X POST "http://pixelweb.local/wifi/connect" -d "ssid=EvWiFi" -d "pass=12345678"
GET /wifi/status

Mevcut WiFi bağlantı durumunu döndürür.

curl "http://pixelweb.local/wifi/status"

Yanıt

{
  "connected": true,
  "apMode": false,
  "ip": "192.168.1.X",
  "ssid": "NetworkName",
  "rssi": -45
}

Renk Formatları

Tek Renk

ffffffBeyaz
ff0000Kırmızı
00ff00Yeşil
0000ffMavi
1a1a2eKoyu Mavi

Gradient (Geçiş)

ffffff-ff0000Beyaz → Kırmızı
1a1a2e-16213eKoyu Mavi
85ADBB-E3B6CDPastel geçiş

Hata Kodları

HTTP KodAçıklama
200Başarılı
400Geçersiz parametre
404Kaynak bulunamadı
500Sunucu hatası
503BLE bağlantısı yok

Python Örneği

iPixelBridge sınıfı ile tüm endpoint'leri kolayca çağırabilirsiniz.

import requests

class iPixelBridge:
    def __init__(self, ip):
        self.ip = ip
        self.base = f"http://{ip}"

    def text(self, msg, speed=50):
        return requests.get(f"{self.base}/sablon/text",
            params={"m": msg, "hiz": speed})

    def notify(self, icon, title, message, bg="1a1a2e"):
        return requests.get(f"{self.base}/sablon/uygulama",
            params={"i": icon, "b": title, "m": message, "bg": bg})

    def clock(self, style=1, show_date=True, format24=True):
        return requests.get(f"{self.base}/sablon/saat",
            params={"st": style, "td": 1 if show_date else 0,
                    "f24": 1 if format24 else 0})

    def brightness(self, value):
        return requests.get(f"{self.base}/cihaz/parlaklik",
            params={"p": value})

    def power(self, on=True):
        return requests.get(f"{self.base}/cihaz/guc",
            params={"on": 1 if on else 0})

    def status(self):
        return requests.get(f"{self.base}/sistem/durum").json()

bridge = iPixelBridge("pixelweb.local")  # veya IP adresi
bridge.notify("mail", "Yeni Mesaj", "Merhaba!")
bridge.text("Kayan metin örneği")
bridge.clock(style=1)

Daha fazla detay için GitHub'a göz atın

Kaynak kodu, firmware dosyaları, kurulum rehberi ve daha fazlası GitHub repomuzda.

GitHub'da Görüntüle