Hallo Leute,
folgendes habe ich in meiner myUtils eingetragen, es funktioniert soweit, aber ich möchte es gerne erweitern, weiß aber nicht wie:
Im Reading steht z.B. folgendes: 2018-01-31T11:45+0100 und ich möchte nur die Uhrzeit, hier 11:45 rausfiltern.
sub
test()
{
my $test = (split('T',ReadingsVal("Bus","departure_0_time","")))[1];
my $probier = (split('\+',$test))[0];
fhem("setreading Bus test $probier");
}
Es ist erstmal nur ein Versuchsaufbau, um das System zu verstehen.
Was ich aber jetzt noch möchte ist folgendes:
Im Device gibt es insg. 10 Readings, departure_0_time - departure_9_time
Ich möchte alle 10 abfragen und eintragen, aber nicht den selben Code 10x schreiben. Ich habe in anderen Codes [$i] gesehen, weiß aber nicht, wie ich es genau einsetzen muß.
Zu nächst einmal musst Du einen Ansatz finden damit Du heraus bekommst wie viele Readings es genau gibt. Eventuell gibt es ein reading wo alle departure als Zahl drin stehen.
Diese Zahl nimmst Du dann und baust eine schleife for Schleife. Beispiele findest Du zu hauf im Internet.
Gib mal bitte ein list vom Device
Zitat von: CoolTux am 31 Januar 2018, 12:04:10
Zu nächst einmal musst Du einen Ansatz finden damit Du heraus bekommst wie viele Readings es genau gibt. Eventuell gibt es ein reading wo alle departure als Zahl drin stehen.
Diese Zahl nimmst Du dann und baust eine schleife for Schleife. Beispiele findest Du zu hauf im Internet.
Mann könnte natürlich auch eine Schleife der Form
$Val = "";
$i = 0;
do
{
$Val = ReadingsVal("Bus","departure_" . $i . "_time","<undef>");
$i++;
if ($Val ne "<undef>")
{
// do something
}
}while($Val ne "<undef>")
verwenden
Wenn man die Feinheit einer fußgesteuerten Schleife kennt kann man das auch machen. Naürlich
Hallo Leute, nun habe ich noch ein Problem, ich möchte jetzt die Richtungen der Buslinien separat Anzeigen lassen.
Richtung ry in einer Anzeige, richtung od in einer anderen Anzeige.
Ich habe in den myUtils folgenden Code:
sub
Fahrplan()
{
my $Val = "";
my $i = 0;
do
{
$Val = ReadingsVal("Od_Gymn","departure_" . $i . "_text","<undef>");
{fhem("deletereading richtung_od Bus$i")};
if ($Val ne "<undef>")
{
if($Val eq "Mön. Clemens-August-Str.")
{fhem("setreading richtung_od Bus$i $Val")}
elsif($Val eq "Nievelsteinstr")
{fhem("setreading richtung_od Bus$i $Val")}
elsif($Val eq "Mönchengl. Rostocker Straße")
{fhem("setreading richtung_od Bus$i $Val")}
elsif($Val eq "Mönchengladb. Wickrath Markt")
{fhem("setreading richtung_od Bus$i $Val")}
elsif($Val eq "MG Regiopark 3")
{fhem("setreading richtung_od Bus$i $Val")}
}
$i++;
}while($Val ne "<undef>")
}
Im Departure werden immer die 10 nächsten Fahrten angezeigt, da aber die Fahrten in beiden Richtungen (nicht immer) abwechselnd kommen sieht die Anzeige dann z.B. wie folgt aus
Bus1 Mön. Clemens-August-Str. 2018-02-10 19:50:53
Bus2 MG Regiopark 3 2018-02-10 19:50:53
Bus6 MG Regiopark 3 2018-02-10 19:50:53
Ich möchte aber gerne das die Anzeige wie folgt aussehen soll
Bus0 Mön. Clemens-August-Str. 2018-02-10 19:50:53
Bus1 MG Regiopark 3 2018-02-10 19:50:53
Bus2 MG Regiopark 3 2018-02-10 19:50:53
wie kann ich das anpassen?
In $i steht den wievielste Schleifendurchlauf du gerade hast. Mach dir ,ne zweite Variable, die nur hochgezählt wird, wenn du was passendes findest... Insgesamt scheint mir das Ganze aber ein bisschen von hinten durch die Brust ins Auge... Müsste ich mir mal in Ruhe ansehen
Kurz, weil mobil...
Zitathttp://wiki.selfhtml.org/wiki/Perl
LG
pah