[Gelöst] Signalduino Intertechno Steckdosen Timing Frage

Begonnen von venice, 06 Oktober 2016, 20:58:48

Vorheriges Thema - Nächstes Thema

venice

Hallo zusammen,
ich versuche gerade mit dem Signalduino und einem Intertechno Sender über FHEM ein paar Intertechno Steckdosen zu schalten.
Dazu habe ich den Steckdosen eigene Unit Codes angelernt um sie vom Sender zu trennen.
Ein Problem dazu hatte hier https://forum.fhem.de/index.php/topic,58468.0.html schon beschrieben (vielleicht die falsche Rubrik?).
Die Steckdosen habe ich von Hand erzeugt, die Schalter wurden über Autocreate erzeugt.
Alle Komponenten funktionierten für sich gesehen einwandfrei.

Wenn ich nun über die Fernbedienungs-Schalter und notify eine Steckdose schalte klappt das meistens nicht.
Setze ich beim notify ein "sleep 1;" zwischen <REGEXP> und <command> funktionierts.

Ein ähnliches Problem habe ich wenn ich über die Fernbedienung 3 Steckdosen nacheinander mit
"set steckdose1 off;set steckdose2 off;set steckdose3 off" im "DEF" ausschalten möchte. Hier wird immer die Steckdose an der zweiten Stelle nicht ausgeschaltet.
Setzte ich auch hier ein "sleep 1;" zwischen die einzelnen Abschaltbefehle funktioniert das ganze.

Vielleicht hat je jemand eine Idee wie sich das "sleep 1" vermeiden lässt.

Viele Grüße & Danke
Lars


Sidey

Das Problem kommt mir bekannt vor..

Fernbedienung und Notify:

Die Fernbedienung sendet mehrmals das Signal. Wenn das Notify auslöst, solange der Sender noch sendet, dann wird der Signalduino angewiesen zu senden. Im Zweifelsfall sendet dann SIGNALduino und Fernbedienung gleichzeitig. Der Empfänger versteht dann nichts und reagiert nicht. Die Lösung mit dem sleep ist gut, was besseres fällt mir auf Anhieb jetzt auch nicht ein.

Beim Schalten von drei Dosen fällt mir auf Anhieb nicht ein, warum es nicht funktioniert. Das gibt drei Befehle an den SIGNALduino und diese werden mit einem kleinen delay übertragen. Das kann sich höchstens dann überlagern, wenn Du ITRepetitions auf einen hohen Wert gestellt hast.

Grüße Sidey
Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem,zigbee2mqtt

Maintainer von: SIGNALduino, fhem-docker, alexa-fhem-docker, fhempy-docker

venice

Hi Sidey, danke für Deine Antwort  :)

Zitat von: Sidey am 06 Oktober 2016, 21:18:59
Fernbedienung und Notify:
...Wenn das Notify auslöst, solange der Sender noch sendet, dann wird der Signalduino angewiesen zu senden. Im Zweifelsfall sendet dann SIGNALduino und Fernbedienung gleichzeitig.

Der Handsender und der Signalduino-Sender überschneiden sich also, verstanden.
Schickt FHEM eigentlich nochmal den empfangenen Code vom Sender raus? Das Sieht mir fast so aus.
Kann man das Schalter-Device nicht als reinen Empfänger definieren? Geht das?

Zitat von: Sidey am 06 Oktober 2016, 21:18:59
Beim Schalten von drei Dosen fällt mir auf Anhieb nicht ein, warum es nicht funktioniert. Das gibt drei Befehle an den SIGNALduino und diese werden mit einem kleinen delay übertragen. Das kann sich höchstens dann überlagern, wenn Du ITRepetitions auf einen hohen Wert gestellt hast.

An den Einstellungen hab ich bisher nichts geändert.
Ich hab testweise mal die Reihenfolge geändert, es ist immer der zweite Befehl der verschluckt wird.
Gibt es ein kürzeres Delay als "sleep 1" oder irgendwas was man bei den Devices selbst einstellen kann.
Was wäre dann ein hoher Wert für ITRepetition ?

Viele Grüße & Danke
Lars

P.S. Besteht die Hoffnung das andere Pins des Signalduino's Nano als I/O genutzt werden könnten.

Sidey

Zitat von: venice am 06 Oktober 2016, 21:50:06
Schickt FHEM eigentlich nochmal den empfangenen Code vom Sender raus? Das Sieht mir fast so aus.
Kann man das Schalter-Device nicht als reinen Empfänger definieren? Geht das?

Ich verstehe deine Frage nicht. Was ist das schalter Device und welchen Sender meinst Du? Du hast doch mehrere, so wie ich den Aufbau verstanden habe.

Zitat von: venice am 06 Oktober 2016, 21:50:06
Gibt es ein kürzeres Delay als "sleep 1" oder irgendwas was man bei den Devices selbst einstellen kann.
Da gibt es verschiedene Optionen.  sleep 0.25; wartet z.B. 250 Millisekunden.
Der SIGNALduino wartet derzeit 300ms bevor er das Folgende Kommando an den Arduino übermittelt. Außer es ist nur ein Kommando in der Warteschlange, dann wartet er nur 100ms. Vielleicht passt da was nicht ganz..
Kannst Du das mal mit Verbose 5 (sduino) und mseclog=1 (global) den Schaltvorgang der drei Befehle loggen?

Zitat von: venice am 06 Oktober 2016, 21:50:06
Was wäre dann ein hoher Wert für ITRepetition ?
20 vielleicht. Ich glaube 6 ist der Default. Das passt dann schon.

Zitat von: venice am 06 Oktober 2016, 21:50:06
P.S. Besteht die Hoffnung das andere Pins des Signalduino's Nano als I/O genutzt werden könnten.

Was genau willst Du machen? Etwas an die IO Pins anschließen? Gib mal ein Beispiel, dann kann ich das besser beantworten.
Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem,zigbee2mqtt

Maintainer von: SIGNALduino, fhem-docker, alexa-fhem-docker, fhempy-docker

venice

Zitat von: Sidey am 06 Oktober 2016, 22:50:01
Ich verstehe deine Frage nicht. Was ist das schalter Device und welchen Sender meinst Du? Du hast doch mehrere, so wie ich den Aufbau verstanden habe.

Ich versuche es mal zu beschreiben.
Die Rheinfolge des Signals das am Ende die Steckdose schalten soll wäre, wenn ich richtig liege, wie folgt:
1) Taster der Intertechno Fernbedienung
2) Signalduino als Empfänger
3) Das Empfangs-Device (Schalter) in FHEM, Autocreated
4) FHEM "notify"
5) Die Sende-Device (Steckdose) in FHEM, manuell in FHEM angelegt
6) Signalduino als Sender
7) Die Intertechno Steckdose selbst

Ich meine gesehen zu haben das das Empfangs Device (Nr. 3) auch über den Signalduino was sendet sobald es geschaltet wurde was theoretisch in diesem speziellen Anwendungsfall gar nicht sein müsste. Also Quasi ein Read-Only Device  :)

Zitat von: Sidey am 06 Oktober 2016, 22:50:01
Was genau willst Du machen? Etwas an die IO Pins anschließen? Gib mal ein Beispiel, dann kann ich das besser beantworten.
Ja genau. Ein Relais, oder auch ein Taster oder was analoges direkt.

Ich denke aber der Signalduino hat genug zu tun oder, war auch nur ne Idee.

Danke
Lars

Sidey

Also an 3) sollte nichts ohne Kommando gesendet werden.
4) kann auch die Sendefunktion aus 5) übernehmen.

Wenn ich dich richtig verstehe, dann klappt irgendwas ab 5) nicht.
Am besten den Vorgang mal loggen, dann wird es einfacher zu analysieren und die IT Geräten auch mit Verbose 5 realisieren.

Das mit den Pins ist halt so eine Sache.
Da hat jeder individuelle Anforderungen. Was relativ leicht machbar wäre, im Arduino Code einen Platz für individuelle Anpassungen zur Verfügung zu stellen.
Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem,zigbee2mqtt

Maintainer von: SIGNALduino, fhem-docker, alexa-fhem-docker, fhempy-docker

venice

#6
...ist alles Ok und funktioniert auch mit sleep.
3) wird ja von der IT Fernbedienung ausgelöst.

Ich wollte nur herausbekommen ob man 3) das senden abgewöhnen könnte um es als reines Empfangsgerät zu nutzen.
Ich schalte diesen Schalter ja über das Web oder über die IT-Fernbedienung.
Und über notify die Steckdose da müsste halt nichts gesendet werden weil nichts da ist was darauf reagiert.

Danke
Lars


Sidey

Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem,zigbee2mqtt

Maintainer von: SIGNALduino, fhem-docker, alexa-fhem-docker, fhempy-docker

venice

#8
Hi,
hier kommt der Trace der drei nacheinander ausgeschalteten Steckdosen.
Das IT Device "RemoteSwitchAll" wurde über das Web geschaltet.
Wie schon geschrieben wird die zweite Steckdose (ab Zeile 08) nicht ausgeschaltet.

ZitatAlso 3) sollte nichts automatisch senden.
Der Code 01001110101100000101101110100000 aus Zeile 18 entspricht dem des Schalters "RemoteSwitchAll", wird also doch gesendet.


01: 2016.10.07 18:40:38.719 2: sduino IT_set: RemoteSwitchAll off
02:
03: 2016.10.07 18:40:38.724 2: sduino IT_set: PowerPlug1 off
04: 2016.10.07 18:40:38.730 5: sduino/write: adding to queue sendMsg P17#01111000011101011011011110000000#R6
05: 2016.10.07 18:40:38.730 5: sduino: sendmsg Preparing rawsend command for protocol=17, repeats=6, clock=250 bits=01111000011101011011011110000000
06: 2016.10.07 18:40:38.731 4: sduino/set: sending via SendMsg: SR;R=6;P0=250;P1=-2500;P2=-1250;P3=-250;D=0103020203020302030203030203020302030202030203020303020203030202030203030202030203030202030203020302030302030203020302030203020302;
07:
08: 2016.10.07 18:40:38.732 2: sduino IT_set: PowerPlug2a off
09: 2016.10.07 18:40:38.737 5: sduino/write: adding to queue sendMsg P17#10000011101110111111110110000000#R6
10: 2016.10.07 18:40:38.738 5: sduino: sendmsg Preparing rawsend command for protocol=17, repeats=6, clock=250 bits=10000011101110111111110110000000
11: 2016.10.07 18:40:38.739 4: sduino/set: sending via SendMsg: SR;R=6;P0=250;P1=-2500;P2=-1250;P3=-250;D=0102030302030203020302030202030203020303020203020302030302020302030203020302030203020302030302020302030302030203020302030203020302;
12:
13: 2016.10.07 18:40:38.740 2: sduino IT_set: PowerPlug3 off
14: 2016.10.07 18:40:38.744 5: sduino/write: adding to queue sendMsg P17#01111000011101011011011110000010#R6
15: 2016.10.07 18:40:38.745 5: sduino: sendmsg Preparing rawsend command for protocol=17, repeats=6, clock=250 bits=01111000011101011011011110000010
16: 2016.10.07 18:40:38.746 4: sduino/set: sending via SendMsg: SR;R=6;P0=250;P1=-2500;P2=-1250;P3=-250;D=0103020203020302030203030203020302030202030203020303020203030202030203030202030203030202030203020302030302030203020302030202030302;
17:
18: 2016.10.07 18:40:38.750 5: sduino/write: adding to queue sendMsg P17#01001110101100000101101110100000#R6
19: 2016.10.07 18:40:38.750 5: sduino: sendmsg Preparing rawsend command for protocol=17, repeats=6, clock=250 bits=01001110101100000101101110100000
20: 2016.10.07 18:40:38.751 4: sduino/set: sending via SendMsg: SR;R=6;P0=250;P1=-2500;P2=-1250;P3=-250;D=0103020203030203020203020302030302020303020203020303020302030203020302020303020203020303020203020302030302020303020302030203020302;
21: 2016.10.07 18:40:38.832 5: sduino SW: SR;R=6;P0=250;P1=-2500;P2=-1250;P3=-250;D=0103020203020302030203030203020302030202030203020303020203030202030203030202030203030202030203020302030302030203020302030203020302;
22: 2016.10.07 18:40:39.144 5: sduino SW: SR;R=6;P0=250;P1=-2500;P2=-1250;P3=-250;D=0102030302030203020302030202030203020303020203020302030302020302030203020302030203020302030302020302030302030203020302030203020302;
23: 2016.10.07 18:40:39.298 4: sduino/msg READ: SR;R=6;P0=250;P1=-2500;P2=-1250;P3=-250;D=0103020203020302030203030203020302030202030203020303020203030202030203030202030203030202030203020302030302030203020302030203020302;
24: 2016.10.07 18:40:39.455 5: sduino SW: SR;R=6;P0=250;P1=-2500;P2=-1250;P3=-250;D=0103020203020302030203030203020302030202030203020303020203030202030203030202030203030202030203020302030302030203020302030202030302;
25: 2016.10.07 18:40:39.767 5: sduino SW: SR;R=6;P0=250;P1=-2500;P2=-1250;P3=-250;D=0103020203030203020203020302030302020303020203020303020302030203020302020303020203020303020203020302030302020303020302030203020302;
26: 2016.10.07 18:40:39.933 4: sduino/msg READ: SR;R=6;P0=250;P1=-2500;P2=-1250;P3=-250;D=010203030203020302030SR;R=6;P0=250;P1=-2500;P2=-1250;P3=-250;D=0103020203020302030203030203020302030202030203020303020203030202030203030202030203030202030203020302030302030203020302030202030302;
27: 2016.10.07 18:40:40.078 4: sduino/HandleWriteQueue: nothing to send, stopping timer
28:
29: PowerPlug2a manuell ausgeschaltet
30: 2016.10.07 18:40:45.664 2: sduino IT_set: PowerPlug2a off
31: 2016.10.07 18:40:45.669 5: sduino/write: adding to queue sendMsg P17#10000011101110111111110110000000#R6
32: 2016.10.07 18:40:45.670 5: sduino: sendmsg Preparing rawsend command for protocol=17, repeats=6, clock=250 bits=10000011101110111111110110000000
33: 2016.10.07 18:40:45.671 4: sduino/set: sending via SendMsg: SR;R=6;P0=250;P1=-2500;P2=-1250;P3=-250;D=0102030302030203020302030202030203020303020203020302030302020302030203020302030203020302030302020302030302030203020302030203020302;
34: 2016.10.07 18:40:45.772 5: sduino SW: SR;R=6;P0=250;P1=-2500;P2=-1250;P3=-250;D=0102030302030203020302030202030203020303020203020302030302020302030203020302030203020302030302020302030302030203020302030203020302;
35: 2016.10.07 18:40:46.083 4: sduino/HandleWriteQueue: nothing to send, stopping timer
36: 2016.10.07 18:40:46.250 4: sduino/msg READ: SR;R=6;P0=250;P1=-2500;P2=-1250;P3=-250;D=010302020303020302020SR;R=6;P0=250;P1=-2500;P2=-1250;P3=-250;D=0102030302030203020302030202030203020303020203020302030302020302030203020302030203020302030302020302030302030203020302030203020302;



DeviceOverview
RemoteSwitchAll
Internals
00 0
DEF 01001110101100000101101110 1 0000
IODev sduino
LASTInputDev sduino
MSGCNT 3
NAME RemoteSwitchAll
NR 24
STATE off
TYPE IT
XMIT 0100111010110000010110111010000
XMITdimdown 00
XMITdimup 00
XMITon 1
sduino_DMSG i65A99A55669A995500
sduino_MSGCNT 3
sduino_RAWMSG MS;P0=-1368;P1=261;P2=-312;P4=-2814;D=141210101212101210101210121012121010121210101210121210121012101210121010121210101210121210101210121012121010121210121012101210121013;CP=1;SP=4;O;
sduino_TIME 2016-10-07 19:00:25


Lars

Sidey

okay ich habe es verstanden.

Da Du RemoteSwitchAll off gemacht hast, ist es aber ganz normal dass 0100111010110000010110111010000 gesendet wird.
Das steht ja auch im Attribut XMIT so drinen.

Ich muss mal überlegen, wie man das Senden des Nächsten Befehls so lange hinauszögert, bis der voran gegangene Befehl abgearbeitet wurde.
300 ms reichen da scheinbar nicht.


Grüße
Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem,zigbee2mqtt

Maintainer von: SIGNALduino, fhem-docker, alexa-fhem-docker, fhempy-docker

venice

Hi,
Zitat von: Sidey am 07 Oktober 2016, 22:53:48
Da Du RemoteSwitchAll off gemacht hast, ist es aber ganz normal dass 0100111010110000010110111010000 gesendet wird.
Das steht ja auch im Attribut XMIT so drinen.
Kann man das irgendwie unterdrücken, z.B. mit dem löschen des Attributs oder funktioniert der Empfang dann auch nicht mehr ?

Zitat von: Sidey am 07 Oktober 2016, 22:53:48
Ich muss mal überlegen, wie man das Senden des Nächsten Befehls so lange hinauszögert, bis der voran gegangene Befehl abgearbeitet wurde.
Danke dafür...

Lars

P.S. Vielleicht kannst Du Dir bei Gelegenheit mal diesen Post https://forum.fhem.de/index.php/topic,58468.0.html von mir anschauen.
Da geht es darum das bei mir  Intertchno Steckdosen mit Unit Codes 0001 über den Signalduino nicht geschaltet werden. Schon mal bemerkt ?
Ich denke ich hab's im falschen Forum gepostet.

RappaSan

Dieses Phänomen hab ich hier auch, wenn mehrere IT-Steckdosen durch ein Ereignis geschaltet werden (at, notify usw.). Bei mir wird dann nur die erste Steckdose geschaltet, die zweite nicht. mit einem "sleep 1.5" dazwischen funktioniert es (meistens).

In der älteren Version Signalduino aus dieser Zeit:

https://forum.fhem.de/index.php/topic,38831.msg493024.html#msg493024

hatte ich das Problem noch nicht und mußte kein "sleep x" dazwischensetzen.
Vielleicht hilft's ja beim error trapping...

Ralf9

Besteht dieses Problem mit der aktuellen Version immer noch?

update all https://raw.githubusercontent.com/RFD-FHEM/RFFHEM/dev-r33/controls_signalduino.txt

Gruß Ralf
FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7

venice

Zitat von: Ralf9 am 10 Oktober 2016, 11:45:59
Besteht dieses Problem mit der aktuellen Version immer noch?

Ich bin auf der aktuellen Signalduino Version 3.3.0.

Lars

Sidey

Ralf hat gestern eine Änderung gemacht, die bekommst Du, mit dem Update Befehl aus seinem Beitrag.

Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem,zigbee2mqtt

Maintainer von: SIGNALduino, fhem-docker, alexa-fhem-docker, fhempy-docker