[gelöst] Perl Script in 99_my Utils einbinden, wie?

Begonnen von franky08, 23 Juli 2014, 15:26:59

Vorheriges Thema - Nächstes Thema

franky08

Hallo, ich versuche gerade folgendes Perl Script als Modul (in die 99_myUtils) einzubinden. Das Script hab ich mir aus meinem Perl Handbuch "zusammengebastelt" und im Terminal funktioniert das ganze auch. Ich brauche die ausgabe von Datum und zeit um mit einem say Befehl das ganze als Sprachausgabe, mit WebViewControl, auf dem Tablet auszugeben.

Das Perl Script:
Zitat#!/usr/bin/perl -w

use strict;
use CGI::Carp qw(fatalsToBrowser);

my ($Sekunden, $Minuten, $Stunden, $Monatstag, $Monat,
    $Jahr, $Wochentag, $Jahrestag, $Sommerzeit) = localtime(time);
my $CTIME_String = localtime(time);
$Monat += 1;
$Jahrestag += 1;
$Jahr += 1900;

my @Wochentage = qw(Sonntag Montag Dienstag Mittwoch Donnerstag Freitag Samstag);
my @Monatsnamen = qw(Januar Februar März April Mai Juni Juli August September Oktober November Dezember);


my $datum_2 = sprintf("%s der %02d. %s %04d",
   $Wochentage[$Wochentag],
   $Monatstag,
   $Monatsnamen[$Monat-1],
   $Jahr,
);
my $zeit_1 = sprintf("%02d:%02d Uhr",
   $Stunden,
   $Minuten,
);


print <<"END";
Content-type: text/plain

Datum : $datum_2
Uhrzeit : $zeit_1

END
;
Das funktioniert.

In 99_myUtils:



package main;

use strict;
use warnings;
use POSIX;
use CGI::Carp qw(fatalsToBrowser);

sub
myoutdateUtils_Initialize($$)
{
  my ($hash) = @_;
}

sub date_time()



my ($Sekunden, $Minuten, $Stunden, $Monatstag, $Monat,
    $Jahr, $Wochentag, $Jahrestag, $Sommerzeit) = localtime(time);
my $CTIME_String = localtime(time);
$Monat += 1;
$Jahrestag += 1;
$Jahr += 1900;

my @Wochentage = qw(Sonntag Montag Dienstag Mittwoch Donnerstag Freitag Samstag);
my @Monatsnamen = qw(Januar Februar März April Mai Juni Juli August September Oktober November Dezember);


my $datum_2 = sprintf("%s der %02d. %s %04d",
   $Wochentage[$Wochentag],
   $Monatstag,
   $Monatsnamen[$Monat-1],
   $Jahr,
);
my $zeit_1 = sprintf("%02d:%02d Uhr",
   $Stunden,
   $Minuten,
);


print <<"END";
Content-type: text/plain

Datum : $datum_2
Uhrzeit : $zeit_1

END
;


1;


Das funktioniert leider nicht.
Fehler:Illegal declaration of subroutine main::date_time at ./FHEM/99_myoutdateUtils.pm line 20.

Die Ausgabe erfolgt dann mit:

sub say($)
{
  my ($msg) = @_;
  fhem "set androidTablet ttsSay $msg";

}


kann mir da bitte jemand weiterhelfen?

VG
Frank
Debian Bookworm auf ZBOX nano/ Debian Bullseye auf 2.ter ZBOX nano F2F an 2x RaspiB
mit FHEM aktuell (fhem.pl:28849/2024-05-07)
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu ,fhem5.8, CCU2,
ECMD an AVR-NET-IO mit DAC u. ADC an Junkers Stetigregelung, Siemens LOGO!8, JeeLink uvm...

franky08

#1
Habe es jetzt etwas umgebaut und bekomme keine Fehlermeldung mehr, leider aber beim Aufruf {date_time} auch keine Ausgabe.

##############################################

package main;

use strict;
use warnings;
use POSIX;
use CGI::Carp qw(fatalsToBrowser);

sub
myoutdateUtils_Initialize($$)
{
  my ($hash) = @_;
}

sub date_time()

{

my ($Sekunden, $Minuten, $Stunden, $Monatstag, $Monat,
    $Jahr, $Wochentag, $Jahrestag, $Sommerzeit) = localtime(time);
my $CTIME_String = localtime(time);
$Monat += 1;
$Jahrestag += 1;
$Jahr += 1900;

my @Wochentage = qw(Sonntag Montag Dienstag Mittwoch Donnerstag Freitag Samstag);
my @Monatsnamen = qw(Januar Februar März April Mai Juni Juli August September Oktober November Dezember);


my $datum_2 = sprintf("%s der %02d. %s %04d",
   $Wochentage[$Wochentag],
   $Monatstag,
   $Monatsnamen[$Monat-1],
   $Jahr,
);
my $zeit_1 = sprintf("%02d:%02d Uhr",
   $Stunden,
   $Minuten,
);

}


1;

Jemand einen weiterführenden Tipp??

VG
Frank
Debian Bookworm auf ZBOX nano/ Debian Bullseye auf 2.ter ZBOX nano F2F an 2x RaspiB
mit FHEM aktuell (fhem.pl:28849/2024-05-07)
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu ,fhem5.8, CCU2,
ECMD an AVR-NET-IO mit DAC u. ADC an Junkers Stetigregelung, Siemens LOGO!8, JeeLink uvm...

franky08

So, jetzt bekomme ich eine Ausgabe zurück aber leider nur die Zeit und nicht beide Strings. Habe es jetzt so geändert:

##############################################

package main;

use strict;
use warnings;
use POSIX;
use CGI::Carp qw(fatalsToBrowser);

sub
myoutdateUtils_Initialize($$)
{
  my ($hash) = @_;
}

sub date_time()

{

my ($Sekunden, $Minuten, $Stunden, $Monatstag, $Monat,
    $Jahr, $Wochentag, $Jahrestag, $Sommerzeit) = localtime(time);
my $CTIME_String = localtime(time);
$Monat += 1;
$Jahrestag += 1;
$Jahr += 1900;

my @Wochentage = qw(Sonntag Montag Dienstag Mittwoch Donnerstag Freitag Samstag);
my @Monatsnamen = qw(Januar Februar März April Mai Juni Juli August September Oktober November Dezember);


my $datum_2 = sprintf("%s der %02d. %s %04d",
   $Wochentage[$Wochentag],
   $Monatstag,
   $Monatsnamen[$Monat-1],
   $Jahr,
);
my $zeit_1 = sprintf("%02d:%02d Uhr",
   $Stunden,
   $Minuten,
);
return $datum_2, $zeit_1;

}


1;

Wie muss return $datum_2, $zeit_1 umgebaut werden um in der Ausgabe beide Strings zu bekommen?

VG
Frank
Debian Bookworm auf ZBOX nano/ Debian Bullseye auf 2.ter ZBOX nano F2F an 2x RaspiB
mit FHEM aktuell (fhem.pl:28849/2024-05-07)
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu ,fhem5.8, CCU2,
ECMD an AVR-NET-IO mit DAC u. ADC an Junkers Stetigregelung, Siemens LOGO!8, JeeLink uvm...

betateilchen

Klammer um die zwei Rückgabewerte und darauf achten, dass Du das Ergebnis dann auch direkt an zwei Variablen zuweisen musst. Ein Aufruf im Webinterface wird Dir nie beide Werte anzeigen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

franky08

Danke betateilchen, Klammern hatte ich schon um den Ausdruck, was ich nicht wusste, dass beim Aufruf im Webinterface nie beide Werte angezeigt werden.
habe jetzt return ($datum_2, $zeit_1)

Wie könnte ich das ganze jetzt testen, im Webif wird ja nur ein Wert ausgegeben
Debian Bookworm auf ZBOX nano/ Debian Bullseye auf 2.ter ZBOX nano F2F an 2x RaspiB
mit FHEM aktuell (fhem.pl:28849/2024-05-07)
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu ,fhem5.8, CCU2,
ECMD an AVR-NET-IO mit DAC u. ADC an Junkers Stetigregelung, Siemens LOGO!8, JeeLink uvm...

Puschel74

Hallo,

Mit einer Logausgabe?
Ich mach sowas gern (mit dem alten)
Log(3,"$name $wert");
$name und $wert vorher noch passend ändern.

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.

franky08

@Puschel
Joh, auf die Logausgabe bin ich nicht gekommen  8)
Debian Bookworm auf ZBOX nano/ Debian Bullseye auf 2.ter ZBOX nano F2F an 2x RaspiB
mit FHEM aktuell (fhem.pl:28849/2024-05-07)
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu ,fhem5.8, CCU2,
ECMD an AVR-NET-IO mit DAC u. ADC an Junkers Stetigregelung, Siemens LOGO!8, JeeLink uvm...