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 azIValidatableObjectinterfé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.