Hoppa till huvudinnehåll

Anpassad fråga

En anpassad fråga filtrerar enheter på deras egna värden, för villkor som de vanliga filtren inte kan uttrycka - varje enhet som rapporterar en temperatur under 15, till exempel. Den finns överallt där enheter filtreras: enhetslistan, kartan, de vyer som byggs på dem, och rapporter, där den avgör vilka IoT-noder rapporten omfattar.

Hoppa till Färdiga frågor om du vill ha något att kopiera och anpassa.

Var du skriver en​

I enhetslistan och på kartan​

  1. Tryck Filter ovanför enhetslistan.
  2. I panelen som öppnas till höger, gå till Custom query och skriv frågan i rutan.

Så når du rutan för anpassad fråga: knappen Filter ovanför enhetslistan, och filterpanelen den öppnar med rutan Custom query längst ned

Rutan har ett exempel som platshållare, temperature<15, och en länk till den här sidan. Frågan tillämpas som ett aktivt filter vid sidan av de vanliga, så den kan smalna av ett urval de andra filtren redan gjort.

I en rapport​

En rapport använder samma fråga för att avgöra vilka IoT-noder den omfattar, men den skrivs in i rapportdefinitionen i stället för att skrivas i en panel. Varje källa i definitionen har ett query-fält, och det tar exakt den syntax som beskrivs på den här sidan:

I en rapportdefinitionRapporten omfattar
"query": "rssi"Varje enhet som rapporterar en signalstyrka
"query": "presence"Varje enhet som rapporterar närvaro
"query": "contextMap.building=='Building 2';temperature"Enheter i en byggnad som rapporterar en temperatur

Ett ensamt fältnamn är den vanligaste formen, eftersom en rapport oftast vill ha varje enhet som mäter det som rapporteras. Allt annat på den här sidan fungerar också där, vilket är så en rapport smalnas av till en byggnad, ett våningsplan eller en enhetsmodell. Se Rapporter för var definitionen finns.

Operatorer​

OperatorMatcharFungerar påExempel
==Exakt likatext, tal, datum, booleanername=='My Device'
:Samma som ==text, tal, datum, booleanername:'My Device'
~=Innehåller, var som helst i värdettextname~=Strips
!=Inte likatext, tal, datum, booleanername!='My Device'
>Större äntal, datumtemperature>20
>=Större än eller likatal, datumtemperature>=20
<Mindre äntal, datumtemperature<20
<=Mindre än eller likatal, datumtemperature<=20
!Fältet finns intevad som helst!temperature
(bara fältnamnet)Fältet finnsvad som helsttemperature

Skiftlägeskänslighet​

De två beter sig olika, vilket är värt att veta innan en fråga kommer tillbaka tom:

  • ~= bryr sig inte om skiftläge. name~=strips hittar "Strips-Guard" likaväl som "strips-guard".
  • == och != gör det. name=='strips-guard' matchar inte "Strips-Guard".

Så ~= är oftast den vänligare operatorn för namn som skrivits för hand.

Kombinera villkor​

TeckenBetydelseExempel
;OCH - alla villkor måste gällatemperature>25;humidity<40
|ELLER - endera villkoret får gällatemperature>25|humidity<40
,En lista med värden för ett fältdeviceModelName==strips,presence
.Ett nästlat fältcontextMap.floor==3

Två saker att se upp med:

  • Kommat är inte ett allmänt ELLER. Det listar alternativa värden för fältet framför det. deviceModelName==strips,presence är rätt; temperature<15,humidity<50 är det inte, eftersom det är två olika fält. Den behöver röret: temperature<15|humidity<50.
  • Använd en ELLER-grupp per fråga. En fråga kan blanda ; med en |-grupp, som i deviceModelName==strips;temperature>25|humidity<40. En andra ELLER-grupp ersätter den första i stället för att läggas till.

Textvärden​

Omge ett värde med enkla citattecken för att hålla det som en bokstavlig sträng: name=='Room 2'. Det spelar roll när värdet kan läsas som något annat - ett värde som 2026-09-01 blir ett datum om det inte citeras, och 0102 blir talet 102.

Citattecken krävs när värdet innehåller ett mellanslag.

Söka på datum​

Varje värde skrivet som ett ISO 8601-datum behandlas som ett datum av alla operatorer utom ~=. Det gör att jämförelseoperatorerna fungerar på tid:

FrågaHittar
reportedAt>2026-09-01Enheter som rapporterat sedan 1 september 2026
reportedAt<2026-09-01Enheter vars senaste rapport var före det datumet
reportedAt>=2026-09-01T08:00:00ZFrån en viss tidpunkt, UTC
reportedAt>2026-09-01;reportedAt<2026-09-08Rapporterat under den veckan - ett intervall är två villkor, inte ett
!reportedAtEnheter som aldrig rapporterat alls

Accepterade format är vanlig ISO 8601: 2026-09-01, 2026-09-01T08:00:00Z, 2026-09-01T08:00:00.000Z. Ett datum för sig är midnatt vid dygnets början.

Tre saker att känna till:

  • Ett intervall tar två villkor sammanfogade med ;, ett för varje ände.
  • ~= fungerar inte på datum. Den behåller ett datumliknande värde som bokstavlig text, så den matchar tecknen snarare än tidpunkten.
  • Ett ensamt årtal är ett tal, inte ett datum. reportedAt>2026 jämför mot talet 2026 och hittar ingenting. Skriv reportedAt>2026-01-01.

Datum är absoluta, så en sparad vy som innehåller ett fortsätter peka på samma tidpunkt när tiden går. För enheter som tystnat är ett rullande fönster oftast det du vill ha i stället: enhetslistans filter Reported within, eller kartans avsnitt Senast sedd.

Färdiga frågor​

Kopiera en och byt fält eller värde.

Hitta enheter​

FrågaHittar
name~=stripsVarje enhet med "strips" i namnet, oavsett skiftläge
name~='Room 2'Namn som innehåller "Room 2"
deviceModelName==strips-guardEn hårdvarumodell
deviceModelName==strips-guard,strips-dripEndera av två modeller
!nameEnheter utan namn
devEui~=0102En del av en DevEUI, användbart från en etikett

Mätvärden och tröskelvärden​

FrågaHittar
temperature>25För varmt
temperature<15|humidity>70För kallt eller för fuktigt
temperature>=18;temperature<=24Inom ett komfortintervall
temperature<0Under noll
humidity>70;temperature>22Varmt och fuktigt samtidigt, mögelrisken
co2>800Mycket dålig luftkvalitet
occupied==trueUpptaget just nu
doorOpen==true;temperature<5En dörr som lämnats öppen i kylan

Batteri och hälsa​

FrågaHittar
batteryLevel<20Behöver batteri inom kort
batteryLevel<5Behöver ett nu
!batteryLevelEnheter som inte rapporterar någon batterinivå alls

Nätverkskvalitet​

Fälten bakom kartan över nätverkstäckning.

FrågaHittar
rssi<-115Svag signal
rssi<-124Signal i fara
snr<0Under brusgolvet, utan marginal
spreadingFactor>=11Långsamt och dyrt för batteriet, oavsett signal
spreadingFactor>=11;rssi>-110Nära gatewayen men sänder ändå dyrt
!rssiEnheter utan LoRa-signal, alltså inte LoRaWAN

Tid​

FrågaHittar
reportedAt>2026-09-01Rapporterat den här månaden
reportedAt<2026-08-01Inget sedan juli - troligen dött
reportedAt>2026-09-01;reportedAt<2026-09-08Rapporterat under en vecka
!reportedAtInstallerat men aldrig hört av sig

Metadata​

Dina egna kontextuella parametrar, vilket är därför det lönar sig att fylla i dem vid installationen.

FrågaHittar
contextMap.floor==3Allt på våningsplan 3
contextMap.building=='Building 2'En byggnad
contextMap.installer==OlofAllt en viss person installerat
contextMap.room~=meetingRum med "meeting" i namnet
!contextMap.floorEnheter där ingen noterat våningsplanet
contextMap.floor==1,2,3Våningsplan 1, 2 eller 3

Kombinera dem​

FrågaHittar
contextMap.building=='Building 2';temperature>25För varmt, i en byggnad
deviceModelName==strips-guard;batteryLevel<20En modell som behöver batteri
contextMap.floor==3;rssi<-115Svag täckning på ett våningsplan - signaturen för en dåligt placerad gateway
temperature;!humidityEnheter som rapporterar temperatur men inte fuktighet, oftast ett översättarproblem
contextMap.building=='Building 2';reportedAt<2026-08-01Enheter i en byggnad som tystnat

Om en fråga inte ger något​

KontrolleraVarför
Fältnamnet, tecken för teckenFältnamn är skiftlägeskänsliga. Kopiera dem från enhetens Data-avsnitt - se Data
Om du använde == på text== är exakt och skiftlägeskänslig. Prova ~=
Om ett värde behöver citatteckenAllt med mellanslag gör det, liksom allt som kan läsas som ett tal eller ett datum
Om du menade komma eller rörEtt komma listar värden för ett fält; ett rör ELLER-kombinerar två villkor
Om fältet är en strängEtt tal lagrat som text svarar inte på > och <. Färgen i Data visar typen