FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: lernnoch am 06 Januar 2018, 22:38:14

Titel: (gelöst) Im Notify mehrere Befehle auslösen
Beitrag von: lernnoch am 06 Januar 2018, 22:38:14
Wie der Forenname schon sagt, absolutes Anfängerproblem, zu dem ich mit den Suchfunktionen viele Fragen und Antworten gefunden habe, jedoch keine Lösung die funktioniert, aber vermutlich denke ich nur zu kompliziert:

Ich habe ein Notify, was einwandfrei funktioniert und ein DUMMY schaltet:

set xtest1 on

Das gleiche Notify führt auch nach Textänderung aus:

get EX1_1 (liest einen MCP23017 aus)

Lege ich das Notify neu an und gebe beide Befehle zusammen mit 2 mal ; getrennt ein, wird der TeXt mit einem ; in die def übernommen, es wird aber immer nur der erste Befehl ausgeführt, egeal in welcher Reihenfolge ich die Befehle eingebe.
Also das NOTIFY löst aus und beide Befehle funktionieren einzeln ohne Problem.

Ich habe versucht (Direkteingabe in die DEF):

get EX1_1;set xtest1 on
get EX1_1;:set xtest1 on
get EX1_1 ; set xtest1 on
{fehm (get EX1_1); (set xtest1 on)}
{fehm ("get EX1_1");("set xtest1 on")}
{fehm (get EX1_1);;(set xtest1 on)}
{fehm ("get EX1_1);;fhem("set xtest1 on")}

Wo liegt der Fehler??

... oder muss man mehrer Befehle auslagern und dann per Funktion aufrufen??

Titel: Antw:Im Notify mehrere Befehle auslösen
Beitrag von: KernSani am 06 Januar 2018, 22:48:44
Hi und willkommen,


zunächst einmal drei Punkte:
1.) das Ding heisst FHEM (und folglich die perl funktion auch fhem  ;)
2.) Coding bitte immer in code Tags (das ist das # oben im Editor)
3.) Immer ein "list" des Devices mit angeben (in diesem Fall deines notifies)

Zum Problem: deine Versuche sehen prinzipiell gut aus... Zeig mal ein list (siehe Pkt. 3)

Danke,

Oli
Titel: Antw:Im Notify mehrere Befehle auslösen
Beitrag von: lernnoch am 07 Januar 2018, 22:00:14
Danke für die schnelle Antwort.

1.) habe ich nicht verstanden, kleine Verständnishilfe bitte
2.) versuche ich beim nächsten Mal
3.)
Internals:
   DEF        INT_MCP:Pinlevel:.* get EX1_5
   NAME       n_INT_MCP
   NOTIFYDEV  INT_MCP
   NR         138
   NTFY_ORDER 50-n_INT_MCP
   REGEXP     INT_MCP:Pinlevel:.*
   STATE      2018-01-07 21:50:46
   TYPE       notify
   Readings:
     2018-01-07 21:48:47   state           active
Attributes:
   room       903_Expander,zzz_Notify

Es geht also nur darum, zusammen mit    get EX1_5    einen zweiten Befehl auszuführen.

set lampe1,lampe2,lampe3 on get auch, ich brauche aber zwei verschiedene Befehle.

Ich habe mir als Workaround ein zweites Notify n_INT_MCP1 kopiert und nur den Befehl geändert,

Jetzt werden beide Befehle ausgeführt, aber das kann doch eigenlich nur eine Notlösung sein, oder?
Titel: Antw:Im Notify mehrere Befehle auslösen
Beitrag von: KernSani am 07 Januar 2018, 22:18:50
zu 1.) Du hattest in deinem Codingbeispiel die Funktion fehm (nicht fhem - beliebter Fehler ;-))
zu 2.) würde auch dieses Mal schon gehen (du kannst Beiträge auch ändern)
zu 3.) probier scherzeshalber mal das:


fhem ("get EX1_1;;set xtest1 on");

Titel: Antw:Im Notify mehrere Befehle auslösen
Beitrag von: tiroso am 08 Januar 2018, 14:04:41
Sein Anfrage war ja wie der DEF Part aussehen soll.

Einleiten in PERL machst du mit { ... }. Also war dein erstes Beispiel annähernd in die richtige Richtung
{fhem("get EX1_1"); fhem("set xtest1 on");}
Um das ganze etwas anschaulicher zu gestallten:

{
    fhem("get EX1_1");
    fhem("set xtest1 on");
}


In deinem Beispiel weiß ich allerdings nicht wieso du auf Perl umsteigen willst?!?

Dein ganzes Notify kannst du folgendermaßen anlegen:
define n_INT_MCP notify INT_MCP:Pinlevel:.* get EX1_1;;set xtest1 on
Titel: Antw:Im Notify mehrere Befehle auslösen
Beitrag von: lernnoch am 09 Januar 2018, 19:12:30
@KernSani
Danke für den Hinweis auf fehm  >:(, da war ich nur zu unaufmerksam beim abschreiben ...

Die angegebene Befehlsfolge funktioniert bei mir allerdings nicht.

@tiroso

Auf Perl war ich wegen im Netz gefundener Beispiele gekommen, da es nicht funktionierte.

Deine beiden Befehlsfolgen funktionieren einwandfrei.

Für Anfänger ist jedoch zu beachten, das aus den 2 mal ;; (bei define) automatisch im Def 1 mal ; wird.

Ich dachte, ich hätte alle Kombinationen ausprobiert, habe jedoch aus alter Gewohnheit nach dem ; ein Leerzeichen eingefügt.

DANN FUNKTIONIERT ES NICHT MEHR, kann ja jeder mal ausprobieren, der mitliest und das gleiche Problem hat.

Als Anfänger folglich gelernt:
Befehle im DEF mit einem ; trennen und keine Leerzeichen verwenden.
Es ist ein Unterschied, ob ich die Befehle mit define erstmals schreibe oder später im DEF ändere!

und: hier wird unkompliziert auch bei einfachen Dingen geholfen, Danke.