Hauptmenü

"ESCAPEN" von Perl

Begonnen von Guest, 31 Oktober 2011, 22:37:02

Vorheriges Thema - Nächstes Thema

Guest

Originally posted by: <email address deleted>

nachdem ich sage und schreibe 3h dazu gebraucht habe, um die Zeile:

define temp_ntfy2 notify Orangerie:T:.* { my @@array  = split(" ",
ReadingsVal("Orangerie", "temperature", 00));   if ( $array[0] < 2 ) {
`/home/mail.sh`;  }  }

die sich problemlos im "Webinterface" ausfühern läßt, als eine Zeile in die
FHEM.cfg zu übernehmen, was einfach nur in diversen Fehlermeldungen beim
antriggern des notify endet (weil evtl der Zeilenpuffer zu klein ist?),
möchte ich an dieser Stelle mal anregen, diese Problematik an einer Stelle
im Dokument geballt zu erwähnen.

Unter Perl Specials findet man noch den kurzen Hinweis, dass:
"Perl expressions are separated by ;, in fhem oneliners they have to
escaped with ;; "
was auch immer oneliners sind, das wird nicht erwähnt. Die fhem.cfg wohl
eher nicht.


kurze Frage eines Ahnungslosen:

In einigen Bsp. sieht man dann noch dass die Zeilenenden mit \
abgeschlossen werden.
Ist dies zwingend notwendig? Oder in Perl so üblich?

Danke



--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Guest

Originally posted by: <email address deleted>

noch die zweite Frage,

wie erreiche ich dass ich beim Absacken der Temperatur nicht alle 5 Minuten
(so ist mein Abfrageintervall eingestellt), nicht jedes Mal ein Notify
erhalte.

Ich kann das natürlich alles über Trigger in MySql regeln, möchte dies aber
lieber in FHEM abhandeln.


in fhem.cfg sieht es momentan so aus:

define temp_ntfy2 notify Orangerie:T:.* {\
my @@array  = split(" ",ReadingsVal("Orangerie", "temperature", 00));;\
if ( $array[0] < 2 ) {`/home/mail.sh`;;}}


--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

borsti67

                                                 

> Unter Perl Specials findet man noch den kurzen Hinweis, dass:
> "Perl expressions are separated by ;, in fhem oneliners they have to
> escaped with ;; "
> was auch immer oneliners sind, das wird nicht erwähnt. Die fhem.cfg wohl
> eher nicht.

oneliner = Einzeiler = eigentlich das, was Du im FHEM-Webinterface
direkt eingibst.
Aber auch in der FHEM.CFG muessen die verdoppelt werden!

> In einigen Bsp. sieht man dann noch dass die Zeilenenden mit \
> abgeschlossen werden.

das brauchst Du in der FHEM.CFG, wenn es "optisch" kein Oneliner werden
soll; heisst also, dass die Zeile in der Folgenden weitergeht. Für FHEM
muss das komplette Statement als eine Zeile uebergeben werden (was sich
nicht unbedingt gut lesen laesst ;)).

Beides sind technische Notwendigkeiten fuer FHEM, nicht von Perl.

Gruss
Torsten

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
cu/2
Borsti
---
FHEM 5.8 auf Synology DS211j (bis 11/17) | FHEM 6.0 auf Raspi Zero W (bis 11/20) | FHEM 6.2 als VM in Synology DS1815+ (ab 11/20)

Guest

Originally posted by: <email address deleted>

Hi Thomas,

> noch die zweite Frage,
> wie erreiche ich dass ich beim Absacken der Temperatur nicht alle 5 Minuten
> (so ist mein Abfrageintervall eingestellt), nicht jedes Mal ein Notify
> erhalte.

Ein notify ist ein event-handler, der in Aktion tritt, sobald der
abgefragte event eintritt.
Wenn fhem also alle 5 Minuten eine Nachricht erhält, und der event-
handler besagt, dass beim Eintreffen einer solchen Nachricht etwas
geschehen soll, dann tut fhem genau das :-)

Du müsstest also eine Zusatzbedingung einbauen, also z.B. einen
Zähler, so dass Du nur bei jedem fünften Auftreten eine
Benachrichtigung erhältst, oder Du fragst das Verstreichen eines
Mindest-Zeitraums zwischen zwei Benachrichtigungen ab.

Speichern kannst Du Zähler oder letzten Ausführungszeitpunkt in einem
dummy, siehe http://fhem.de/commandref.html#dummy

Du schreibst nur, wann Du die Benachrichtigung NICHT erhalten willst
(nicht jedes mal). Was ist denn die Bedingung, unter der Du die
nächste Benachrichtigung eben doch erhalten möchtest? Vielleicht hat
ja schon mal jemand sowas gebaut und kann's Dir hier als Beispiel
posten.

Gruß, Uli

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Guest

Originally posted by: <email address deleted>

> > In einigen Bsp. sieht man dann noch dass die Zeilenenden mit \
> > abgeschlossen werden.

Hi,
es gibt in fhem zwei Wege, den code zu bearbeiten:

1. Bearbeitung in der fhem.cfg .Dort braucht's ;; zwischen Anweisungen
und \ am Zeilenende innerhalb eines code-Stücks.

2. Bearbeitung über webfrontend (also links 'Everything', dann in der
Liste z.B. Dein o.g. notify anklicken, dort auf den Link "DEF"
klicken). In diesem Bearbeitungsfenster kannst Du sowohl auf ;; als
auch auf \ als Zeilenzusammenhalter verzichten. Sobald Du dort SAVE
klickst, werden Deine Änderungen in die fhem.cfg übertragen, wobei
m.W. ; automatisch verdoppelt und \ automatisch an die Zeilenenden
gehängt werden. (bei den ;; bin ich mir ehrlich gesagt nicht 100%
sicher).

Weg 2 ist also etwas komfortabler.

=8-)

PS: Dein o.g. split-Beispiel ist schick, wäre evtl. auch mit substr()
gegangen.

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Guest

Originally posted by: <email address deleted>

Hallo Uli,

danke für den Hinweis 2, den ich aber linktechnisch nicht nachvollziehen
kann.

Link "Everything" habe ich nicht, aber dafür unsorted oder alltogether
dort kann ich mein eigenes Notify auswählen (komfortabel gemacht das Ganze)
und auf *Modify* gehen und ändern.
Dann klicke ich auf denButton "modyfy temp_ntfy2"" und die neue config
läuft,
wird aber nicht in die fhem.cfg übernommen. Einen "Save-Button" finde ich
nicht.

D.h., es wird nichts automatisch übernommen. Es ist aber nicht so schlimm,
da
Du mir ja definitv bestätigt hast, dass ich mit \ umbrechen muss und ;;
statt ;
schreiben muss.

Ich kann nur ein wenig C(++) und Java und VB .. und von daher war das ganze
eine
Tortur, da ich in den Perl Handbüchern nichts dazu fand: ja wie denn auch
;-).

Lustig ist auch die Geschichte mit dem Escapen von Arrays, die ja in Perl
mit my @array; deklariert werden.



Nochmal Danke fuer alle Deine Tipps hier, die haben mich erstmal eine Ecke
weiter gebracht.

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Guest

Originally posted by: <email address deleted>

Hallo Uli,

ich habe gerade um die Ecke gedacht (was mir schwer fällt) und einfach mal
den Befehl save in das Browserinterface eingegeben und siehe da, die config
wird so übernommen

Hallo Borsti

DANKE für den Hinweis, ich werde es so implementieren.

Kann ich das Codegedöns

{\
my @@array  = split(" ",ReadingsVal("Orangerie", "temperature", 00));;\
if ( $array[0] < 1 ) {`/home/mail.sh`;;}}

auch irgendwie auslagern in eine Datei. Damit meine FHEM.cfg noch
übersichtlich bleibt?


--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Guest

Originally posted by: <email address deleted>

Hi,

SAVE im webfrontend speichert ALLE devices, nicht nur den eben
bearbeiteten. hab grad nachgeschaut, bei Weg 2 heisst der button
'modify'


> Kann ich das Codegedöns
> auch irgendwie auslagern in eine Datei. Damit meine FHEM.cfg noch
> übersichtlich bleibt?

Kuxtu
http://fhem.de/commandref.html#include
http://fhemwiki.de/index.php/Jalousie_und_Beleuchtung_in_mehreren_Raeumen

=8-)

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com