مستندات فلووا

مرجع عمومی API

مرجع کلاس‌ها، توابع کمکی و Typeهای عمومی FlovaSDK.

این صفحه سطح عمومی برنامه را که در راهنماها استفاده شده فهرست می‌کند. برای امضای دقیق و Overloadهای مخصوص هر Target، Headerهای ارائه‌شده در نسخهٔ FlovaSDK را ببینید. به Classها و Typeهای داخلی که در این صفحه نیامده‌اند وابسته نشوید.

Facadeهای برد

Typeکاربرد
FlovaEsp32برنامهٔ سفارشی ESP32 با Flova Link یا MQTT اختیاری.
FlovaEsp8266برنامهٔ سفارشی ESP8266 با همان مدل Typeدار Datastream.
FlovaUniversalEsp32ترکیب کامل ESP32 با Provisioning و رفتار Device تحت مدیریت Flova.
FlovaUniversalEsp8266ترکیب کامل ESP8266.
FlovaLinuxProcess دستگاه در Linux یا Raspberry Pi.
flova::Deviceهستهٔ قابل انتقال برای برد یا Gateway سفارشی.

متدهای چرخهٔ اجرا

متدکاربرد
begin()Facade انتخاب‌شده را آماده می‌کند و Session را بازیابی یا آغاز می‌کند.
run()یک گام محدود از Connection، Configuration و پردازش فرمان را انجام می‌دهد.
connected()وضعیت فعلی Connection مربوط به Transport را گزارش می‌کند.
datastream<T>(key)یک مرجع Typeدار برای Datastream می‌دهد.
value()مقدار موجود در Cache محلی را می‌خواند.
write(value)یک فرمان محلی از طرف برنامه را اعمال می‌کند.
report(value)مشاهدهٔ حسگر یا وضعیت واقعی Hardware را Report می‌کند.
onWrite(handler)Handler مرز Hardware برای فرمان راه دور را ثبت می‌کند.

توابع کمکی Arduino

FLOVA_DATASTREAM(device, bool, "relay")
FLOVA_SETTING(device, double, "threshold", 35.0)
FLOVA_ON_WRITE(relay, setRelay)
FLOVA_WRITE(relay, true)
FLOVA_READ(relay)
FLOVA_REPORT(temperature, 23.4f)
FLOVA_HAS_VALUE(relay)

توابع کمکی را پس از تعریف Device و پیش از begin() استفاده کنید. کلید فنی را در یک محل ثابت نگه دارید تا بین Firmware و Template تغییر نکند. اگر برنامه به Type یا رفتار مخصوص Target نیاز ندارد، از <FlovaSDK.h> شروع کنید.

نتیجه و وضعیت نوشتن

flova::WriteResult وضعیت‌های Accepted، Rejected، NoChange و Failed را گزارش می‌کند. وقتی برنامه باید بداند مقدار واقعاً پذیرفته شده است یا نه، نتیجه را بررسی کنید. فرمان ردشدهٔ Hardware نباید وضعیت برنامه یا SDK را به‌طور بی‌صدا تغییر دهد.

Typeهای عمومی مقدار شامل Boolean، int64_t، float، double و متن محدود هستند. Enumهای عمومی Lifecycle و Diagnostic در Headerهای SDK تعریف شده‌اند. به Protocolهای تولیدشده یا Classهای خصوصی Adapter وابسته نشوید.

متدهای وضعیت

برنامه‌های سفارشی Arduino می‌توانند بدون ورود به پیاده‌سازی Transport، مرزهای چرخهٔ اجرا را بررسی کنند:

متدکاربرد
networkConnected()Network برنامه در دسترس است.
tlsReady()پیش‌نیازهای TLS یا Transport امن آماده هستند.
runtimeReady()Runtime احراز هویت‌شدهٔ Flova آماده است.
ready()Facade برای کار عادی Device آماده است.
status(output)یک نمای لحظه‌ای محدود برای Diagnostic می‌نویسد.
setStatusListener(...)تغییرهای Lifecycle را مشاهده می‌کند.
startProvisioning()Session Flova را پاک و منتظر Handoff تازه می‌ماند.
factoryReset()وضعیت خصوصی Flova را از مسیر Facade بازنشانی می‌کند.

وضعیت برای نشانگر محصول یا صفحهٔ Maintenance مفید است، اما جای Accepted Command یا Telemetry تازه را نمی‌گیرد.

متدهای Firmware و توان

Facadeهای Target ممکن است این عملیات Lifecycle را ارائه کنند:

متدکاربرد
setFirmwareTarget(target)شناسهٔ Target گزارش‌شدهٔ Image را تعیین می‌کند.
enableOta(enabled)مسیر OTA مربوط به Target را فعال یا غیرفعال می‌کند.
setOtaProfile(...)روش OTA و Boot Layout را مشخص می‌کند.
setRestartHandler(...)اجرای Restart را به برنامه می‌سپارد.
restartRequired()بررسی می‌کند Runtime به Restart نیاز دارد یا نه.
prepareForPowerDown()پیش از Sleep یا قطع برق کار SDK را آرام می‌کند.

فقط از متدهای Target انتخاب‌شده استفاده کنید. Service Supervisor در Linux، Boot Layout در ESP32 و Staged Update در ESP8266 مرزهای مالکیت یکسانی ندارند.

مدیریت نتیجه‌ها

const flova::WriteResult result = FLOVA_REPORT(sensor, value);
if (!result.accepted()) {
  logReportFailure(result.status, result.reason);
}

نتیجهٔ Accepted یعنی SDK عملیات را در مرز خودش پذیرفته است. در MQTT همچنان run() را اجرا کنید و Latest Value یا History را در Console بررسی کنید. در نوشتن Hardware، Accepted باید به معنی پذیرفته شدن وضعیت واقعی توسط Handler محصول باشد.

انتخاب Header

Includeکاربرد
<FlovaSDK.h>برنامه‌های سادهٔ Arduino و نقطهٔ ورود عمومی.
<FlovaEsp32.h>دسترسی مستقیم به Facade مربوط به ESP32.
<FlovaEsp8266.h>دسترسی مستقیم به Facade مربوط به ESP8266.
<FlovaUniversalEsp32.h>ترکیب مستقیم Universal برای ESP32.
<FlovaUniversalEsp8266.h>ترکیب مستقیم Universal برای ESP8266.
<FlovaLinux.h>برنامه‌های Device در Linux.
<FlovaDevice.h>اتصال‌های قابل انتقال به هسته.

تا وقتی به Constructor یا متد مخصوص Target نیاز ندارید، Header عمومی <FlovaSDK.h> را ترجیح دهید.