FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: moonsorrox am 03 Juli 2014, 14:26:16

Titel: Frage zur Formatierung eines Wochentages
Beitrag von: moonsorrox am 03 Juli 2014, 14:26:16
ich nutze einen Codeschnipsel zum Wochentag - morgen und Übermorgen den ich wie folgt entnehme


{ReadingsVal("MeinWetter","fc2_day_of_week",0) ."." }
und
{ReadingsVal("MeinWetter","fc3_day_of_week",0) ."." }


leider wird der mir nur z.B. als Di. oder Mi. je nachdem welcher Tag eben morgen oder übermorgen ist, dargestellt, wie kann ich das machen um den Tag ausgeschrieben zu bekommen..?
Titel: Antw:Frage zur Formatierung eines Wochentages
Beitrag von: Elektrolurch am 03 Juli 2014, 14:54:20
Hallo,

einen hash der Form verwenden:

my %wochentage = ('Mo' => 'Montag',
'Di' => 'Dienstag',.....);

Und dann im Code:
$wt = ReadingsVal...

$wt = $wochentag{$wt};

Das Element des hashes wird mit $ adressiert. perl sieht dann für Dich nach, wie es 'Mo' zu 'Montag' umwandelt usw.
Gruß


Elektrolurch
Titel: Antw:Frage zur Formatierung eines Wochentages
Beitrag von: moonsorrox am 03 Juli 2014, 15:07:23
OK danke, also müsste dann mein Code folgendermaßen aussehen..?

{$wt = ReadingsVal($wt = $wochentage{$wt};}

werde ich gleich mal probieren...
Das habe ich in der myUtils stehen


{
my %wochentage = ('Mo' => 'Montag', 'Di' => 'Dienstag', 'Mi' => 'Mittwoch', 'Do' => 'Donnerstag', 'Fr' => 'Freitag', 'Sa' => 'Samstag' , 'So' => 'Sonntag');
}


EDIT: Rückmeldung also das funktioniert nicht es wird mir auf der Seite ein Fehler angezeigt den ich leider nicht entziffern kann weil er ganz oben auf der jeweiligen Seite steht, was ich lesen kann ist etwas von syntax Error eval 318584..

Weiß jetzt nicht welcher Code dafür verantwortlich ist der in meiner myUtils oder das Readingval.
Was glaube ich noch falsch ist ich muss im Code auch das "e" hinter wochentag einfügen, oder?
Titel: Antw:Frage zur Formatierung eines Wochentages
Beitrag von: Elektrolurch am 03 Juli 2014, 16:39:42
Hallo,
wo steht denn dieser Code?

{$wt = ReadingsVal($wt = $wochentage{$wt};}
ReadingsVal liefert den Wert eines Readings eines devices -> in dem Fall wohl die Instanz Deines Wetter-Moduls zurück.
So macht das da oben gar keinen Sinn.

Und weiter:

my %wochentage
steht ja in der 99_myUtils, ist also auch nur da verfügbar.
Wenn Du das direkt in fhem, und nicht über eine eigene kleine sub benutz, kennt fhem diese für 99_myUtils lokale Variable natürlich nicht.
Also:

für die 99_myUtils:

sub KurzWtnachLang($)
{
return $wochentag{$_[0]};
} # end sub

Angenommen, Du hast irgendwo in fhem in einm notify Deinen Code:

my $wt = ReadingsVal('irgendwas mit Wetter'....);
# in $wt steht jetzt bspw 'Mi'
# dann:
$wt = KurzWtnachLang($wt);
# und  nun steht in $wt 'Mittwoch'

Hoffe, dass ist jetzt klar.

Gruß

Elektrolurch
:-[
Titel: Antw:Frage zur Formatierung eines Wochentages
Beitrag von: moonsorrox am 03 Juli 2014, 19:56:39
Zitat von: Elektrolurch am 03 Juli 2014, 16:39:42
wo steht denn dieser Code?

{$wt = ReadingsVal($wt = $wochentage{$wt};}
ReadingsVal liefert den Wert eines Readings eines devices -> in dem Fall wohl die Instanz Deines Wetter-Moduls zurück.
So macht das da oben gar keinen Sinn.

Und weiter:

my %wochentage
steht ja in der 99_myUtils, ist also auch nur da verfügbar.
Wenn Du das direkt in fhem, und nicht über eine eigene kleine sub benutz, kennt fhem diese für 99_myUtils lokale Variable natürlich nicht.

Ok das ist mir jetzt klar... wenn ich nun die folgenden Zeilen einfüge

Zitat von: Elektrolurch am 03 Juli 2014, 16:39:42
für die 99_myUtils:

sub KurzWtnachLang($)
{
return $wochentag{$_[0]};
} # end sub

bekomme ich folgende Meldung sobald ich die myUtils abspeichere: Global symbol "%wochentag" requires explicit package name at ./FHEM/99_myUtils.pm line 14.

Zitat von: Elektrolurch am 03 Juli 2014, 16:39:42
Hoffe, dass ist jetzt klar.

wohl doch noch nicht, ich versuche zwar alles zu verstehen... nur klappt es wohl nicht  :-[
Titel: Antw:Frage zur Formatierung eines Wochentages
Beitrag von: Puschel74 am 03 Juli 2014, 20:03:39
Hallo,

Zitatbekomme ich folgende Meldung sobald ich die myUtils abspeichere: Global symbol "%wochentag" requires explicit package name at ./FHEM/99_myUtils.pm line 14.
Niemals oder du postet nur die Hälfte.

Diese Fehlemeldung hat mit deinem Code den du einfügst absolut nichts zu tun.
In deinem geposteten Code geht es um $wochentag und die Fehlermeldung bezieht sich auf %wochentag.
Das hat mit deinem gezeigten Code absolut nichts zu tun.

Wobei du vorhin etwas mit %wochentage gepostet hattest.

Grüße

Edith: Aber aus bruckstückhaften Angaben wird sich so schnell nichts hilfreiches zusammenklauben lassen.
Titel: Antw:Frage zur Formatierung eines Wochentages
Beitrag von: moonsorrox am 03 Juli 2014, 20:32:44
also der Reihe nach, ich habe in der myUtils genau den Teil zu stehen und um zu probieren ob der Fehler kommt auch nur dieses:
weiter unten steht natürlich noch einiges aber dort gibt es nichts was irgend etwas mit %wochentag zutun hat.
Und nehme ich die sub KurzWtnachLang raus ist der Fehler auch weg...  ;)


package main;
use strict;
use warnings;
use POSIX;
sub
myUtils_Initialize($$)
{
my ($hash) = @_;
}


sub KurzWtnachLang($)
{
return $wochentag {$_[0]};
} # end sub




speichere ich diese kommt besagter Fehler sofort beim speichern.

Das heißt doch ganz klar ich brauche gar nicht weiter machen, da bei Fehler sowieso keine Funktion..! Richtig..?

Den folgenden Code hatte ich natürlich vorher noch mit drin weil ich das ja austesten wollte, dafür habe ich ihn aber heraus genommen.
Also muss der Fehler ja an dieser sub liegen, nur ich bin absolut kein Perl Profi...

{ my %wochentag = ('Mo' => 'Montag', 'Di' => 'Dienstag', 'Mi' => 'Mittwoch', 'Do' => 'Donnerstag', 'Fr' => 'Freitag', 'Sa' => 'Samstag' , 'So' => 'Sonntag'); }


hier der komplette Fehler aus dem Logfile:
Global symbol "%wochentag" requires explicit package name at ./FHEM/99_myUtils.pm line 14.
2014.07.03 20:27:44 1: reload: Error:Modul 99_myUtils deactivated:
Subroutine myUtils_Initialize redefined at ./FHEM/99_myUtils.pm line 7.

Noch so als Zusatzinfo:
ich brauche auch nicht unbedingt diese Tage in dem Wetter device (wollte diese nur nutzen weil die Tage da so drin sind), mir würde es reichen wenn ich aus irgend einem Modul die Wochen Tage nutzen könnte, sie müßten nur eben die Voraussetzung haben Heute, Morgen, Übermorgen so das sich dies anpaßt
Titel: Antw:Frage zur Formatierung eines Wochentages
Beitrag von: StefanP am 03 Juli 2014, 21:07:44
Hallo,
da bin ich wieder. ;)
Jetzt brauchst Du den Code nur noch zusammenfassen und alles tut was es soll.

sub
KurzWtnachLang($)
{
  my %wochentag = ('Mo' => 'Montag', 'Di' => 'Dienstag', 'Mi' => 'Mittwoch', 'Do' => 'Donnerstag', 'Fr' => 'Freitag', 'Sa' => 'Samstag' , 'So' => 'Sonntag');
  return $wochentag {$_[0]};
}


mit {KurzWtnachLang('Di')}
in der Kommandozeile siehst Du das Ergebnis.
Wollte Dich vorhin mit der Kurzantwort nicht vor den Kopf stoßen.

Gruß StefanP
Titel: Antw:Frage zur Formatierung eines Wochentages
Beitrag von: moonsorrox am 03 Juli 2014, 21:56:42
ZitatWollte Dich vorhin mit der Kurzantwort nicht vor den Kopf stoßen.
habe mich nicht vor den Kopf gestoßen gefühlt...  ;) alles gut...

ich werde das jetzt mal so in die myUtils einbauen..
dann brauche ich das dann nicht im Wetter abfragen wenn dieses {KurzWtnachLang('Di')} benutzt wird..?
Titel: Antw:Frage zur Formatierung eines Wochentages
Beitrag von: StefanP am 03 Juli 2014, 22:32:00
Du brauchst nur noch beides zusammenfassen:
{KurzWtnachLang(ReadingsVal("MeinWetter","fc2_day_of_week",0))}
Wenn jetzt noch ein echter Experte was besseres als meinen "Spaghetti-Code" liefert, hab ich auch gelernt (kein Ironie-Modus!).

Gruß StefanP
Titel: Antw:Frage zur Formatierung eines Wochentages
Beitrag von: moonsorrox am 04 Juli 2014, 12:17:21
jo Danke das hat jetzt geklappt  ;)