The search field on the Monitor page does more than find text. It understands a small filter language, so you can match exact KNX facts - group addresses, senders, telegram services, priority, hop count, decoded values - and combine them with AND, OR, and NOT. This page is the complete reference.
Applying a filter checks every telegram already in the monitor once; new telegrams are then checked as they arrive. The filter only changes what you see - nothing is deleted.
Quick examples
| Filter | Shows |
|---|---|
kitchen |
Every row containing kitchen - in a name, value, address, or anywhere else |
1/2/3 |
Telegrams to group address 1/2/3 |
1/2/* |
Telegrams to any group address under 1/2 |
1.1.5 |
Telegrams sent by device 1.1.5 |
1.1.* |
Telegrams sent by any device on line 1.1 |
apci:GroupValueWrite |
Write telegrams only |
priority:urgent |
Telegrams with Urgent priority |
value>=20 |
Telegrams whose decoded value is 20 or more |
ga:1/2/* + value>=20 |
Group addresses under 1/2 with a value of 20 or more |
src:1.1.* | src:1.2.* |
Telegrams from line 1.1 or line 1.2 |
!kind:gap |
Everything except gaps in the recording |
Let the pickers build filters for you
You don't have to type filters. The search button next to the field (group addresses and devices from your ETS project) and View → View Group in the badge row (addresses, telegram types, priority) create them for you - choosing a sender gives src:1.1.5, choosing Urgent gives priority:urgent, and so on.
If a filter is already active, SharKNX asks how to add the new one:
| Choice | Result |
|---|---|
| Replace | Uses only the new filter |
| AND | Requires both the current filter and the new one |
| OR | Accepts either the current filter or the new one |
| Cancel | Leaves the filter unchanged |
With AND or OR, the current filter is wrapped in parentheses so its meaning is kept - for example ga:1/2/* | ga:2/1/* plus Urgent with AND becomes:
(ga:1/2/* | ga:2/1/*) + priority:urgent
The result appears in the search field, so you can see it, edit it, and apply it again. Clear removes the filter and the text.
Text search
Plain text is a case-insensitive search across everything a row shows: source and destination address, group address name and description, telegram type, decoded value, payload hex, priority, and the labels of bus events.
read
This is deliberately broad - it matches a GroupValueRead, a group address named Read request, or a value containing read. For an exact telegram type, use apci: instead.
Spaces don't mean AND. living room searches for the phrase living room. To combine two conditions, use +.
Group addresses: ga:
1/2/3
1/2/*
ga:1/*/*
1/515
A bare group address works on its own; the ga: prefix makes it explicit, which is clearer in longer filters. ga: only matches telegrams sent to a group address.
- 3-level: main
0-31, middle0-7, sub0-255 - 2-level: main
0-31, sub0-2047 - A wildcard
*must replace a whole part:1/2/*works,1/2/2*does not.
Matching uses the address's raw value, so 1/2/3 and 1/515 are the same address - switching the display between 2-level and 3-level never changes the results.
Senders: src:
1.1.5
1.1.*
src:1.*.*
A bare individual address works on its own; src: makes it explicit. It always matches the sender of a telegram, never its destination.
- Area
0-15, line0-15, device0-255 - A wildcard
*must replace a whole part.
Telegram type: apci:
apci:GroupValueRead
apci:GroupValueResponse
apci:GroupValueWrite
Use the full service name - capitalisation doesn't matter, but apci:read is rejected. For a service without a name, use its code in hexadecimal, from 0x0 to 0x3FF:
apci-code:0x155
Priority and hop count
priority:system
priority:urgent
priority:normal
priority:low
hop:3
KNX's high priority is called urgent - priority:high is rejected. Hop count is a whole number from 0 to 7.
Decoded values: value
value>20
value<20
value>=20
value<=20
value>=-2.5
- Only telegrams with a decoded numeric value match - load your ETS project so values can be decoded.
- Use a dot for decimals (
1.5), whatever your phone's language. - No units, no scientific notation (
1e3), and no=- for an exact value usevalue>=20 + value<=20. - Values are compared as numbers, whatever their datapoint type, so combine a value condition with a group address to keep its meaning clear:
ga:1/2/3 + value>=20
Bus events: kind:
Besides telegrams, the monitor records other observations. Filter them by kind:
| Filter | Matches |
|---|---|
kind:telegram |
Normal KNX telegrams |
kind:buscontrol |
Bus monitor acknowledgements (Bus Monitor mode) |
kind:raw |
Frames SharKNX received but could not decode |
kind:invalid |
Malformed frames |
kind:gap |
Places where telegrams were missed |
Spaces, hyphens, underscores, and capitalisation don't matter: kind:Bus Control works too.
Combining conditions
| Operator | Meaning | Example |
|---|---|---|
! |
NOT | !kind:gap |
+ |
AND | ga:1/2/* + value>=20 |
| |
OR | kind:gap | kind:invalid |
( ) |
Grouping | (ga:1/2/* | ga:2/1/*) + value>=20 |
NOT binds strongest, then AND, then OR. So:
kind:gap | priority:urgent + hop:3
means a gap, or an urgent telegram with hop count 3. When in doubt, add parentheses:
ga:1/2/* + (apci:GroupValueWrite | apci:GroupValueResponse)
(src:1.1.* | src:1.2.*) + value>=20
!(value>20)also shows rows without a decoded value, because NOT simply inverts the result.
Searching for special characters
To search for text containing +, |, !, or parentheses, put it in double quotes:
"Alarm + Hall"
"Status (North)"
Write a quote inside a quoted text as \", and a backslash as \\. Quotes also force a plain text search for anything that looks like a filter, such as "unknown:value".
When a filter is rejected
If a filter can't be understood, SharKNX shows the error and its position below the search field. The last valid filter stays active, so the list doesn't change until you fix the text and apply it again.
| You typed | Why it's rejected | Write instead |
|---|---|---|
33/1/1 |
Main group goes up to 31 | A main group from 0 to 31 |
1/8/1 |
Middle group goes up to 7 | A middle group from 0 to 7 |
16.1.1 |
Area goes up to 15 | An area from 0 to 15 |
ga:1/2/2* |
A wildcard must fill a whole part | ga:1/2/* |
apci:read |
Service names must be complete | apci:GroupValueRead, or plain read |
priority:high |
KNX calls it urgent | priority:urgent |
hop:8 |
Hop count goes up to 7 | A value from 0 to 7 |
apci-code:80 |
Codes are hexadecimal | apci-code:0x80 |
value=20 |
= is not supported |
value>=20 + value<=20 |
value>1,5 |
Decimal comma | value>1.5 |
ga:1/2/* + |
Nothing after AND | Complete or remove the + |
(ga:1/2/* |
Missing ) |
Add the ) |
A valid filter shows nothing?
- Is the address a sender (
src:) or a group address (ga:)? - Do the telegrams have a decoded value? Load the ETS project.
- Is the
apci:name complete? - Does AND/OR need parentheses?
1/2/3 1.1.5is one text search, not two conditions - writega:1/2/3 + src:1.1.5.
Not the same as Shark Hunt filters
Shark Hunt Custom Monitor actions use conditions you build in a form (up to 10, joined with AND or OR), not this typed syntax. See Create a Shark Hunt.