(gelöst) Im Notify mehrere Befehle auslösen

Begonnen von lernnoch, 06 Januar 2018, 22:38:14

Vorheriges Thema - Nächstes Thema

lernnoch

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??

PI 3 mit ausschließlich kabelgebundener Steuerung von
Licht, Rolladen, Heizungsventilen durch Taster und Web
Einsatz von 8 MCP23017 mit Relaisplatinen
Module: 44_TASTER, 44_ROLLO

KernSani

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
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

lernnoch

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?
PI 3 mit ausschließlich kabelgebundener Steuerung von
Licht, Rolladen, Heizungsventilen durch Taster und Web
Einsatz von 8 MCP23017 mit Relaisplatinen
Module: 44_TASTER, 44_ROLLO

KernSani

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");

RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

tiroso

#4
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

lernnoch

@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.
PI 3 mit ausschließlich kabelgebundener Steuerung von
Licht, Rolladen, Heizungsventilen durch Taster und Web
Einsatz von 8 MCP23017 mit Relaisplatinen
Module: 44_TASTER, 44_ROLLO