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

Koşul blokları

Compare, Any / all of, If / else, In range, Device state, Changed, Not repeated ve Happened n times için referans; ayrıca değerler ve ifadeler.

Bir koşul bloğu bir şeyi test eder ve mesajı değiştirmeden yes veya no çıkışına gönderir. Filtrelemek ve dallandırmak için kullanın. Tüm koşul bloklarında ayrıca yapılamayan bir test için bir error çıkışı vardır. Bu sayfa blokların tanımladığı şekliyle hepsini listeler, ardından kullandıkları değerleri, yolları ve ifadeleri açıklar.

Compare

Bir özelliği bir değerle karşılaştırır.

AyarAnlamıVarsayılanDeğerler
propertyTest edilen şeymsg.payloadbir msg., flow., global. veya sys. yolu
opKarşılaştırmaeqaşağıdaki operatörlere bakın
valueKarşılaştırıldığı değeremptyher değer türü; true, false, null, empty, nempty için gösterilmez

Eksik bir özellik null sayılır: bu durumda gt 30 yanlıştır. Hatalar: invalid_value (hatalı bir desen veya operatör) ya da hesaplanamayan bir değerin kodu.

Operatörler

Compare, Any / all of, Device state ve Switch tarafından ortak kullanılır:

OperatörDoğru olduğunda
eq, neEşit, eşit değil. Bir sayı ile bir sayı ya da sayısal metin sayı olarak karşılaştırılır ("5", 5‘e eşittir; true 1 sayılır); diğer durumlarda içerik JSON olarak karşılaştırılır.
lt, le, gt, geKüçük, küçük veya eşit, büyük, büyük veya eşit. Sayılar ve sayısal metinler sayı olarak; iki metin alfabetik olarak; diğer karışımlar yanlıştır.
containsMetin değeri içerir; dizi eşit bir öğeye sahiptir; nesne o ada sahip bir anahtara sahiptir
regexMetin (ya da metin olarak bir sayı) desenle eşleşir: büyük/küçük harfe duyarlı, en fazla 64 karakter
true, falseTam olarak mantıksal true / false (1 değil, "true" değil)
nullEksik ya da null
empty, nemptynull, "", [] veya {} / diğer her şey
typeTür number, string, boolean, array, object veya null

Desenlerde lookahead, lookbehind ya da geriye referans kullanılamaz; böyle bir desen dağıtımda reddedilir (regex_unsupported).

Any / all of

“or” veya “and” ile birleştirilmiş en fazla 8 karşılaştırma.

AyarAnlamıVarsayılanDeğerler
modeSatırların nasıl birleştirildiğianyany (or), all (and)
itemsSatır başına bir karşılaştırma: property, op, valueyoken fazla 8 satır

Satırlar sırayla denetlenir ve yanıt bilindiği anda denetleme durur. Satır yoksa any yanlış, all doğrudur.

If / else

Bir ifade doğru olduğunda doğrudur.

AyarAnlamıDeğerler
exprİfadezorunlu, en fazla 512 karakter

Sonuç false, null, 0, "" ise ya da bir sayı değilse no; boş bir dizi veya nesne doğru sayılır. Hatalar: invalid_value (derlenmez), type, div_zero, steps, regex, limit.

Örnek: msg.payload.temperature > 30 && flow.mode == "auto".

In range

Bir sayının en küçük ve en büyük değer arasında olup olmadığını, isteğe bağlı histerezis ile test eder.

AyarAnlamıVarsayılanDeğerler
propertySayımsg.payloadbir yol
minAlt sınır, dahil; boş = yokemptybir sayı
maxÜst sınır, dahil; boş = yokemptybir sayı
hystYanıtın değişmesi için değerin bir sınırın ötesine ne kadar geçmesi gerektiği00 veya daha fazla
keyBu yolun her değeri için ayrı bir bellekmsg.originator (cihaz başına bir tane)bir yol

İçerideyken yanıt, değer min − hyst altına düşene ya da max + hyst üstüne çıkana kadar yes kalır; dışarıdayken yalnızca min + hyst … max − hyst aralığında tekrar yes olur. Sayı değilse: no, bellek değişmez.

Device state

Mesaj yerine saklanan bir değişkeni (flow., global.) ya da bir platform değerini (sys.) test eder. Mesaj yalnızca testin ne zaman yapılacağına karar verir.

AyarAnlamıVarsayılanDeğerler
pathTest edilen şey, ör. flow.mode, global.persist:countzorunlubir sys., flow. veya global. yolu
opKarşılaştırmaeqyukarıdaki gibi
valueKarşılaştırıldığı değeremptyher değer türü

Değişti

Aynı anahtarın önceki mesajındaki değerinden bir özellik farklı olduğunda yes; bir anahtarın ilk mesajı yes olur.

AyarAnlamıVarsayılanDeğerler
propertyİzlenen değermsg.payloadbir yol
keyBu yolun her değeri için ayrı bir son değermsg.originator (cihaz başına bir tane)bir yol

Değerler JSON metni olarak karşılaştırılır: 5 ve "5" farklıdır.

Tekrarlanmayan

Yalnızca aynı anahtarla gelen hiçbir mesaj süre içinde yes çıkışından geçmediyse yes.

AyarAnlamıVarsayılanDeğerler
Süre (window_ms)Bir yes sonrasında anahtarın ne kadar süre tutulacağı1 sa0 ila 7 gün; 0 her şeyi geçirir
keyAyrı sayılan anahtarlarmsg.originator (cihaz başına bir tane)bir yol

Yalnızca bir yes süreyi başlatır; 1 saatlik bir süreyle sürekli akış saatte bir yes verir. Tekrarlayan bildirimleri durdurmak için kullanın.

n kez oldu

Bu mesaj, süre içinde aynı anahtara ait en az n mesaj oluşturduğunda yes.

AyarAnlamıVarsayılanDeğerler
nKaç kez31 ila 1.000
Süre (window_ms)Kayan pencere10 dk1 ms ila 7 gün
keyAyrı sayılan anahtarlarmsg.originator (cihaz başına bir tane)bir yol
reset_on_yesBir yes sonrasında saymaya sıfırdan başlakapalıon, off

Koşul bloklarının belleği

In range, Changed, Not repeated ve Happened n times değerleri anahtar başına hatırlar. Hermetry’de anahtar varsayılan olarak mesajın originator değeridir, bu nedenle her cihazın kendi belleği olur; belleği farklı paylaşmak ya da bölmek için key değerini msg.topic (ya da başka bir yol) olarak ayarlayın. Her blok en fazla 10.000 anahtar tutar; bu sınırın ötesinde en eski anahtar unutulur. Bellek yeniden başlatmalardan sonra da korunur. Bloğun ayarlarındaki bir değişikliği dağıtmak, belleğini boş olarak başlatır. Bkz. Counters, statistics and watchdogs.

Değerler, yollar ve ifadeler

Birçok ayar aşağıdaki türlerden birinde bir değer alır:

TürÖrnekAnlamı
Number, Text, Yes / no, JSON30, "alarm", true, {"on": true}Sabit bir değer
Variable (yol)msg.payload.level, flow.limit, global.persist:site.maxBlok çalıştığında okunur
Expressionmsg.payload.a + msg.payload.bHer mesaj için hesaplanır
Environment variableOrtamın bir değeri
Current timeMesajın geldiği zaman

Yollar

  • msg.…: mesaj. _ ile başlayan alanlar motora aittir ve yazılamaz; msg.msgType ve msg.originator salt okunurdur.
  • flow.…: bu akışın değişkenleri. global.…: kuruluşun tüm akışlarıyla paylaşılan değişkenler. Kalıcı depoyu kullanmak için persist: ekleyin (flow.persist:total). İlk anahtar bir harf ya da _ ile başlar ve en fazla 32 harf, rakam ya da _ içerir.
  • sys.…: salt okunur platform değerleri.
  • Eksik yollar null verir.

İfadeler

En fazla 512 karakter, en fazla 10.000 değerlendirme adımı.

BölümKullanılabilir
Değerlersayılar, "text", true, false, null, [arrays], {objects}, yollar
Operatörler?: || && == != < <= > >= in + - * / % !
Sayı fonksiyonlarıabs, round(x, decimals), floor, ceil, min, max, clamp(x, lo, hi), sqrt, pow, number, int, fixed, sum, avg ve trigonometrik ile logaritmik fonksiyonlar (sin, cos, asin, rad, log10 …)
Metin fonksiyonlarıstring, len, lower, upper, trim, substr, replace, split, join, contains, starts, ends, matches
Diğerkeys, has, now, fmt_time, typeof, exists, default(x, fallback), empty
  • == sayıları sayısal olarak, diğer her şeyi tür ve değere göre karşılaştırır; null ile < ve > yanlıştır.
  • Metin üzerinde aritmetik, sayısal metin olsa bile type hatasıyla başarısız olur: number(msg.payload) yazın.
  • Metin ayarlarındaki (şablonlar) {{ expression }} bir değer ekler: Level {{ msg.payload.level }} %.