FHEM Forum

FHEM - Hausautomations-Systeme => Sonstige Systeme => Thema gestartet von: Ralf9 am 01 August 2020, 14:33:35

Titel: SIGNALduino: Verzögerung, wenn mehrere Rolläden gleichzeitig gesteuert werden
Beitrag von: Ralf9 am 01 August 2020, 14:33:35
Zitat von: meier81 am 30 Juli 2020, 08:42:08
Hey und guten Morgen,

hab mal ne Frage bezüglich dem SIGNALduino V4. Ich nutze zur Zeit in meinem Produktivsystem noch einen SIGNALduino mit einem Arduino nano, FW-Version V 3.3.2.1-rc9, SW-Version v3.4.4.

Ich steuere hier meine Jarolift-Rollläden über den SIGNALduino mittels Rollo-Modul und AutoShuttersControl. Jetzt ist mir aufgefallen das meine Rollläden nicht ganz in die Beschattungsstellung fahren, was sich auf die Fahrzeit zurückführen lässt. Das Rollo-Modul gibt die Anweisung zum fahren des Rollos und startet den Timer für die Fahrzeit, mein Rollladen fährt aber erst evtl. 2 Sekunden später los, was natürlich für den Stand des Rollladens schon falsch ist.

Das ASC-Modul setzt bei mir 7 Rollläden gleichzeitig auf "Beschattung", dieses gibt die Fahrbefehle an das Rollo-Modul weiter, das verarbeitet diese auch zeitgleich und gibt sie an den SIGNALduino weiter, diese kommen laut Log auch zeitgleich an:

2020.07.29 08:44:54 3: SIGNALduino: JaroLift set down 10
2020.07.29 08:44:55 3: SIGNALduino: JaroLift set down 9
2020.07.29 08:44:55 3: SIGNALduino: JaroLift set down 8
2020.07.29 08:44:55 3: SIGNALduino: JaroLift set down 5
2020.07.29 08:44:55 3: SIGNALduino: JaroLift set down 6
2020.07.29 08:44:55 3: SIGNALduino: JaroLift set down 7
2020.07.29 08:44:55 3: SIGNALduino: JaroLift set down 3


Kann das sein das der SIGNALduino da eine Schleife für die Befehle eingebaut hat, z.B. Abarbeitung alle Sekunde oder so? Oder kann das am Arduino selbst liegen das dieser so langsam ist?

Hab mir vor einiger Zeit mal einen MapleCUL zusammen gebaut mit einem Maple Mini, müsste mal die FW aktualisieren und den testen, vielleicht könnt ihr mir aber im Vorfeld schon einmal was dazu sagen.

Gruß und mercy

Markus


Zitat von: Ralf9 am 01 August 2020, 00:16:21
In der firmware wird sofort gesendet, sobald das Sendekommando komplett empfangen wurde.

Im 00_SIGNALduino Modul werden die gleichzeitigen Sendebefehle in einer  SendQueue gepuffert und nacheinander gesendet, der nächste Sendebefehl wird erst gesendet, wenn von der firmware die Rückmeldung kommt das der Sendebefehl gesendet wurde, beim offiziellen Modul von Sidey ist dabei eine Verzögerung von 0.1 Sek eingebaut.

Wie sieht es aus, wenn nur an einen Rolladen ein Befehl gesendet wird? Da dürfte es keine Verzögerung geben.

Gruß Ralf



Zitat von: meier81 am 01 August 2020, 11:10:15
Hallo Ralf,

ja bei Einzelbedienung wir sofort gesendet, ohne wirklich merkbare Verzögerung (evtl. max. 0,1 Sek. vom drücken des Buttons auf der Oberfläche bis dann wirklich der Rollladen fährt).

Ich merke aber auch wenn ich abends bzw. morgens die Rollläden eines Zimmers (2 Rolläden) über das ASC-Modul mittels roommate hoch- bzw. runterfahre das dort auch schon eine Verzögerung (werde die Zeit heute mal messen, geführt so fast ne Sekunde) vorhanden ist.

Markus
Titel: Antw:SIGNALduino: Verzögerung, wenn mehrere Rolläden gleichzeitig gesteuert werden
Beitrag von: Ralf9 am 01 August 2020, 14:38:36
Hallo Markus,

ich habe bei mir mal 2 ITv1 Steckdosen gleichzeitig geschaltet:

set IT_1527xe0fec on; set IT_F00000000F_ITV1 on


Im log bei meinem angepassten 00_SIGNALduino Modul sieht es dann so aus, müsste beim offiziellen Modul von Sidey ähnlich aussehen
2020.08.01 12:38:56.376 3 : sduino IT_set: IT_1527xe0fec on
2020.08.01 12:38:56.378 3 : sduino IT_set: IT_F00000000F_ITV1 on
die beiden Sendebefehle werden in die Sendewarteschlange geschrieben
2020.08.01 12:38:56.378 4 : sduino/set: sending via SendMsg: SR;R=10;P0=250;P1=-7750;P2=750;P3=-250;P4=-750;D=...
2020.08.01 12:38:56.381 4 : sduino/set: sending via SendMsg: SR;R=6;P0=400;P1=-12400;P2=1200;P3=-400;P4=-1200;D=...

2020.08.01 12:38:56.929 4 : sduino SendrawFromQueue: msg=SR;R=10;P0=250;P1=-7750;P2=750;P3=-250;P4=-750;D=...
Antwort von der Firmware, daß gesendet wurde
2020.08.01 12:38:57.281 4 : sduino/msg READ: SR;R=10;P0=250;P1=-7750;P2=750;P3=-250;P4=-750;D=...
2020.08.01 12:38:57.281 4 : sduino/read sendraw answer: SR;R=10;P0=250;P1=-7750;P2=750;P3=-250;P4=-750;D=...

2020.08.01 12:38:57.294 4 : sduino SendrawFromQueue: msg=SR;R=6;P0=400;P1=-12400;P2=1200;P3=-400;P4=-1200;D=...
Antwort von der Firmware, daß gesendet wurde
2020.08.01 12:38:57.631 4 : sduino/msg READ: SR;R=6;P0=400;P1=-12400;P2=1200;P3=-400;P4=-1200;D=...
2020.08.01 12:38:57.632 4 : sduino/read sendraw answer: SR;R=6;P0=400;P1=-12400;P2=1200;P3=-400;P4=-1200;D=...


Interessant wäre ein log mit verbose 4, wenn die 7 Rolläden in die Beschattung fahren.

Gruß Ralf
Titel: Antw:SIGNALduino: Verzögerung, wenn mehrere Rolläden gleichzeitig gesteuert werden
Beitrag von: meier81 am 01 August 2020, 22:56:11
Hallo Ralf,

werde ich morgen mal durchführen und mich dann wieder melden. Das Umstellen auf verbose 4 mache ich global oder reicht das SIGNALduino Modul?

Hab eben bei deinem Log gesehen du hast bei dir im Log noch die Millisekunden stehen, wo kann man das denn umstellen?

Gruß

Markus
Titel: Antw:SIGNALduino: Verzögerung, wenn mehrere Rolläden gleichzeitig gesteuert werden
Beitrag von: Ralf9 am 01 August 2020, 23:10:54
unter global gibt es das Attribut "mseclog"
Wenn dieses Attribut gesetzt ist, enthalten Datums/Zeiteinträge (timestamp) in der Logdatei einen Millisekunden-Eintrag.

Das Umstellen auf verbose 4 reicht beim SIGNALduino Modul

Gruß Ralf
Titel: Antw:SIGNALduino: Verzögerung, wenn mehrere Rolläden gleichzeitig gesteuert werden
Beitrag von: meier81 am 02 August 2020, 22:43:57
Dann schon mal mercy für die Info.

Muss morgen mal schauen, kam heute leider nicht dazu.

Gruß Markus
Titel: Antw:SIGNALduino: Verzögerung, wenn mehrere Rolläden gleichzeitig gesteuert werden
Beitrag von: meier81 am 03 August 2020, 14:36:04
So, hab mal ein Log mit verbose 4 vom SIGNALduino Modul erstellt, habe wie im Log zusehen 2 Rollläden eines Raumes gleichzeitig runter- und dann hochgefahren. Kann aber nur im Millisekundenbereich einen Versatz erkennen.
Habe versucht den Versatz der Rollläden mal zu stoppen, da liege ich bei ca. 1,7 Sekunden.

Hier der Log:

2020.08.03 14:19:25.076 4: SIGNALduino: Set_sendMsg, sending : SR;R=5;P0=1520;P1=-400;P2=400;P3=-4000;P4=-800;P5=800;P6=-16000;D=01212121212121212121212121235151515151515151245124245151512424512451512451512451245151512424245124515151515151515151245151515124245151512424242451245124515151515151515151516;
2020.08.03 14:19:25.077 3: SIGNALduino: JaroLift set down 6
2020.08.03 14:19:25.157 4: SIGNALduino: Set_sendMsg, sending : SR;R=5;P0=1520;P1=-400;P2=400;P3=-4000;P4=-800;P5=800;P6=-16000;D=01212121212121212121212121232424512451245151512451245151242451245151512451242424515124242424512424515151515151515151245151515124245151512424242451245124515151515151515151516;
2020.08.03 14:19:25.158 3: SIGNALduino: JaroLift set down 7
2020.08.03 14:19:25.190 4: SIGNALduino: HandleWriteQueue, called
2020.08.03 14:19:25.191 4: SIGNALduino: SendFromQueue, called
2020.08.03 14:19:25.202 4: SIGNALduino: SendFromQueue, msg=SR;R=5;P0=1520;P1=-400;P2=400;P3=-4000;P4=-800;P5=800;P6=-16000;D=01212121212121212121212121235151515151515151245124245151512424512451512451512451245151512424245124515151515151515151245151515124245151512424242451245124515151515151515151516;
2020.08.03 14:19:25.877 4: SIGNALduino: Read, msg: SR;R=5;P0=1520;P1=-400;P2=400;P3=-4000;P4=-800;P5=800;P6=-16000;D=01212121212121212121212121235151515151515151245124245151512424512451512451512451245151512424245124515151515151515151245151515124245151512424242451245124515151515151515151516;
2020.08.03 14:19:25.878 4: SIGNALduino: CheckSendrawResponse, sendraw answer: SR;R=5;P0=1520;P1=-400;P2=400;P3=-4000;P4=-800;P5=800;P6=-16000;D=01212121212121212121212121235151515151515151245124245151512424512451512451512451245151512424245124515151515151515151245151515124245151512424242451245124515151515151515151516;
2020.08.03 14:19:27.203 4: SIGNALduino: HandleWriteQueue, called
2020.08.03 14:19:27.203 4: SIGNALduino: SendFromQueue, called
2020.08.03 14:19:27.213 4: SIGNALduino: SendFromQueue, msg=SR;R=5;P0=1520;P1=-400;P2=400;P3=-4000;P4=-800;P5=800;P6=-16000;D=01212121212121212121212121232424512451245151512451245151242451245151512451242424515124242424512424515151515151515151245151515124245151512424242451245124515151515151515151516;
2020.08.03 14:19:27.890 4: SIGNALduino: Read, msg: SR;R=5;P0=1520;P1=-400;P2=400;P3=-4000;P4=-800;P5=800;P6=-16000;D=01212121212121212121212121232424512451245151512451245151242451245151512451242424515124242424512424515151515151515151245151515124245151512424242451245124515151515151515151516;
2020.08.03 14:19:27.891 4: SIGNALduino: CheckSendrawResponse, sendraw answer: SR;R=5;P0=1520;P1=-400;P2=400;P3=-4000;P4=-800;P5=800;P6=-16000;D=01212121212121212121212121232424512451245151512451245151242451245151512451242424515124242424512424515151515151515151245151515124245151512424242451245124515151515151515151516;
2020.08.03 14:19:29.215 4: SIGNALduino: HandleWriteQueue, called
2020.08.03 14:19:29.215 4: SIGNALduino: HandleWriteQueue, nothing to send, stopping timer
2020.08.03 14:19:40.125 4: SIGNALduino: Read, msg READredu: MU;P0=-29694;P1=541;P2=-1035;P3=1348;CP=1;R=30;D=0123232121212323212321232321232121212323212321212323;e;w=0;
2020.08.03 14:19:40.127 4: SIGNALduino: Parse_MU, Fingerprint for MU protocol id 8 -> TX3 Protocol matches, trying to demodulate
2020.08.03 14:19:40.128 4: SIGNALduino: Read, msg READredu: MU;P0=-29694;P1=541;P2=-1035;P3=1348;CP=1;R=30;D=0323232321232123232323232121232121232123232121212323212321232321232121212323212321212323;e;w=1;
2020.08.03 14:19:40.129 4: SIGNALduino: Parse_MU, Fingerprint for MU protocol id 8 -> TX3 Protocol matches, trying to demodulate
2020.08.03 14:19:40.130 4: SIGNALduino: Read, msg READredu: MU;P0=-29694;P1=541;P2=-1035;P3=1348;CP=1;R=30;D=0323232321232123232323232121232121232123232121212323212321232321232121212323212321212323;e;
2020.08.03 14:19:40.132 4: SIGNALduino: Parse_MU, Fingerprint for MU protocol id 8 -> TX3 Protocol matches, trying to demodulate
2020.08.03 14:19:40.616 4: SIGNALduino: Read, msg READredu: MU;P0=-11896;P1=1322;P2=-1063;P3=519;P4=-28570;CP=3;R=30;D=0121212123212321232323212323212323212323212321232321212121212121212321232321212123212321;O;w=0;
2020.08.03 14:19:40.617 4: SIGNALduino: Parse_MU, Fingerprint for MU protocol id 8 -> TX3 Protocol matches, trying to demodulate
2020.08.03 14:19:40.618 4: SIGNALduino: Parse_MU, Decoded matched MU protocol id 8 dmsg TXAEDB58058A length 44 dispatch(1/4) RSSI = -59
2020.08.03 14:19:40.673 4: SIGNALduino: Read, msg READredu: MU;P1=1319;P2=-1060;P3=522;P4=-28570;CP=3;R=30;D=4121212123212321232323212323212323212323212321232321212121212121212321232321212123212321;e;w=1;
2020.08.03 14:19:40.674 4: SIGNALduino: Parse_MU, Fingerprint for MU protocol id 8 -> TX3 Protocol matches, trying to demodulate
2020.08.03 14:19:40.675 4: SIGNALduino: Parse_MU, Decoded matched MU protocol id 8 dmsg TXAEDB58058A length 44 dispatch(1/4) RSSI = -59
2020.08.03 14:19:40.675 4: SIGNALduino: Dispatch, TXAEDB58058A, Dropped due to short time or equal msg
2020.08.03 14:19:40.676 4: SIGNALduino: Read, msg READredu: MU;P1=1319;P2=-1060;P3=522;P4=-28570;CP=3;R=30;D=4121212123212321232323212323212323212323212321232321212121212121212321232321212123212321;e;
2020.08.03 14:19:40.677 4: SIGNALduino: Parse_MU, Fingerprint for MU protocol id 8 -> TX3 Protocol matches, trying to demodulate
2020.08.03 14:19:40.677 4: SIGNALduino: Parse_MU, Decoded matched MU protocol id 8 dmsg TXAEDB58058A length 44 dispatch(1/4) RSSI = -59
2020.08.03 14:19:40.678 4: SIGNALduino: Dispatch, TXAEDB58058A, Dropped due to short time or equal msg
2020.08.03 14:19:41.194 4: SIGNALduino: Read, msg READredu: MS;P0=744;P1=541;P2=-4104;P3=-1886;P4=-16044;P5=986;P6=-1023;P7=-7914;D=17121212121313131213121213131313121312121312131313131312121312131313131313131313021456565656;CP=1;SP=7;R=220;O;b=144;m0;
2020.08.03 14:19:41.614 4: SIGNALduino: Read, msg READredu: MS;P0=-16038;P1=974;P2=-1036;P3=560;P4=-7922;P5=-4115;P6=-1904;D=34353535353636363536353536363636353635353635363636363635353635363636363636363636353012121212;CP=3;SP=4;R=219;e;b=9;s=1;m0;
2020.08.03 14:19:41.616 4: SIGNALduino: Read, msg READredu: MS;P3=560;P4=-7922;P5=-4115;P6=-1904;D=34353535353636363536353536363636353635353635363636363635353635363636363636363636353;CP=3;SP=4;R=219;e;m1;
2020.08.03 14:19:47.167 4: SIGNALduino: KeepAlive, ok, retry = 0
2020.08.03 14:20:25.349 4: SIGNALduino: Set_sendMsg, sending : SR;R=5;P0=1520;P1=-400;P2=400;P3=-4000;P4=-800;P5=800;P6=-16000;D=01212121212121212121212121232424515151242451242451515124245124515151515124245124515124512451245124515151515151515151245151515124245151512424242451245151512451515151515151516;
2020.08.03 14:20:25.350 3: SIGNALduino: JaroLift set up 6
2020.08.03 14:20:25.444 4: SIGNALduino: Set_sendMsg, sending : SR;R=5;P0=1520;P1=-400;P2=400;P3=-4000;P4=-800;P5=800;P6=-16000;D=01212121212121212121212121232451515151242451512451512451512451242424512451515124515124245151512424515151515151515151245151515124245151512424242451245151512451515151515151516;
2020.08.03 14:20:25.444 3: SIGNALduino: JaroLift set up 7
2020.08.03 14:20:25.497 4: SIGNALduino: HandleWriteQueue, called
2020.08.03 14:20:25.497 4: SIGNALduino: SendFromQueue, called
2020.08.03 14:20:25.508 4: SIGNALduino: SendFromQueue, msg=SR;R=5;P0=1520;P1=-400;P2=400;P3=-4000;P4=-800;P5=800;P6=-16000;D=01212121212121212121212121232424515151242451242451515124245124515151515124245124515124512451245124515151515151515151245151515124245151512424242451245151512451515151515151516;
2020.08.03 14:20:26.192 4: SIGNALduino: Read, msg: SR;R=5;P0=1520;P1=-400;P2=400;P3=-4000;P4=-800;P5=800;P6=-16000;D=01212121212121212121212121232424515151242451242451515124245124515151515124245124515124512451245124515151515151515151245151515124245151512424242451245151512451515151515151516;
2020.08.03 14:20:26.193 4: SIGNALduino: CheckSendrawResponse, sendraw answer: SR;R=5;P0=1520;P1=-400;P2=400;P3=-4000;P4=-800;P5=800;P6=-16000;D=01212121212121212121212121232424515151242451242451515124245124515151515124245124515124512451245124515151515151515151245151515124245151512424242451245151512451515151515151516;
2020.08.03 14:20:27.509 4: SIGNALduino: HandleWriteQueue, called
2020.08.03 14:20:27.509 4: SIGNALduino: SendFromQueue, called
2020.08.03 14:20:27.520 4: SIGNALduino: SendFromQueue, msg=SR;R=5;P0=1520;P1=-400;P2=400;P3=-4000;P4=-800;P5=800;P6=-16000;D=01212121212121212121212121232451515151242451512451512451512451242424512451515124515124245151512424515151515151515151245151515124245151512424242451245151512451515151515151516;
2020.08.03 14:20:28.212 4: SIGNALduino: Read, msg: SR;R=5;P0=1520;P1=-400;P2=400;P3=-4000;P4=-800;P5=800;P6=-16000;D=01212121212121212121212121232451515151242451512451512451512451242424512451515124515124245151512424515151515151515151245151515124245151512424242451245151512451515151515151516;
2020.08.03 14:20:28.216 4: SIGNALduino: CheckSendrawResponse, sendraw answer: SR;R=5;P0=1520;P1=-400;P2=400;P3=-4000;P4=-800;P5=800;P6=-16000;D=01212121212121212121212121232451515151242451512451512451512451242424512451515124515124245151512424515151515151515151245151515124245151512424242451245151512451515151515151516;
2020.08.03 14:20:29.521 4: SIGNALduino: HandleWriteQueue, called
2020.08.03 14:20:29.521 4: SIGNALduino: HandleWriteQueue, nothing to send, stopping timer


Gruß Markus
Titel: Antw:SIGNALduino: Verzögerung, wenn mehrere Rolläden gleichzeitig gesteuert werden
Beitrag von: meier81 am 03 August 2020, 15:14:46
Hab mir eben mal noch ein doif gebaut zum Rollladen fahren, einfach um direkt dasJarolift-Modul anzusprechen:

define Test DOIF ## runterfahren\
([16:00])\
   (set JaroLift down 1, set JaroLift down 2)\
## stoppen\
DOELSEIF ([16:01])\
   (set JaroLift stop 1, set JaroLift stop 2)\
## hochfahren\
DOELSEIF ([16:02])\
   (set JaroLift up 1, set JaroLift up 2)


Die Uhrzeit steht einfach nur so drin, hab es mit "set cmd" dann angesteuert und habe sogar die Repeats zur Sendewiederholung im Jarolift-Modul von meinen 5 auf 1 runtergestellt, das macht zeitlich schon einmal keinen Unterschied. Mehrmals gefahren und probiert, ich komme auf einen Versatz von ca. 2 Sekunden.

Was natürlich funktioniert ist der Gruppenbefehl vom Jarolift-Modul, wenn ich dort sage "set Jarolift down 1,2" dann sendet er den Befehl für beide Rollladen in einer Nachricht, dem entsprechend fahren beide Rolladen synchron los. Das kann ich aber schwer benutzen, ich habe ja für jeden Rollladen ein Rollo-Device und bekomme ja für jeden einzeln den Befehl zum fahren, da hätte ich keine Idee zum zusammenbauen eines Gruppenbefehls.
Titel: Antw:SIGNALduino: Verzögerung, wenn mehrere Rolläden gleichzeitig gesteuert werden
Beitrag von: Ralf9 am 04 August 2020, 00:29:18
Das Problem ist, daß beim offiziellen 00_SIGNALduino Modul ein Workaround drin ist, dieser ist für ein Bug in der Senderoutine bei einigen firmware Versionen von Sidey die älter als die V 3.4.0 sind.
https://github.com/RFD-FHEM/RFFHEM/issues/823
#RemoveInternalTimer("HandleWriteQueue:$name");
delete($hash->{ucCmd});
#SIGNALduino_HandleWriteQueue("x:$name"); # Todo #823 on github
InternalTimer(gettimeofday() + 0.1, \&SIGNALduino_HandleWriteQueue, "HandleWriteQueue:$name") if (scalar @{$hash->{QUEUE}} > 0 && InternalVal($name,"sendworking",0) == 0);


Da die "SIGNALduino_HandleWriteQueue" nicht mehr direkt aufgerufen wird, sondern über einen InternalTimer, gibt es eine merkliche Verzögerung

2020.08.03 14:19:25.202 4: SIGNALduino: SendFromQueue, msg=SR;R=5;P0=1520;P1=-400;P2=400;P3=-4000;P4=-800;P5=800;P6=-16000;D=01212121212121212121212121...
Antwort von der Firmware, daß gesendet wurde
2020.08.03 14:19:25.877 4: SIGNALduino: Read, msg: SR;R=5;P0=1520;P1=-400;P2=400;P3=-4000;P4=-800;P5=800;P6=-16000;D=01212121212...
2020.08.03 14:19:25.878 4: SIGNALduino: CheckSendrawResponse, sendraw answer: SR;R=5;P0=1520;P1=-400;P2=400;P3=-4000;P4=-800;P5=800;P6=-16000;D=0121212121212...

2020.08.03 14:19:27.203 4: SIGNALduino: HandleWriteQueue, called
2020.08.03 14:19:27.203 4: SIGNALduino: SendFromQueue, called
2020.08.03 14:19:27.213 4: SIGNALduino: SendFromQueue, msg=SR;R=5;P0=1520;P1=-400;P2=400;P3=-4000;P4=-800;P5=800;P6=-16000;D=012121212121


Bei meinem angepasstem 00_SIGNALduino Modul gibt es ohne den Workaround keine merkliche Verzögerung
2020.08.01 12:38:56.929 4 : sduino SendrawFromQueue: msg=SR;R=10;P0=250;P1=-7750;P2=750;P3=-250;P4=-750;D=...
Antwort von der Firmware, daß gesendet wurde
2020.08.01 12:38:57.281 4 : sduino/msg READ: SR;R=10;P0=250;P1=-7750;P2=750;P3=-250;P4=-750;D=...
2020.08.01 12:38:57.281 4 : sduino/read sendraw answer: SR;R=10;P0=250;P1=-7750;P2=750;P3=-250;P4=-750;D=...

2020.08.01 12:38:57.294 4 : sduino SendrawFromQueue: msg=SR;R=6;P0=400;P1=-12400;P2=1200;P3=-400;P4=-1200;D=...
Titel: Antw:SIGNALduino: Verzögerung, wenn mehrere Rolläden gleichzeitig gesteuert werden
Beitrag von: RappaSan am 04 August 2020, 08:36:17
Stimmt, die Verzögerung von ca. 1 Sekunde ist mir gestern Abend auch aufgefallen, als 3 Lampen im Wohnzimmer angeschaltet wurden. Alle mit Abstand hintereinander und nicht quasi gleichzeitig.
Titel: Antw:SIGNALduino: Verzögerung, wenn mehrere Rolläden gleichzeitig gesteuert werden
Beitrag von: meier81 am 04 August 2020, 09:38:07
Guten Morgen,

Zitat von: Ralf9 am 04 August 2020, 00:29:18
Bei meinem angepasstem 00_SIGNALduino Modul gibt es ohne den Workaround keine merkliche Verzögerung
2020.08.01 12:38:56.929 4 : sduino SendrawFromQueue: msg=SR;R=10;P0=250;P1=-7750;P2=750;P3=-250;P4=-750;D=...
Antwort von der Firmware, daß gesendet wurde
2020.08.01 12:38:57.281 4 : sduino/msg READ: SR;R=10;P0=250;P1=-7750;P2=750;P3=-250;P4=-750;D=...
2020.08.01 12:38:57.281 4 : sduino/read sendraw answer: SR;R=10;P0=250;P1=-7750;P2=750;P3=-250;P4=-750;D=...

2020.08.01 12:38:57.294 4 : sduino SendrawFromQueue: msg=SR;R=6;P0=400;P1=-12400;P2=1200;P3=-400;P4=-1200;D=...


Ralf ich gehe davon aus du meinst dein angepasstes Modul für das aktuelle SIGNALduino - Maple Mini - Projekt (das beobachte ich auch und habe die Hardware auch schon zum testen aufgebaut, verwende aber zu meiner Schande noch das "originale" SIGNALduino-Modul)

angepasstes 00_SIGNALduino Modul installieren (https://forum.fhem.de/index.php/topic,111653.msg1058900.html#msg1058900)

Falls ja kann ich das auch mit meinem bestehenden Aufbau, also beim SIGNALduino mit dem Arduino nano verwenden?

Ich muss halt doch mal meinen neuen Maple Mini "produktiv" schalten  :)

Gruß Markus
Titel: Antw:SIGNALduino: Verzögerung, wenn mehrere Rolläden gleichzeitig gesteuert werden
Beitrag von: Ralf9 am 04 August 2020, 09:46:27
ZitatFalls ja kann ich das auch mit meinem bestehenden Aufbau, also beim SIGNALduino mit dem Arduino nano verwenden?
ja, mein angepasstes 00_SIGNALduino Modul funktioniert mit allen meinen firmware Versionen und müsste auch mit Einschränkungen mit der firmware von Sidey funktionieren.

Gruß Ralf
Titel: Antw:SIGNALduino: Verzögerung, wenn mehrere Rolläden gleichzeitig gesteuert werden
Beitrag von: meier81 am 04 August 2020, 09:53:49
Hallo Ralf,

hab's eben mal installiert und gleich mal getestet, die Verzögerung ist deutlich weniger geworden, würde sagen liegt jetzt so im 0,2 - 0,3 Sekundenbereich (halt schlecht zu messen).

Danke dir auf jeden Fall mal für den Tipp, werde heute Mittag mal den Maple Mini in Betrieb nehmen und schauen ob ich da noch etwas "Performance" rausholen kann.

Gruß Markus
Titel: Antw:SIGNALduino: Verzögerung, wenn mehrere Rolläden gleichzeitig gesteuert werden
Beitrag von: Ralf9 am 04 August 2020, 16:35:39
Zitatund schauen ob ich da noch etwas "Performance" rausholen kann.
Mehr als ca 50-100 ms wird sich da wahrscheinlich nicht "rausholen" lassen.

Anstatt meinem angepassten 00_SIGNALduino Modul müsste es auch mit einem gepatchtem 00_SIGNALduino Modul vom normalen fhem update funktionieren

Dazu müssen bei diesen Zeilen bei 2 Zeilen das "#" am Anfang entfernt werden und die letzte Zeile durch ein "#" am Anfang auskommentiert werden
#RemoveInternalTimer("HandleWriteQueue:$name");
delete($hash->{ucCmd});
#SIGNALduino_HandleWriteQueue("x:$name"); # Todo #823 on github
InternalTimer(gettimeofday() + 0.1, \&SIGNALduino_HandleWriteQueue, "HandleWriteQueue:$name") if (scalar @{$hash->{QUEUE}} > 0 && InternalVal($name,"sendworking",0) == 0);


es müsste dann ungefähr so aussehen;
RemoveInternalTimer("HandleWriteQueue:$name");
delete($hash->{ucCmd});
SIGNALduino_HandleWriteQueue("x:$name"); # Todo #823 on github
#InternalTimer(gettimeofday() + 0.1, \&SIGNALduino_HandleWriteQueue, "HandleWriteQueue:$name") if (scalar @{$hash->{QUEUE}} > 0 && InternalVal($name,"sendworking",0) == 0);
Titel: Antw:SIGNALduino: Verzögerung, wenn mehrere Rolläden gleichzeitig gesteuert werden
Beitrag von: andies am 07 November 2020, 07:53:07
Ich lese hier mal mit, weil ich eine Frage habe.

Zuerst: ich habe momentan nicht die Zeit, auf Mapleduino umzusteigen, will das aber perspektivisch tun. Meine Sorge ist momentan nur, die rolling codes zu verlieren (hatte ich mal nach einem Absturz) und das dauerte ewig, bis ich die Rolladen wieder bedienen konnte.

Nun meine Frage. Ich schalte mehrere Rolladen hintereinander. An manchen Tagen (öfter morgens?!) wird dann, und zwar unabhängig davon ob ich das händisch mache oder per cmdalias-Befehl für alle auf einmal, der erste Rolladen nicht bewegt. Es ist immer der erste ,,angesprochene", unabhängig davon welcher der fünf Rolladen das nun ist. Sende ich danach noch einmal den Befehl an diesen Rolladen, bewegt sich der sich.

Ich bilde mir ein, dass es daran liegt, dass irgendwie der rolling code nicht richtig weitergegeben wird. Gestern abend stand er bei 006E, war aber offensichtlich nicht bewegt worden. Ich löse aus und lese 0070. Muss das nicht 006F sein?

Hat jemand eine Idee, woran das liegen könnte und wo ich weitermachen kann? Ausserdem könnten wir doch mal die Entwicklungen hier im Thread auch im Wiki zumindest beschreiben. Leider fehlt mir da momentan so etwas wie eine Kurzzusammenfassung, welche Probleme auch gelöst wurden und welche Risiken bestehen: Elektrolurch zB sagte nur kurz, seine RTS Motoren gehen jetzt nicht mehr - das sind die, die ich habe. Da klingeln bei mir natürlich alle Alarmglocken...
Titel: Antw:SIGNALduino: Verzögerung, wenn mehrere Rolläden gleichzeitig gesteuert werden
Beitrag von: Ralf9 am 07 November 2020, 09:51:16
Ist dies an dem sduino den Du über WLAN und ESP-link angebunden hast?
Titel: Antw:SIGNALduino: Verzögerung, wenn mehrere Rolläden gleichzeitig gesteuert werden
Beitrag von: andies am 07 November 2020, 12:13:19
Ja, genau. Vor dem Senden setze ich einen Ping Befehl ab und warte noch eine Sekunde.
Titel: Antw:SIGNALduino: Verzögerung, wenn mehrere Rolläden gleichzeitig gesteuert werden
Beitrag von: Ralf9 am 07 November 2020, 18:46:46
bitte mach mal vor dem bewegen des ersten Rolladens so oft ein "get sduino ping" bis ein ok zurückkommt.
Titel: Antw:SIGNALduino: Verzögerung, wenn mehrere Rolläden gleichzeitig gesteuert werden
Beitrag von: andies am 08 November 2020, 07:14:22
Das war der richtige Tipp: beim ersten ping kam kein ok.

Kann man das automatisieren? Und was ich nicht verstehe - der sduino empfängt die ganze Nacht Daten der Wetterstation?! Wieso ist anscheinend offline?
Titel: Antw:SIGNALduino: Verzögerung, wenn mehrere Rolläden gleichzeitig gesteuert werden
Beitrag von: Ralf9 am 08 November 2020, 09:47:22
hast Du die Möglichkeit zum sduino ein LAN Kabel zu legen?
Vom MapleSduino gibts auch eine LAN Version

Du kannst auch mal ESPEASY versuchen:
Zitat von: Rampler am 18 September 2020, 09:07:12
Ich habe ESPEASY / Letscontrolit statt ESPLINK am Start.
Funktioniert jetzt schon über ein Jahr ohne Probleme.
Hat den Vorteil, dass man gleich auch noch andere Sensoren an den ESP anschließen kann.
ZitatWeiß nicht, ob es bekannt ist: unter Tools - Advanced sollte das Serial Log Level auf -none- gesetzt werden. Ansonsten können Übertragungsprobleme wie z.B. verschluckte Zeichen auftreten.
Titel: Antw:SIGNALduino: Verzögerung, wenn mehrere Rolläden gleichzeitig gesteuert werden
Beitrag von: andies am 08 November 2020, 11:31:35
Leider nein, das ist im Rolladenkasten und weit weg vom nächsten LAN. Was ich nicht verstehe: Wieso "schläft" der sduino, wenn er doch empfängt?

Und noch eine Frage. Kann ich in fhem selbst die (fehlende) Rückmeldung von "get sduino ping" erfassen? Dann kann ich prüfen, nach welcher Zeit er sich schlafen legt und ihn einfach regelmäßig aufwachen lassen. Das würde mir reichen.

ESPEasy hatte ich auf dem Wemos und das funktionierte bei mir nicht. Es ist wirklich merkwürdig, dass wir hier im Forum mit scheinbaren identischen Geräten immer verschiedene Erfahrungen mit gleicher Software machen. ESPEasy war, das weiß ich noch, ein absoluter Nervenkrieg und dann bin ich zu esp-link gestoßen - bis auf das Ping seitdem ohne Probleme.
Titel: Antw:SIGNALduino: Verzögerung, wenn mehrere Rolläden gleichzeitig gesteuert werden
Beitrag von: Ralf9 am 08 November 2020, 15:28:41
ZitatKann ich in fhem selbst die (fehlende) Rückmeldung von "get sduino ping" erfassen?
Das ok vom ping wird in einem reading gespeichert. Das kannst Du dann mit ReadingsAge abfragen, oder das reading vor dem ping löschen

Titel: Antw:SIGNALduino: Verzögerung, wenn mehrere Rolläden gleichzeitig gesteuert werden
Beitrag von: andies am 11 November 2020, 05:53:15
Der Idee bin ich jetzt mal nachgegangen. Ich habe mir ein at und ein notify definiert

defmod sduino_at at +*06:00:00 {Log 1, "asking for sduino ping"};; get sduino ping;;

defmod sduino_notify notify sduino:ping:.* { ReadingsTimestamp("sduino","ping","") =~ /^(\d+)-(\d+)-(\d+)\s(\d+:\d+):(\d+)$/;;;; Log 1, "get sduino ping - Reading: ".$4;;}

und dann die Zeit oben verändert. Wenn alle vier Stunden gepingt wird, bleibt der sduino aktiv. Nach sechs Stunden (oder nachts?) kommt nichts zurück:
2020.11.10 20:27:08 1: asking for sduino ping
2020.11.10 20:27:08 1: get sduino ping - Reading: 20:27
2020.11.11 02:27:08 1: asking for sduino ping    <== keine Rückmeldung

Also werde ich ihn wohl alle vier Stunden mal aufwachen lassen müssen.
Titel: Antw:SIGNALduino: Verzögerung, wenn mehrere Rolläden gleichzeitig gesteuert werden
Beitrag von: andies am 12 November 2020, 06:59:51
Hmm, zu früh gefreut. Der Ping gegen sechs Uhr morgens ging durch
READINGS:
     2020-11-12 03:01:50   cc1101_config   Freq: 433.920 MHz, Bandwidth: 325 KHz, rAmpl: 42 dB, sens: 4 dB, DataRate: 5603.79 Baud
     2020-11-12 03:01:50   cc1101_config_ext Modulation: ASK/OOK, Syncmod: No preamble/sync
     2020-11-12 03:01:50   cc1101_patable  C3E = 00 C8 00 00 00 00 00 00  => 7_dBm
     2020-11-12 05:54:25   ping            OK
     2020-11-12 03:01:49   state           opened

bzw
...
2020.11.12 03:01:47 1: ESP-Signalduino.fritz.box:23 disconnected, waiting to reappear (sduino) <== Aha!
2020.11.12 03:01:47 1: sduino: DoInit, ESP-Signalduino.fritz.box:23  <== das ist nämlich der sduino
2020.11.12 03:01:47 1: ESP-Signalduino.fritz.box:23 reappeared (sduino) <== ohne Ping aufgewacht
...
2020.11.12 05:54:25 1: asking for sduino ping  <== Ping angefordert
2020.11.12 05:54:25 1: get sduino ping - Reading: 05:54  <== und erfolgreich abgeliefert

aber das Rollo eine Stunde später ging nicht hoch. 

Der Ping löst das Problem, das ist klar. Aber die Idee, regelmäßig zu pingen scheint nicht zu helfen.

Vielleicht sollte ich vor jedem Schalten einmal pingen und dann erst die Rollos bedienen? (Was geschieht eigentlich beim Ping genau? Mich wundert, dass der sduino überhaupt "einschläft" - denn er empfängt ja. Was unterscheidet diesen Ping vom Empfang einer, zum Beispiel, Wetterstation?)
Titel: Antw:SIGNALduino: Verzögerung, wenn mehrere Rolläden gleichzeitig gesteuert werden
Beitrag von: Ralf9 am 12 November 2020, 22:44:06
Zitat2020.11.12 03:01:47 1: ESP-Signalduino.fritz.box:23 disconnected, waiting to reappear (sduino) <== Aha!
2020.11.12 03:01:47 1: sduino: DoInit, ESP-Signalduino.fritz.box:23  <== das ist nämlich der sduino
2020.11.12 03:01:47 1: ESP-Signalduino.fritz.box:23 reappeared (sduino) <== ohne Ping aufgewacht
Es sieht eher so aus, daß die Verbindung zum ESP einseitig einschläft.

Beim ping wird ein P zum sduino gesendet, beim Empfang  z.B. Beispiel der Wetterstation wird nichts gesendet.