In a large installation with 48 zones I have a KNX weather sensor that informs me of bad weather (rain, wind etc).
I need to announce a generic \"rain warning\" message, followed by an enumeration of the windows that are left open and need to be closed.
Since there is no \"for\" loop in responses, do I need to code it by hand, one zone at a time? (that would make up a *big* response - some 20 windows in the house).
You will need to code it by hand. It may be tedious but at least it can be done
Take note that you can only announce 1 thing at a time
eg
Say \"Zone 1\"
Say \"Zone 2\"
Will announce \"Zone 2\" only unless a delay is inserted between the two announcements
Hence to announce a series of zones ONLY if the zones are open, there will have to be a delay between each announcement. If the zone is closed, then there is no announcement and no delay
This is an example for 4 zones, zone 10 to 13 to be announced only if open
SayZ10 Response
If Input Zone10 <> 0 Then
Announce Upstairs Window
Do SayOpenZ11 After 5 Seconds Using Timer01
Else
Do SayOpenZ11
End If
SayZ11 Response
If Input Zone11 <> 0 Then
Announce Zone 11
Do SayOpenZ12 After 5 Seconds Using Timer01
Else
Do SayOpenZ12
End If
SayZ12 Response
If Input Zone12 <> 0 Then
Announce Zone 12
Do SayOpenZ13 After 5 Seconds Using Timer01
Else
Do SayOpenZ13
End If
SayZ13 Response
If Input Zone13 <> 0 Then
Announce Zone 13
.. etc
End If
Calling the 1st zone Response will automatically announce each zone if it is open.
This response can be called from the Rain sensor event from KNX
You can also trigger it from the Control Menu at any time, since if many zones are announced you would not remebre all of them and may need to be able to hear the open zones on command
It would be better to add enumerators in responses though. I understand the limitations of the hardware but it is would be much better (and cleaner) to write code like this:
For Each Zone
If Zone Type is DoorWindow then
If Zone Input <> 0 then
Say Zone Name
Say \"is\" \"open\"
End If
End If
End For
And of course it would save lots of precious response memory.