ich bin heute über ein merkwürdinges Verhalten beim Auswerten der ChnDirection gestoßen (Raspimatic 3.73.9.20231130):
In einer Schleife iteriere ich über alle Objekte vom Typ "Verschluss", um für eine Textmeldung die Gerätenamen zu sammeln.
Üblicherweise hat bei mir nur der Sender-Kanal den Typ Verschluss. Nun hatten sich Fensterkontakte eingeschlichen, bei denen nicht nur der Senderkanal, sondern auch der nicht-verknüpfbare Kanal 0 als "Verschluss" gekennzeichnet waren.
Daher habe ich die Schleife mit einer Abfrage auf ChnDirection == 1 (also Sender) ergänzt.
Allerdings tauchen immer noch die Einträge der Nuller-Kanäle (mit ChnDirection == 0) mit auf.
Etwas hin- und herprobieren hat ergeben, das die Position innerhalb der Bedingungen darüber bestimmt, ob diese Abfrage funktioniert.
Das Schnipsel sieht so aus:
Code: Alles auswählen
var sensors = dom.GetObject("Verschluss");
string list;
string i;
foreach(i, sensors.EnumUsedIDs()) {
var item = dom.GetObject(i);
if ((item.IsTypeOf(OT_CHANNEL)) &&
(item.ChnDirection() == 1) &&
(item.DPByHssDP("STATE").Value() != 0)) {
var device = dom.GetObject(item.Device());
string device_name = device.Name();
WriteLine(">> " # item.Name() # " > " # item.ChnDirection());
}
}
Code: Alles auswählen
if ((item.ChnDirection() == 1) &&
(item.IsTypeOf(OT_CHANNEL)) &&
(item.DPByHssDP("STATE").Value() != 0)) {
Habe ich etwas übersehen?
Über die Sprachbeschreibung und die Forensuche haben bisher nichts gefunden.
Viele Grüße
Ingo