IT Dose per Notify von PIR schalten geht nicht !?

Begonnen von gemx, 09 Dezember 2013, 11:03:26

Vorheriges Thema - Nächstes Thema

gemx

Hallo zusammen,

jetzt dachte ich kapiere so langsam, wie das alles in fhem funktioniert, aber so ganz steige ich doch nicht durch.
Ich habe einen Intertechno Infrarotsender und 2 IT Steckdosen.
Der IR Sender steuert direkt eine Steckdose was auch wunderbar funktioniert. Geht ja auch ohne FHEM.

Jetzt möchte ich, dass wenn der IR das ON sendet, eine weitere Dose einschalten. Das "warum" ist etwas umfangreicher, daher lasse ich es mal weg :-)

Habe folgendes definiert
define MotionTest notify Dose_D_1_3:on set Dose_D_1_1 on

Dose_D_1_3 wird direkt durch den IR Sender geschaltet und Dose_D_1_1 soll durch den notify geschaltet werden.

Das merkwürdige daran ist:
- wenn ich die Dose_D_1_1 direkt über FHEM schalte funktioniert es.
- der notify löst aus, sendet das über den CUL433 das Signal, aber die Lampe geht nicht an ???
- nach dem notify wird die Dose_D_1_1 tatsächlich auch in FHEM als ON angezeigt, obwohl aber eben nicht geschaltet wurde

Kurz gesagt: Direkt über FHEM schalten geht, per notify schalten geht nicht, in beiden Fällen zeigt FHEM an, dass die Dose geschaltet wurde ????

Dabei gibts im Log tatsächlich noch einen Unterschied.

Zur Info

i500014 => FF0000000FF0 => Dose_D_1_1 off
i500015 => FF0000000FFF => Dose_D_1_1 on

i501014  =>Dose_D_1_3 off
i501015 => Dose_D_1_3 on


So sieht es aus per Notify

2013.12.08 23:10:46 5: CUL/RAW: /i50101510


2013.12.08 23:10:46 5: CUL433: i501015 -66
2013.12.08 23:10:46 5: CUL433 dispatch i501015
2013.12.08 23:10:46 3: Dose_D_1_3 off->on
2013.12.08 23:10:46 5: Triggering Dose_D_1_3 (1 changes)
2013.12.08 23:10:46 5: Notify loop for Dose_D_1_3 on
2013.12.08 23:10:46 5: Triggering MotionTest
2013.12.08 23:10:46 5: Cmd: >set Dose_D_1_1 on<
2013.12.08 23:10:46 2: IT set Dose_D_1_1 on
2013.12.08 23:10:46 5: SW: isFF0000000FFF
2013.12.08 23:10:49 5: CUL/RAW (ReadAnswer): isFF0000000FFF

i50101510

i50101510

i50101510


2013.12.08 23:10:49 4: Answer from CUL433:   raw => isFF0000000FFFi50101510i50101510i50101510
2013.12.08 23:10:49 5: Triggering Dose_D_1_1 (1 changes)
2013.12.08 23:10:49 5: Notify loop for Dose_D_1_1 on
2013.12.08 23:10:49 4: eventTypes: IT Dose_D_1_1 on -> on
2013.12.08 23:10:49 4: eventTypes: IT Dose_D_1_3 on -> on


merkwürdig ist diese Zeile
2013.12.08 23:10:49 4: Answer from CUL433:   raw => isFF0000000FFFi50101510i50101510i50101510
Das sieht so aus, als hätte er die Befehle zusammengewürfelt. Also irgendwie den Befehl, den er selbst gesendet hat, mit den RAW Daten des Empfangs vom IR Sender oder so






gemx

Habe mal einen Delay eingebaut und nun funktioniert es.
Also
define MotionTest notify sleep 2.5; Dose_D_1_3:on set Dose_D_1_1 on

Ich musste mind. 2.5 nehmen, damit es immer sauber funktioniert.
Hat jemand eine Ahnung, warum der CUL das irgendwie zusammen packt?
Also wie gesagt, wenn die zwischen dem ON Befehl des IR Senders und dem Senden des ON Befehls durch den notify muss einfach ein kleiner Delay.

Jetzt ist die Frage: Bug oder Feature ;-)

Zudem habe ich mich echt schwer getan mit der Verkettung der Befehle. Ich bin Perl Neuling und nirgends konnte ich einen Hinweis darauf finden, dass ein Leerzeichen nach dem Semikolon folgen muss.
Ein gesonderter Hinweis darauf im Wiki oder der Commndref wäre toll :-)

Puschel74

Hallo,

ZitatEin gesonderter Hinweis darauf im Wiki oder der Commndref wäre toll :-)
Wo in der commandref?
Bitte einen Link.

Ich hab mal beispielhaft den sleep-Befehl ausgesucht und hier sieht man deutlich das zwischen Semikolon und nachfolgendem Zeichen ein Leerzeichen ist:

define a3 at +*00:05 set Windsensor 1w_measure;; sleep 2 quiet;; get Windsensor 1w_temp
http://fhem.de/commandref.html#sleep

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

gemx

Ja das stimmt. Man sieht es.
Allerdings komme ich aus der C++ bzw. C# Ecke und dort sind an diesen Stellen Leerzeichen irrelevant.
Hätte nicht damit gerechnet, dass es in Perl einen Unterschied macht.

Ich fänd daher einen kurzen Hinweis in der CommandRef unter "perl specials" ganz hilfreich.

Wenn ich aber der einzige bin, dem sich das nicht direkt erschliesst, muss das natürlich nicht in die Commandref ;-)