Problem:
Lesen der GA 0/1/35 führt zum unerwarteten Fahren von Rolladen
ETS:
Ein Rolladen-Taster sendet sein Objekt Langzeit-Fahren an GA 0/1/35. Das Flags K,S,Ü sind gesetzt. L (Lesen) ist nicht gesetzt.
EibPC-Code:
[highlight=epc]
if eventwrite("EG Gruppe ohne Rakibe LZ-0/1/35") then {
EG_Gruppe_oR_zeitgesteuert_Freigabe=AUS;
write("EG Bad LZ-0/1/2", "EG Gruppe ohne Rakibe LZ-0/1/35");
write("EG Abstell LZ-0/1/5", "EG Gruppe ohne Rakibe LZ-0/1/35");
write("EG Küche O LZ-0/1/8", "EG Gruppe ohne Rakibe LZ-0/1/35");
write("EG Küche S LZ-0/1/11", "EG Gruppe ohne Rakibe LZ-0/1/35");
write("EG EZ Links LZ-0/1/14", "EG Gruppe ohne Rakibe LZ-0/1/35");
write("EG EZ Mitte LZ-0/1/17", "EG Gruppe ohne Rakibe LZ-0/1/35");
write("EG EZ Tür LZ-0/1/19", "EG Gruppe ohne Rakibe LZ-0/1/35");
write("EG WZ S LZ-0/1/23", "EG Gruppe ohne Rakibe LZ-0/1/35");
write("EG WZ W LZ-0/1/26", "EG Gruppe ohne Rakibe LZ-0/1/35");
} endif
if delay(!EG_Gruppe_oR_zeitgesteuert_Freigabe,2160000 0u64) then EG_Gruppe_oR_zeitgesteuert_Freigabe=EIN endif
[/highlight]
Ziel des EibPC-Codes:
Wenn der Taster "EG Gruppe ohne Rakibe LZ-0/1/35" ein RUNTER (1) schickt, dann sollen diese Rolladen RUNTER.
Wenn der Taster "EG Gruppe ohne Rakibe LZ-0/1/35" ein RAUF (0) schickt, dann sollen diese Rolladen RAUF.
Wurde der Taster einmal betätigt, so wird die Zeitsteuerung (EG_Gruppe_oR_zeitgesteuert_Freigabe) für 6h (2160000ms) ausgeschaltet (Freigabe=AUS).
Macht eine Visu ein "read", so soll nicht geantwortet werden.
Tatsächlicher Status:
Lese ich mit der ETS die GA 0/1/35, so bekomme ich keine Antwort. Das erwarte ich auch.
Es fahren dadurch jedoch die im EibPC-Code aufgeführten Rolladen herunter. Das Debug-Fenster des EibPC sagt, dass "EG Gruppe ohne Rakibe LZ-0/1/35" EIN (=1) ist!
Ich erkläre das dadurch, dass am Taster ggf. zuletzt auf RUNTER gedrückt wurde.
Warum führt das Lesen der GA nun zum Fahren der Rolladen?
Es scheint, als wenn eventwrite() auch auf Lesen reagiert???
Die Dokumentation des EibPC S 135 beschreibt die Wirkung von eventwrite():
Rückgabewert: 1b01 (EIN-Impuls), wenn am KNX Bus eine Antwort auf Telegramm mit der Gruppenadresse geschrieben wird, unabhängig von dessen Inhalt.
Wer schickt denn hier eine Antwort???
Auszug eib.log:
2012-10-07 12:19:57.550,A_GroupValue_Read,1.1.114,0/1/35,00,0,DPT_UpDown,1.008,0,low,6,T_DATA_XXX_REQ,0
2012-10-07 12:19:57.626,A_GroupValue_Write,1.1.113,0/1/2,01,1,DPT_UpDown,1.008,0,low,6,T_DATA_XXX_REQ,0
2012-10-07 12:19:57.772,A_GroupValue_Write,1.1.113,0/1/5,01,1,DPT_UpDown,1.008,0,low,6,T_DATA_XXX_REQ,0
2012-10-07 12:19:57.918,A_GroupValue_Write,1.1.113,0/1/8,01,1,DPT_UpDown,1.008,0,low,6,T_DATA_XXX_REQ,0
2012-10-07 12:19:58.065,A_GroupValue_Write,1.1.113,0/1/11,01,1,DPT_UpDown,1.008,0,low,6,T_DATA_XXX_REQ,0
2012-10-07 12:19:58.211,A_GroupValue_Write,1.1.113,0/1/14,01,1,DPT_UpDown,1.008,0,low,6,T_DATA_XXX_REQ,0
2012-10-07 12:19:58.358,A_GroupValue_Write,1.1.113,0/1/17,01,1,DPT_UpDown,1.008,0,low,6,T_DATA_XXX_REQ,0
2012-10-07 12:19:58.504,A_GroupValue_Write,1.1.113,0/1/19,01,1,DPT_UpDown,1.008,0,low,6,T_DATA_XXX_REQ,0
2012-10-07 12:19:58.651,A_GroupValue_Write,1.1.113,0/1/23,01,1,DPT_UpDown,1.008,0,low,6,T_DATA_XXX_REQ,0
2012-10-07 12:19:58.797,A_GroupValue_Write,1.1.113,0/1/26,01,1,DPT_UpDown,1.008,0,low,6,T_DATA_XXX_REQ,0
Ist das so gewollt?
-> Ich habe die Abfrage im Code nun geändert auf
if change("EG Gruppe ohne Rakibe LZ-0/1/35") then {
Damit tritt dieses unerwartete Verhalten nicht mehr auf.
Meine Frage ist nun:
Interpretiere ich die Funktionsweise von eventwrite() hier falsch?
Gruß,
Joachim
Lesen der GA 0/1/35 führt zum unerwarteten Fahren von Rolladen
ETS:
Ein Rolladen-Taster sendet sein Objekt Langzeit-Fahren an GA 0/1/35. Das Flags K,S,Ü sind gesetzt. L (Lesen) ist nicht gesetzt.
EibPC-Code:
[highlight=epc]
if eventwrite("EG Gruppe ohne Rakibe LZ-0/1/35") then {
EG_Gruppe_oR_zeitgesteuert_Freigabe=AUS;
write("EG Bad LZ-0/1/2", "EG Gruppe ohne Rakibe LZ-0/1/35");
write("EG Abstell LZ-0/1/5", "EG Gruppe ohne Rakibe LZ-0/1/35");
write("EG Küche O LZ-0/1/8", "EG Gruppe ohne Rakibe LZ-0/1/35");
write("EG Küche S LZ-0/1/11", "EG Gruppe ohne Rakibe LZ-0/1/35");
write("EG EZ Links LZ-0/1/14", "EG Gruppe ohne Rakibe LZ-0/1/35");
write("EG EZ Mitte LZ-0/1/17", "EG Gruppe ohne Rakibe LZ-0/1/35");
write("EG EZ Tür LZ-0/1/19", "EG Gruppe ohne Rakibe LZ-0/1/35");
write("EG WZ S LZ-0/1/23", "EG Gruppe ohne Rakibe LZ-0/1/35");
write("EG WZ W LZ-0/1/26", "EG Gruppe ohne Rakibe LZ-0/1/35");
} endif
if delay(!EG_Gruppe_oR_zeitgesteuert_Freigabe,2160000 0u64) then EG_Gruppe_oR_zeitgesteuert_Freigabe=EIN endif
[/highlight]
Ziel des EibPC-Codes:
Wenn der Taster "EG Gruppe ohne Rakibe LZ-0/1/35" ein RUNTER (1) schickt, dann sollen diese Rolladen RUNTER.
Wenn der Taster "EG Gruppe ohne Rakibe LZ-0/1/35" ein RAUF (0) schickt, dann sollen diese Rolladen RAUF.
Wurde der Taster einmal betätigt, so wird die Zeitsteuerung (EG_Gruppe_oR_zeitgesteuert_Freigabe) für 6h (2160000ms) ausgeschaltet (Freigabe=AUS).
Macht eine Visu ein "read", so soll nicht geantwortet werden.
Tatsächlicher Status:
Lese ich mit der ETS die GA 0/1/35, so bekomme ich keine Antwort. Das erwarte ich auch.
Es fahren dadurch jedoch die im EibPC-Code aufgeführten Rolladen herunter. Das Debug-Fenster des EibPC sagt, dass "EG Gruppe ohne Rakibe LZ-0/1/35" EIN (=1) ist!
Ich erkläre das dadurch, dass am Taster ggf. zuletzt auf RUNTER gedrückt wurde.
Warum führt das Lesen der GA nun zum Fahren der Rolladen?
Es scheint, als wenn eventwrite() auch auf Lesen reagiert???
Die Dokumentation des EibPC S 135 beschreibt die Wirkung von eventwrite():
Rückgabewert: 1b01 (EIN-Impuls), wenn am KNX Bus eine Antwort auf Telegramm mit der Gruppenadresse geschrieben wird, unabhängig von dessen Inhalt.
Wer schickt denn hier eine Antwort???
Auszug eib.log:
2012-10-07 12:19:57.550,A_GroupValue_Read,1.1.114,0/1/35,00,0,DPT_UpDown,1.008,0,low,6,T_DATA_XXX_REQ,0
2012-10-07 12:19:57.626,A_GroupValue_Write,1.1.113,0/1/2,01,1,DPT_UpDown,1.008,0,low,6,T_DATA_XXX_REQ,0
2012-10-07 12:19:57.772,A_GroupValue_Write,1.1.113,0/1/5,01,1,DPT_UpDown,1.008,0,low,6,T_DATA_XXX_REQ,0
2012-10-07 12:19:57.918,A_GroupValue_Write,1.1.113,0/1/8,01,1,DPT_UpDown,1.008,0,low,6,T_DATA_XXX_REQ,0
2012-10-07 12:19:58.065,A_GroupValue_Write,1.1.113,0/1/11,01,1,DPT_UpDown,1.008,0,low,6,T_DATA_XXX_REQ,0
2012-10-07 12:19:58.211,A_GroupValue_Write,1.1.113,0/1/14,01,1,DPT_UpDown,1.008,0,low,6,T_DATA_XXX_REQ,0
2012-10-07 12:19:58.358,A_GroupValue_Write,1.1.113,0/1/17,01,1,DPT_UpDown,1.008,0,low,6,T_DATA_XXX_REQ,0
2012-10-07 12:19:58.504,A_GroupValue_Write,1.1.113,0/1/19,01,1,DPT_UpDown,1.008,0,low,6,T_DATA_XXX_REQ,0
2012-10-07 12:19:58.651,A_GroupValue_Write,1.1.113,0/1/23,01,1,DPT_UpDown,1.008,0,low,6,T_DATA_XXX_REQ,0
2012-10-07 12:19:58.797,A_GroupValue_Write,1.1.113,0/1/26,01,1,DPT_UpDown,1.008,0,low,6,T_DATA_XXX_REQ,0
Ist das so gewollt?
-> Ich habe die Abfrage im Code nun geändert auf
if change("EG Gruppe ohne Rakibe LZ-0/1/35") then {
Damit tritt dieses unerwartete Verhalten nicht mehr auf.
Meine Frage ist nun:
Interpretiere ich die Funktionsweise von eventwrite() hier falsch?
Gruß,
Joachim
Kommentar