Ich habe ein Problem mit structure und SOMFY. Bisher habe ich drei Rolladen mit sleep geschaltet und wollte das nun auf structure umstellen. Dabei schaltet eine der drei Rolladen gar nicht, die anderen beiden tun, was sie sollen. Wieso meldet sich RolladenTerasse nicht?
Zuerst die structure
defmod Alle structure Rolladen_Struktur RolladenArbeitsz2 RolladenTerasse RolladenWohnz1
attr Alle alias AlleRolladen
attr Alle async_delay 0.4 <==== HIER IST DAS PROBLEM, siehe unten
attr Alle eventMap off:oeffnen on:schliessen
attr Alle verbose 5
Jetzt die Rolladen, alle drei hintereinander:
defmod RolladenArbeitsz2 SOMFY 000005
attr RolladenArbeitsz2 userattr Rolladen_Struktur Rolladen_Struktur_map structexclude
attr RolladenArbeitsz2 IODev sduino
attr RolladenArbeitsz2 Rolladen_Struktur Alle
attr RolladenArbeitsz2 eventMap off:oeffnen on:schliessen
attr RolladenArbeitsz2 verbose 5
defmod RolladenTerasse SOMFY 000002
attr RolladenTerasse userattr Rolladen_Struktur Rolladen_Struktur_map structexclude
attr RolladenTerasse IODev sduino
attr RolladenTerasse Rolladen_Struktur Alle
attr RolladenTerasse eventMap off:oeffnen on:schliessen
attr RolladenTerasse verbose 5
defmod RolladenWohnz1 SOMFY 000004
attr RolladenWohnz1 userattr Rolladen_Struktur Rolladen_Struktur_map structexclude
attr RolladenWohnz1 IODev sduino
attr RolladenWohnz1 Rolladen_Struktur Alle
attr RolladenWohnz1 eventMap off:oeffnen on:schliessen
attr RolladenWohnz1 verbose 5
Nun die Log, mit msec:
2017.05.06 10:18:20.340 4: SOMFY_set: RolladenArbeitsz2 -> entering with mode :send: cmd :on: arg1 :: pos :0:
2017.05.06 10:18:20.340 4: SOMFY_set: handled command on --> move :on: newState :closed:
2017.05.06 10:18:20.340 5: SOMFY_set: handled for drive/udpate: updateState :: drivet :0: updatet :0:
2017.05.06 10:18:20.342 4: SOMFY_sendCommand: RolladenArbeitsz2 -> cmd :on:
2017.05.06 10:18:20.745 4: SOMFY_set: RolladenTerasse -> entering with mode :send: cmd :on: arg1 :: pos :0:
2017.05.06 10:18:20.746 4: SOMFY_set: handled command on --> move :on: newState :closed:
2017.05.06 10:18:20.746 5: SOMFY_set: handled for drive/udpate: updateState :: drivet :0: updatet :0:
2017.05.06 10:18:20.747 4: SOMFY_sendCommand: RolladenTerasse -> cmd :on:
2017.05.06 10:18:21.151 4: SOMFY_set: RolladenWohnz1 -> entering with mode :send: cmd :on: arg1 :: pos :0:
2017.05.06 10:18:21.151 4: SOMFY_set: handled command on --> move :on: newState :closed:
2017.05.06 10:18:21.151 5: SOMFY_set: handled for drive/udpate: updateState :: drivet :0: updatet :0:
2017.05.06 10:18:21.152 4: SOMFY_sendCommand: RolladenWohnz1 -> cmd :on:
2017.05.06 10:18:40.070 4: SOMFY_set: RolladenArbeitsz2 -> entering with mode :send: cmd :off: arg1 :: pos :200:
2017.05.06 10:18:40.071 4: SOMFY_set: handled command off --> move :off: newState :open:
2017.05.06 10:18:40.071 5: SOMFY_set: handled for drive/udpate: updateState :: drivet :0: updatet :0:
2017.05.06 10:18:40.072 4: SOMFY_sendCommand: RolladenArbeitsz2 -> cmd :off:
2017.05.06 10:18:40.476 4: SOMFY_set: RolladenTerasse -> entering with mode :send: cmd :off: arg1 :: pos :200:
2017.05.06 10:18:40.476 4: SOMFY_set: handled command off --> move :off: newState :open:
2017.05.06 10:18:40.476 5: SOMFY_set: handled for drive/udpate: updateState :: drivet :0: updatet :0:
2017.05.06 10:18:40.478 4: SOMFY_sendCommand: RolladenTerasse -> cmd :off:
2017.05.06 10:18:40.881 4: SOMFY_set: RolladenWohnz1 -> entering with mode :send: cmd :off: arg1 :: pos :200:
2017.05.06 10:18:40.881 4: SOMFY_set: handled command off --> move :off: newState :open:
2017.05.06 10:18:40.882 5: SOMFY_set: handled for drive/udpate: updateState :: drivet :0: updatet :0:
2017.05.06 10:18:40.883 4: SOMFY_sendCommand: RolladenWohnz1 -> cmd :off:
Ich sehe da nichts?!
<EDIT> Wenn man async-delay auf 1s statt 0.4s setzt, heben sich alle drei an. OK, dann ist es (wie leider schon oft hier bemerkt) ein Problem des Senders, der sich durch die asynchrone Behandlung anscheinend selbst in die Quere kommt.
Bei einem einzigen System/Protokoll sollte das zustaendige FHEM-Modul dafuer sorgen, dass man mehrere Befehle ohne Probleme hintereinander senden kann. Z.Bsp hat FS20/CUL, oder ZWave/ZWDongle jeweils Warteschlagen (kein sleep), die in einem bestimmten Rythmus abgearbeitet werden.
Bei unterschiedlichen Systemen muesste ein FHEM-Framework helfen, das gibt es aber (noch?) nicht. Ist auch nicht trivial, da manche Systeme sich gegenseitig stoeren, andere wiederum nicht. asyncDelay in structure ist eine "billige" Notloesung.
Zitat von: rudolfkoenig am 06 Mai 2017, 11:31:38
Bei einem einzigen System/Protokoll sollte das zustaendige FHEM-Modul dafuer sorgen, dass man mehrere Befehle ohne Probleme hintereinander senden kann.
Das hieße aber dann, dass es ein Fehler/Problem im Somfy-Modul ist?
So sehe ich das.
Was für ein IO Gerät verwendet Du?
Gesendet von meinem Nexus 5 mit Tapatalk
Arduino, CC1101, Selbstbau. Ansonsten
Internals:
Clients :IT:CUL_TCM97001:SIGNALduino_RSL:OREGON:CUL_TX:SD_AS:Hideki:SD_WS07:SD_WS09: :SD_WS:RFXX10REC:Dooya:SOMFY:SD_UT:SD_WS_Maverick:FLAMINGO:CUL_WS:Revolt:SIGNALduino_un:SD_WS_Maverick:Came:FS10:SIGNALduino_un:
DEF /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A104WS3F-if00-port0
DMSG u63BEED6EED55EBD5ADDAD6FD5D7574
DevState initialized
DeviceName /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A104WS3F-if00-port0@57600
FD 11
ITClock 250
MSGCNT 313
NAME sduino
NR 27
NR_CMD_LAST_H 1
PARTIAL
RAWMSG MU;P0=-32001;P1=1926;P2=-1976;P3=-3940;P4=3872;D=012134313131312131312131212131213131213131213121212121213131312121313131212121312121312131312131212131212131213131313131212121313121213131212121313121;CP=1;R=13;
RSSI -67.5
STATE opened
TIME 1494267478
TYPE SIGNALduino
unknownmessages
version V 3.3.1-dev SIGNALduino cc1101 - compiled at Mar 10 2017 22:54:50
Matchlist:
10:SD_WS07 ^P7#[A-Fa-f0-9]{6}F[A-Fa-f0-9]{2}
11:SD_WS09 ^P9#[A-Fa-f0-9]+
12:SD_WS ^W\d+x{0,1}#.*
13:RFXX10REC ^(20|29)[A-Fa-f0-9]+
14:Dooya ^P16#[A-Fa-f0-9]+
15:SOMFY ^YsA[0-9A-F]+
16:SD_WS_Maverick ^P47#[A-Fa-f0-9]+
1:IT ^i......
21:FS10 ^P61#[A-F0-9]+
2:CUL_TCM97001 ^s[A-Fa-f0-9]+
4:OREGON ^(3[8-9A-F]|[4-6][0-9A-F]|7[0-8]).*
5:CUL_TX ^TX..........
7:Hideki ^P12#75[A-F0-9]+
83:Came ^u83#[A-Fa-f0-9]+
X:SIGNALduino_un ^[uP]\d+#.*
QUEUE:
Readings:
2017-03-18 11:23:13 ccconf freq:433.920MHz bWidth:650KHz rAmpl:42dB sens:4dB (DataRate:5603.79Baud)
2017-03-03 22:11:32 ccreg C3E = 00 84 00 00 00 00 00 00
2017-03-03 22:37:25 config MS=1;MU=1;MC=1
2017-05-08 14:59:58 ping OK
2017-03-13 21:47:29 raw ccFactoryReset done
2017-05-08 20:17:58 state opened
2017-05-08 16:43:30 version V 3.3.1-dev SIGNALduino cc1101 - compiled at Mar 10 2017 22:54:50
XMIT_TIME:
1494263571
Getcmd:
Keepalive:
ok 0
retry 0
mcIdList:
10
11
12
18
43
47
52
57
58
msIdList:
0
1
13
14
15
17
2
22
23
25
3
32
33
35
38
4
41
51
55
6
7
muIdList:
13.1
16
20
21
24
26
27
28
29
30
31
34
36
37
39
40
44
44.1
45
46
48
49
5
50
56
59
60
61
62
63
64
8
83
9
Attributes:
alias SIGNALduino
devStateIcon Initialized:cul_usb@green:Open Open:cul_usb@red:Initialized
flashCommand avrdude -c arduino -b 57600 -P [PORT] -p atmega328p -vv -U flash:w:[HEXFILE] 2>[LOGFILE]
group Haus
hardware nanoCC1101
verbose 2