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.
| Ayar | Anlamı | Varsayılan | Değerler |
|---|---|---|---|
| property | Test edilen şey | msg.payload | bir msg., flow., global. veya sys. yolu |
| op | Karşılaştırma | eq | aşağıdaki operatörlere bakın |
| value | Karşılaştırıldığı değer | empty | her 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ör | Doğru olduğunda |
|---|---|
eq, ne | Eş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, ge | Küçü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. |
contains | Metin değeri içerir; dizi eşit bir öğeye sahiptir; nesne o ada sahip bir anahtara sahiptir |
regex | Metin (ya da metin olarak bir sayı) desenle eşleşir: büyük/küçük harfe duyarlı, en fazla 64 karakter |
true, false | Tam olarak mantıksal true / false (1 değil, "true" değil) |
null | Eksik ya da null |
empty, nempty | null, "", [] veya {} / diğer her şey |
type | Tü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.
| Ayar | Anlamı | Varsayılan | Değerler |
|---|---|---|---|
| mode | Satırların nasıl birleştirildiği | any | any (or), all (and) |
| items | Satır başına bir karşılaştırma: property, op, value | yok | en 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.
| Ayar | Anlamı | Değerler |
|---|---|---|
| expr | İfade | zorunlu, 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.
| Ayar | Anlamı | Varsayılan | Değerler |
|---|---|---|---|
| property | Sayı | msg.payload | bir yol |
| min | Alt sınır, dahil; boş = yok | empty | bir sayı |
| max | Üst sınır, dahil; boş = yok | empty | bir sayı |
| hyst | Yanıtın değişmesi için değerin bir sınırın ötesine ne kadar geçmesi gerektiği | 0 | 0 veya daha fazla |
| key | Bu yolun her değeri için ayrı bir bellek | msg.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.
| Ayar | Anlamı | Varsayılan | Değerler |
|---|---|---|---|
| path | Test edilen şey, ör. flow.mode, global.persist:count | zorunlu | bir sys., flow. veya global. yolu |
| op | Karşılaştırma | eq | yukarıdaki gibi |
| value | Karşılaştırıldığı değer | empty | her 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.
| Ayar | Anlamı | Varsayılan | Değerler |
|---|---|---|---|
| property | İzlenen değer | msg.payload | bir yol |
| key | Bu yolun her değeri için ayrı bir son değer | msg.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.
| Ayar | Anlamı | Varsayılan | Değerler |
|---|---|---|---|
Süre (window_ms) | Bir yes sonrasında anahtarın ne kadar süre tutulacağı | 1 sa | 0 ila 7 gün; 0 her şeyi geçirir |
| key | Ayrı sayılan anahtarlar | msg.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.
| Ayar | Anlamı | Varsayılan | Değerler |
|---|---|---|---|
| n | Kaç kez | 3 | 1 ila 1.000 |
Süre (window_ms) | Kayan pencere | 10 dk | 1 ms ila 7 gün |
| key | Ayrı sayılan anahtarlar | msg.originator (cihaz başına bir tane) | bir yol |
| reset_on_yes | Bir yes sonrasında saymaya sıfırdan başla | kapalı | 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 | Örnek | Anlamı |
|---|---|---|
| Number, Text, Yes / no, JSON | 30, "alarm", true, {"on": true} | Sabit bir değer |
| Variable (yol) | msg.payload.level, flow.limit, global.persist:site.max | Blok çalıştığında okunur |
| Expression | msg.payload.a + msg.payload.b | Her mesaj için hesaplanır |
| Environment variable | Ortamın bir değeri | |
| Current time | Mesajın geldiği zaman |
Yollar
msg.…: mesaj._ile başlayan alanlar motora aittir ve yazılamaz;msg.msgTypevemsg.originatorsalt 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çinpersist: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
nullverir.
İfadeler
En fazla 512 karakter, en fazla 10.000 değerlendirme adımı.
| Bölüm | Kullanılabilir |
|---|---|
| Değerler | sayı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ğer | keys, 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;nullile<ve>yanlıştır.- Metin üzerinde aritmetik, sayısal metin olsa bile
typehatasıyla başarısız olur:number(msg.payload)yazın. - Metin ayarlarındaki (şablonlar)
{{ expression }}bir değer ekler:Level {{ msg.payload.level }} %.

