guten tag zusammen,
wie kann ich diese readings, eigentlich nur die xx_number durchsuchen und die xx-nummer bzw. dazugehörende dapature_Delay auslesen?
Die xx gehen bis zu 11.
01_departureDelay 0
01_departureTime 2020-01-13T09:39+0100
01_departureTimeInMinutes 23
01_departureTimestamp 1578904740000
01_number 2622
02_departureDelay 0
02_departureTime 2020-01-13T10:15+0100
02_departureTimeInMinutes 59
02_departureTimestamp 1578906900000
02_number 2623
02_platform 1
Danke!
Hallo australien,
vielleicht geht das mit dem Modul readingsGroup, schau mal, ob es für deine Bedürfnisse passt.
Ansonsten gibt es noch das Modul monitoring, das Readings auf Aktualität prüfen kann.
Viele Grüße Gisbert
Hi,
mir ist nicht ganz klar was Du machen willst, aber vielleicht hilft Dir der Hinweis
https://forum.fhem.de/index.php/topic,106368.msg1002167.html#msg1002167
Gruß Otto
Zeige mal bitte ein list von dem Device. Eventuell kann man das ganze etwas abkürzen wenn man die Info hat wie viele dieser 01 02 03 es genau gibt. Also gibt es ein Reading wo diese 11 drin stehen?
Zitat von: Otto123 am 13 Januar 2020, 09:42:08
Hi,
mir ist nicht ganz klar was Du machen willst, aber vielleicht hilft Dir der Hinweis
https://forum.fhem.de/index.php/topic,106368.msg1002167.html#msg1002167
Gruß Otto
Was will ich machen?
Ich will aus dem httpmod der Fahrplanauskunft (aus dem depature-Modul von
sbiermann) einen einzelnen Zug welcher in einem dummy (ZugNr) steht abrufen und die Verpätung auslesen.
anbei noch ein vollstänges List
Internals:
BUSY 0
DEF none 0
FUUID 5e15b732-f33f-fbda-f529-9aa3a58913384f36
Interval 0
JSONEnabled 1
LASTSEND 1578904815.89851
MainURL
ModuleVersion 3.5.21 - 27.12.2019
NAME myDoki_Zug_versp
NOTIFYDEV global
NR 758
NTFY_ORDER 50-myDoki_Zug_versp
STATE gew 2611 echt 2626 - 0
TRIGGERTIME 0
TRIGGERTIME_FMT
TYPE HTTPMOD
addr https://transport.stefan-biermann.de:443
auth 0
code 200
compress 1
conn
data
displayurl https://transport.stefan-biermann.de/publictransportapi/rest/departure?from=1210307&provider=Oebb
header
host transport.stefan-biermann.de
httpheader HTTP/1.1 200 OK
Date: Mon, 13 Jan 2020 08:40:16 GMT
Server: Apache/2.4.29 (Ubuntu)
Strict-Transport-Security: max-age=31536000; includeSubDomains
Content-Type: application/json
Connection: close
httpversion 1.0
hu_blocking 0
hu_filecount 2
hu_port 443
hu_portSfx
ignoreredirects 0
loglevel 4
path /publictransportapi/rest/departure?from=1210307&provider=Oebb
protocol https
redirects 0
timeout 30
url https://transport.stefan-biermann.de/publictransportapi/rest/departure?from=1210307&provider=Oebb
value 0
CompiledRegexes:
QUEUE:
READINGS:
2020-01-13 09:40:17 01_departureDelay 0
2020-01-13 09:40:17 01_departureTime 2020-01-13T10:15+0100
2020-01-13 09:40:17 01_departureTimeInMinutes 35
2020-01-13 09:40:17 01_departureTimestamp 1578906900000
2020-01-13 09:40:17 01_number 2623
2020-01-13 09:40:17 01_platform 1
2020-01-13 09:40:17 01_product REGIONAL_TRAIN
2020-01-13 09:40:17 01_to Wulkaprodersdorf Bahnhof
2020-01-13 09:40:17 01_toId 8100361
2020-01-13 09:40:17 02_departureDelay 0
2020-01-13 09:40:17 02_departureTime 2020-01-13T10:39+0100
2020-01-13 09:40:17 02_departureTimeInMinutes 59
2020-01-13 09:40:17 02_departureTimestamp 1578908340000
2020-01-13 09:40:17 02_number 2626
2020-01-13 09:40:17 02_platform 1
2020-01-13 09:40:17 02_product REGIONAL_TRAIN
2020-01-13 09:40:17 02_to Hbf
2020-01-13 09:40:17 02_toId 8103000
2020-01-13 09:40:17 03_departureDelay 0
2020-01-13 09:40:17 03_departureTime 2020-01-13T11:15+0100
2020-01-13 09:40:17 03_departureTimeInMinutes 95
2020-01-13 09:40:17 03_departureTimestamp 1578910500000
2020-01-13 09:40:17 03_number 2627
2020-01-13 09:40:17 03_platform 1
2020-01-13 09:40:17 03_product REGIONAL_TRAIN
2020-01-13 09:40:17 03_to Wulkaprodersdorf Bahnhof
2020-01-13 09:40:17 03_toId 8100361
2020-01-13 09:40:17 04_departureDelay 0
2020-01-13 09:40:17 04_departureTime 2020-01-13T11:39+0100
2020-01-13 09:40:17 04_departureTimeInMinutes 119
2020-01-13 09:40:17 04_departureTimestamp 1578911940000
2020-01-13 09:40:17 04_number 2630
2020-01-13 09:40:17 04_platform 1
2020-01-13 09:40:17 04_product REGIONAL_TRAIN
2020-01-13 09:40:17 04_to Hbf
2020-01-13 09:40:17 04_toId 8103000
2020-01-13 09:40:17 05_departureDelay 0
2020-01-13 09:40:17 05_departureTime 2020-01-13T12:15+0100
2020-01-13 09:40:17 05_departureTimeInMinutes 155
2020-01-13 09:40:17 05_departureTimestamp 1578914100000
2020-01-13 09:40:17 05_number 2631
2020-01-13 09:40:17 05_platform 1
2020-01-13 09:40:17 05_product REGIONAL_TRAIN
2020-01-13 09:40:17 05_to Wulkaprodersdorf Bahnhof
2020-01-13 09:40:17 05_toId 8100361
2020-01-13 09:40:17 06_departureDelay 0
2020-01-13 09:40:17 06_departureTime 2020-01-13T12:39+0100
2020-01-13 09:40:17 06_departureTimeInMinutes 179
2020-01-13 09:40:17 06_departureTimestamp 1578915540000
2020-01-13 09:40:17 06_number 2634
2020-01-13 09:40:17 06_platform 1
2020-01-13 09:40:17 06_product REGIONAL_TRAIN
2020-01-13 09:40:17 06_to Hbf
2020-01-13 09:40:17 06_toId 8103000
2020-01-13 09:40:17 07_departureDelay 0
2020-01-13 09:40:17 07_departureTime 2020-01-13T13:15+0100
2020-01-13 09:40:17 07_departureTimeInMinutes 215
2020-01-13 09:40:17 07_departureTimestamp 1578917700000
2020-01-13 09:40:17 07_number 2635
2020-01-13 09:40:17 07_platform 1
2020-01-13 09:40:17 07_product REGIONAL_TRAIN
2020-01-13 09:40:17 07_to Wulkaprodersdorf Bahnhof
2020-01-13 09:40:17 07_toId 8100361
2020-01-13 09:40:17 08_departureDelay 0
2020-01-13 09:40:17 08_departureTime 2020-01-13T13:39+0100
2020-01-13 09:40:17 08_departureTimeInMinutes 239
2020-01-13 09:40:17 08_departureTimestamp 1578919140000
2020-01-13 09:40:17 08_number 2638
2020-01-13 09:40:17 08_platform 1
2020-01-13 09:40:17 08_product REGIONAL_TRAIN
2020-01-13 09:40:17 08_to Hbf
2020-01-13 09:40:17 08_toId 8103000
2020-01-13 09:40:17 09_departureDelay 0
2020-01-13 09:40:17 09_departureTime 2020-01-13T14:04+0100
2020-01-13 09:40:17 09_departureTimeInMinutes 264
2020-01-13 09:40:17 09_departureTimestamp 1578920640000
2020-01-13 09:40:17 09_number 2640
2020-01-13 09:40:17 09_platform 1
2020-01-13 09:40:17 09_product REGIONAL_TRAIN
2020-01-13 09:40:17 09_to Bruck/Leitha Bahnhof
2020-01-13 09:40:17 09_toId 8100198
2020-01-13 09:40:17 10_departureDelay 0
2020-01-13 09:40:17 10_departureTime 2020-01-13T14:15+0100
2020-01-13 09:40:17 10_departureTimeInMinutes 275
2020-01-13 09:40:17 10_departureTimestamp 1578921300000
2020-01-13 09:40:17 10_number 2639
2020-01-13 09:40:17 10_platform 1
2020-01-13 09:40:17 10_product REGIONAL_TRAIN
2020-01-13 09:40:17 10_to Wulkaprodersdorf Bahnhof
2020-01-13 09:40:17 10_toId 8100361
REQUEST:
data
header
ignoreredirects 0
retryCount 0
type get02
url https://transport.stefan-biermann.de/publictransportapi/rest/departure?from=1210307&provider=Oebb
value 0
defptr:
readingBase:
01_departureDelay get
01_departureTime get
01_departureTimeInMinutes get
01_departureTimestamp get
01_number get
01_platform get
01_product get
01_to get
01_toId get
02_departureDelay get
02_departureTime get
02_departureTimeInMinutes get
02_departureTimestamp get
02_number get
02_platform get
02_product get
02_to get
02_toId get
03_departureDelay get
03_departureTime get
03_departureTimeInMinutes get
03_departureTimestamp get
03_number get
03_platform get
03_product get
03_to get
03_toId get
04_departureDelay get
04_departureTime get
04_departureTimeInMinutes get
04_departureTimestamp get
04_number get
04_platform get
04_product get
04_to get
04_toId get
05_departureDelay get
05_departureTime get
05_departureTimeInMinutes get
05_departureTimestamp get
05_number get
05_platform get
05_product get
05_to get
05_toId get
06_departureDelay get
06_departureTime get
06_departureTimeInMinutes get
06_departureTimestamp get
06_number get
06_platform get
06_product get
06_to get
06_toId get
07_departureDelay get
07_departureTime get
07_departureTimeInMinutes get
07_departureTimestamp get
07_number get
07_platform get
07_product get
07_to get
07_toId get
08_departureDelay get
08_departureTime get
08_departureTimeInMinutes get
08_departureTimestamp get
08_number get
08_platform get
08_product get
08_to get
08_toId get
09_departureDelay get
09_departureTime get
09_departureTimeInMinutes get
09_departureTimestamp get
09_number get
09_platform get
09_product get
09_to get
09_toId get
10_departureDelay get
10_departureTime get
10_departureTimeInMinutes get
10_departureTimestamp get
10_number get
10_platform get
10_product get
10_to get
10_toId get
readingNum:
01_departureDelay 02
01_departureTime 02
01_departureTimeInMinutes 02
01_departureTimestamp 02
01_number 02
01_platform 02
01_product 02
01_to 02
01_toId 02
02_departureDelay 02
02_departureTime 02
02_departureTimeInMinutes 02
02_departureTimestamp 02
02_number 02
02_platform 02
02_product 02
02_to 02
02_toId 02
03_departureDelay 02
03_departureTime 02
03_departureTimeInMinutes 02
03_departureTimestamp 02
03_number 02
03_platform 02
03_product 02
03_to 02
03_toId 02
04_departureDelay 02
04_departureTime 02
04_departureTimeInMinutes 02
04_departureTimestamp 02
04_number 02
04_platform 02
04_product 02
04_to 02
04_toId 02
05_departureDelay 02
05_departureTime 02
05_departureTimeInMinutes 02
05_departureTimestamp 02
05_number 02
05_platform 02
05_product 02
05_to 02
05_toId 02
06_departureDelay 02
06_departureTime 02
06_departureTimeInMinutes 02
06_departureTimestamp 02
06_number 02
06_platform 02
06_product 02
06_to 02
06_toId 02
07_departureDelay 02
07_departureTime 02
07_departureTimeInMinutes 02
07_departureTimestamp 02
07_number 02
07_platform 02
07_product 02
07_to 02
07_toId 02
08_departureDelay 02
08_departureTime 02
08_departureTimeInMinutes 02
08_departureTimestamp 02
08_number 02
08_platform 02
08_product 02
08_to 02
08_toId 02
09_departureDelay 02
09_departureTime 02
09_departureTimeInMinutes 02
09_departureTimestamp 02
09_number 02
09_platform 02
09_product 02
09_to 02
09_toId 02
10_departureDelay 02
10_departureTime 02
10_departureTimeInMinutes 02
10_departureTimestamp 02
10_number 02
10_platform 02
10_product 02
10_to 02
10_toId 02
readingOutdated:
requestReadings:
get02:
01_departureDelay get 02
01_departureTime get 02
01_departureTimeInMinutes get 02
01_departureTimestamp get 02
01_number get 02
01_platform get 02
01_product get 02
01_to get 02
01_toId get 02
02_departureDelay get 02
02_departureTime get 02
02_departureTimeInMinutes get 02
02_departureTimestamp get 02
02_number get 02
02_platform get 02
02_product get 02
02_to get 02
02_toId get 02
03_departureDelay get 02
03_departureTime get 02
03_departureTimeInMinutes get 02
03_departureTimestamp get 02
03_number get 02
03_platform get 02
03_product get 02
03_to get 02
03_toId get 02
04_departureDelay get 02
04_departureTime get 02
04_departureTimeInMinutes get 02
04_departureTimestamp get 02
04_number get 02
04_platform get 02
04_product get 02
04_to get 02
04_toId get 02
05_departureDelay get 02
05_departureTime get 02
05_departureTimeInMinutes get 02
05_departureTimestamp get 02
05_number get 02
05_platform get 02
05_product get 02
05_to get 02
05_toId get 02
06_departureDelay get 02
06_departureTime get 02
06_departureTimeInMinutes get 02
06_departureTimestamp get 02
06_number get 02
06_platform get 02
06_product get 02
06_to get 02
06_toId get 02
07_departureDelay get 02
07_departureTime get 02
07_departureTimeInMinutes get 02
07_departureTimestamp get 02
07_number get 02
07_platform get 02
07_product get 02
07_to get 02
07_toId get 02
08_departureDelay get 02
08_departureTime get 02
08_departureTimeInMinutes get 02
08_departureTimestamp get 02
08_number get 02
08_platform get 02
08_product get 02
08_to get 02
08_toId get 02
09_departureDelay get 02
09_departureTime get 02
09_departureTimeInMinutes get 02
09_departureTimestamp get 02
09_number get 02
09_platform get 02
09_product get 02
09_to get 02
09_toId get 02
10_departureDelay get 02
10_departureTime get 02
10_departureTimeInMinutes get 02
10_departureTimestamp get 02
10_number get 02
10_platform get 02
10_product get 02
10_to get 02
10_toId get 02
sslargs:
Attributes:
enableControlSet 1
get02ExtractAllJSON 1
get02Name Bahnhof
get02Regex ^[0-9]+ [^;]*(;.*)$
get02URL https://transport.stefan-biermann.de/publictransportapi/rest/departure?from=1210307&provider=Oebb
room 8.9.OeBB_Doki
stateFormat gew [ZugNr:state] echt [$name:02_number] - [$name:02_departureDelay]
timeout 30
userattr get01ExtractAllJSON:0,1,2 get02ExtractAllJSON:0,1,2 get02Name get02Regex get02URL reading01Name reading01RecombineExpr reading01Regex
womöglich ist die ganze Sache mit den readings nicht so gut und man sollte diese in einen Einzelnen String zusammen fassen? Als userreadings? Aber wie?
Zitateinen einzelnen Zug welcher in einem dummy (ZugNr)
Also Du hast die Zugnummer? und willst in den readings nach der Zugnummer suchen und aus dem Satz die Verspätung?
Also so? Beispiel:
Es geht um Zug 2626
Suche 2626 in xx_number
finde Reading 02_number -> 02
lies 02_departureDelay
Zitat von: Otto123 am 13 Januar 2020, 13:08:44
Also Du hast die Zugnummer? und willst in den readings nach der Zugnummer suchen und aus dem Satz die Verspätung?
Also so? Beispiel:
Es geht um Zug 2626
Suche 2626 in xx_number
finde Reading 02_number -> 02
lies 02_departureDelay
Genau das will ich.
Na dann mal eine erste Idee - bloß zum schnelltest. Funktioniert als Einzeiler in der FHEM Kommandozeile!
{my $rr = "nicht gefunden";;my $d="myDoki_Zug_versp";;my $hash = $defs{$d};;my $readings = $hash->{READINGS};;foreach my $a ( keys %{$readings} ) {my $val=ReadingsVal($d,$a,"error");;if ($val == "2626") { $rr = $a}}return $rr}
Dann müsste man jetzt "2626" als Übergabe Parameter bzw. direkt ReadingsVal() aus dem Dummy machen.
Aus $rr vorn die Ziffer abspalten
Daraus 02_departureDelay machen.
Und dann ReadingsNum("myDoki_Zug_versp","02_departureDelay",999)
Natürlich noch mit ein paar Variablen, dass Ganze in die 99_myUtils.pm und dann einfach aufrufen.
Gruß Otto
Danke, werde das am Abend testen.
so, werd irgendwie nicht schlau. Hab nun folgendes versucht, leider bekomme ich beim Speichern immer folgende Meldung:
myZug_Verspaetung($$)
# Zugverspaetung wird ausgegeben
# Input: ZugNr, device
# Return: Verspaetung
{
my $rr = "nicht gefunden";
my ($ZugNr,$device) = @_;
my $hash = $defs{$device};
my $readings = $hash->{READINGS};
foreach my $a ( keys %{$readings} )
{
my $val=ReadingsVal($device,$a,"error");
if ($val == $ZugNr) { $rr = $a}
} my $line = split('_', $rr);
return {ReadingsNum($device,$line."departureDelay",999);
}
ERROR:
syntax error at ./FHEM/99_myUtils.pm line 22, near ") # Zugverspaetung wird ausgegeben # Input: ZugNr, device # Return: Verspaetung {" Can't redeclare "my" in "my" at ./FHEM/99_myUtils.pm line 24, near "" syntax error at ./FHEM/99_myUtils.pm line 36, near "}"
Es soll in der sub myZug_Verspaetung($$) die ZugNr (aus dummy) und das device übergeben werden, Rückgabewert xx_departureDelay als Zahl.
Es fehtl das Wort "sub" vor myZug_Verspaetung($$)
Und ich hoffe, Du hast die 99_myUtils aus dem Template erstellt. ;)
Und ich denke durch das Split verschwindet der _ damit sollte der Ausdruck so sein:
$line."_departureDelay"
Gruß Otto
@Otto123, @amenomade
danke für eure Inputs und Hilfe.
Die Lösung sieht nun folgendermaßen aus
sub myZug_Verspaetung($$)
# Zugverspaetung wird ausgegeben
# Input: ZugNr, device
# Return: Verspaetung
{
my $rr = "nicht gefunden";
my ($ZugNr,$device) = @_;
my $hash = $defs{$device};
my $readings = $hash->{READINGS};
foreach my $a ( keys %{$readings} )
{
my $val=ReadingsVal($device,$a,"error");
if ($val == $ZugNr) { $rr = $a}
} my $line = "0".split('_', $rr)."_departureDelay";
return ReadingsVal($device,$line,999)
}
aufgerufen wird das ganze als userreadings
test {myZug_Verspaetung("ZugNr",$name)}