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.
http://<ESP32_IP>/
mDNS: http://pixelweb.local/
Protokol: HTTP GET / POST
Şablon API'leri
İkonlu, iki satırlı bildirim gönderir.
| Parametre | Açıklama | Varsayılan |
|---|---|---|
| i | İkon adı (LittleFS'de kayıtlı) | mail |
| b | Üst satır (başlık) | — |
| m | Alt satır (mesaj) | Zorunlu |
| bg | Arka plan rengi (hex) | 000000 |
| t | Yazı rengi gradient (hex-hex) | ffffff |
| u | Başlık rengi gradient | ffffff |
| a | Mesaj rengi gradient | ffffff |
| w | Ekran genişliği (64 veya 96) | 64 |
| s | Gösterim süresi (ms) | 0 (sürekli) |
| k | Kaydırma aktif (1/0) | 1 |
| kh | Kaydırma hızı (ms) | 20 |
| ka | Kaydırma adımı (piksel) | 2 |
curl "http://pixelweb.local/sablon/uygulama?i=mail&b=Yeni&m=Mesaj&bg=1a1a2e&t=ffffff"
Ekranda yatay kayan metin gösterir.
| Parametre | Açıklama | Varsayılan |
|---|---|---|
| m | Metin içeriği | Zorunlu |
| hiz | Kayma hızı (ms) | 50 |
| animasyon | Geçiş efekti (1-7) | 1 |
| t | Yazı rengi gradient | ffffff |
| sp | Hız (0-100) | 50 |
| rb | Gö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})
NTP senkronizasyonlu saat modunu başlatır.
| Parametre | Açıklama | Varsayılan |
|---|---|---|
| st | Saat stili (1-8) | 1 |
| td | Tarih göster (1/0) | 1 |
| f24 | 24 saat formatı (1/0) | 1 |
curl "http://pixelweb.local/sablon/saat?st=1&td=1&f24=1"
Kayıtlı şablonu çalıştırır. b ve m parametreleriyle şablondaki başlık/mesaj geçici olarak değiştirilebilir.
| Parametre | Açıklama |
|---|---|
| s | Şablon adı Zorunlu |
| b | Başlık (override, isteğe bağlı) |
| m | Mesaj (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
LED ekranı açar/kapatır.
| Parametre | Açıklama |
|---|---|
| on | 1 = açık, 0 = kapalı |
curl "http://pixelweb.local/cihaz/guc?on=1"
LED parlaklık ayarı.
| Parametre | Açıklama |
|---|---|
| p | Parlaklık değeri (0-100) |
curl "http://pixelweb.local/cihaz/parlaklik?p=80"
Ekran yönünü değiştirir. Ekran fiziksel olarak ters monte edildiğinde kullanışlıdır.
| Parametre | Açıklama |
|---|---|
| o | 0 = 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"
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
}
Cihaz ayarlarını kaydeder. Ayarlar flash'a yazılır, yeniden başlatma sonrasında da geçerlidir.
| Parametre | Açıklama |
|---|---|
| mac | BLE MAC adresi (xx:xx:xx:xx:xx:xx formatında) |
| tz | Saat dilimi offset (örn. 3 → UTC+3) |
| w | Ekran genişliği (64 veya 96) |
| bright | Parlaklık (0-100) |
| flip | Ekran 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"
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
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}
]
}
Yeni ikon kaydeder. Her piksel 6 karakter hex (RRGGBB) olarak gönderilir. 000000 şeffaf (arka plan rengi) olarak yorumlanır.
| Parametre | Açıklama |
|---|---|
| name | İkon adı Zorunlu |
| w | Genişlik (14 veya 16) Zorunlu |
| h | Yükseklik (14 veya 16) Zorunlu |
| data | Hex 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
})
İkon verisini hex formatında getirir.
| Parametre | Açıklama |
|---|---|
| name | İkon adı Zorunlu |
curl "http://pixelweb.local/icon/get?name=mail"
Belirtilen ikonu LittleFS'den siler.
| Parametre | Açıklama |
|---|---|
| name | İkon adı Zorunlu |
curl -X POST "http://pixelweb.local/icon/delete" -d "name=mail"
Şablon Yönetimi API'leri
Kayıtlı şablonları listeler.
curl "http://pixelweb.local/sablon/list"
Yanıt
{
"templates": [
{"name": "mail_sablon"},
{"name": "alarm"}
]
}
Şablon kaydeder. JSON body URL encoded olarak gönderilir.
| Parametre | Açı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"
Şablonu siler.
| Parametre | Açıklama |
|---|---|
| name | Şablon adı |
curl -X POST "http://pixelweb.local/sablon/delete" -d "name=ornek_sablon"
Sistem API'leri
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"}
}
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
Ç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}
]
Belirtilen WiFi ağına bağlanır.
| Parametre | Açıklama |
|---|---|
| ssid | Ağ adı |
| pass | Şifre |
curl -X POST "http://pixelweb.local/wifi/connect" -d "ssid=EvWiFi" -d "pass=12345678"
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
ffffff | Beyaz |
ff0000 | Kırmızı |
00ff00 | Yeşil |
0000ff | Mavi |
1a1a2e | Koyu Mavi |
Gradient (Geçiş)
ffffff-ff0000 | Beyaz → Kırmızı |
1a1a2e-16213e | Koyu Mavi |
85ADBB-E3B6CD | Pastel geçiş |
Hata Kodları
| HTTP Kod | Açıklama |
|---|---|
| 200 | Başarılı |
| 400 | Geçersiz parametre |
| 404 | Kaynak bulunamadı |
| 500 | Sunucu hatası |
| 503 | BLE 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