nodela.

Alan-bağımsız IoT platformu

Gerçek zamanlı IoT omurgası.
Kendi sunucunuzda.

nodela, MQTT ile gelen ham paketi kanonik olaya çevirir; TypeScript'le yazdığınız kuralları akışın üstünde, durum tutarak çalıştırır; sonucu canlı haritaya, alarmlara ve zaman serisine yazar. SaaS değil — tek Helm chart'ı ile kendi kümenize kurulur, veri sizde kalır.

canlıpipeline
gelen · MQTTin/cbor/dev-8842
{ 1: 41.0182, 2: 29.0117, 3: 128,
  9: 1751030400, 21: "34ABC123" }

binary, tam sayı anahtar tablosu

kanonik · Redpandaiot.acme.fleet.telemetry
{
  "device_id": "dev-8842",
  "lat": 41.0182, "lon": 29.0117,
  "speed": 128, "ignition": true,
  "plate": "34 ABC 123",
  "driver": "M. Yılmaz"
}

slot alias'ları çözülmüş

kural(event.speed ?? 0) > 120→ true
alarmHız ihlali · 34 ABC 123 · 128 km/s
≤ 5 sn
kuralı kaydet, canlı pipeline devralsın — deploy yok
3 codec
JSON · CBOR · MessagePack, aynı kanonik olay
Tek chart
broker'dan panele kadar tüm stack Helm ile

Nasıl çalışır

Ham paketten karara, beş durak

Her durak sözleşmeli. Aradaki her şeyi değiştirebilirsiniz; zarf aynı kalır.

  1. 01

    Giriş

    Cihaz doğrudan MQTT'ye yazar; JSON, CBOR ve MessagePack kanalları native. Teltonika TCP ve HTTP için kenarda decode eden shim'ler var. Çözülemeyen paket kaybolmaz, DLQ'ya düşer.

    in/{codec}/{device_id}

  2. 02

    Akış

    Her olay Redpanda'ya dayanıklı biçimde yazılır. Sıra garantisi processing_key ile: aynı cihazın — ya da aynı varlığın — olayları hep aynı partition'da, hep sırayla işlenir.

    iot.{tenant}.{vertical}.raw

  3. 03

    Zenginleştirme

    Ham bag kanonik olaya düzleşir. Slot alias'ları gerçek alan adlarına döner (t1 → plaka), referans veri cache'li olarak eklenir. Zenginleştirme tanımlı değilse olay olduğu gibi geçer.

    enrich-manager

  4. 04

    Kural & işlemci

    Kurallarınız Flink üstünde keyed ve stateful çalışır. Kural true dönerse alarm üretilir; işlemciler durum tutar, timer kurar, kendi olaylarını yayar.

    rule-manager · processor-manager

  5. 05

    Çıktı

    Alarm, anlık cihaz durumu, zaman serisi ve entegrasyon çıkışları. Panel haritayı SignalR ile canlı günceller — sayfa yenilemek yok.

    .alerts · device.state · timescale

Kural editörü

Kural yazmak bir fonksiyon kadar basit

Tarayıcıdaki editörde TypeScript yazarsınız. Tipler tenant'ınıza göre üretilir: alias tanımladıysanız event.plate yazarsınız, t1 diye bir alanı hiç görmezsiniz. Kaydettiğinizde kod tip kontrolünden geçer, hatalar satır satır döner; geçerse çalışan pipeline en geç beş saniye içinde yeni sürümü devralır. Restart yok, deploy yok, JAR yok.

1export default function evaluate(event: IAcmeFleet): boolean {
2 // Alias'lı alanlar gerçek TypeScript property'si:
3 // plate = t1, driver = t2 — slot adı arayüzde hiç yok.
4 if (!event.ignition) return false;
5
6 return (event.speed ?? 0) > 120;
7}
  • Tarayıcıda Monaco, tenant'ınızın tipleriyle
  • Kaydetmeden önce tam tip kontrolü
  • Hot reload: kayıttan ≤5 sn sonra canlı

Panel

Ekranların kendisi

Aşağıdakiler tasarım değil, çalışan bir kurulumdan alınmış görüntüler.

nodela.io/verticals/fleet/rules/hiz-esigi
Kural editörü. Tarayıcıda Monaco, tenant'ınızın tipleriyle. Kural sabit bir eşik değil, hıza göre dinamik severity dönüyor; yeşil rozet kodun tip kontrolünden geçtiğini söylüyor.
Kural editörü. Tarayıcıda Monaco, tenant'ınızın tipleriyle. Kural sabit bir eşik değil, hıza göre dinamik severity dönüyor; yeşil rozet kodun tip kontrolünden geçtiğini söylüyor.
nodela.io/verticals/fleet/map
Canlı takip. device_state anlık durumu tutar, değişiklikler SignalR ile panele düşer — konum ve zaman sayfa yenilenmeden güncellenir.
Canlı takip. device_state anlık durumu tutar, değişiklikler SignalR ile panele düşer — konum ve zaman sayfa yenilenmeden güncellenir.

Platform

Omurgada olması gerekenler, hazır

Her projede yeniden yazdığınız katman burada bitmiş halde duruyor.

Kanonik olay modeli

Tek zarf: kiracı, zaman, kimlikler, processing_key ve versiyonlu payload. Telemetriden sonra cihaz tipi diye bir kavram yok — her şey aynı arayüz.

Alias'lı özel alanlar

Beş metin, beş sayı slotu satır içinde; gerisi JSONB. Alias verirsiniz, kod üretici tenant'a özel TypeScript arayüzünü yazar. Dokümantasyon değil, gerçek tip.

Durum tutan işlemciler

Keyed state, timer kurma ve iptal, watchdog deseni. 'On dakikadır sinyal yok' gibi kurallar SQL'e sığmaz; buraya sığar.

Canlı harita

device_state anlık durumu tutar, SignalR değişiklikleri panele iter. Debounce eşiği ayarlardan; gereksiz güncellemeyle haritayı boğmaz.

Alarm yönetimi

Kural sabit bir eşik değil, dinamik severity dönebilir. Tekrar eden alarmlar dedup edilir; operatör aynı olayı yüz kere görmez.

Zaman serisi

TimescaleDB ve continuous aggregate'ler. Sekiz saatlik rapor için elle özet tablosu yazmaz, tazelenmesini de siz kovalamazsınız.

Komut ve downlink

Cihaza MQTT, SMS ya da BLE üzerinden komut; şablon tabanlı ve kanal-agnostik. Firmware binary'si ile konfigürasyon ayrı yönetilir.

Çok kiracılı

Kiracı başına topic, kiracı başına tip, kiracı başına kural. Tek kurulum, birden çok müşteri — birinin kuralı diğerini görmez.

Dikeyler

Dikey = arayüz + kural paketi

Cihaz bir dikeye kilitlenmez. Hangi IO'yu ürettiğine göre ilgili ekranlarda görünür; yeni dikey açmak yeni platform kurmak değildir.

Filo yönetimi

IFleet

Konum, hız, kontak, kilometre, uydu sayısı. Hız ihlali, rölanti, sefer başlangıç/bitiş ve coğrafi çit kuralları.

  • sefer
  • hız ihlali
  • rölanti

Soğuk zincir

IColdChain

Sıcaklık ve nem eşikleri, kapı durumu, zincir kırılması. Eşik ihlalinin süresine ve tekrarına göre kademeli alarm.

  • eşik
  • kapı
  • zincir kırılması

Varlık takibi

IAssetTracking

Coğrafi çit giriş/çıkış, hareket ve durağanlık, varlık–cihaz eşleştirme. Çoklu cihaz tek varlık senaryosu dahil.

  • geofence
  • durağanlık
  • eşleştirme

Mimari

Tüm bileşenler, tek görselde

Yukarıdaki akış özet. Altta sistemin tamamı var: broker'dan panele, manager'lardan dış entegrasyona kadar hangi kutunun ne yaptığı ve aralarında hangi topic'in aktığı.

Kurulum

Sizin altyapınızda, tek chart

Kubernetes, k3s ya da tek makine — fark etmez. Broker'dan panele kadar tüm stack tek Helm chart'ında; hedef başına bir values dosyası. Dizüstünüzdeki geliştirme kümesi ile üretim arasındaki fark, o dosyadan ibaret.

Veri sizde kalır
SaaS değil. Telemetri de kurallar da sizin sunucunuzdan çıkmaz; kapalı ağda, internetsiz de çalışır.
Beyaz etiket
Kendi markanızla, kendi müşterinize sunun. Panel ve arayüz metinleri sizin.
Vendor lock yok
Altta standart bileşenler var: MQTT, Redpanda, Flink, PostgreSQL. Yarın çıkmak isterseniz veriniz standart biçimde duruyor.
bash
$ helm install nodela deploy/helm/nodela -f values-prod.yaml
broker · redpanda · flink · postgres/timescale · api · panel
 
$ ./scripts/smoke.sh
32/32 ✓

Altta çalışanlar

  • Mosquitto
  • Redpanda
  • Apache Flink
  • PostgreSQL
  • TimescaleDB
  • GraalVM
  • Rust
  • .NET
  • TypeScript
  • Next.js
  • Kubernetes
  • Helm

Sık sorulanlar

Muhtemelen aklınızdaki üç soru

Kendi cihazımı bağlayabilir miyim?

MQTT konuşan her cihaz doğrudan bağlanır; JSON, CBOR ve MessagePack kanalları hazır. Teltonika'nın TCP protokolü için parser mevcut. Bunların dışındaki protokoller için kenara küçük bir shim yazılır: decode kenarda olur, platformun içinde tek bir kanonik biçim kalır.

Kural yazmak için Flink ya da Java bilmek gerekir mi?

Hayır. Kural, zenginleştirme ve işlemcilerin tamamı TypeScript. Keyed state, sıra garantisi ve timer'lar altta Flink tarafından yürütülür; siz sadece bir fonksiyon yazarsınız.

Mevcut sistemlerimle nasıl konuşur?

Alarm ve telemetri çıkışları webhook ve entegrasyon kanallarına akıtılabilir; sorgu ağ geçidi üzerinden kendi uygulamanız veri çeker. nodela sizin uygulamanızın yerine geçmez, altına omurga koyar.

İletişim

Otuz dakikada canlı görün

Kurulumu, kural editörünü ve haritayı gerçek veriyle gösterelim. Ne yapmak istediğinizi kısaca yazın, size dönelim.

info@nodela.io

Bilgileriniz yalnızca size dönüş yapmak için kullanılır, üçüncü tarafla paylaşılmaz.