Hello all,
First of all I'd like to apologise for writing in English, but unfortunately my German language skills are still very elementary. HS/FS resources are very scarce online (Gira akademie only covers very trivial aspects of the platform), and the built-in help one can find in Experte looks like a cleaned-up version of a Google Translate translation.
I have been trying to write a logic module to reset the state of an "Inhibition" variable which is supposed to override the switch variable of loads. Here's an example:
On the actuator: Consider 3 switching channels, A, B and C, associated with the following group addresses:
A Switch: 0/0/1
B Switch: 0/0/2
C Switch: 0/0/3
A Status: 0/1/1 (not of much use for this scenario, but it's available nonetheless)
B Status: 0/1/2 (not of much use for this scenario, but it's available nonetheless)
C Status: 0/1/3 (not of much use for this scenario, but it's available nonetheless)
A Inhibition: 1/0/1
B Inhibition: 1/0/1
C Inhibition: 1/0/1
(Same group address assigned to all three communication objects for inhibition)
The "Inhibition" communication object on the actuator is used to implement and AND gate separatedly for each channel. However, all three inhibition objects share the same group address, we don't need to inhibit independently. For example, in order for load connected to output A above to be switch on, BOTH 0/0/1 AND 1/0/1 need to be set to a value of "1".
The goal is to leverage the inhibition functionality to provide the user with a "Master Off with memory" feature. For example, if loads A and B are "on" and load C is "off", the user can switch all loads (although in our example, it only happens that A and B are on) off by setting 1/0/1 to "0". Then suppose the user wants to revert to the previous setting. By setting 1/0/1 to "1" again, the previous state will be restored (A, B on, C off). So far so good, one does not need complicated logic to perform this, it's integrated even in cheaper switch actuators.
However, there is one feature I would like to add which requires a bit of further development. Suppose that the Inhibition function is active (i.e. last value transmitted via group address 1/0/1 was "0"). In this case loads A, B and C are off, regardless of the value of the switch communication objects. I want to achieve the following: if the user chooses to individually change the state of any of these 3 loads (say, send a "1" to 0/0/1 while Inhibition is active), I want the HS to first set the value of the other loads to "off" (0/0/2 --> "0", 0/0/3 --> "0", then cancel the Inhibition state (1/0/1 --> "1") and then apply the individual setting for load A that the user initiated by turning the channel on in the first place (0/0/1 --> "1"). And I want to do that in a way that it can scale to more loads, and preferably without hard-coding all the logic so that it is not reuseable. Oh, and I don't want to use different addresses for user commands and switch control within the Homeserver logic, because I want the user to be able to switch loads on and off even if the Homeserver is not in operation (provided they have manually turned inhibition off, naturally).
I thought I could use a combination of the "Binary Trigger" and "Lock-out" to this effect, but the program behaves in a very bizzare way (it somehow enters a loop). Is it my idea, or is flow-control very limited within the logic functionality of the HS/FS?
I guess the problem is I don't really understand how the logic functionality of the HS/FS works. I would be grateful if one could provide a few hints as to how this could be accomplished, and/or whether it can be programmed using the logic editor of the experte at all.
More specifically, I am looking for a module (or combination of modules) that takes into account the last group address carrying a non-0 value among a group of addresses, defer the output of that value for a little while, set the value of all other addresses in the group to 0, set Inhibition to "1", then send (or resend) the deferred value to the bus. I guess my problem is how do I generate the action for the group addresses not involved in any user action so far?
I don't expect anything that works out of the box, just a general direction in case you can think of something I can test out.
Thank you in advance,
George
P.S. Does anyone know of any release dates for the new HS/FS firmware (on the Gira website it's now stated for a 03/2013 release after several delays)? I'm looking forward to the new "screen code lock" functionality for the Gira Control Interface I saw in the press release screenshots.
First of all I'd like to apologise for writing in English, but unfortunately my German language skills are still very elementary. HS/FS resources are very scarce online (Gira akademie only covers very trivial aspects of the platform), and the built-in help one can find in Experte looks like a cleaned-up version of a Google Translate translation.
I have been trying to write a logic module to reset the state of an "Inhibition" variable which is supposed to override the switch variable of loads. Here's an example:
On the actuator: Consider 3 switching channels, A, B and C, associated with the following group addresses:
A Switch: 0/0/1
B Switch: 0/0/2
C Switch: 0/0/3
A Status: 0/1/1 (not of much use for this scenario, but it's available nonetheless)
B Status: 0/1/2 (not of much use for this scenario, but it's available nonetheless)
C Status: 0/1/3 (not of much use for this scenario, but it's available nonetheless)
A Inhibition: 1/0/1
B Inhibition: 1/0/1
C Inhibition: 1/0/1
(Same group address assigned to all three communication objects for inhibition)
The "Inhibition" communication object on the actuator is used to implement and AND gate separatedly for each channel. However, all three inhibition objects share the same group address, we don't need to inhibit independently. For example, in order for load connected to output A above to be switch on, BOTH 0/0/1 AND 1/0/1 need to be set to a value of "1".
The goal is to leverage the inhibition functionality to provide the user with a "Master Off with memory" feature. For example, if loads A and B are "on" and load C is "off", the user can switch all loads (although in our example, it only happens that A and B are on) off by setting 1/0/1 to "0". Then suppose the user wants to revert to the previous setting. By setting 1/0/1 to "1" again, the previous state will be restored (A, B on, C off). So far so good, one does not need complicated logic to perform this, it's integrated even in cheaper switch actuators.
However, there is one feature I would like to add which requires a bit of further development. Suppose that the Inhibition function is active (i.e. last value transmitted via group address 1/0/1 was "0"). In this case loads A, B and C are off, regardless of the value of the switch communication objects. I want to achieve the following: if the user chooses to individually change the state of any of these 3 loads (say, send a "1" to 0/0/1 while Inhibition is active), I want the HS to first set the value of the other loads to "off" (0/0/2 --> "0", 0/0/3 --> "0", then cancel the Inhibition state (1/0/1 --> "1") and then apply the individual setting for load A that the user initiated by turning the channel on in the first place (0/0/1 --> "1"). And I want to do that in a way that it can scale to more loads, and preferably without hard-coding all the logic so that it is not reuseable. Oh, and I don't want to use different addresses for user commands and switch control within the Homeserver logic, because I want the user to be able to switch loads on and off even if the Homeserver is not in operation (provided they have manually turned inhibition off, naturally).
I thought I could use a combination of the "Binary Trigger" and "Lock-out" to this effect, but the program behaves in a very bizzare way (it somehow enters a loop). Is it my idea, or is flow-control very limited within the logic functionality of the HS/FS?
I guess the problem is I don't really understand how the logic functionality of the HS/FS works. I would be grateful if one could provide a few hints as to how this could be accomplished, and/or whether it can be programmed using the logic editor of the experte at all.
More specifically, I am looking for a module (or combination of modules) that takes into account the last group address carrying a non-0 value among a group of addresses, defer the output of that value for a little while, set the value of all other addresses in the group to 0, set Inhibition to "1", then send (or resend) the deferred value to the bus. I guess my problem is how do I generate the action for the group addresses not involved in any user action so far?
I don't expect anything that works out of the box, just a general direction in case you can think of something I can test out.
Thank you in advance,
George
P.S. Does anyone know of any release dates for the new HS/FS firmware (on the Gira website it's now stated for a 03/2013 release after several delays)? I'm looking forward to the new "screen code lock" functionality for the Gira Control Interface I saw in the press release screenshots.
Kommentar