Hallo,
die Suche hat mir nicht weiter geholfen.
Das Problem ist: Ich schalte diverse Funksteckdosen mit rc-switch. Nicht immer kommen die Funksignale sofort bei den Steckdosen an. Erst wenn ich das Signal ein zweites oder drittes mal absende. Wie kann ich in FHEM oder in der send.cpp bewirken das bei jedem mal senden das Signal sofort 5 mal gesendet wird?
Vielen Dank schon mal für jede Antwort!
Hallo,
schau mal in die Commandref bei "at" - ich meine, da wäre ein Beispiel für Licht an-aus-an also Blinken. Das könntest Du doch nehmen um den Befehl zu wiederholen.
Gruß Christoph
Hallo, danke für die schnelle Antwort.
Das hilft mir leider nicht. Ich habe einen Schalter über das Webfrontend. Dort muss ich den Schalter immer ein paar mal betätigen damit die Lampe angeht. Das tut sie auch aber nicht immer beim ersten mal. Der at Befehl hilft mir da nicht weiter. Ich muss das so haben das jedes mal beim betätigen des Schalter das Funksignal ein paar mal gesendet wird.
Ich hab vor ein paar Tagen etwas im Netz gefunden, da wurde etwas direkt in der send.cpp oder einer anderen Datei, ich weiß leider nicht mehr welche, etwas geändert wird.
Ich finde das aber nicht wieder.
Hallo,
also etwas ausfürlicher
# Blink 3 times if the piri sends a command
define n1 notify Dummy:on.* define a8 at +*{3}00:00:01 set lamp on
Das ganze müsstest Du dann über eine Dummy auslösen - sonst wäre das ja eine Endlosschleife. On WebIf erkannt, dreimal wiederholt und jede Wiederholung wird wieder als On erkannt - irgendwann kommt fhem dann nicht mehr nach.
Wo findet man den die Send.cpp ? Worüber sendest Du denn ? Kann man die Antenne bzw. die Funkstrecke verbessern (andere Position, aus dem Gehäuse herausführen)?
Gruß Christoph
ups sorry... das habe ich ja ganz vergessen. Ich sende mit Rcswitch-pi
Hallo,
dann baue doch um das senden in der Send.ccp eine "while" Schleife, die bis 5 zählt. Eventuell nach eine kleine Pause zwischen den Sendeintervallen.
Gruß Christoph
Zitat von: Bennemannc am 17 Dezember 2014, 17:16:36
Hallo,
dann baue doch um das senden in der Send.ccp eine "while" Schleife, die bis 5 zählt. Eventuell nach eine kleine Pause zwischen den Sendeintervallen.
Gruß Christoph
Ja, noch einfacher geht's mit einer kurzen Pause und dann dem erneuten Ausführen des Befehls.
Beispiel aus der send.cpp für Steckdosentyp A:
switch(command) {
case 1:
if (strlen(sSwitch) > 2) {
mySwitch.switchOn(sGroup, sSwitch);
sleep(1); //eine Sekunde warten, danach Befehl erneut ausfuehren
mySwitch.switchOn(sGroup, sSwitch);
} else {
mySwitch.switchOn(sGroup, nSwitchNumber);
sleep(1); //eine Sekunde warten, danach Befehl erneut ausfuehren
mySwitch.switchOn(sGroup, nSwitchNumber);
}
break;
case 0:
if (strlen(sSwitch) > 2) {
mySwitch.switchOff(sGroup, sSwitch);
sleep(1); //eine Sekunde warten, danach Befehl erneut ausfuehren
mySwitch.switchOff(sGroup, sSwitch);
} else {
mySwitch.switchOff(sGroup, nSwitchNumber);
sleep(1); //eine Sekunde warten, danach Befehl erneut ausfuehren
mySwitch.switchOff(sGroup, nSwitchNumber);
}
break;
default:
printf("command[%i] is unsupported\n", command);
printUsage();
return -1;
}
Shinedown das war die Lösung! Ich habe die send.ccp so erweitert das jetzt jedes Aus- oder An- Signal drei mal gesendet wird. Jetzt läuft es absolut zuverlässig! :)
Ganz vieln DANK dafür :)