Hauptmenü

Bug in grep ?

Begonnen von Guest, 01 Januar 2011, 18:57:33

Vorheriges Thema - Nächstes Thema

Guest

Originally posted by: <email address deleted>

Ein frohes neues Jahr zusammen,
ich hoffe, dass ihr alle gut gerutscht seit. :-)


Nachdem ich nach gestern wieder fit genug bin, mich mit FHEM zu
beschäftigen, bin ich auf ein kleines Problem (Bug ?) gestoßen.
Testweise habe ich mal das hier definiert:
(Das soll später für die Pumpe für den Gartenteich sein)

define TC6_Beleuchtung__TEST at *18:39:00 { fhem("set TC6_Beleuchtung
on") \
   if (grep(/$wday/, (0,6)) && grep(/$month/, (4,5,6,7,8,9)))  ;;\
   Log 1, $we  ;;\
   Log 1, $wday  ;;\
   Log 1, $month  }

Das ist jetzt ja so, dass die Beleuchtung der TC6-Schalter So und Sa
um 18:39 Uhr eingeschaltet wird in den Monaten von April bis
September.

Wenn ich nun aber die Monate April bis Oktober eingebe, dann wird der
on-Befehl aber auch schon im Januar gesendet.

   if (grep(/$wday/, (0,6)) && grep(/$month/, (4,5,6,7,8,9,10)))  ;;\

Kann es sein, dass die 1 von der 10 schon den Januar aktiviert?


Mit freundlichen Grüßen
Jörg

--
Sie haben diese Nachricht erhalten, da Sie der Google Groups-Gruppe FHEM users beigetreten sind.
Wenn Sie Nachrichten in dieser Gruppe posten möchten, senden Sie eine E-Mail an fhem-users@googlegroups.com.
Wenn Sie aus dieser Gruppe austreten möchten, senden Sie eine E-Mail an fhem-users+unsubscribe@googlegroups.com.
Besuchen Sie die Gruppe unter http://groups.google.com/group/fhem-users?hl=de, um weitere Optionen zu erhalten.

Guest

Originally posted by: <email address deleted>

> Kann es sein, dass die 1 von der 10 schon den Januar aktiviert

grep arbeitet auf Basis von Mustererkennung. Die 1 ist Teil der 10,
damit ist's so wie Du vermutest.

Vielleicht ist es besser an diese Stelle mit einem "switch" Befehl zu
arbeiten. Auch wenn es deutlich mehr Zeilen werden. Oder Du machst
$month immer zweistellig.

Gruß,
Peter

--
Sie haben diese Nachricht erhalten, da Sie der Google Groups-Gruppe FHEM users beigetreten sind.
Wenn Sie Nachrichten in dieser Gruppe posten möchten, senden Sie eine E-Mail an fhem-users@googlegroups.com.
Wenn Sie aus dieser Gruppe austreten möchten, senden Sie eine E-Mail an fhem-users+unsubscribe@googlegroups.com.
Besuchen Sie die Gruppe unter http://groups.google.com/group/fhem-users?hl=de, um weitere Optionen zu erhalten.

rudolfkoenig

                                                   

> if (grep(/$wday/, (0,6)) && grep(/$month/, (4,5,6,7,8,9,10)))  ;;\

perl -e '$m = 1; print grep /^$m$/, (4,5,6,7,8,9,10)'

--
Sie haben diese Nachricht erhalten, da Sie der Google Groups-Gruppe FHEM users beigetreten sind.
Wenn Sie Nachrichten in dieser Gruppe posten möchten, senden Sie eine E-Mail an fhem-users@googlegroups.com.
Wenn Sie aus dieser Gruppe austreten möchten, senden Sie eine E-Mail an fhem-users+unsubscribe@googlegroups.com.
Besuchen Sie die Gruppe unter http://groups.google.com/group/fhem-users?hl=de, um weitere Optionen zu erhalten.

Guest

Originally posted by: <email address deleted>

Sorry, aber ich gebe auf - ich ralle das einfach nicht.

> perl -e '$m = 1; print grep /^$m$/, (4,5,6,7,8,9,10)'

das habe ich in den verschiedensten Versionen probiert.

Um, wie Peter vorgeschlagen hat, auf Zweistellige Monatszahlen zu
kommen:
my $mon_test = sprintf ("%%2d", $month) ;;\


Außer das es nach stundenlangem Herumgeporkel nur Fehlermeldungen
Hagelt komme ich zu keinem Ergebnis. :-(


Mit freundlichen Grüßen
Jörg

--
Sie haben diese Nachricht erhalten, da Sie der Google Groups-Gruppe FHEM users beigetreten sind.
Wenn Sie Nachrichten in dieser Gruppe posten möchten, senden Sie eine E-Mail an fhem-users@googlegroups.com.
Wenn Sie aus dieser Gruppe austreten möchten, senden Sie eine E-Mail an fhem-users+unsubscribe@googlegroups.com.
Besuchen Sie die Gruppe unter http://groups.google.com/group/fhem-users?hl=de, um weitere Optionen zu erhalten.

rudolfkoenig

                                                   

On Sun, Jan 02, 2011 at 05:58:02AM -0800, JörgB wrote:
> Sorry, aber ich gebe auf - ich ralle das einfach nicht.

Ok, dann nochmal langsam.
Auf der Kommandozeile kann man solche perl Expressions am einfachsten testen.
Versuche folgende Zeilen der Reihe nach auszufuehren:

shell$ perl -e 'print "Hallo\n"'
Hallo

shell$ perl -e '$m=17; print "$m\n"'
17

shell$ perl -e '$m=1; print grep /$m/, (4,5,6,7,8,9,10)'
10
#   weil 10 auch 1 enthaelt

shell$ perl -e '$m=1; print grep /^$m$/, (4,5,6,7,8,9,10)'
shell$
# kommt nix, weil 1 als ganze Zeile (^$m$) nicht matched)

shell$ perl -e '$m=10; print grep /^$m$/, (4,5,6,7,8,9,10)'
10
# fuer 10 funktioniert es.


Deine Zeile muss also lauten:

   if (grep(/^$wday$/, (0,6)) && grep(/^$month$/, (4,5,6,7,8,9,10))) ;;\

oder mit weniger Perl Magie:

   if (!$we && $month>=4 && $month<=10)  ;;\

--
Sie haben diese Nachricht erhalten, da Sie der Google Groups-Gruppe FHEM users beigetreten sind.
Wenn Sie Nachrichten in dieser Gruppe posten möchten, senden Sie eine E-Mail an fhem-users@googlegroups.com.
Wenn Sie aus dieser Gruppe austreten möchten, senden Sie eine E-Mail an fhem-users+unsubscribe@googlegroups.com.
Besuchen Sie die Gruppe unter http://groups.google.com/group/fhem-users?hl=de, um weitere Optionen zu erhalten.

Guest

Originally posted by: <email address deleted>

> Ok, dann nochmal langsam.
Autsch - das hat gesessen, aber ich hatte mich da richtig verbohrt. :-
D

Glaube mir, ich weiß nicht mehr wie viele Variationen ich in den 5
Stunden ausprobiert hatte.
Das mit der Kommandozeile war ein guter Tipp, da das ewige Neustarten
nach jedem Ändern der Config von FHEM doch recht nervig war.

Auf jeden Fall noch Danke für Deine Hilfe !


Mit freundlichen Grüßen
Jörg

--
Sie haben diese Nachricht erhalten, da Sie der Google Groups-Gruppe FHEM users beigetreten sind.
Wenn Sie Nachrichten in dieser Gruppe posten möchten, senden Sie eine E-Mail an fhem-users@googlegroups.com.
Wenn Sie aus dieser Gruppe austreten möchten, senden Sie eine E-Mail an fhem-users+unsubscribe@googlegroups.com.
Besuchen Sie die Gruppe unter http://groups.google.com/group/fhem-users?hl=de, um weitere Optionen zu erhalten.

Guest

Originally posted by: <email address deleted>

> Das mit der Kommandozeile war ein guter Tipp, da das ewige Neustarten
> nach jedem Ändern der Config von FHEM doch recht nervig war.

Ist übrigens ein generelles Prinzip bei der Fehlersuche: Das Problem
in einem möglichst kleinen und einfachen Rahmen zu reproduzieren.
Sonst sieht man den Wald vor lauter Bäumen nicht. ;-)

--
Sie haben diese Nachricht erhalten, da Sie der Google Groups-Gruppe FHEM users beigetreten sind.
Wenn Sie Nachrichten in dieser Gruppe posten möchten, senden Sie eine E-Mail an fhem-users@googlegroups.com.
Wenn Sie aus dieser Gruppe austreten möchten, senden Sie eine E-Mail an fhem-users+unsubscribe@googlegroups.com.
Besuchen Sie die Gruppe unter http://groups.google.com/group/fhem-users?hl=de, um weitere Optionen zu erhalten.