Abfragen mehrerer Readings in 99_myUtils

Begonnen von Torsten_MG, 31 Januar 2018, 11:47:29

Vorheriges Thema - Nächstes Thema

Torsten_MG

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ß.

CoolTux

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
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

DarkT

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

CoolTux

Wenn man die Feinheit einer fußgesteuerten Schleife kennt kann man das auch machen. Naürlich
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Torsten_MG

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?

KernSani

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...
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...