Taster für mehrere 433 Mhz befehle

Begonnen von roadghost, 14 Februar 2016, 23:01:03

Vorheriges Thema - Nächstes Thema

roadghost

Hallo,

ich bin absoluter Neueinsteiger bei bzw. in FHEM, ich kenn mich mit Hardware gut aus, aber Linux ist für mich Neuland. Ich lese nun schon seit 2 Wochen etliche Tutorials, gucke Videos auf youtube usw. - aber ich kommen nicht herum hier meine Frage zu stellen.

Ich habe einen Raspberry PI 2 mittels Raspbian und einem Aukru 433 Mhz-Sender und FHEM schonmal "soweit" gebracht dass ich über dummys und notifys meine Funksteckdosen einzeln schalten kann.

Nun bastel ich an einem "Hauptschalter" welcher ein Taster sein soll und welcher woiederum alle Steckdosen ausschaltet.

Mein code bisher:

define taster dummy
attr taster room 0.0_Garage
attr taster setList state:off
attr taster webCmd off
define off_taster notify taster:off {system("/usr/bin/send 11111 1 0 0&")


Leider schaffe ich es nicht dass mehrere Befehle über ein notify gesendet werden, es scheint entweder am code zu liegen oder eben an der verzögerung durch den 433 Mhz sender.

Ist mein code falsch ? Wie kann ich zwischen den einzelnen send-befehlen eine verzögerung von 2 sekunden einfügen ?
NUC/Ubuntu 22.04 m. FHEM, div. Tasmota-Steckdosen, HMCFGUSB-2 für 12x HM-CC-RT-DN + 8x HM-TC-IT-WW
Rademacher DuoFern für 12 Jalousien, JeeLink für LaCrosse Temp.Sensor, WLAN-smart-Plugs, 
NUKI smartlock, 2xIP-CAM, Pylontech Speicher + Sungrow WR, Unifi-AP´s + Controller auf weiterem NUC

Rince

Schau mal da:
http://forum.fhem.de/index.php?topic=27691.0
(Übrigens fehlt bei dir vor dem & ein Leerzeichen, dafür scheint die letzte 0 zuviel zu sein)
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

chris1284

#2
du musst die befehle für deine dosen einfach nacheinander abfeuern und ein sleep einbauen http://fhem.de/commandref.html#sleep

define off_taster notify taster:off
{
system("/usr/bin/send 11111 1 0 &");
sleep 2;
system("/usr/bin/send 11111 1 0 &");
sleep 2;
system("/usr/bin/send 11111 1 0 &");
.....
}


natürlich musst du bei den 3 sleep die 3 dosen einsetzen unf nicht nur die eine  :D

rince link zeigt auch ein beispiel wie du die dosen über dien dummys schaltest statt der  systembefehl damit die icons sich ändern.

define off_taster notify taster:off
{
set dummy_dose1 off;
sleep 2;
set dummy_dose2 off;
sleep 2;
set dummy_dose3 off;
.....
}


bartman121

#3
Hi,

Statt sleep solltest du lieber mit at arbeiten. Sleep kann dein FHEM blockieren, in der Zeit macht es nämlich "nichts außer warten", eine Zeitschaltuhr zu starten ist hier etwas sinnvoller, hier mal ein Auszug aus meinen "all off script" :)

Wie du siehst, ändere ich die dummies und startet dadurch die anderen notifies, die auf die dummies reagieren.


fhem("define a6 at +00:00:12 set WZ.KRON off");
fhem("define a7 at +00:00:14 set WZ.TV off");
fhem("define a8 at +00:00:16 set WZ.LAMPE off");
fhem("define a9 at +00:00:18 set AZ.BUERO off");
fhem("define a10 at +00:00:20 set AZ.DRUCKER off");
fhem("define a11 at +00:00:22 set SB_rot off");
fhem("define a12 at +00:00:24 set AZ.RADIO off");


Grüße

Wernieman

#4
Wobei fhem bei folgender Konstellation:
set dummy_dose1 off;
sleep 2;
set dummy_dose2 off;
sleep 2;
set dummy_dose3 off;


es auffällt (auffallen soll) und die sleeps durch "at" ersetzt

@chris1284
warum setzt Du die fhem befehle in einem {}??
Es reicht doch auch:define off_taster notify taster:off
system("/usr/bin/send 11111 1 0 &");
sleep 2;
system("/usr/bin/send 11111 1 0 &");
sleep 2;
system("/usr/bin/send 11111 1 0 &");
.....


Wobei ich persönlich, wie hier schon besprochen, die system("/usr/bin/send 11111 1 0 &") in einen Dummy setzen würde, so das "dier Block" nur wie folgt:
define off_taster notify taster:off
set schalter1 off;
sleep 2;
set schalter2 off;
sleep 2;
set schalter3 off;
.....
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

roadghost

Hallo,

ich erhalte die folgende Fehlermeldung:

Unknown command system("/usr/bin/send, try help. Unknown command system("/usr/bin/send, try help. Unknown command system("/usr/bin/send, try help. Unknown command system("/usr/bin/send, try help.


Mein geänderter code:

# Taster alles aus
define taster dummy
attr taster room 0.0_Garage
attr taster setList state:off
attr taster webCmd off
define off_taster notify taster:off {
system("/usr/bin/send 11111 1 0 0&") ("/usr/bin/send 11111 1 0 &");
sleep 2;
system("/usr/bin/send 11111 1 0 0&") ("/usr/bin/send 10101 4 0 &");
sleep 2;
system("/usr/bin/send 11111 1 0 0&") ("/usr/bin/send 10101 2 0 &");
sleep 2;
system("/usr/bin/send 11111 1 0 0&") ("/usr/bin/send 10101 3 0 &")}


Wenn die einzelnen Befehle nicht direkt hinter der { stehen meckert fhem - wenn aber alle hinter der { stehen werden die Funkbefehle nicht gesendet.
NUC/Ubuntu 22.04 m. FHEM, div. Tasmota-Steckdosen, HMCFGUSB-2 für 12x HM-CC-RT-DN + 8x HM-TC-IT-WW
Rademacher DuoFern für 12 Jalousien, JeeLink für LaCrosse Temp.Sensor, WLAN-smart-Plugs, 
NUKI smartlock, 2xIP-CAM, Pylontech Speicher + Sungrow WR, Unifi-AP´s + Controller auf weiterem NUC

Wernieman

Gucke Dir mal unsere und Deine Zeile an:
system("/usr/bin/send 11111 1 0 0&") ("/usr/bin/send 11111 1 0 &");

P.S. das /usr/bin/send 11111 1 0 0 wurde von Dir übernommen, gibt es das Programm so?

P.P.S. und siehe mehrere Tips vorher, zwischen der letzten 0 und dem & gehört ein Leerzeichen!
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

chris1284

Zitat von: bartman121 am 15 Februar 2016, 10:16:57
Statt sleep solltest du lieber mit at arbeiten.
gibts kein grund zu(siehe sleep in commandref)
ein sleep gefolgt von einem befehl ist quasie ein at und nonblocking
selbst ein at zu erzeugen was dann nach ausführung eh gelöscht wird ist unnötiger code

Zitatsleep followed by another command is comparable to a nameless at

Zitat von: Wernieman@chris1284
warum setzt Du die fhem befehle in einem {}??

gewohnheit... geht auch ohne wenn kein perlcode, hast du recht

roadghost

Moin moin,

ja, das /usr/bin/send 11111 1 0 0 gibt es bei mir, ich habe je Stockwerk einen Hauscode vergeben damit ich die Anzahl der Funksteckdosen erhöhen kann.

Ich teste das heute mal durch und lasse euch wissen wie es aussieht.

Gruß
NUC/Ubuntu 22.04 m. FHEM, div. Tasmota-Steckdosen, HMCFGUSB-2 für 12x HM-CC-RT-DN + 8x HM-TC-IT-WW
Rademacher DuoFern für 12 Jalousien, JeeLink für LaCrosse Temp.Sensor, WLAN-smart-Plugs, 
NUKI smartlock, 2xIP-CAM, Pylontech Speicher + Sungrow WR, Unifi-AP´s + Controller auf weiterem NUC

roadghost

Nabend,

ich habe jetzt etliche Kombinationen probiert:

1.
# Taster alles aus
define taster dummy
attr taster room 0.0_Garage
attr taster setList state:off
attr taster webCmd off
define off_taster notify taster:off
set Schrank off;
sleep 2;
set led off


2.
# Taster alles aus
define taster dummy
attr taster room 0.0_Garage
attr taster setList state:off
attr taster webCmd off
define off_taster notify taster:off set Schrank off; sleep 2; set led off


3.
# Taster alles aus
define taster dummy
attr taster room 0.0_Garage
attr taster setList state:off
attr taster webCmd off
define off_taster notify taster:off system("/usr/bin/send 10101 4 0 &");
sleep 2;
system("/usr/bin/send 10101 2 0 &");
sleep 2;


Es funktioniert keine zu 100%.

Bei 1 setzt FHEM die Schalter (quasi die Visualisierung An/Aus) auf Aus, aber es wird nur der erste Befehl überhaupt gesendet lt. Logfile, bei 2 ebenso, bei 3 bleiben ddie Visualisierungen auf An, es wird nur ein Befehl durch FHEM gesendet.

Bin ich zu doof ?

Gruß
NUC/Ubuntu 22.04 m. FHEM, div. Tasmota-Steckdosen, HMCFGUSB-2 für 12x HM-CC-RT-DN + 8x HM-TC-IT-WW
Rademacher DuoFern für 12 Jalousien, JeeLink für LaCrosse Temp.Sensor, WLAN-smart-Plugs, 
NUKI smartlock, 2xIP-CAM, Pylontech Speicher + Sungrow WR, Unifi-AP´s + Controller auf weiterem NUC

Wernieman

Mach bitte mal bei 2. ein:
list off_taster

Das 1. und 3. kann nicht funktionieren, da Du bestimmt nicht die Passenden "Zeilenumbrüche" verwendet hast.
Wegen 1. und 2. Hast Du auch bei den Devices Schrank, led die Passenden Kommandos hinterlegt?
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

roadghost

Ja, ich kann ja die einzelnen Aktoren die den Räumen zugeordnet sind, einzeln schalten, funktioniert immer. Nur eben die abfolge der befehle funktioniert nicht.
NUC/Ubuntu 22.04 m. FHEM, div. Tasmota-Steckdosen, HMCFGUSB-2 für 12x HM-CC-RT-DN + 8x HM-TC-IT-WW
Rademacher DuoFern für 12 Jalousien, JeeLink für LaCrosse Temp.Sensor, WLAN-smart-Plugs, 
NUKI smartlock, 2xIP-CAM, Pylontech Speicher + Sungrow WR, Unifi-AP´s + Controller auf weiterem NUC

roadghost

Problem erkannt - ich hab die ganze Zeit immer in der cfg geändert, nun hab ich direkt das DEF des notify geändert - schwupps - es werden alle aktoren geschaltet !

Gruß
NUC/Ubuntu 22.04 m. FHEM, div. Tasmota-Steckdosen, HMCFGUSB-2 für 12x HM-CC-RT-DN + 8x HM-TC-IT-WW
Rademacher DuoFern für 12 Jalousien, JeeLink für LaCrosse Temp.Sensor, WLAN-smart-Plugs, 
NUKI smartlock, 2xIP-CAM, Pylontech Speicher + Sungrow WR, Unifi-AP´s + Controller auf weiterem NUC

Wernieman

Meine Empfehlung: Nur noch im Notfall die cfg direkt bearbeiten. Optimum ist mittlerweile immer die Bearbeitung übers Frontend.

P.S. deshalb wollte ich auch eine Ausgabe von "list" haben.
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html