Alapfogalmak

Beállítások

A beállítás a Komod példányonkénti konfigurációja. Egy egyszerű rekord, amelyet a KomodBase<TSettings> típusparamétereként adsz meg.

public sealed record ThermometerSettings
{
    [Range(-50, 150)]
    public double BaseCelsius { get; init; } = 21;

    [Range(0, 50)]
    public double AmplitudeCelsius { get; init; } = 4;

    [Range(1, 3600)]
    public double PeriodSeconds { get; init; } = 60;

    [Range(0, 5)]
    public double NoiseCelsius { get; init; } = 0.2;

    [Range(0.1, 20)]
    public double RateHz { get; init; } = 2;
}

Szabályok

  • A rekord new()-val példányosítható, az alapértékek a tulajdonságokban vannak. Ezekkel jön létre egy új példány.
  • Az adatannotációkat ([Range], [StringLength], [Required] stb.) a KOFA a mentés előtt ellenőrzi. A mezők közti szabályokhoz valósítsd meg az IValidatableObject interfészt a rekordon.
  • A [Description] és az XML-dokumentáció megjelenik az űrlap súgójában.
  • A tárolás JSON (camelCase), ezért a tulajdonságok neve a tárolt gráfban is megmarad: a mezőket ne nevezd át kiadott Komodnál, mert a régi gráf értéke elveszne. Új mező mindig kapjon alapértéket.

Az űrlap

A gráfszerkesztő a beállításokból automatikusan űrlapot készít (szám, kapcsoló, szöveg, enum; a többi mező JSON). Egyedi szerkesztő is írható: lásd Felület (UI).

Változás futás közben

A beállítás módosítása esetén a KOFA meghívja:

protected override Task<bool> OnSettingsChangedAsync(TSettings oldSettings, TSettings newSettings)

A Settings property ekkor már az újat tartalmazza.

  • true: alkalmaztad (például a ciklus minden körben újra olvassa) → a példány fut tovább.
  • false (ez az alapértelmezés): a KOFA újraindítja a példányt, amely az új beállítással kezd.

Hardvert használó Komodnál az újraindítás a biztonságosabb választás, ha a változás átkonfigurálást igényel (például más I2C cím).

Beállítás a felületről

A böngésző rész az IKomodClientContext.GetSettingsAsync / SaveSettingsAsync hívásokkal olvassa és menti a beállítást; a mentés az aktív gráfba is beíródik. Példa: a termosztát csempéje.

Telepítésfüggő értékek

Ha egy érték a géphez tartozik, nem a gráfhoz (például egy Bluetooth név), jelöld [DeploymentSetting]-gel: Telepítési beállítás.