Ankündigung

Einklappen
Keine Ankündigung bisher.

Schaltuhr - Plugin erweitert um Sonnenauf- und Untergang

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    #31
    Danke Wolfgang,

    leider meckert er immernoch über Sunrise.pm.

    Die Installation via cpan endet mit
    Astro::Sunrise is up to date (0.91).
    Hatte ich also schon gemacht.
    Deine zip habe ich auch mal getestet:
    Code:
    root@wiregate:/# ls /usr/share/perl/5.10.0/Astro/
    Sunrise.pm
    root@wiregate:/# ls /usr/local/share/perl/5.10.0/Astro/
    Sunrise.pm
    Aber dennoch:
    Global symbol "@sunrise" requires explicit package name at (eval 3100) line 76. Global symbol "@sunrise" requires explicit package name at (eval 3100) line 77. Global symbol "@sunset" requires explicit package name at (eval 3100) line 79. Global symbol "@sunset" requires explicit package name at (eval 3100) line 80.
    :-(( Hast du noch einen Tipp?

    apt-get install libdatetime-astro-sunrise-perl
    Paketlisten werden gelesen... Fertig
    Abhängigkeitsbaum wird aufgebaut
    Statusinformationen werden eingelesen... Fertig
    libdatetime-astro-sunrise-perl ist schon die neueste Version.
    Die folgenden Pakete wurden automatisch installiert und werden nicht mehr benötigt:
    librcs-perl rcs
    Verwenden Sie »apt-get autoremove«, um sie zu entfernen.
    0 aktualisiert, 0 neu installiert, 0 zu entfernen und 1 nicht aktualisiert.
    hilft also auch nicht..

    Gruß,
    Hendrik

    Kommentar


      #32
      Die genannten Fehler haben nur bedingt mit der Installation zu tun. Da steht doch ganz eindeutig:

      "Global symbol "@sunrise" requires explicit package name at (eval 3100) line 76."

      Dann würde ich doch mal in Zeile 76, wie es ja da steht, nachsehen. Dort wird offenkundig eine Variable verwendet, die zuvor nirgends deklariert wurde. Wenn diese nur per Installation verfügbar gemacht werden kann, und das Paket nicht in einer installierbaren Version verfügbar ist, dann geht es so eben nicht.

      Das ist eine seeehr einfach Fehlermeldung. Wenn die einer nicht versteht, muss man von eklatanter Unwissenheit bzgl. Perl ausgehen, was per se ja auch kein Problem ist.

      Nicht o.k. ist, dass man dann versucht, ein System via cpan et.al. zurechtzufrickeln, denn so ist Zirkus programmiert - und der Service soll es dann richten.

      Ich weiss, dass solche Kritik nicht angenehm ist. Aber es wurden bereits Warnungen vor cpan ausgesprochen, und nun zeigt sich, das elementares Grundwissen fehlt, und trotzdem soll es auf biegen und brechen zum Laufen gebracht werden. Es ist ja gerade so, als wenn man einem Ochsen ins Horn kneift. Da kann man schon mal die Contenance verlieren.

      Ich bin nicht makki, und muss deshalb zum Glück auch kein Lieferanten/Kunden Verhältnis beachten. Deshalb erlaube ich mir stellvertretend mal deutlich anzumerken: Wenn man keine Ahnung hat, einfach mal die Finger davon lassen - oder pflege Dein System künftig selber.
      Kein Support per PN: Fragen bzw. Fehlermeldungen bitte im Forum posten.

      Kommentar


        #33
        Die Erweiterungen um die Astrofunktion sind nicht von mir. Darauf kann ich auch keinen Support leisten, da es ein riesen Bastel ist, den ich selber nicht einmal zum laufen gebracht habe.

        Und wenn Makki dafür kein Packet anbietet wird das wohl seinen Grund haben.

        Die Urversion von mir funktioniert bei mir seit über 1 Jahr ohne Probleme.
        Gruss Patrik alias swiss

        Kommentar


          #34
          Hallo zusammen,

          nachdem ich nicht möchte, daß hier jemand sein wiregate schrottet, werde ich mich hüten in Zukunft Pakete von CPAN vorzuschlagen.

          @swiss
          Stelle doch im SVN die Revision 382 wieder her! SourceForge.net Repository - [openautomation] Revision 382

          @alle
          emax hat ja im SVN eine CPAN - freie Version zur Verfügung gestellt: http://openautomation.svn.sourceforg...ric/emx_uhr.pl

          ... Wie schon weiter oben gesagt, ich wollte meine Lösung mit der Community teilen. Leider ist das offensichtlich nicht so einfach möglich!

          Viele Grüße
          Wolfgang

          Kommentar


            #35
            Ich kann in meine Uhr ja demnächst mal UTC reinbauen, so dass man bei Zeiteinträgen wählen kann, ob Lokalzeit oder UTC. Dann ist auch das leidige Sommerzeitthema kein Problem mehr.
            Kein Support per PN: Fragen bzw. Fehlermeldungen bitte im Forum posten.

            Kommentar


              #36
              Hallo,

              oh jeh, heut ist nicht mein Tag. Erst muss ich auf dem Handy beobachten, wie einer nach dem anderen meint, ich würde mein Leben bei der Elektroinstallation riskieren und dann geht in diesem Thread die Welt unter. Und das nachdem mein Sohnemann die Nacht zum Tag gemacht hat :-(

              Nun gut. Stück für Stück:
              Zitat von emax Beitrag anzeigen
              Die genannten Fehler haben nur bedingt mit der Installation zu tun. Da steht doch ganz eindeutig:

              "Global symbol "@sunrise" requires explicit package name at (eval 3100) line 76."

              Dann würde ich doch mal in Zeile 76, wie es ja da steht, nachsehen. Dort wird offenkundig eine Variable verwendet, die zuvor nirgends deklariert wurde. Wenn diese nur per Installation verfügbar gemacht werden kann, und das Paket nicht in einer installierbaren Version verfügbar ist, dann geht es so eben nicht.

              Das ist eine seeehr einfach Fehlermeldung. Wenn die einer nicht versteht, muss man von eklatanter Unwissenheit bzgl. Perl ausgehen, was per se ja auch kein Problem ist.
              Danke für den Hinweis.
              Also ich habe so gut wie keine Ahnung von Perl. Hier mal die Zeilen bis Zeile 77:
              Code:
              foreach my $element (@Schaltzeiten) {
                  if (knx_read($element->{ga},0,$element->{DPT}) ne $element->{Wert}) {
                          if ($element->{Astro} ne '') {
                              if ($element->{Astro} eq 'a') {
                                  $element->{Stunden}=$sunrise[0];
                                  $element->{Minuten}=$sunrise[1];
              Sunrise scheint eine Variable (ein Array?) zu sein. Sie wird vorher nicht deklariert. Stattdesen findet sich ein:
              use Astro::Sunrise;
              Dies stellt die Astro-Funktionen bereit. Ich weiß jetzt nicht, ob vor der Benutzung etwas wie
              sunrise=getsunrise(location)
              nötig ist, würde das aber vermuten...
              Hm. Jetzt wo ich es sage: Oben wird $lat und $lon definiert, aber nirgens benutzt. Da liegt sicher der Hase im Pfeffer.

              Ich werde gleich mal googlen. @Wolfgang: Kannst du bitte mal deinen Code prüfen? Ich glaube, der kann so nicht funktionieren/du musst etwas anderes in deinem Code haben.

              Nicht o.k. ist, dass man dann versucht, ein System via cpan et.al. zurechtzufrickeln, denn so ist Zirkus programmiert - und der Service soll es dann richten.
              Naja, jetzt mal langsam. Keiner hat hier Service geschrien. Und man kann ja nun nicht davon ausgehen, dass der Code nicht ok ist -da er ja zumindest scheinbar anderwo funktioniert.

              Ich weiss, dass solche Kritik nicht angenehm ist. Aber es wurden bereits Warnungen vor cpan ausgesprochen, und nun zeigt sich, das elementares Grundwissen fehlt, und trotzdem soll es auf biegen und brechen zum Laufen gebracht werden.
              Naja. Mit Kritik kann ich leben. Aber dieser Schuh ist etwas zu eng ;-) und passt nur ein bisschen.
              Der CPAN Hinweis kam erst nach meinem ersten CPAN-Versuch und vor dem zweiten gab es ein Backup.

              Es ist ja gerade so, als wenn man einem Ochsen ins Horn kneift. Da kann man schon mal die Contenance verlieren.
              Gut, dass ich kein Ochse bin. Ich reagiere da, ohne die Contenance zu verlieren. Und das finde ich auch viel angenehmer, da sachlicher.

              Ich bin nicht makki, und muss deshalb zum Glück auch kein Lieferanten/Kunden Verhältnis beachten. Deshalb erlaube ich mir stellvertretend mal deutlich anzumerken: Wenn man keine Ahnung hat, einfach mal die Finger davon lassen - oder pflege Dein System künftig selber.
              *Jeder* Nutzer des WG muss sein System selber pflegen, wenn er dran rumbastelt. Ich weiß nicht, warum du hier derart rumpoltern musst, schließlich betrifft dich das ganze doch recht wenig.
              Darüber hinaus bevorzuge ich den sonst hier recht freundlichen Umgang.

              Zitat von swiss Beitrag anzeigen
              Die Erweiterungen um die Astrofunktion sind nicht von mir. Darauf kann ich auch keinen Support leisten, da es ein riesen Bastel ist, den ich selber nicht einmal zum laufen gebracht habe.
              hallo Swiss,
              danke auch für deine Antwort. Natürlich musst du keinen Support darauf leisten. Ich glaube aber nicht, dass es Bastel sein muss, sondern dass einfach ein Fehler im Code ist.

              Und wenn Makki dafür kein Packet anbietet wird das wohl seinen Grund haben.
              Den kennen wir nicht. Ich vermute, es hat was mit Prioritäten und Schlafmangel zu tun. Du vermutest "Bastel".

              Zitat von ZeitlerW Beitrag anzeigen
              nachdem ich nicht möchte, daß hier jemand sein wiregate schrottet, werde ich mich hüten in Zukunft Pakete von CPAN vorzuschlagen.
              Dann nimm doch den Hinweis darauf aus dem ersten Post heraus und lass nur den Hinweis auf deinen Anhang bestehen.

              Stelle doch im SVN die Revision 382 wieder her! SourceForge.net Repository - [openautomation] Revision 382
              Bitte nicht. Die Astro-Funktion ist doch eine super Sache. Warum das Problem umgehen, wenn wir auf dem Weg sind, es zu lösen?

              ... Wie schon weiter oben gesagt, ich wollte meine Lösung mit der Community teilen. Leider ist das offensichtlich nicht so einfach möglich!
              Ich finde es super, dass du dir die Arbeit gemacht hast. Ich denke, mit ein wenig Feinschliff, kann der Normal-User das auch nutzen...
              Ich werde gleich mal gucken, ob ich etwas finde.

              Zitat von emax Beitrag anzeigen
              Ich kann in meine Uhr ja demnächst mal UTC reinbauen, so dass man bei Zeiteinträgen wählen kann, ob Lokalzeit oder UTC. Dann ist auch das leidige Sommerzeitthema kein Problem mehr.
              Darum allein geht es ja garnicht, sondern um den Sonnenstand zur Lamellennachführung.

              So, was mach ich als nächstes? Lebenzzeichen im EVG und Staubsaugersicherungsthread geben, oder Coden?

              Wenn jemand fragt: Ich bin coden.


              Viele Grüße,

              Hendrik

              Kommentar


                #37
                So, da bin ich wieder.

                Leider ist im SVN ja die alte Version wieder hergestellt :-(
                Ist aber in meinen Augen nicht nötig, denn die Version mit Astro-Funktionen funktioniert hier jetzt.

                Was war's?

                Ich hatte die Revision 716 in Benutzung. Da fehlen die Zeilen
                Code:
                54  my @sunrise=split(/:/,sun_rise($lon,$lat,$winkel));        55  my @sunset=split(/:/,sun_set($lon,$lat,$winkel));
                Mit diesen zwei Zeilen und der Sunrise.pm aus dem Download aus dem erten Beitrag funktioniert es jetzt seit einigen Zyklen hier.

                @Swiss: Hast du diese Version auch probiert?

                Ich fänd es super, wenn du diese Version wieder als die aktuelle wählen würdest.

                Gruß,
                Hendrik

                Kommentar


                  #38
                  Also meine Meinung...

                  Ich finde die Idee prinzipiell gut, bis auf den Umstand, dass man irgend welche datein von Hand in verzeichnisse auf dem WG kopieren muss. Vieleicht könnte man makki darum bitten es für das WG zu packen, damit die Erweiterung direkt über Update installiert werden kann

                  -> Da bin ich bereits gescheitert. Ich kriege die sunrise.pm nciht an's laufen Ist also nicht unbedingt End-User tauglich... Schade.

                  Zurücksetzten wäre ein Rückschritt und das wäre auch schade. Ich respektiere die Mühe und Arbeit, die von euch geleistet wird. Da es aber leider momentan nicht funktioniert, und ich KEINE Ahnung habe wiso, (bin absoluter Linux Laie) kann ich dafür auch keinen Support leisen. Das kann ich nur für die Plugin's die ich herausgegeben habe, da ich dort im Detail weiss was es macht und wo es eventuell klemmt. -> wenn mir aber etwas auffällt würde ich es trotzdem hier melden
                  Gruss Patrik alias swiss

                  Kommentar


                    #39
                    Haben sich unsere Beiträge wieder überschnitten?

                    Kommentar


                      #40
                      Hallo Hendrik

                      Kannst du das gesammte Plugin mal posten. Ich würde es gerne vorher testen. Wenn es auch bei mir läuft, werde ich das hier von dir gefixte Plugin gerne wieder im SVN hochladen

                      PS: Ja die haben sich überschnitten
                      Gruss Patrik alias swiss

                      Kommentar


                        #41
                        Code:
                        # Plugin zum Zeit abh�ngigem schalten von GA's (Schaltuhr)
                        # Version 0.6 BETA 25.03.2012
                        # Copyright: swiss (https://knx-user-forum.de/members/swiss.html)
                        # License: GPL (v2)
                        # Aufbau m�glichst so, dass man unterhalb der Einstellungen nichts ver�ndern muss!
                        # Erweitert um Sonnenauf / - untergang von ZeitlerW (https://knx-user-forum.de/members/zeitlerw.html)
                        # Inspiriert von kleinklausi's Rolladen - Plugin
                        
                        
                        ####################
                        ###Einstellungen:###
                        ####################
                        
                        
                        # Die Standortdaten 
                        # Die Koordinaten des Hauses. Sehr einfach ?ber http://www.getlatlon.com/ zu ermitteln.
                        my ($lat, $lon) = (
                            52.989131643892925, # Breitengrad in Grad
                            8.883047103881836  # L?ngengrad in Grad
                            );
                        
                        #Winkel für Beginn der Dämmerung
                        # siehe auch: http://search.cpan.org/~rkhill/Astro-Sunrise-0.91/Sunrise.pm#DESCRIPTION 
                        my $winkel=-3;
                        
                        
                        my @Schaltzeiten;
                        #Pro Schaltpunkt einfach den unten stehenden Eintrag kopieren und anpassen.
                        #Sollen Schaltzeiten astronomisch geschaltet werden, so mu� bei Astro 'a' f�r Sonnenaufgang
                        #und 'u' f�r Sonnenuntergang eingetragen werden. Der Stunden und Minutenwert wird dann ignoriert.
                        
                        #push @Schaltzeiten, { name => "Stern_Wohnzimmer", montag => 1, dienstag => 1, mittwoch => 1, donnerstag => 1, freitag => 1, samstag => 1, sonntag => 1, Stunden => 16, Minuten => 00, Wert => 1, DPT => 1, ga => '0/0/34', KW => '', Monat => '', Astro => 'u' };
                        #push @Schaltzeiten, { name => "Stern_Wohnzimmer", montag => 1, dienstag => 1, mittwoch => 1, donnerstag => 1, freitag => 1, samstag => 1, sonntag => 1, Stunden => 23, Minuten => 00, Wert => 0, DPT => 1, ga => '0/0/34', KW => '', Monat => '', Astro => '' };
                        #push @Schaltzeiten, { name => "Stern_Wohnzimmer", montag => 1, dienstag => 1, mittwoch => 1, donnerstag => 1, freitag => 1, samstag => 1, sonntag => 1, Stunden => 06, Minuten => 00, Wert => 1, DPT => 1, ga => '0/0/34', KW => '', Monat => '', Astro => '' };
                        #push @Schaltzeiten, { name => "Stern_Wohnzimmer", montag => 1, dienstag => 1, mittwoch => 1, donnerstag => 1, freitag => 1, samstag => 1, sonntag => 1, Stunden => 8, Minuten => 30, Wert => 0, DPT => 1, ga => '0/0/34', KW => '', Monat => '', Astro => 'a' };
                        #push @Schaltzeiten, { name => "Glasvase_Wohnzimmer", montag => 1, dienstag => 1, mittwoch => 1, donnerstag => 1, freitag => 1, samstag => 1, sonntag => 1, Stunden => 16, Minuten => 00, Wert => 1, DPT => 1, ga => '0/0/35', KW => '', Monat => '', Astro => 'u' };
                        #push @Schaltzeiten, { name => "Glasvase_Wohnzimmer", montag => 1, dienstag => 1, mittwoch => 1, donnerstag => 1, freitag => 1, samstag => 1, sonntag => 1, Stunden => 23, Minuten => 00, Wert => 0, DPT => 1, ga => '0/0/35', KW => '', Monat => '', Astro => '' };
                        #push @Schaltzeiten, { name => "Glasvase_Wohnzimmer", montag => 1, dienstag => 1, mittwoch => 1, donnerstag => 1, freitag => 1, samstag => 1, sonntag => 1, Stunden => 06, Minuten => 00, Wert => 1, DPT => 1, ga => '0/0/35', KW => '', Monat => '', Astro => '' };
                        #push @Schaltzeiten, { name => "Glasvase_Wohnzimmer", montag => 1, dienstag => 1, mittwoch => 1, donnerstag => 1, freitag => 1, samstag => 1, sonntag => 1, Stunden => 8, Minuten => 30, Wert => 0, DPT => 1, ga => '0/0/35', KW => '', Monat => '', Astro => 'a' };
                        
                        
                        push @Schaltzeiten, { name => "Aussenlicht Aus", montag => 1, dienstag => 1, mittwoch => 1, donnerstag => 1, freitag => 1, samstag => 1, sonntag => 1, Stunden => 22, Minuten => 45, Wert => 0, DPT => 1, ga => '1/7/5', KW => '', Monat => '', Astro => '' };
                        
                        
                        ######################
                        ##ENDE Einstellungen##
                        ######################
                        
                        use POSIX;
                        use Time::Local;
                        # Wir brauchen auch Sonnenstandsberechnung
                        use Astro::Sunrise;
                        
                        
                        # Eigenen Aufruf-Zyklus auf 20sek. setzen
                        $plugin_info{$plugname.'_cycle'} = 20;
                        
                        #Hier wird ein Array angelegt, um die Wochentagsnummer von localtime zu �bersetzen
                        my @Wochentag = ('sonntag', 'montag', 'dienstag', 'mittwoch', 'donnerstag', 'freitag', 'samstag');
                        
                        my @sunrise=split(/:/,sun_rise($lon,$lat,$winkel));
                        my @sunset=split(/:/,sun_set($lon,$lat,$winkel));
                        my $sec; #Sekunde
                        my $min; # Minute
                        my $hour; #Stunde
                        my $mday; #Monatstag
                        my $mon; #Monatsnummer
                        my $year; #Jahr
                        my $wday; #Wochentag 0-6
                        my $yday; #Tag ab 01.01.xxxx
                        my $isdst;
                        
                        ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
                        $year += 1900;
                        $mon += 1;
                        
                        my $kw = getWeekNumber($year, $mon, $mday);
                        
                        foreach my $element (@Schaltzeiten) {
                            if (knx_read($element->{ga},0,$element->{DPT}) ne $element->{Wert}) {
                                        if ($element->{Astro} ne '') {
                                                if ($element->{Astro} eq 'a') {
                                                        if ($isdst) {
                                                                $element->{Stunden}=$sunrise[0]+1;
                                                        } else {
                                                                $element->{Stunden}=$sunrise[0];
                                                                }
                                                        $element->{Minuten}=$sunrise[1];
                                                } elsif ($element->{Astro} eq 'u') {
                                                        if ($isdst) {
                                                                $element->{Stunden}=$sunset[0]+1;
                                                        } else {
                                                                $element->{Stunden}=$sunset[0];
                                                                }
                                                        $element->{Minuten}=$sunset[1];
                                                }
                                        }
                        
                          if ($element->{$Wochentag[$wday]} == 1 && $element->{Stunden} == $hour && $element->{Minuten} == $min && $element->{KW} ne '') {
                                    if ($element->{KW} == $kw) {
                                        knx_write($element->{ga},$element->{Wert},$element->{DPT});
                                        next;
                                    } else {
                                        next;
                                    }
                                } elsif ($element->{$Wochentag[$wday]} == 1 && $element->{Stunden} == $hour && $element->{Minuten} == $min && $element->{Monat} ne '') {
                                    if ($element->{Monat} == $mon) {
                                        knx_write($element->{ga},$element->{Wert},$element->{DPT});
                                        next;
                                    } else {
                                        next;
                                    }
                                } elsif ($element->{$Wochentag[$wday]} == 1 && $element->{Stunden} == $hour && $element->{Minuten} == $min && $element->{KW} eq '' && $element->{Monat} eq '') {
                                    knx_write($element->{ga},$element->{Wert},$element->{DPT});
                                    next;
                                }
                            }    
                        next;
                        }
                        
                        sub getWeekNumber {
                        my ($year, $month, $day) = @_;
                        my $weekNumber = checkWeekNumber($year, $month, $day);
                        # wenn Wochennummer gleich 0, dann ist das aktuelle Datum
                        # in der Woche vor dem 4. Januar
                        # also in der letzten Woche des letzten Jahres
                        if ($weekNumber eq 0)
                        {
                        # Wochennummer des letzten Woche des letzten Jahres suchen
                        $weekNumber = checkWeekNumber(($year - 1), 12, 31);
                        
                        # wenn die Wochennummer gr��er als 52 ist
                        # dann pr�fen ob diese Wochennummer korrekt ist oder
                        # sie bereits die erste Woche des aktuellen Jahres ist
                        if ($weekNumber gt 52)
                        {
                        $weekNumber = checkWeekNumber($year, 1, 1);
                        # wenn der 1. Januar des aktuellen Jahres in der Woche 0 liegt
                        # dann ist es die Woche 53
                        if ($weekNumber eq 0)
                        {
                        $weekNumber = 53;
                        }
                        }
                        }
                        # wenn die Wochennummer gr��er als 52 ist
                        # dann pr�fen ob diese Wochennummer korrekt ist oder
                        # sie bereits die erste Woche des n�chsten Jahres ist
                        elsif ($weekNumber gt 52)
                        {
                        $weekNumber = checkWeekNumber(($year + 1), 1, 1);
                        # wenn der 1. Januar des n�chsten Jahres in der Woche 0 liegt
                        # dann ist es die Woche 53
                        if ($weekNumber eq 0)
                        {
                        $weekNumber = 53;
                        }
                        }
                        
                        return ($weekNumber);
                        }
                        
                        sub checkWeekNumber {
                        my ($year, $month, $day) = @_;
                        
                        # 4. Januar als erste Woche erstellen
                        my $firstDateTime = timelocal(0, 0, 12, 4, 0, $year);
                        # Wochentag des 4. Januar ermitteln
                        my $dayOfWeek = (localtime($firstDateTime))[6];
                        $dayOfWeek = abs((($dayOfWeek + 6) % 7));
                        # geh zu Wochenanfang (Montag) zur�ck
                        $firstDateTime -= ($dayOfWeek * 3600 * 24);
                        
                        # aktuelles Datum erstellen
                        my $currentDateTime = timelocal(0, 0, 14, $day, ($month - 1),$year);
                        
                        # Differenz in Tagen berechnen
                        my $diffInDay = ($currentDateTime - $firstDateTime) / 3600 / 24;
                        # Anzahl der Wochen zwischen aktuellem Datum und 4. Januar berechnen
                        my $weekNumber = floor($diffInDay / 7) + 1;
                        
                        return ($weekNumber);
                        }

                        Kommentar


                          #42
                          Hallo Hendrik

                          Leider funktioniert es bei mir immer noch nicht. -> Ist echt nicht endusertauglich Da hilft warscheinlich nur die Bitte an makki für ein Packet.

                          Code:
                          2012-06-25 21:07:21.659,test1.pl,,0.3s,Can't locate DateTime.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.10.0 /usr/local/share/perl/5.10.0 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .) at /usr/share/perl/5.10/Astro/Sunrise.pm line 86.
                          BEGIN failed--compilation aborted at /usr/share/perl/5.10/Astro/Sunrise.pm line 86. Compilation failed in require at (eval 4938) line 51.
                          BEGIN failed--compilation aborted at (eval 4938) line 51.
                          Gruss Patrik alias swiss

                          Kommentar


                            #43
                            @henfri

                            Rumpoltern sollte das nicht sein. Und Service hat keiner geschrien, da hast Du recht. Noch nicht. Nur kenne ich die Situation aus eigenem Service-Bemühen.

                            Es täte mir vor allem Leid, wenn makki aus solchen Gründen irgendwann mal Frust schieben würde, weil ich sein Engagement und den Support hier im Forum wirklich schätze.

                            Aber sei es drum, hier trotzdem mal ein paar Hinweise zum 'sunrise' Problem.

                            Ich brauche die Zeile 76 oder welche auch immer gar nicht zu kennen, weil die Fehlermeldung so eindeutig ist. Ein Blick in die cpan-Dokumentation zu Astro::Sunrise reicht. Dort steht

                            Code:
                             use Astro::Sunrise;
                            #use Astro::Sunrise qw(:constants);
                            
                             ($sunrise, $sunset) = sunrise(YYYY,MM,DD,longitude,latitude,Time Zone,DST);
                             ($sunrise, $sunset) = sunrise(YYYY,MM,DD,longitude,latitude,Time Zone,DST,ALT);
                             ($sunrise, $sunset) = sunrise(YYYY,MM,DD,longitude,latitude,Time Zone,DST,ALT,inter);
                            woraus ich ohne Kenntnis des Paktes schließe, dass $sunrise und $sunset zwei Variablen sind, die zunächst mal deklariert werden müssen. Der Paketschreiber muss das in dem Beispiel nicht tun, weil er kein 'strict' verwendet, also undeklarierte Variablen erlaubt. Was ich nicht empfehlen kann wenn man nicht genau weiss was man macht.

                            Was nicht zusammenpasst, ist, dass $sunrise und $sunset in der Doku zwei Skalare (oder aber auch Referenzen) sind, während das Plugin wohl ein Array erwartet.

                            Wie Du schreibst, bist Du kein Perl Kenner. Das ist schon a priori keine besonders gute Voraussetzung für die Fehlersuche. Wenn ich obendrein die Inkonsistenzen zwischen der Doku und der Verwendung von $sunrise vs. @sunrise sehe, wird dieses Gefühl nicht besser. Da würde ich eventuell auf die Verwendung entweder des Paketes oder aber des Plugins verzichten.

                            Ich weiss nicht, was das Plugin noch so alles macht, aber wenn es nur um Sonnenaufgang und Sonnenuntergang geht: Dazu gibt es ein funktionierendes Plugin. Die Werte werden einmal täglich berechnet und können von jedem anderen Plugin aus dem globalen $plugin_info Hash gelesen werden. Dafür brauchts kein Astro::sunrise.
                            Kein Support per PN: Fragen bzw. Fehlermeldungen bitte im Forum posten.

                            Kommentar


                              #44
                              Hallo zusammen,

                              erst jetzt verstehe ich, wo das Problem liegt:

                              In der aktuellen SVN - Version fehlen 2 Zeilen, nämlich diese:
                              Code:
                              #Hier wird ein Array angelegt, um die Wochentagsnummer von localtime zu übersetzen
                              my @Wochentag = ('sonntag', 'montag', 'dienstag', 'mittwoch', 'donnerstag', 'freitag', 'samstag');
                              
                              [COLOR=Magenta]my @sunrise=split(/:/,sun_rise($lon,$lat,$winkel));
                              my @sunset=split(/:/,sun_set($lon,$lat,$winkel));[/COLOR]
                              my $sec; #Sekunde
                              my $min; # Minute
                              my $hour; #Stunde
                              my $mday; #Monatstag
                              my $mon; #Monatsnummer
                              my $year; #Jahr
                              my $wday; #Wochentag 0-6
                              my $yday; #Tag ab 01.01.xxxx
                              my $isdst;
                              Sorry, Sorry mea culpa!

                              Zum folgendem Fehler:
                              Code:
                              2012-06-25 21:07:21.659,test1.pl,,0.3s,Can't locate DateTime.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.10.0 /usr/local/share/perl/5.10.0 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .) at /usr/share/perl/5.10/Astro/Sunrise.pm line 86.
                              BEGIN failed--compilation aborted at /usr/share/perl/5.10/Astro/Sunrise.pm line 86. Compilation failed in require at (eval 4938) line 51.
                              Es wird natürlich auch das Perl - Modul
                              DateTime
                              benötigt. Dies war allerdings auch schon im Ursprungsplugin von swiss so . Glücklicherweise gibts da ein Debian - Paket zu installieren mit:
                              Code:
                              apt-get install libdatetime-perl

                              (Siehe auch post 3 diese Themas https://knx-user-forum.de/207968-post3.html)

                              Ich hoffe, daß alle Unklarheiten damit beseitigt sind.

                              vG
                              wolfgang

                              Kommentar


                                #45
                                Hallo,

                                nach langem hin und her, habe ich das Plugin nun auch mit Astro-Funktion am Laufen.

                                Nur meine Rolläden machen nicht mit.

                                Ab und an, wird eine Aktion nicht ausgeführt.
                                Per Sonnenuntergang wird ein Außenlicht geschaltet und die Rolläden sollen runterfahren.
                                Das Licht geht an, die Rolläden fahren nicht!?
                                Im eib.log sehe ich die GA auch nicht. D.h. für mich, das Plugin sendet nicht.

                                Hat jemand schon mal solche Eigenheiten gehabt?

                                Ich hatte vorher das Plugin laufen, ohne Astro-Funktion (auskommentiert). Und selbst da hat ab und an eine Schaltzeit gefehlt.
                                Ich habe zwischenzeitlich nur ein paar Schaltzeiten ergänzt oder weggenommen.

                                An den Rollädenschaltzeiten selbst und am Quelltext habe ich nichts verändert, und trotzdem werden sie nur sporadisch ausgeführt.

                                Kommentar

                                Lädt...
                                X