Funktaster -> Befehl ausführen

Begonnen von royw, 03 Januar 2020, 20:10:51

Vorheriges Thema - Nächstes Thema

royw

Hallo,
entschuldigt meine wahrscheinlich für euch dumme Frage ...
Ich bin absoluter Neuling in Sachen Raspberry und FHEM .

Ich möchte einen Funkschalter benutzen um einen Befehl zu starten.
Habe ein CUL-Modul, welches in FHEM eingebunden ist und der Taster wird auch erkannt. (Eventlog)

nun möchte ich folgendes ausführen nachdem der Taster gedrückt wurde :
/opt/BroadLink/send-bl.sh /opt/BroadLink/LampeAn.txt

Wie geht das am besten ?
Vielen Dank für eure Starthilfe :-)



Beta-User

Hi und willkommen im Forum.

Gibt viele Optionen, die mMn. einfachste findest du zum Anpassen in https://fhem.de/commandref_modular_DE.html#notify (Beispiel 3, 5 und 6).

Bitte Grundlagendoku lesen, ist eine "typische Anfängerfrage" in etwas anderem Gewandt, (=> daher sowas im Anfängerbereich posten, da sind die Antworten ggf. etwas "geduldiger"!)...

Gruß, Beta-User
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

MadMax-FHEM

Den Eventmonitor kennst du dann offenbar ja auch schon...
...dort kann man sich Notify auch erzeugen lassen: https://wiki.fhem.de/wiki/Event_monitor

Ausführen von Systembefehlen: "einfach" in Anführungszeichen setzen, also ("pseudo-code"):

define nTest notify Taster:Event "Shell-Aufruf"

Evtl. auch das hilfreich:
https://forum.fhem.de/index.php?topic=55009.0
https://forum.fhem.de/index.php?topic=12611.0

Voraussetzung ist allerdings, dass Zugriffs- und Ausführungsrechte stimmen, der User fhem also das "Script" auch ausführen darf...
Und besser: alle Pfade angeben...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Beta-User

...einen habe ich noch :P :
https://fhem.de/commandref_modular_DE.html#Broadlink
(Weiß aber nicht, ob das ggf. exclusiven Zugriff auf den Dienst (oä) braucht).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

MadMax-FHEM

Zitat von: Beta-User am 03 Januar 2020, 20:47:14
...einen habe ich noch :P :
https://fhem.de/commandref_modular_DE.html#Broadlink
(Weiß aber nicht, ob das ggf. exclusiven Zugriff auf den Dienst (oä) braucht).

Stimmt, das mit Broadlink hab ich glatt überlesen... ;)

Hatte das Modul schon mal im Einsatz.
Hat eigentlich problemlos funktioniert...

War mal gedacht meine Harmony abzulösen...
...falls sie weiter zickt.
Hat sich aber wieder "gefangen", daher hab ich das wieder ruasgenommen...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

royw

Vielen Dank für eure schnellen Antworten :-)
Ich versuche es mal zu verstehen .

royw

Also ich bin glaub ich zu blöd zu verstehen wie das funktioniert :-(

Ich habe es geschafft meinen Broadlink in FHEM eingebunden und kann über das Webinterface (obere Kommandozeile) meine Lampe einschalten.

Nur wie automatisiere ich das nun mit meinem Schalter ?

kann man das über das Webinterface einstellen oder muss man das in der fhem.cfg machen ?

royw

Die erste Hürde ist genommen  :) :) :)

Ich kann nun mit meinen Funktaster meine beiden Lampen über den  Broadlink steuern.

Aber jetzt wird etwas komplizierter ...
Die Lampe hat eine Fernbedienung und kann Aus , dunkel und Hell sein.
Ist es möglich den Zustand anhand des Tasters zu ändern ?
also von
Aus nach dunkel
dunkel nach hell
hell nach aus

???


MadMax-FHEM

#8
Verwendest du nun das fhem-Broadlink-Modul?

https://fhem.de/commandref_DE.html#Broadlink

Ist zwar lange her aber im Prinzip sollte es möglich sein einfach Befehle "aufzunehmen" (also von der Fernbedieung) und die dann per set BroadlinkDevice AufgenommenesKommando "senden" können.

Dazu gibt es ja auch eine Möglichkeit Befehle "aufzunehmen"...

Welches Broadlink-Gerät hast du?

Oder nutzt du die "Script-Variante" aus dem Wiki?
https://wiki.fhem.de/wiki/Broadlink

EDIT: allerdings bin ich etwas "verwirrt" bzgl. dem Thread-Titel und dem was du im ersten Post geschrieben hast und wo es sich aktuell "hinentwickelt"... Ich dachte du hättest einen Funkschalter/Fernbedieung und du siehst Events in fhem... Wenn das der Fall ist, dann einfach ein Notify was eben auf den erkannten FB-Wasauchimmer (den du ja im Eventmonitor siehst!?) reagiert und eben dann im "Ausführungsteil" den gewünschten Befehl absetzt (den du ja auch schon hast!?)... Also irgendwie weiß ich grad nicht was du so (wie) verwendest und wo du gerade wirklich "hakst"... Und Notify-Anlegen geht ja mit dem Eventmonitor "kinderleicht"... ;)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

royw

ich benutze jetzt das FHEM Broadlink Modul für meinen RM3 Pro.
Das mit dem aufnehmen und senden klappt jetzt soweit ganz gut.

Nun ist mein Problem, dass ich einen Ein/Aus Funkschalter habe aber nicht nur an und aus schalten möchte.
Ich möchte eine Reihenfolge schalten.
Also wenn man zum Beispiel immer auf an drückt von
Aus nach dunkel
dunkel nach hell
hell nach aus

und bei Aus genau anders herum.

Gruß
Roy

MadMax-FHEM

#10
Ah, ok, klarer ;)

Irgendwo im Forum bin ich die letzten Tage (oder auch etwas mehrere Tage ;)  ) drübergestolpert.

War glaube ich DOIF oder code-Schnipsel...

EDIT: das war's https://forum.fhem.de/index.php/topic,105634.msg995666.html#msg995666 vielleicht hilft's...

Aber evtl. kannst du auch da was adaptieren: https://commandref.fhem.de/commandref_DE.html#DOIF_Anwendungsbeispiele_im_Perlmodus

Evtl. geht auch was mit dem MSwitch-Modul...
...kenne ich allerdings kaum/zu wenig, weiß nur, dass es recht "mächtig" ist...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

royw

Vielen vielen Dank.
Das hilft mir erstmal weiter

Beta-User

Leider hast du kein list von dem Ein-Aus-Funkschalter gepostet.

Es sollte auch ohne externes Gedöns gehen, hier mal ein Beispiel mit zwei userReadings:

defmod Dunstabzug SD_UT SF01_01319004_Typ2 2638
attr Dunstabzug IODev SignalDuino
attr Dunstabzug cmdIcon plus:control_arrow_up minus:control_arrow_down
attr Dunstabzug devStateIcon on:on:light_on_off off:off:light_on_off Fan.0:vent_ventilation Fan.1:vent_ventilation_level_0 Fan.2:vent_ventilation_level_1 Fan.3:vent_ventilation_level_3 Fan.4:vent_ventilation_level_3
attr Dunstabzug group Licht
attr Dunstabzug icon vent_ventilation_level_1
attr Dunstabzug model SF01_01319004_Typ2
attr Dunstabzug room Esszimmer
attr Dunstabzug stateFormat light\
Fan fanspeed
attr Dunstabzug userReadings light:light_on_off.* {ReadingsVal($name,"light","off") eq "off" ? "on":"off"},\
fanspeed:(plus|minus|interval).* {my $ret = ReadingsNum($name,"fanspeed",0);; my $val = ReadingsVal($name,"state","on");; if ($val =~ /plus/) { $ret = min($ret +1, 4) } elsif  ($val =~ /minus/) { $ret = max($ret -1, 0) } else {$ret = 0};; $ret},
attr Dunstabzug webCmd plus:minus
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Damian

Zitat von: Beta-User am 05 Januar 2020, 07:09:27
Leider hast du kein list von dem Ein-Aus-Funkschalter gepostet.

Es sollte auch ohne externes Gedöns gehen, hier mal ein Beispiel mit zwei userReadings:

defmod Dunstabzug SD_UT SF01_01319004_Typ2 2638
attr Dunstabzug IODev SignalDuino
attr Dunstabzug cmdIcon plus:control_arrow_up minus:control_arrow_down
attr Dunstabzug devStateIcon on:on:light_on_off off:off:light_on_off Fan.0:vent_ventilation Fan.1:vent_ventilation_level_0 Fan.2:vent_ventilation_level_1 Fan.3:vent_ventilation_level_3 Fan.4:vent_ventilation_level_3
attr Dunstabzug group Licht
attr Dunstabzug icon vent_ventilation_level_1
attr Dunstabzug model SF01_01319004_Typ2
attr Dunstabzug room Esszimmer
attr Dunstabzug stateFormat light\
Fan fanspeed
attr Dunstabzug userReadings light:light_on_off.* {ReadingsVal($name,"light","off") eq "off" ? "on":"off"},\
fanspeed:(plus|minus|interval).* {my $ret = ReadingsNum($name,"fanspeed",0);; my $val = ReadingsVal($name,"state","on");; if ($val =~ /plus/) { $ret = min($ret +1, 4) } elsif  ($val =~ /minus/) { $ret = max($ret -1, 0) } else {$ret = 0};; $ret},
attr Dunstabzug webCmd plus:minus


Ist für einen Anfänger mindestens genauso kompliziert.

Das hier ist dagegen eine Definition, die ohne zusätzliche Definitionen auskommt, leider hat der Erfinder (Rudi) vergessen eine Doku dazu zu verfassen :)

{fhem "set Dunstabzug ".Each("Dunstabzug", "aus,dunkel,hell,dunkel"}

Den set-Befehl kannst du in einen notify oder DOIF als Eventhandler packen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Beta-User

Für den Dunstabzug bringt das nicht ganz so viel (da sind ja weitere Abfragen drin, und der Code stammt aus Zeiten, als Rudi "Each" noch nicht so propagiert hatte ;D ).

Unten findet sich ein update auf "Each", für den Einsteiger auch mal eine einfachere Variante mit einem Dummy für Trockenübungen:

defmod test_d dummy
attr test_d readingList next:noArg
attr test_d setList next:noArg
attr test_d userReadings state {Each("test_d","Aus,dunkel,hell")}



defmod Dunstabzug SD_UT SF01_01319004_Typ2 2638
attr Dunstabzug IODev SignalDuino
attr Dunstabzug cmdIcon plus:control_arrow_up minus:control_arrow_down
attr Dunstabzug devStateIcon on:on:light_on_off off:off:light_on_off Fan.0:vent_ventilation Fan.1:vent_ventilation_level_0 Fan.2:vent_ventilation_level_1 Fan.3:vent_ventilation_level_3 Fan.4:vent_ventilation_level_3
attr Dunstabzug group Licht
attr Dunstabzug icon vent_ventilation_level_1
attr Dunstabzug model SF01_01319004_Typ2
attr Dunstabzug room Esszimmer
attr Dunstabzug stateFormat light\
Fan fanspeed
attr Dunstabzug userReadings light:light_on_off.* {Each($name,"off,on")},\
fanspeed:(plus|minus|interval).* {my $ret = ReadingsNum($name,"fanspeed",0);; my $val = ReadingsVal($name,"state","on");; if ($val =~ /plus/) { $ret = min($ret +1, 4) } elsif  ($val =~ /minus/) { $ret = max($ret -1, 0) } else {$ret = 0};; $ret},
attr Dunstabzug webCmd plus:minus
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors