Hauptmenü

generelle Syntaxfrage

Begonnen von stever, 31 März 2013, 00:37:55

Vorheriges Thema - Nächstes Thema

stever

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.

Reinerlein

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

stever

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

Dragonfly

Ich nehms ohne Klammer:
fhem "set....

stever

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

Zrrronggg!

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)


FHEM auf Linkstation Mini, CUL 868 SlowRF, 2xCUL 868 RFR, CUL 433 für IT, 2xHMLAN-Configurator mit VCCU, ITV-100 Repeater, Sender und Aktoren von FHT, FS20, S300, HM, IT, RSL

stever

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

Zrrronggg!

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
FHEM auf Linkstation Mini, CUL 868 SlowRF, 2xCUL 868 RFR, CUL 433 für IT, 2xHMLAN-Configurator mit VCCU, ITV-100 Repeater, Sender und Aktoren von FHT, FS20, S300, HM, IT, RSL

Reinerlein

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

stever

@ 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

Zrrronggg!

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!
FHEM auf Linkstation Mini, CUL 868 SlowRF, 2xCUL 868 RFR, CUL 433 für IT, 2xHMLAN-Configurator mit VCCU, ITV-100 Repeater, Sender und Aktoren von FHT, FS20, S300, HM, IT, RSL

stever

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.

Zrrronggg!

Ä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.
FHEM auf Linkstation Mini, CUL 868 SlowRF, 2xCUL 868 RFR, CUL 433 für IT, 2xHMLAN-Configurator mit VCCU, ITV-100 Repeater, Sender und Aktoren von FHT, FS20, S300, HM, IT, RSL

MisterEltako

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.
HMLAN-Konfigurations-Adapter, HM-Funkjalousieaktor/HM-Dimmaktor/HM-Schaltaktor f. Markenschalter, Jalousie-/Schaltaktor von Eltako, FT4 v. Eltako, TCM310

stever

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

stever

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

stever

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.


Reinerlein

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

stever

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

Reinerlein

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

stever

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

Puschel74

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
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

stever

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.

stever

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.