Hauptmenü

Tastenfeld auswerten

Begonnen von MAC66666, 15 Februar 2018, 21:40:36

Vorheriges Thema - Nächstes Thema

MAC66666

Hi,
ich habe gerade einen Hänger, schon mit notify und doif probiert, irgendwie will es nicht...

Ich kopiere meinen Code erst gar nicht hier rein, is eh blödsinn  ;)

Ich beschreibe es mal so :
Wenn tastenfeld = 1 dann set Licht1 toggle
wenn Tastenfeld = 2 dann set Licht2 toggle
wenn Tastenfeld = 4 dann irgendwas
wenn Tastenfeld = 8 dann .... usw
usw...

Komme mir gerade blöd vor  8)
FHEM @ Ubuntu 20.04 VM@ Windows 2019 Hyper-V @ NVMe
MAXCube als CUL_MAX (Thermostate)
MAXCube als SlowRF (FS20, wird durch ESPs ersetzt, teilweise geschehen)
Einige ESPs mit ESPEasy, zwei GHoma und ein Sonoff Tasmota

Phill

Irgendwie komme ich mir gerade blöd vor.  ??? Welches Tastenfeld meinst du denn eigentlich. Wie ist das eingebunden?
Homebrew 1-Wire / HomeMatic Mix - Cubietruck mit FHEM als Server - Raspberry PI 3 als Informationsanzeige im MagicMirror Stil - Raspberry Pi 1 als Klingelanlage - VDR

Mein Modul: Talk2Fhem - Mein Tipp: https://forum.fhem.de/index.php/topic,82442.0.html

MAC66666

#2
Achso, ja, ein TTP229, das hat 16 Tasten und liefert einen ScanCode Zurück, entweder 1-16 oder Binär 1-32768 (so habe ich es eingestellt, damit unauswertbare krumme Werte rauskommen, wenn ich mit meinen Wurschtfingern 2 Touchfelder gleichzeitig treffe). Ist per ESPEasy eingebunden.

Also wenn tastenfeld:scancode = 4 dann mach irgendwas
Also wenn tastenfeld:scancode = 8 dann mach irgendwas anderes sozusagen  ;)

und wenn null, mach nix.
FHEM @ Ubuntu 20.04 VM@ Windows 2019 Hyper-V @ NVMe
MAXCube als CUL_MAX (Thermostate)
MAXCube als SlowRF (FS20, wird durch ESPs ersetzt, teilweise geschehen)
Einige ESPs mit ESPEasy, zwei GHoma und ein Sonoff Tasmota

nils_

wie wäre es denn wenn du uns trotzdem etwas code zeigst.
so ist es schwer dir zu helfen, wir können ja nicht wissen, ob dein regexp im notify falsch ist. dein trigger im doif. oder ob du die if-abfrage falsch gebaut hast, und eine zuweisung '=' und keinen vergleich '==' im code stehen hast.... usw usw.


also bitte etwas mehr details :)
viele Wege in FHEM es gibt!

Wernieman

Habe etwas ähnliches mit lircd.

Habe lircd nicht direkt in FHEM (Zeit-Probleme), sondern extern und es pustet mir die Tastendrücke in einen Dummy.

Dann ein Notify:
define LIRC_play notify LIRC:play set Lautsprecher on

Also wenn die "play" Taste an der Fernbedienung gedrückt wird, macht er den set-Befehl. Nun für jede Taste ein Notify ... und das war es. Probleme damit?

- 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

MAC66666

Das ist wohl eine gute idee... Aber wie hat dann so ein Dummy auszusehen und wie bekomme ich die scancode Aktion ins dummy?
FHEM @ Ubuntu 20.04 VM@ Windows 2019 Hyper-V @ NVMe
MAXCube als CUL_MAX (Thermostate)
MAXCube als SlowRF (FS20, wird durch ESPs ersetzt, teilweise geschehen)
Einige ESPs mit ESPEasy, zwei GHoma und ein Sonoff Tasmota

Wernieman

Dummy: Siehe Doku
Tastenfeld: Da kann ich Dir nicht helfen .. wie wird es denn aktuell "eingespielt"?
- 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

kadettilac89

wahrscheinlich mit weniger Konfigurationen ... ein einzelnes Notify und alles Weitere in eine Form in 99_myUtils auslagern. Übergabeparameter ist dann $EVENT oder $EVTPART1 in dem der Wert 1-16 enhalten ist ... je nachdem wie das Event aussieht.

In der Form baust du dann ein switch-case für die 16 Fälle + ggf. Fehler. ... https://perldoc.perl.org/5.8.9/Switch.html

Schau dir mal das hier an, Teile kannst wahrscheinlich übernehmen und anpassen ... https://forum.fhem.de/index.php/topic,20581.msg141181.html#msg141181


Wernieman

Ob Du jetzt in der 99_myUtils ein if machst, oder dieses durch die regex bei der notify-Erstellung .. da ziehe ich (persönlich) die notifys vor.

Aber jeder wie er will ;o)
- 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

MAC66666

Zitat von: Wernieman am 16 Februar 2018, 14:17:03
Dummy: Siehe Doku
Tastenfeld: Da kann ich Dir nicht helfen .. wie wird es denn aktuell "eingespielt"?

Wie man ein Dummy anlegt weiß ich, aber nir ist nicht ganzt klar, wie das entsprechend auf meine readings vom Tastenfeld reagiert / reagieren soll. Und brauche ich das Dummy, wenn ich sowieso direkt auf "ScanCode" reagieren könnte...

Tastenfeld: Habe ein Reading mit der entsprechenden Nummer: tastenfeld:scancode oder um es Präzise zu machen: ESPEasy_SWz1_Touch mit dem Reading ScanCode


Zitat von: Wernieman am 16 Februar 2018, 15:54:14
Ob Du jetzt in der 99_myUtils ein if machst, oder dieses durch die regex bei der notify-Erstellung .. da ziehe ich (persönlich) die notifys vor.

Aber jeder wie er will ;o)

Jup, wollte möglichst ein "sauberes" FHEM haben, was ausschließlich über die FHEM.cfg zu sichern ist. Hab schon einen MQTT Broker, den muss ich auch schnell wieder loswerden  ;) Womöglich bekäme ich den Umbau des Pear Codes sogar hin, auch wenn ich da keine Vorkenntnisse habe. Abe rich würde es gerne erst mal vermeiden 8)
FHEM @ Ubuntu 20.04 VM@ Windows 2019 Hyper-V @ NVMe
MAXCube als CUL_MAX (Thermostate)
MAXCube als SlowRF (FS20, wird durch ESPs ersetzt, teilweise geschehen)
Einige ESPs mit ESPEasy, zwei GHoma und ein Sonoff Tasmota

Wernieman

Dz hast also ein Device mit einem Reading, auf das Du reagieren willst?
Gib uns mal mitte ein "list" des Device
- 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

MAC66666

Internals:
   CFGFN     
   DEF        192.168.5.222 80 espBridge SWZ1_Touch
   ESP_BUILD  20100
   ESP_BUILD_GIT mega-20180206
   ESP_BUILD_NOTES  - Mega
   ESP_NODE_TYPE_ID 17: ESP Easy Mega
   ESP_SLEEP  0
   ESP_UNIT   2
   ESP_VERSION 2
   HOST       192.168.5.222
   IDENT      SWZ1_Touch
   INTERVAL   300
   IODev      espBridge
   LASTInputDev espBridge
   MSGCNT     135
   NAME       ESPEasy_SWZ1_Touch
   NOTIFYDEV  global
   NR         10043
   NTFY_ORDER 50-ESPEasy_SWZ1_Touch
   PORT       80
   STATE      absent
   SUBTYPE    device
   TYPE       ESPEasy
   VERSION    1.35
   espBridge_MSGCNT 135
   espBridge_TIME 2018-02-15 21:34:27
   READINGS:
     2018-02-15 21:34:27   ScanCode        off
     2018-02-17 10:03:06   presence        absent
     2018-02-17 10:03:06   state           absent
   helper:
     fpc        1518723246
     pm:
       Encode     1
       JSON       1
     received:
Attributes:
   IODev      espBridge
   Interval   300
   group      ESPEasy Device
   presenceCheck 1
   readingSwitchText 1
   room       ESPEasy
   setState   3


Wobei der ScanCode 0=off, 1=on ist, dann geht es erst mit Zahlen weiter...
FHEM @ Ubuntu 20.04 VM@ Windows 2019 Hyper-V @ NVMe
MAXCube als CUL_MAX (Thermostate)
MAXCube als SlowRF (FS20, wird durch ESPs ersetzt, teilweise geschehen)
Einige ESPs mit ESPEasy, zwei GHoma und ein Sonoff Tasmota

MAC66666

Zitat von: nils_ am 16 Februar 2018, 08:50:23
wie wäre es denn wenn du uns trotzdem etwas code zeigst.
so ist es schwer dir zu helfen, wir können ja nicht wissen, ob dein regexp im notify falsch ist. dein trigger im doif. oder ob du die if-abfrage falsch gebaut hast, und eine zuweisung '=' und keinen vergleich '==' im code stehen hast.... usw usw.


also bitte etwas mehr details :)

Ups hatte Deinen Beitrag übersehen... Haber alles gelöscht weil es eh murks war ;-)
FHEM @ Ubuntu 20.04 VM@ Windows 2019 Hyper-V @ NVMe
MAXCube als CUL_MAX (Thermostate)
MAXCube als SlowRF (FS20, wird durch ESPs ersetzt, teilweise geschehen)
Einige ESPs mit ESPEasy, zwei GHoma und ein Sonoff Tasmota

Wernieman

Ups .. sorry, aber bei felchem Feld kommt jetzt Deine Tasteninformationen?

Sehe momentan den Wald vor lauter Bäumen nicht ...
- 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

MAC66666

readings: ScanCode. Der lautet off, on, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16636 oder 32768  ;)
FHEM @ Ubuntu 20.04 VM@ Windows 2019 Hyper-V @ NVMe
MAXCube als CUL_MAX (Thermostate)
MAXCube als SlowRF (FS20, wird durch ESPs ersetzt, teilweise geschehen)
Einige ESPs mit ESPEasy, zwei GHoma und ein Sonoff Tasmota

Wernieman

also z.B. ein notify auf:
SWZ1_Touch.ScanCode:2

Ungetestet ..
- 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

MAC66666

#16
Jup, das hatte ich probiert, aber wie hat das genau auszusehen? Korrekte Syntax?

FHEM @ Ubuntu 20.04 VM@ Windows 2019 Hyper-V @ NVMe
MAXCube als CUL_MAX (Thermostate)
MAXCube als SlowRF (FS20, wird durch ESPs ersetzt, teilweise geschehen)
Einige ESPs mit ESPEasy, zwei GHoma und ein Sonoff Tasmota

MAC66666

#17
ESPEasy_SWZ1_Touch:ScanCode.* set SonoffWZ2 toggle funktioniert (also so lange ich quasi gedrückt halte, isses licht aus)...

Nur die Auswertung geht nicht:

ESPEasy_SWZ1_Touch:ScanCode.* = 2 set SonoffWZ2 toggle
oder
ESPEasy_SWZ1_Touch:ScanCode.*:2 set SonoffWZ2 toggle
oder
ESPEasy_SWZ1_Touch:ScanCode:2 set SonoffWZ2 toggle
oder
ESPEasy_SWZ1_Touch.ScanCode:2 set SonoffWZ2 toggle

is alles Murks. Ich bekomme den ScanCode nicht ausgewertet. Nur "Change" funktioniert....
FHEM @ Ubuntu 20.04 VM@ Windows 2019 Hyper-V @ NVMe
MAXCube als CUL_MAX (Thermostate)
MAXCube als SlowRF (FS20, wird durch ESPs ersetzt, teilweise geschehen)
Einige ESPs mit ESPEasy, zwei GHoma und ein Sonoff Tasmota

MAC66666

OK, also als DOIF

([ESPEasy_SWZ1_Touch:ScanCode] == 2) (set SonoffWZ2 toggle)

tut es... augenscheinlich. Ist nur träge. Notify wäre mir aber lieber...
FHEM @ Ubuntu 20.04 VM@ Windows 2019 Hyper-V @ NVMe
MAXCube als CUL_MAX (Thermostate)
MAXCube als SlowRF (FS20, wird durch ESPs ersetzt, teilweise geschehen)
Einige ESPs mit ESPEasy, zwei GHoma und ein Sonoff Tasmota

fiedel

Als Notify musst du vermutlich sowas machen wie unten gezeigt
(als Beispiel mal meine Außenlichtsteuerung).
Du reagierst im Notify- Regex erstmal auf alles, was vom Tastenfeld
reinkommt. Danach wertest du in Perl den Inhalt von $EVENT aus
und reagierst darauf mit dem entspr. Set- Befehl.
Im Beispiel ist es etwas anders: Ich reagiere hier auf $NAME und das
Event ist immer "on".
Am Besten nutzt du dazu die auskommentierte "Log1"- Zeile, die dir
ins Log schreibt, was rein kommt.

Bei deinen Versuchen hast du übrigens noch ESPEasy_SWZ1_Touch:ScanCode.2 set SonoffWZ2 toggle
vergessen. Vielleicht geht das. Um sowas herauszubekommen gibt es den Eventmonitor.



Sens_BM_1.motion:.on.*|Sens_BM_2.motion:.on.* {

my $bright = (ReadingsVal("Sens_BM_1", "brightness", "---"));

# Log 1, "Name:$NAME ; Event:$EVENT" ;

  if ($bright <= 100) {
 
  if ($NAME eq "Sens_BM_1") {
     fhem("set Beleuchtung_Gar_03,Beleuchtung_Gar_04 on-for-timer 180");
  }
  if ($NAME eq "Sens_BM_2") {
     fhem("set Beleuchtung_Gar_04,Beleuchtung_Gar_03 on-for-timer 180");
  }
}

  if (($bright >= 100) and Value("Beleuchtung_Gar_04") eq "undef") {
fhem("set Beleuchtung_Gar_04,Beleuchtung_Gar_03 off");
  }
}

FeatureLevel: 6.1 auf Wyse N03D ; Deb. 11 ; Perl: v5.14.2 ; IO: HM-MOD-RPI-PCB + VCCU|CUL 868 V 1.66|LinkUSBi |TEK603
HM: SEC-SCO|SCI-3-FM|LC-SW4-PCB|ES-PMSW1-PL|RC-4-2|SEN-MDIR-O|SEC-WDS-2
CUL: HMS100TF|FS20 S4A-2 ; OWDevice: DS18S20|DS2401|DS2406|DS2423

MAC66666

Zitat von: fiedel am 18 Februar 2018, 09:52:24


Bei deinen Versuchen hast du übrigens noch ESPEasy_SWZ1_Touch:ScanCode.2 set SonoffWZ2 toggle
vergessen. Vielleicht geht das. Um sowas herauszubekommen gibt es den Eventmonitor.


Nee, ich habe nur nicht alle Versuche dokumentiert  ;)

Also mit Perl-Code im Notify greife ich wohl doch lieber auf mein DOIF zurück. Ich meine es ist ja immerhin was, was funktioniert. Aber danke dafür!
FHEM @ Ubuntu 20.04 VM@ Windows 2019 Hyper-V @ NVMe
MAXCube als CUL_MAX (Thermostate)
MAXCube als SlowRF (FS20, wird durch ESPs ersetzt, teilweise geschehen)
Einige ESPs mit ESPEasy, zwei GHoma und ein Sonoff Tasmota

fiedel

FeatureLevel: 6.1 auf Wyse N03D ; Deb. 11 ; Perl: v5.14.2 ; IO: HM-MOD-RPI-PCB + VCCU|CUL 868 V 1.66|LinkUSBi |TEK603
HM: SEC-SCO|SCI-3-FM|LC-SW4-PCB|ES-PMSW1-PL|RC-4-2|SEN-MDIR-O|SEC-WDS-2
CUL: HMS100TF|FS20 S4A-2 ; OWDevice: DS18S20|DS2401|DS2406|DS2423

Wernieman

notify macht weniger Systemlast ;o)

Also ich würde auch erstmal im Event-Monitor gucken, WAS genau ankommt ...
- 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

MAC66666

Da kommt in der Tat sowas an:

2018-02-18 17:53:56 ESPEasy ESPEasy_SWZ1_Touch ScanCode: 32768
FHEM @ Ubuntu 20.04 VM@ Windows 2019 Hyper-V @ NVMe
MAXCube als CUL_MAX (Thermostate)
MAXCube als SlowRF (FS20, wird durch ESPs ersetzt, teilweise geschehen)
Einige ESPs mit ESPEasy, zwei GHoma und ein Sonoff Tasmota

MAC66666

#24
Blöd, dass er statt "1" ein "on" annzeigt (und ein "off" bei 0)...

Kann ich mein Doif so basteln?

define blabla doif ([ESPEasy_SWZ1_Touch:ScanCode] == 32768) (set ESPEasy_SWZ1_Touch oledframedcmd on,define Disptemp at +00:00:15 set ESPEasy_SWZ1_Touch oledframedcmd off) doelseif ([ESPEasy_SWZ1_Touch:ScanCode] == 2) (set SonoffWZ2 toggle,set ESPEasy_SWZ1_Touch oledframedcmd on,define Disptemp at +00:00:15 set ESPEasy_SWZ1_Touch oledframedcmd off) ......

usw?

wie macht man am Besten ein mehrzeiliges doif, doelseif, doelseif,....  ? Muss man da was beachten?

würde ich dann so machen so lange ich keine Notify-Lösung habe... Oder lieber einzelne DOIFs?

Damit Ihr wisst, was das wird, hier mal ein sehr Prototypiges Bild (Soll später Glas werden). Leider muss ich irgendwie noch die Empfindlichkeit vom Touchfeld pimpen, mir fehlt ein zehntel Millimeter, daher der grobe, blöde Ausschnitt...
FHEM @ Ubuntu 20.04 VM@ Windows 2019 Hyper-V @ NVMe
MAXCube als CUL_MAX (Thermostate)
MAXCube als SlowRF (FS20, wird durch ESPs ersetzt, teilweise geschehen)
Einige ESPs mit ESPEasy, zwei GHoma und ein Sonoff Tasmota

nils_

warum erstellt du dir das notify nicht mit Hilfe des Eventmonitors, wenn du das "lieber als DOIF" nutzen willst....

define ntfy_whatever notify ESPEasy_SWZ1_Touch:ScanCode.* {
if ($EVTPART1 eq "on" ) fhem ("set bla 123");
if ($EVTPART1 == 2 ) fhem ("set bla asdf");
if ($EVTPART1 == 32768   ) fhem ("set bla xyz");
...
}


Zitat von: MAC66666 am 17 Februar 2018, 20:37:37
readings: ScanCode. Der lautet off, on, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16636 oder 32768  ;)

16636 ? das glaube ich nicht!
16384 glaube ich sofort :)
viele Wege in FHEM es gibt!

MAC66666

#26
Ist halt Pearl... Aber vieleicht mache ich es so  ;D


Zitat von: nils_ am 19 Februar 2018, 08:52:12

16636 ? das glaube ich nicht!
16384 glaube ich sofort :)

Ähm, Du hast Dir echt jede einzelne Zahl angeschaut?  Da hat mich kurz die Mathematik verlassen :P
FHEM @ Ubuntu 20.04 VM@ Windows 2019 Hyper-V @ NVMe
MAXCube als CUL_MAX (Thermostate)
MAXCube als SlowRF (FS20, wird durch ESPs ersetzt, teilweise geschehen)
Einige ESPs mit ESPEasy, zwei GHoma und ein Sonoff Tasmota

Wernieman

Ansonsten wirklich mal im Event-Monitor die Zeile markieren udn auf dem Knopf "Notify generieren" (o.Ä.) drücken ....
- 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

nils_

Zitat von: MAC66666 am 19 Februar 2018, 09:25:58
Ist halt Pearl... Aber vieleicht mache ich es so  ;D
Perl.... ohne A  :P :P :P

Zitat von: MAC66666 am 19 Februar 2018, 09:25:58
Ähm, Du hast Dir echt jede einzelne Zahl angeschaut?  Da hat mich kurz die Mathematik verlassen :P
das fällt einem schon auf das die reihe da nicht so aussieht wie man sie kennt und gewohnt ist. :D
viele Wege in FHEM es gibt!

MAC66666

Bin irgendwie neben der Spur. Natürlich Perl ohne a  ;D

Und ja, ich habe diese Zahlen auch immer vor mir, weiß nicht was mich da geritten hat...

Schon zwei Patzer bei Selbsverständlichkeiten in diesem Threat, ich sollte mich mal untersuchen lassen  ???
FHEM @ Ubuntu 20.04 VM@ Windows 2019 Hyper-V @ NVMe
MAXCube als CUL_MAX (Thermostate)
MAXCube als SlowRF (FS20, wird durch ESPs ersetzt, teilweise geschehen)
Einige ESPs mit ESPEasy, zwei GHoma und ein Sonoff Tasmota

MAC66666

Der meckert meine geschweiften Klammern an:

define TouchWZ1 notify ESPEasy_SWZ1_Touch:ScanCode.* {

if ($EVTPART1 eq "on" )  {
fhem ("set SonoffWZ2 toggle,set SonoffWZ1 toggle,set ESPEasy_SWZ1_Touch oledframedcmd on,define Disptemp at +00:00:15 set ESPEasy_SWZ1_Touch oledframedcmd off");}
if ($EVTPART1 == 32768 ) {
fhem ("set ESPEasy_SWZ1_Touch oledframedcmd on,define Disptemp at +00:00:15 set ESPEasy_SWZ1_Touch oledframedcmd off");
}

}
FHEM @ Ubuntu 20.04 VM@ Windows 2019 Hyper-V @ NVMe
MAXCube als CUL_MAX (Thermostate)
MAXCube als SlowRF (FS20, wird durch ESPs ersetzt, teilweise geschehen)
Einige ESPs mit ESPEasy, zwei GHoma und ein Sonoff Tasmota

MAC66666

Habe als noch Syntaxprobleme
zuerst nimmt er das notify so nicht wie oben beschrieben:

Missing right curly or square bracket at (eval 29142) line 1, at end of line
syntax error at (eval 29142) line 1, at EOF

Unknown command }, try help.
Unknown command }, try help.


Und weitere Frage:


muss ich die "sets" durch Komma, Semikolon oder Doppelsemikolon trennen?
FHEM @ Ubuntu 20.04 VM@ Windows 2019 Hyper-V @ NVMe
MAXCube als CUL_MAX (Thermostate)
MAXCube als SlowRF (FS20, wird durch ESPs ersetzt, teilweise geschehen)
Einige ESPs mit ESPEasy, zwei GHoma und ein Sonoff Tasmota

Wernieman

Nur mal  "Kuransicht":
fhem ("set ESPEasy_SWZ1_Touch oledframedcmd on,define Disptemp at +00:00:15 set ESPEasy_SWZ1_Touch oledframedcmd off");
zwischen FHEM-Befehle kommt ein ; hier hast Du ein "," ...
- 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

MAC66666

Danke. Syntax ist immer noch Murks

Ach das funzt wieder mal alles nicht.

Bin jetzt noch mal zurück zu meinem DOIF, da habe ich aber auch Probleme:
ohne do always  macht er es immer nur einmal. Mit Do always (hab ja toggle drin) vibriert quasi das Relais des Lichtes...

nur daraus werde ich nicht schlau, löst das mein Problem? :

Zitatwait

Das Attribut verzögert die Befehlsausführung, nach wahr werden einer Bedingung.

Laufende Wait-Timer werden bei einem eingeleiteten Statuswechsel des DOIF abgebrochen, daher werden die zu verzögernden Befehle nicht mehr ausgeführt.
do resetwait

Das Attribut beinhaltet do always, bricht aber die Wait-Timer bei wiederholtem Wahrwerden der Bedingung ab.
FHEM @ Ubuntu 20.04 VM@ Windows 2019 Hyper-V @ NVMe
MAXCube als CUL_MAX (Thermostate)
MAXCube als SlowRF (FS20, wird durch ESPs ersetzt, teilweise geschehen)
Einige ESPs mit ESPEasy, zwei GHoma und ein Sonoff Tasmota

kadettilac89

hi, ein beispiel wie klammern, if, und kommas gesetzt werden damit es funktioniert ... entsprechend umbauen und deines mit 8 werten sollte funktionieren,.


dy_test1:* { if ($EVENT eq "on") {
   fhem ("set dy_test2 on");
   fhem ("set dy_test3 on");   
}
if ($EVENT eq "off") {
   fhem ("set dy_test2 off");
   fhem ("set dy_test3 off");
}
}

musst nur $EVENT gegen dein $EVTPART1 ersetzen wie du es oben schon hast

Wzut

Zitat von: MAC66666 am 19 Februar 2018, 14:47:47
muss ich die "sets" durch Komma, Semikolon oder Doppelsemikolon trennen?
Die Frage wurde oben ja schon mit ; beantwortet, aber noch was zum Stichwort Komma das ich hier sehr selten im Forum als Beispiel sehe :
Du kannst identische Device Kommandos zusammenführen und diese durch Komma trennen
also bei dir statt "set SonoffWZ2 toggle,set SonoffWZ1 toggle, etc"
"set SonoffWZ2,SonoffWZ1 toggle; etc"

Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

MAC66666

Ja, das mit den identischen Devices habe ich scxhon mal gesehen, aber um mich nicht gänzlich zu verwirren, lass ich das bleiben  ;)

OK, dann werde ich mal versuchen ein Notify zu basteln.

Eines noch: warum mein Verhalten im DOIF? Mit Wait usw. habe ich das nicht in den Griff bekommen, nur mit einem unschönen sleep 0.4 am Ende Meiner Befehlsreihe...
FHEM @ Ubuntu 20.04 VM@ Windows 2019 Hyper-V @ NVMe
MAXCube als CUL_MAX (Thermostate)
MAXCube als SlowRF (FS20, wird durch ESPs ersetzt, teilweise geschehen)
Einige ESPs mit ESPEasy, zwei GHoma und ein Sonoff Tasmota

fiedel

Brauchst doch nur mein Beispiel abwandeln:


define TouchWZ1 notify ESPEasy_SWZ1_Touch:ScanCode.* {
if ($EVTPART1 eq "on" )  {
fhem ("set SonoffWZ2,SonoffWZ1 toggle");
                fhem ("set ESPEasy_SWZ1_Touch oledframedcmd on");
                fhem ("define Disptemp at +00:00:15 set ESPEasy_SWZ1_Touch oledframedcmd off");
                }
if ($EVTPART1 == 32768 ) {
                fhem ("set ESPEasy_SWZ1_Touch oledframedcmd on");
                fhem ("define Disptemp at +00:00:15 set ESPEasy_SWZ1_Touch oledframedcmd off");
}
}


... aber mich macht Pearl auch immer ganz wuschig...  ;)
FeatureLevel: 6.1 auf Wyse N03D ; Deb. 11 ; Perl: v5.14.2 ; IO: HM-MOD-RPI-PCB + VCCU|CUL 868 V 1.66|LinkUSBi |TEK603
HM: SEC-SCO|SCI-3-FM|LC-SW4-PCB|ES-PMSW1-PL|RC-4-2|SEN-MDIR-O|SEC-WDS-2
CUL: HMS100TF|FS20 S4A-2 ; OWDevice: DS18S20|DS2401|DS2406|DS2423

MAC66666

Jep, hatte ich derweil auch schon funktionierend umgesetzt, sieht haargenauso aus  ;)

Jetzt geht es bei mir weiter, z. B. will ich bei einem Tastendruck mein Max-Thermostat desiredTemperature um eines erhöhen bzw. verkleinern und einen toggle für ein ESPEasy Relais basteln. Naja, sind andere Baustellen. Das Grundnotify geht endlich, wenn auch mit Perl, aber habe mich dran "gewöhnt" 8)

Danke Leute!

Achso, wenn Ihr Ideen zu meinen weiteren Problemen habt, bitte gerne  :)
FHEM @ Ubuntu 20.04 VM@ Windows 2019 Hyper-V @ NVMe
MAXCube als CUL_MAX (Thermostate)
MAXCube als SlowRF (FS20, wird durch ESPs ersetzt, teilweise geschehen)
Einige ESPs mit ESPEasy, zwei GHoma und ein Sonoff Tasmota

Wernieman

Mit DOIF kenne ich mich nicht aus ..

aber mal eine Grundsätzliche Frage:
fhem ("set SonoffWZ2,SonoffWZ1 toggle");
fhem ("set ESPEasy_SWZ1_Touch oledframedcmd on");


Warum wird hier 2 Mal FHEM aufgerufen, wenn es auch ein mal geht?
fhem ("set SonoffWZ2,SonoffWZ1 toggle;
    set ESPEasy_SWZ1_Touch oledframedcmd on");


Bei Prototypen (und beim experimentieren) kann ich es verstehen, aber in einer Produktivumgebung ist es irgendwann schlechter "Stil" ....
- 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

fiedel

Da hast du Recht, ist nur wegen der Übersichtlichkeit und um zu zeigen, dass auch sowas geht.
FeatureLevel: 6.1 auf Wyse N03D ; Deb. 11 ; Perl: v5.14.2 ; IO: HM-MOD-RPI-PCB + VCCU|CUL 868 V 1.66|LinkUSBi |TEK603
HM: SEC-SCO|SCI-3-FM|LC-SW4-PCB|ES-PMSW1-PL|RC-4-2|SEN-MDIR-O|SEC-WDS-2
CUL: HMS100TF|FS20 S4A-2 ; OWDevice: DS18S20|DS2401|DS2406|DS2423

MAC66666

Ja dann später vieleicht  ;)
FHEM @ Ubuntu 20.04 VM@ Windows 2019 Hyper-V @ NVMe
MAXCube als CUL_MAX (Thermostate)
MAXCube als SlowRF (FS20, wird durch ESPs ersetzt, teilweise geschehen)
Einige ESPs mit ESPEasy, zwei GHoma und ein Sonoff Tasmota