FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: stever am 31 März 2013, 00:37:55

Titel: generelle Syntaxfrage
Beitrag von: stever am 31 März 2013, 00:37:55
Hallo,

ich habe folgenden Codeschnipsel zum steuern einer Nachtbeleuchtung erstellt:

define Nachtlicht_aus at *{sunrise("REAL")} {\
fhem("set ff800081_eg_wz_tv_led A0");;\
#fhem("set ff800081_eg_wz_tv_led released");;\

#fhem("set ff800083_eg_kueche_schrank_led A0");;\
#fhem("set ff800083_eg_kueche_schrank_led released");;\
}


Wenn ich nun die auskommentierten Zeilen einfüge erhalte ich einen Fehler:

configfile: Unknown command fhem("set, try help
Unknown command fhem("set, try help


Hier scheine ich ein generelles Verständnisproblem mit dem Code zu haben.

Ich bedanke mich schonmal für eure Hilfe.
Titel: Aw: generelle Syntaxfrage
Beitrag von: Reinerlein am 31 März 2013, 00:51:35
Hi Stever,

ist die Leerzeile auch in deiner Datei enthalten?
Wenn ja, dann muss auch dort das Zeilenende mit Backslash maskiert werden...

Grüße Reinerlein
Titel: Aw: generelle Syntaxfrage
Beitrag von: stever am 31 März 2013, 01:01:59
Hallo Reinerlei,

danke für die schnelle Antwort. Habs geändert:


#==========
#Nachtlicht
#==========

define Nachtlicht_aus at *{sunrise("REAL")} {\
        fhem("set ff800081_eg_wz_tv_led A0");;\
fhem("set ff800081_eg_wz_tv_led released");;\
fhem("set ff800083_eg_kueche_schrank_led A0");;\
fhem("set ff800083_eg_kueche_schrank_led released");;\
}


Leider bleibt die Fehlermeldung.

Gruß,

Steve
Titel: Aw: generelle Syntaxfrage
Beitrag von: Dragonfly am 31 März 2013, 01:43:53
Ich nehms ohne Klammer:
fhem "set....
Titel: Aw: generelle Syntaxfrage
Beitrag von: stever am 31 März 2013, 01:51:11
Hallo,

mit dieser Syntax klappt es nun ohne Fehlermeldung:


define Nachtlicht_aus_eg_wz_tv_led at *{sunrise("REAL")} \
set ff800081_eg_wz_tv_led A0;;\
set ff800081_eg_wz_tv_led released

define Nachtlicht_aus_eg_kueche_schrank_led at *{sunrise("REAL")} \
set ff800083_eg_kueche_schrank_led A0;;\
set ff800083_eg_kueche_schrank_led released


Warum kann ich nicht beide Aktoren in ein define nehmen? Möchte es gerne für mein Verständnis wissen.

Gruß,

Steve
Titel: Aw: generelle Syntaxfrage
Beitrag von: Zrrronggg! am 31 März 2013, 03:48:35
Klar, kann man in einem machen.


define Nachtlicht_aus at *{sunrise("REAL")} \
        set ff800081_eg_wz_tv_led A0;;\
set ff800081_eg_wz_tv_led released;;\
set ff800083_eg_kueche_schrank_led A0;;\
set ff800083_eg_kueche_schrank_led released


sollte gehen (obgleich ich nicht weiss, was "set Aktor released" machen soll, das tut aber hier nix zur Sache)


Titel: Aw: generelle Syntaxfrage
Beitrag von: stever am 31 März 2013, 04:17:55
Hey Zrrronggg!,

funktioniert aber nicht. Führt immer wieder zu einer Fehlermeldung. Nur wenn ich das einzeln verpacke ist FHEM zufrieden.

Das release muss ich setzen, da sonst meine PEHA Aktoren den nächsten Befehl verweigern. Das hat mich schon zum verzweifeln gebracht.

Sende an PEHA AI => Licht an
Sende an PEHA A0 => Licht nicht aus
Sende an PEHA AI => Licht nicht nochmal an (ist ja schon an)
Sende an PEHA A0 => Licht nicht aus

Sende an PEHA AI => Licht an
Sende an PEHA release
Sende an PEHA A0 => Licht aus
Sende an PEHA release
Sende an PEHA AI => Licht an
Sende an PEHA release
Sende an PEHA A0 => Licht aus


Gruß,

Steve

Ergänzung: Alles EnOcean
Titel: Aw: generelle Syntaxfrage
Beitrag von: Zrrronggg! am 31 März 2013, 04:40:20
Okay, release kapier ich jetzt. Hab nix mit EnOcean.

Zitatfunktioniert aber nicht. Führt immer wieder zu einer Fehlermeldung. Nur wenn ich das einzeln verpacke ist FHEM zufrieden.

Das verstehe ich auch nicht.  Wie lautet die Fehlermeldung denn bitte?

Versuch doch mal bitte dies (eine Zeile):


define Nachtlicht_aus at *{sunrise("REAL")}  set ff800081_eg_wz_tv_led A0 ;; set ff800081_eg_wz_tv_led released ;; set ff800083_eg_kueche_schrank_led A0 ;; set ff800083_eg_kueche_schrank_led released
Titel: Aw: generelle Syntaxfrage
Beitrag von: Reinerlein am 31 März 2013, 14:46:13
Hi Steve,

wenn ich nochmal auf deine ursprüngliche Schreibweise zurückkommen darf. Hast du mal #==========
#Nachtlicht
#==========

define Nachtlicht_aus at *{sunrise("REAL")} {\
        fhem("set ff800081_eg_wz_tv_led A0");;\
fhem("set ff800081_eg_wz_tv_led released");;\
fhem("set ff800083_eg_kueche_schrank_led A0");;\
fhem("set ff800083_eg_kueche_schrank_led released")\
}
versucht?
Also hinter der letzten Anweisung keine Semikola mehr. Es könnte sein, dass der reguläre Ausdruck zum zerschneiden der Sequenzen da etwas in Tüddel kommt, wenn nichts mehr folgt...

Ansonsten kannst du das, meiner Meinung nach, auch alles ohne geschweifte Klammern und dem fhem-Befehl machen:#==========
#Nachtlicht
#==========

define Nachtlicht_aus at *{sunrise("REAL")} set ff800081_eg_wz_tv_led A0 ;; set ff800081_eg_wz_tv_led released ;; set ff800083_eg_kueche_schrank_led A0 ;; set ff800083_eg_kueche_schrank_led released


oder auch zusammengefasst:define Nachtlicht_aus at *{sunrise("REAL")} set ff800081_eg_wz_tv_led,ff800083_eg_kueche_schrank_led A0 ;; set ff800081_eg_wz_tv_led,ff800083_eg_kueche_schrank_led released

Grüße Reinerlein
Titel: Aw: generelle Syntaxfrage
Beitrag von: stever am 31 März 2013, 14:57:14
@ Zrrronggg

Diese Meldung im Logfile:


configfile: Unknown command fhem("set, try help
Unknown command fhem("set, try help


Den Rest probiere ich demnächst aus.

Schöne Ostern euch
Titel: Aw: generelle Syntaxfrage
Beitrag von: Zrrronggg! am 31 März 2013, 15:20:58
Zitatconfigfile: Unknown command fhem("set, try help
Unknown command fhem("set, try help

Also diese Fehlermeldung kam als du wie von mir vorgeschlagen diesen Code verwendet hast:

Zitatdefine Nachtlicht_aus at *{sunrise("REAL")} \
        set ff800081_eg_wz_tv_led A0;;\
   set ff800081_eg_wz_tv_led released;;\   
   set ff800083_eg_kueche_schrank_led A0;;\
   set ff800083_eg_kueche_schrank_led released

Nimms mir bitte nicht übel, aber WIRKLICH?
Ich glaube nicht. Ich glaube du hast meinen Code eingesetzt und dann nicht auf SAFE gedrückt oder so und es wurde noch dein alter verwendet. Beachte, das in meinem Code das "unkown Command"
fhem("set
gar nicht vorkommt!
Mein Code mag gehen oder nicht, aber der von dir gepostet Fehler kann NICHT durch meinen Codevorschalg verursacht worden sein.


Versuch das bitte noch mal und stelle sicher, das der Code auch tatsächlich verwendet wir.

Oder versuche meinen Vorschlag


define Nachtlicht_aus at *{sunrise("REAL")}  set ff800081_eg_wz_tv_led A0 ;; set ff800081_eg_wz_tv_led released ;; set ff800083_eg_kueche_schrank_led A0 ;; set ff800083_eg_kueche_schrank_led released


(ist letztlich die einfachste und kürzeste Form)

Beachte das Reinerlein exact die selben Vorschläge wie ich macht!
Titel: Aw: generelle Syntaxfrage
Beitrag von: stever am 31 März 2013, 15:34:32
Hallo,

nein! Ich habe diesen Code verwendet:



#==========
#Nachtlicht
#==========

define Nachtlicht_aus at *{sunrise("REAL")} {\
        fhem("set ff800081_eg_wz_tv_led A0");;\
fhem("set ff800081_eg_wz_tv_led released");;\
fhem("set ff800083_eg_kueche_schrank_led A0");;\
fhem("set ff800083_eg_kueche_schrank_led released");;\
}


führte zu


"unkown Command"
 fhem("set


Was anderes habe ich ja auch nicht behauptet. Vielleicht missverstanden :) Bin noch nicht dazu gekommen mehr auszuprobieren.
Titel: Aw: generelle Syntaxfrage
Beitrag von: Zrrronggg! am 31 März 2013, 16:08:07
Äh,,, wie jetzt.

Ich schrieb:

ZitatKlar, kann man in einem machen.


Code: [alles markieren] [anzeigen/verstecken]
define Nachtlicht_aus at *{sunrise("REAL")} \
        set ff800081_eg_wz_tv_led A0;;\
   set ff800081_eg_wz_tv_led released;;\   
   set ff800083_eg_kueche_schrank_led A0;;\
   set ff800083_eg_kueche_schrank_led released




Darauf hast du geantwortet:

ZitatHey Zrrronggg!,

funktioniert aber nicht. Führt immer wieder zu einer Fehlermeldung. Nur wenn ich das einzeln verpacke ist FHEM zufrieden.

Die Antowrt ist doch SINNLOS, wenn du NICHT ausprobiert hast, was ich hinschrieb. Meinst du nicht das ich auf diese DIREKTE Antworten auf meinen Vorschlag entnehmen darf, dass sich das natürlich auf meinen Änderungsvorschlag bezog?

Nimms mir nicht übel, aber sowas ist ärgerlich. Ich und Reinerlein geben uns hier Mühe dir weiter zu helfen und du probierst nicht aus was wir sagen, behauptest aber es ginge nicht?

Ich darf offen sagen: Ich fühle mich verschaukelt, ich werde mir erlauben, deine Posts nicht mehr zu beachten.
Titel: Aw: generelle Syntaxfrage
Beitrag von: MisterEltako am 31 März 2013, 17:18:41
Hi!

Ich habe ein ähnliches Problem, allerdings in meiner 99_myUtils.pm  produziert:

1.funktioniert:
{fhem("define Sonnenaufgang at $Sonnenaufgang set Rollo_EG 100;;set Rollo_Flur 100;define Sonnenuntergang at $Sonnenuntergang set Rollo_EG 1;;set Rollo_Flur 1;;define Dimmer_an at +00:01:25 set Dimmer_Wozi 50;;define Dimmer_aus at +00:30:00 set Dimmer_Wozi 0;define Aussenlicht_Yahoo at $Aussenlicht set Licht_all on")};


2.funktioniert nicht:
{fhem("define Sonnenaufgang at $Sonnenaufgang set Rollo_EG 100;;set Rollo_Flur 100;
       define Sonnenuntergang at $Sonnenuntergang set Rollo_EG 1;;set Rollo_Flur 1;;
       define Dimmer_an at +00:01:25 set Dimmer_Wozi 50;;
       define Dimmer_aus at +00:30:00 set Dimmer_Wozi 0;
       define Aussenlicht_Yahoo at $Aussenlicht set Licht_all on")};



3.funktioniert:
{fhem("define Sonnenaufgang at $Sonnenaufgang set Rollo_EG 100;;set Rollo_Flur 100;".
      "define Sonnenuntergang at $Sonnenuntergang set Rollo_EG 1;;set Rollo_Flur 1;;".
      "define Dimmer_an at +00:01:25 set Dimmer_Wozi 50;;".
      "define Dimmer_aus at +00:30:00 set Dimmer_Wozi 0;".
      "define Aussenlicht_Yahoo at $Aussenlicht set Licht_all on")};


Kann sich dies jemand erklären?

MfG, MisterEltako.
Titel: Aw: generelle Syntaxfrage
Beitrag von: stever am 31 März 2013, 17:37:01
@Zrrronggg!


define Nachtlicht_aus at *{sunrise("REAL")} \
        set ff800081_eg_wz_tv_led A0;;\
set ff800081_eg_wz_tv_led released;;\
set ff800083_eg_kueche_schrank_led A0;;\
set ff800083_eg_kueche_schrank_led released


Diesen Code hatte ich gestern auch noch probiert, gleich nach dem Du den gepostet hattest. War gestern schon spät und ich hatte vorhin nicht mehr daran gedacht. Hier meldet die Config sinngemäß, dass er mit A0 im dritten set Befehl nichts anfangen kann. Ich solle doch zwischen A0, AI ... und release wählen. Das genaue könnte ich erst posten wenn ich wieder davor sitze.

Wenn ich es einzeln verpacke, klappt es aber. Merkwürdig.
Titel: Aw: generelle Syntaxfrage
Beitrag von: stever am 31 März 2013, 18:45:46
Zitat von: Zrrronggg! schrieb am So, 31 März 2013 16:08Nimms mir nicht übel, aber sowas ist ärgerlich. Ich und Reinerlein geben uns hier Mühe dir weiter zu helfen und du probierst nicht aus was wir sagen, behauptest aber es ginge nicht?

Ich darf offen sagen: Ich fühle mich verschaukelt, ich werde mir erlauben, deine Posts nicht mehr zu beachten.

Hey,

ich hatte vorhin nur nicht mehr alles zusammenbekommen was ich probiert hatte. Alle Tipps von gestern Nacht wurden ausprobiert und führten nicht zum Erfolg. Heute kam ich noch nicht dazu die neuen Tips auszuprobieren.

Verstehe, dass man sich da etwas blöd vorkommt.

Den Rest liefere ich mit Log nach sobald ich wieder davor sitze.

Schöne Ostern noch,

Steve
Titel: Aw: generelle Syntaxfrage
Beitrag von: stever am 01 April 2013, 01:11:02
So,

mein Start hier im Forum wurde mir ja etwas krumm genommen. Will aber trotzdem die Ergebnisse der unterschiedlichen Codes liefern. Testumgebung FB7390 mit FHEM 5.3

Chronologisch:

User: Reinerlei


define Nachtlicht_aus at *{sunrise("REAL")} {\
        fhem("set ff800081_eg_wz_tv_led A0");;\
fhem("set ff800081_eg_wz_tv_led released");;\
fhem("set ff800083_eg_kueche_schrank_led A0");;\
fhem("set ff800083_eg_kueche_schrank_led released");;\
}


logfile: 2013.04.01 00:36:52 1: configfile: Unknown command fhem("set, try help

============

User: Stever


define Nachtlicht_aus_eg_wz_tv_led at *{sunrise("REAL")} \
set ff800081_eg_wz_tv_led A0;;\
set ff800081_eg_wz_tv_led released

define Nachtlicht_aus_eg_kueche_schrank_led at *{sunrise("REAL")} \
set ff800083_eg_kueche_schrank_led A0;;\
set ff800083_eg_kueche_schrank_led released


Kein Fehler im Logfile. Funktioniert auch bislang in der Praxis.

================

User: Zrrronggg!


define Nachtlicht_aus at *{sunrise("REAL")} \
        set ff800081_eg_wz_tv_led A0;;\
set ff800081_eg_wz_tv_led released;;\
set ff800083_eg_kueche_schrank_led A0;;\
set ff800083_eg_kueche_schrank_led released


logfile: 2013.04.01 00:50:13 1: configfile: Unknown argument A0;\
, choose one of A0 AI B0 BI C0 CI D0 DI released

================

User: Zrrronggg!

define Nachtlicht_aus at *{sunrise("REAL")}  set ff800081_eg_wz_tv_led A0 ;; set ff800081_eg_wz_tv_led released ;; set ff800083_eg_kueche_schrank_led A0 ;; set ff800083_eg_kueche_schrank_led released


Kein Fehler im Logfile.

================

User: Reinerlein


define Nachtlicht_aus at *{sunrise("REAL")} set ff800081_eg_wz_tv_led,ff800083_eg_kueche_schrank_led A0 ;; set ff800081_eg_wz_tv_led,ff800083_eg_kueche_schrank_led released


Kein Fehler im Logfile.

================

User: Reinerlein


define Nachtlicht_aus at *{sunrise("REAL")} set ff800081_eg_wz_tv_led A0 ;; set ff800081_eg_wz_tv_led released ;; set ff800083_eg_kueche_schrank_led A0 ;; set ff800083_eg_kueche_schrank_led released


Kein Fehler im Logfile.

================

User: Reinerlein



define Nachtlicht_aus at *{sunrise("REAL")} {\
        fhem("set ff800081_eg_wz_tv_led A0");;\
fhem("set ff800081_eg_wz_tv_led released");;\
fhem("set ff800083_eg_kueche_schrank_led A0");;\
fhem("set ff800083_eg_kueche_schrank_led released")\
}



Kein Fehler im Logfile.


Ich hoffe jetzt habe nichts falsch gemacht und nichts vergessen. Ich hoffe auch alle die mich auf die Ignore Liste gesetzt haben, haben hoffentlich ein Nachsehen mit meinen ersten Posts. Ich bin auf eure Hilfe angewiesen und möchte mit meinen erlangten Wissen dann auch anderen Usern weiter helfen.

P.S. Ich habe jetzt via Copy & Paste stur alle Codes eingegeben. Ich werde erst jetzt analysieren was ich beim ersten Versuch falsch gemacht habe.

Titel: Aw: generelle Syntaxfrage
Beitrag von: Reinerlein am 01 April 2013, 12:30:17
Hi Steve,

die Codes sind alle direkt per Copy&Paste in den Beitrag gekommen?

Dann kann ich dir das Problem von weiter oben sagen:define Nachtlicht_aus at *{sunrise("REAL")} \
        set ff800081_eg_wz_tv_led A0;;\
set ff800081_eg_wz_tv_led released;;\
set ff800083_eg_kueche_schrank_led A0;;\
set ff800083_eg_kueche_schrank_led released
Die Backslashe am Ende der Zeile sollen das Zeilenende maskieren. Dazu muss der Backslash aber auch direkt das letzte getippte Zeichen sein. Das nächste Zeichen muss der Zeilenumbruch selbst sein.
In der Zeile "set ff800081_eg_wz_tv_led released;;\" kommen hinter dem Backslash aber noch Leerzeichen. Deswegen wird das Zeilenende nicht maskiert, und es gibt anschließend eine Zeile, die direkt mit einem "set..." beginnt, was kein zulässiges Kommando in so einer Config-Datei ist (siehe Fehlermeldung). Das sorgt auf jeden Fall für komisches Verhalten.

Also beim Kopieren von Code hierher kommt es auf jedes Zeichen an. Sonst können andere nicht helfen, da die meisten davon ausgehen, dass so etwas wie mit den Leerzeichen nicht vorkommt :-)

Grüße Reinerlein
Titel: Aw: generelle Syntaxfrage
Beitrag von: stever am 01 April 2013, 13:18:16
Zitat von: Reinerlein schrieb am Mo, 01 April 2013 12:30Hi Steve,

die Codes sind alle direkt per Copy&Paste in den Beitrag gekommen?

Dann kann ich dir das Problem von weiter oben sagen:define Nachtlicht_aus at *{sunrise("REAL")} \
        set ff800081_eg_wz_tv_led A0;;\
set ff800081_eg_wz_tv_led released;;\
set ff800083_eg_kueche_schrank_led A0;;\
set ff800083_eg_kueche_schrank_led released
Die Backslashe am Ende der Zeile sollen das Zeilenende maskieren. Dazu muss der Backslash aber auch direkt das letzte getippte Zeichen sein. Das nächste Zeichen muss der Zeilenumbruch selbst sein.
In der Zeile "set ff800081_eg_wz_tv_led released;;\" kommen hinter dem Backslash aber noch Leerzeichen. Deswegen wird das Zeilenende nicht maskiert, und es gibt anschließend eine Zeile, die direkt mit einem "set..." beginnt, was kein zulässiges Kommando in so einer Config-Datei ist (siehe Fehlermeldung). Das sorgt auf jeden Fall für komisches Verhalten.

Also beim Kopieren von Code hierher kommt es auf jedes Zeichen an. Sonst können andere nicht helfen, da die meisten davon ausgehen, dass so etwas wie mit den Leerzeichen nicht vorkommt :-)

Grüße Reinerlein

Hallo Reinerlein,

die Codes sind direkt C&P hier rein. Ohne die Leerzeichen verschwindet auch die Fehlermeldung.

Was genau macht hier eigentlich das * im Code:


*{sunrise("REAL")}


Und wo kann ich ich jetzt meine Geodaten eintragen? in der FHEM.cfg werden die immer automatisch wieder herausgelöscht.

Grüße und Danke,

Steve
Titel: Aw: generelle Syntaxfrage
Beitrag von: Reinerlein am 01 April 2013, 14:41:45
Hi Steve,

das Sternchen ist für den At-Befehl, und sorgt dafür, dass sich der At-Befehl nach Ausführung neu einrichtet. Dazu liefert der Perl-Befehl "sunrise" bei jedem Aufruf den als nächsten kommenden Sonnenaufgang als Zeit-String zurück.
Damit terminiert sich dieser at nach einer Ausführung auf den Zeitpunkt des nächsten erwarteten Sonnenaufgang (ich glaube genauer gesagt: auf den Zeitpunkt wo heute der Sonnenaufgang war, da nicht in die Zukunft geschaut werden kann).
Das mit dem Sternchen steht aber in der commandref zu at gut beschrieben. Auch, was noch alles mit at möglich ist....

Für die Funktion von "sunrise" wird wohl in der .pm-Datei in den Konstanten oben deine Koordinate eingestellt werden. Damit kenne ich mich aber nicht aus, da ich diese Funktion nicht verwende...

Grüße Reinerlein
Titel: Aw: generelle Syntaxfrage
Beitrag von: stever am 02 April 2013, 22:36:18
Zitat von: Reinerlein schrieb am Mo, 01 April 2013 14:41Hi Steve,

das Sternchen ist für den At-Befehl, und sorgt dafür, dass sich der At-Befehl nach Ausführung neu einrichtet.

Dankeschön
Titel: Aw: generelle Syntaxfrage
Beitrag von: Puschel74 am 03 April 2013, 12:35:33
Hallo,

die Standortdaten habe ich in FHEM so hinterlegt:

attr global latitude xx.xxxx
attr global longitude y.yyyyy


Die Daten für xx.xxxx und y.yyyy bekommst du mit Google-Maps recht einfach raus.

Grüße
Titel: Aw: generelle Syntaxfrage
Beitrag von: stever am 11 April 2013, 21:12:09
Zitat von: Puschel74 schrieb am Mi, 03 April 2013 12:35Hallo,

die Standortdaten habe ich in FHEM so hinterlegt:

attr global latitude xx.xxxx
attr global longitude y.yyyyy


Die Daten für xx.xxxx und y.yyyy bekommst du mit Google-Maps recht einfach raus.

Grüße

Hallo,

danke für die Antwort. Der Befehl wird immer automatisch aus der fhem.cfg gelöscht. Weiß da jemand ne Lösung? Dadurch wird sunset und sunrise nicht zu den erwünschten Zeiten ausgeführt.
Titel: Aw: generelle Syntaxfrage
Beitrag von: stever am 11 April 2013, 21:31:06
Zitat von: stever schrieb am Do, 11 April 2013 21:12
Zitat von: Puschel74 schrieb am Mi, 03 April 2013 12:35Hallo,

die Standortdaten habe ich in FHEM so hinterlegt:

attr global latitude xx.xxxx
attr global longitude y.yyyyy


Die Daten für xx.xxxx und y.yyyy bekommst du mit Google-Maps recht einfach raus.

Grüße

Hallo,

danke für die Antwort. Der Befehl wird immer automatisch aus der fhem.cfg gelöscht. Weiß da jemand ne Lösung? Dadurch wird sunset und sunrise nicht zu den erwünschten Zeiten ausgeführt.

Der Befehl wird doch nicht gelöscht, sondern nur nach oben in die cfg gesetzt. Ich muss wohl für meine Zwecke den sunset civil nochmal überdenken. Da ist es mir nämlich schon zu dunkel.

Sorry.