Die Uhrzeit in Worten - oder aus 13:50 Uhr wird "Es ist zehn vor zwei"

Begonnen von binford6000, 13 März 2018, 15:55:59

Vorheriges Thema - Nächstes Thema

binford6000

ZitatDeine Anpassung war absolut unnötig!
Es hat auch davor schon mit der zwölf funktioniert (ich hatte das getestet!)
my @hourNames=('eins','zwei','drei','vier','fünf','sechs','sieben','acht','neun','zehn','elf','zwölf');
$Stunde=$hourNames[$Stunde-1];

Ich bin ja ein absolut wissbegieriger PERL-Lerner!  :D
Was passiert bei $Stunde = 1 ? 1-1 =0. Springt das Array dann automatisch auf $hourNames[11] (zwölf) oder was passiert da?

VG Sebastian

Benni

Omg!
Den Code nicht verstehen, aber ändern ...

1-1=0 soweit korrekt!

Der Index im Array ist nullbasiert, d.h. das erste element im Array hat den Index 0.

Also wird bei 1-1=0 das erste element aus dem Array geholt und das ist die "eins"
Ebenso wird bei 12 das element mit Index 11 geholt (12-1=11) was dem zwölften element entspricht und somit die "zwölf" ist.

Verständlich?

binford6000

Zitat von: Benni am 15 März 2018, 22:22:19
Omg!
Den Code nicht verstehen, aber ändern ...

1-1=0 soweit korrekt!

Der Index im Array ist nullbasiert, d.h. das erste element im Array hat den Index 0.

Also wird bei 1-1=0 das erste element aus dem Array geholt und das ist die "eins"
Ebenso wird bei 12 das element mit Index 11 geholt (12-1=11) was dem zwölften element entspricht und somit die "zwölf" ist.

Verständlich?
Ich sollte so etwas nicht mehr um diese Uhrzeit machen...  8)
Gute N8

nils_

Zitat
## Umwandlung der Stunde von einer Zahl in Text
if ($Stunde == 1) { $Stunde = "eins" } if ($Stunde == 2) { $Stunde = "zwei" }
if ($Stunde == 3) { $Stunde = "drei" } if ($Stunde == 4) { $Stunde = "vier" }
if ($Stunde == 5) { $Stunde = "fünf" } if ($Stunde == 6) { $Stunde = "sechs" }
if ($Stunde == 7) { $Stunde = "sieben" } if ($Stunde == 8) { $Stunde = "acht" }
if ($Stunde == 9) { $Stunde = "neun" } if ($Stunde == 10) { $Stunde = "zehn" }
if ($Stunde == 11) { $Stunde = "elf" } if ($Stunde == 12) { $Stunde = "zwölf" }

Das erzeugt die erwähnten PERL WARNINGS:
2018.03.15 20:01:12 1: PERL WARNING: Argument "acht" isn't numeric in numeric eq (==) at ./FHEM/99_myUtils.pm line 44.
ihr habt es ja nun schon gelöst (mMn besser!)
aber um die ursprüngliche warning loszuwerden, hätte es vermutlich auch ein if... elsif.... getan
viele Wege in FHEM es gibt!

TomLee

Hallo,

Danke für den Code-Schnipsel gefällt mir sehr gut.
Mein erster Gedanke war die Uhr im FTUI als Screenserver-URL hinterlegt.

So in der Art:

<li data-row="1"
data-col="1"
data-sizex="1"
data-sizey="1">
<div class="vbox items-center">
<div data-type="label"
    data-device="du_Wordclock"
    data-get="zeit"
    class="gigantic thin">
    </div>
    </div>
</li>


Zur Umsetzung nutz ich dazu ein DOIF welches die Sub alle 60 Sekunden aufruft.
Da komm ich dann auch zu meiner Frage. Das sind 1440 Aufrufe am Tag.
Kann man sowas bedenkenlos so umsetzen oder belastet so eine Spielerei Fhem nur zusätzlich ?

Gruß

Thomas

binford6000

Hallo TomLee,
das sieht doch mal sehrgut aus  8)
ZitatKann man sowas bedenkenlos so umsetzen oder belastet so eine Spielerei Fhem nur zusätzlich ?
In der Testphase habe ich mir minütlich die Uhrzeit per TelegramBot senden lassen und dabei keine Performance-Probleme
festestellen können. Es wird ja auch nur die aktuelle Uhrzeit vom System geholt und in Text gewandelt. Das sollte eigentlich
jedes FHEM-System minütlich wegstecken können...
VG Sebastian

Benni

Zitat von: binford6000 am 16 März 2018, 18:32:31
jedes FHEM-System minütlich wegstecken können...

Im konkreten Fall könntet ihr sogar auf 5-minütlich reduzieren ;)

MadMax-FHEM

Hallo,

echt toll!

Weiß zwar noch nicht genau was ich damit mache...
...aber man weiß ja nie ;)

Ich hab's für mich angepasst:


sub qlock2($)
{
  my ($SpeakDevice) = @_;

...

fhem ("set $SpeakDevice speak \"$spoke\"");

...

}


Vielen Dank dafür, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)