Yeni: Yapay zekâ güvenlik duvarı her modülü izliyor ve her olayı sade bir dille açıklıyor. Nasıl çalıştığını görün

Flow cookbook

Oluşturulacak on akış: deadband filtresi, sayaç tüketimi, sessiz sensör watchdog'u, iletme, durum anahtarları, alarm e-postası ve SMS, gece modu ve daha fazlası.

Her tarif, hangi blokların kullanılacağını, bunların ayarlarını ve nereye bağlanacaklarını belirtir. 1 ila 5 ve 8 ila 9 numaralı tarifler, IoT ana makinesindeki bir kök akışa (kiracı genelindeki kök ya da bir profil kökü) eklenir; belirtildiği gibi, Message type anahtarının telemetry çıkışına, Save telemetry bloğundan önce ya da sonra yerleştirin. Dağıtmadan önce her değişikliği Test ile sınayın. Bkz. The flow editor.

1. Değer yalnızca yeterince değiştiğinde kaydedilsin

Bir seviye sensörü her 10 saniyede bir veri gönderir, ancak 0,5 cm’den küçük bir değişim önemli değildir.

Message type ─telemetry→ Only changes → Save telemetry
  • Only changes: özellik msg.payload.level_cm, mod deadband, değer 0.5, first açık. Anahtar: varsayılanı bırakın (cihaz başına bir bellek).
  • level_cm içermeyen kayıtlar yine de kaydedilmelidir: önce bir Switch ekleyin (özellik msg.payload.level_cm, kural nempty), kural çıkışını Only changes üzerinden geçirin ve its otherwise çıkışını doğrudan Save telemetry bloğuna bağlayın.

Bu, saklanan noktaların sayısını azaltır, sayılan mesajların sayısını değil. Mesajları azaltmak için cihazın raporlamasını değiştirin. Bkz. Message quota and usage.

2. Yeniden başlayabilen bir sayaçtan tüketim

Bir su sayacı artan bir volume_m3 değeri gönderir; güç kesintisinden sonra 0’dan yeniden başlar.

Message type ─telemetry→ Delta ─out→ Save telemetry
                              └other→ Save telemetry
  • Delta: girdi msg.payload.volume_m3, çıktı msg.payload.volume_delta_m3, on_negative zero, seed latest, yuvarlama 3.

Saatlik ya da günlük tüketim için ham sayacı increase toplamasıyla da grafiğe dökebilirsiniz. Bkz. Derived values.

3. Sessizleşen bir sensör için alarm

Bir cihaz 15 dakika boyunca temperature göndermezse bir uyarı oluşturun; cihaz yeniden veri gönderdiğinde uyarıyı temizleyin.

Message type ─telemetry→ Switch (msg.payload.temperature nempty) → Watchdog ─timeout→ Raise alarm
                                                                     └ok→ Clear alarm
  • Watchdog: ms 15 min, anahtar msg.originator (varsayılan), repeat kapalı.
  • Raise alarm: alarm temperature_silent, severity warning, metin No temperature for 15 minutes.
  • Clear alarm: alarm temperature_silent.
  • Switch bloğunun çıkışını Save telemetry bloğuna da bağlı tutun ya da watchdog dalını onun yanına bağlayın.

Watchdog, dağıtımdan sonra bir cihazın ilk mesajıyla izlemeye başlar. Tamamen çevrimdışı olan cihazlar için ayrıca bir çevrimdışı alarm kuralı kullanın. Bkz. Offline alarms.

4. Her okumayı sunucunuza iletin

Save telemetry → HTTP request

  1. https://ingest.example.com adresine taşıyıcı (bearer) kimlik doğrulamasıyla bir HTTP endpoint bağlantısı oluşturun. Bkz. Connections and secrets.

  2. HTTP request: yöntem POST, yol /readings, gövde template, template_format json, template:
    {"device": {{ msg.metadata.deviceName }}, "ts": {{ msg.metadata.recordTs }}, "values": {{ msg.payload }}}

  3. geç send, böylece bir kesintiden sonraki birikmiş veriler de iletilir.

  4. İsteğin error çıkışını bir System log bloğuna bağlayın (metin forward failed: {{ msg.error.code }}).

Save telemetry bloğundan sonra bağlamak yalnızca kaydedilen verileri iletir. Çok sayıda cihaz için, grupları göndermek üzere isteğin önüne bir Batch (count 50) ve bir Join (auto, array) yerleştirin.

5. Saha görünümleri ve grafikler için durum anahtarı

Saha görünümleri odaları bir status anahtarına göre renklendirir. Sıcaklıktan türetilmiş bir tane saklayın:

Message type ─telemetry→ Switch (msg.payload.temperature nempty) → Calculate → Save telemetry
  • Calculate: hedef msg.payload.status, ifade msg.payload.temperature > 8 ? 2 : (msg.payload.temperature > 6 ? 1 : 0).

Saha görünümleri 2’yi kritik, 1’i uyarı olarak okur. Sayısal olduğu için status ayrıca grafiğe dökülür ve toplanır. Bkz. Site views.

6. Bir alarm açıldığında nöbetçi adresine e-posta ve SMS gönderin

IoT ana makinesinde bir akış (kök değil):

Device message (types: alarm) → Switch (msg.metadata.alarm.transition) ─created→ Rate limit → Notify
  • Device message: türler alarm (adıyla işaretleyin), profiller: ilgilendiklerinizi seçin.
  • Switch: özellik msg.metadata.alarm.transition, kural eq created.
  • Rate limit: n 5, per_ms 1 h, mode drop, anahtar msg.topic (tüm alarmlar için tek sınır).
  • Notify: alıcılar address oncall@example.com, phone +905551112233 ve role ADMIN (uygulama içi ve push); başlık {{ msg.payload.title }}; metin Alarm on {{ msg.payload.deviceName }}: {{ msg.payload.title }} ({{ msg.payload.severity }}); urgency critical.

Roller üyelere uygulamada, push ile ve sohbet uygulamalarında ulaşır; yalnızca address ve phone satırları e-posta ve SMS alır. Bkz. Alarm, command and notify blocks.

7. Gece modu

Herhangi bir ana makinedeki iki akış, üçüncü bir akışı (“Night actions”) 22:00’de açar ve 06:00’da kapatır.

  • Akış A: Schedule (daily, 22:00, every day, tz Europe/Istanbul) → Enable or disable a flow (flow: Night actions, state enable).
  • Akış B: Schedule (daily, 06:00) → Enable or disable a flow (state disable).

İkisi de dağıtımda yazılı onay ister. Kuruluş başına dakikada en fazla 6 anahtarlama yapılabilir.

8. Bir pompayı iki seviye arasında değiştirin

Doldurma pompasını %30’un altında başlatın ve %80’in üzerinde durdurun. İki seviye arasında hiçbir komut gönderilmez, böylece pompa sürekli açılıp kapanmaz.

Save telemetry → Switch (property msg.payload.level_pct)
                    ─rule 1: lt 30→ Not repeated → Send command pump.set {"on": true}
                    ─rule 2: gt 80→ Not repeated → Send command pump.set {"on": false}
  • Switch: özellik msg.payload.level_pct, kurallar lt 30 (Name low) ve gt 80 (Name high), stop_first açık. Anahtarı olmayan kayıt otherwise çıkışına gider ve yok sayılır.
  • Her Not repeated: period 10 min; böylece seviye bant dışında kaldıkça komut bir kez gönderilir ve en fazla 10 dakikada bir tekrarlanır.
  • Send command: profilin pump.set komutu, parametreler {"on": true} ya da {"on": false}.

Akışlardan gelen komutlar cihaz başına dakikada 30 ile sınırlıdır ve geç kalan bir mesaj hiçbir komut göndermez. Manuel ve Otomatik modlu operatör kontrolü için Rules kartı çoğu zaman daha uygun bir araçtır. Bkz. Rules card: actions.

9. İkili bir yükü çözümleyin

Bir cihaz 4 bayt gönderir: işaretli bir sıcaklık × 10 ve işaretsiz bir nem değeri. raw (base64) olarak gelir.

Switch (msg.payload.raw nempty) → Change → Base64 (decode) → Hex (encode) → Bytes (decode) → Save telemetry
  • Change: set msg.payload, yol msg.payload.raw.
  • Bytes alanları: temperature offset 0 i16 scale 0.1; humidity offset 2 u16.

Bkz. Data transform blocks.

10. Okumaları webhook ile başka bir sistemden alın

Dış bir sistem Hermetry’ye JSON gönderir ve akış bunu iletir.

  • Webhook tetikleyicisi: auth hmac, parse json, reply accepted. Adresi ve gizli anahtarı Webhooks iletişim kutusundan kopyalayın.
  • Ardından msg.payload.type üzerinde Switch, yeniden biçimlendirmek için Change ve bir eylem: Notify, Webhook, MQTT out ya da Set variable.

Varsayılan olarak bir webhook mesajı bir cihazla değil kuruluşla ilgilidir, bu yüzden Save telemetry bunu reddeder. Başka bir sistemden cihaz okumaları beslemek için, bunların MQTT üzerinden ya da cihaz HTTP API’si aracılığıyla cihaz olarak gönderilmesini sağlayın. Bkz. Device HTTP API.