Modul 98_Departure: Bereitstellung von Abfahrtszeiten an einem Bahnhof

Begonnen von uniqueck, 01 November 2016, 22:56:37

Vorheriges Thema - Nächstes Thema

hartenthaler

Hier mal ein erster Ansatz für eine ReadingsGroup (mein Device heißt Fahrplan.Frohnau)

defmod rg_Fahrplan.Frohnau readingsGroup <>,<Nr.>,<Richtung>,<Abfahrtszeit>,<Verspätung>,<Losgehen> Fahrplan.Frohnau:@2,<#1>,departure_(.*)_text,departure_#1_time,departure_#1_delay,departure_#1_time2Go
attr rg_Fahrplan.Frohnau group Fahrplan
attr rg_Fahrplan.Frohnau room Verkehr
attr rg_Fahrplan.Frohnau style style=text-align:center
attr rg_Fahrplan.Frohnau valueSuffix {"" => '{ return " min" if ($READING =~ "delay|time2Go") }'}
fhem 5.8 auf RaspberryPi 3 mit HMLAN und CCU2, ZWave, JeeLink, FHZ1000 für FS20, HMS, Fritz!Box, Fritz!DECT200, Harmony, Sonos, hue, netatmo, SSCam, Wetter- und Verkehrsmodule, Chat-Bot mit RiveScript/Telegram, IFTTT, pushover, ...

mkriegl

Servus

Ich habe jetzt schon vieles Ausprobiert um mir die Fahrzeiten anzeigen zu lassen, da ich aber die Werte einzeln in ein FTUI schreiben will scheint mir dieses noch am sinnvollsten. Aktuell habe ich nur die Probleme:

  • Busnummer wird nicht angezeigt: Mvv (wüsste ich aber auch durch die Fahrtrichtung)
  • Ich habe keinen Filter für die Fahrtrichtung: in meinem Fall gibt es zwei Busse die ich nutzen kann, ich will aber nur jeweils ein Endziel beider Busse anzeigen lassen. Ich hatte für das direkte HTTPMOD mal dieses Regex gefunden, welches mir nur meine benötigten Ziele anzeigt:    
    (\["\b(?>194|195)\b","\b(?>Trudering.*?|Michaelibad|Riem.*?)\b.*?"\])
  • Woher kommt die Information "delay", da diese bei meiner direkten Abfrage nicht angezeigt wurde und momentan immer auf "0" steht

Ist es möglich dies noch mit einzubauen? oder anderweitig zu filtern?

Max

Frosch

Hallo alle zusammen,

igami hat mir bei der Auswertung der für mich relevanten Abfahrzeiten sehr weitergeholfen. Er hat dieses "userReadings" geschrieben mit dem es möglich ist bei einer Haltestelle, die Abfahrten in zwei Richtungen hat, eine bestimmte Richtung auszuwählen. Dieses userReading sucht die erste positive Zahl in den "departure_._time2Go" readings und zeigt diese für die gewünschte Richtung an.
Ich fände es sinnvoll wenn dies in das Modul übernommen werden könnte.

time2Go {
  for(my $i = 0; $i<= 9; $i++){
    my $time2Go = ReadingsVal($name, "departure_$i\_time2Go", 0);
    if(ReadingsVal($name, "departure_$i\_text", "NA") eq "gewünschte_Fahrtrichtung" and  $time2Go > 0){
      return $time2Go;
      last;
    }
  }
}

Gruß Mathias

uniqueck

Ich bin dran Leute. Ich werde demnächst wieder einen Stand hier bereitstellen. Allerdings das readings für die Nummer des Busses oder der Bahn sollte schon existieren.

Diverse Filter werden noch eingebaut, sowohl für die Nummer als auch für das Ziel. Das Delay wird auch durch den Service bereitgestellt und das stammt von den Providern direkt.

Gruß Constantin

Gesendet von meinem ONEPLUS A3003 mit Tapatalk


MichaelT

Hallo uniqueck,

bei mir ist es so, sobald ein Fehler bei der http-Abfrage kommt. bleibt die automatische Wiederholung stehen und man muss erneut "update" triggern.
Laut Code Zeile 200 startest Du den Timer nur wieder, wenn STATE==active oder STATE==initialized ist.  Hast Du das bewusst so gemacht? So wird nach einem Error nur
noch die laufenden Abrage durchgeführt und obwohl diese dann fehlerfrei durchläuft ist dann Ende weil kein Timer mehr aktiv ist.

Ich habe es bei mir nach STATE ne disabled geändert. Scheint zu funktionieren.

Gruß Michael
Großes Mischmasch aus HM, Philips, WLAN und Eigenprojekte.
ABER alles mit FHEM.

uniqueck

Zitat von: MichaelT am 10 Dezember 2016, 15:53:08
Hallo uniqueck,

bei mir ist es so, sobald ein Fehler bei der http-Abfrage kommt. bleibt die automatische Wiederholung stehen und man muss erneut "update" triggern.
Laut Code Zeile 200 startest Du den Timer nur wieder, wenn STATE==active oder STATE==initialized ist.  Hast Du das bewusst so gemacht? So wird nach einem Error nur
noch die laufenden Abrage durchgeführt und obwohl diese dann fehlerfrei durchläuft ist dann Ende weil kein Timer mehr aktiv ist.

Ich habe es bei mir nach STATE ne disabled geändert. Scheint zu funktionieren.

Gruß Michael
Ja ich hatte mir was dabei gedacht, aber das kann ich korrigieren.

Kannst ja einen PR mittels Github schicken, wenn du dort angemeldet bist. Ansonsten schicke ich heute Abend das Update auf den Weg.

Gruß Constantin

Gesendet von meinem ONEPLUS A3003 mit Tapatalk


Ulm32b

Ob es an der fünften Jahreszeit liegt? Für Köln liefert das FHEM-departure einwandfreie Ergebnisse, HTTPMOD streikt. ???
Im Einzelnen:
define myDeparture Departure 60
attr myDeparture departure_provider Bahn
attr myDeparture departure_departure 8071474

erzeugt – alternativ auch unter dem Provider Vrs – zutreffende Readings:
Internals
BASE_URL http://transportrest-sbiermann.rhcloud.com
CFGFN
DEF 60

Interval 60
NAME AbfahrtSchlebusch
NR 668
STATE active
TRIGGERTIME 1484397596.96234
TRIGGERTIME_FMT 2017-01-14 13:39:56
TYPE Departure

Readings
departure_0_delay 0 2017-01-14 13:38:02
departure_0_number 4 2017-01-14 13:38:02
departure_0_text Bocklemünd 2017-01-14 13:38:02
departure_0_time 2017-01-14T13:45+0100 2017-01-14 13:38:02
departure_0_timeInMinutes 7 2017-01-14 13:38:02
[. . .]


http://transportrest-sbiermann.rhcloud.com/departureFHEM?from=http://transportrest-sbiermann.rhcloud.com/departureFHEM?from=8071474&provider=Bahn
wie auch
http://transportrest-sbiermann.rhcloud.com/departureFHEM?from=http://transportrest-sbiermann.rhcloud.com/departureFHEM?from=8071474&provider=Vrs
liefert leider nur
EFA error status: INVALID_STATION
obwohl
http://transportrest-sbiermann.rhcloud.com/station/suggest?q=Schlebusch&provider=Bahn
die oben verwendete Stations-ID ausgibt.

Any ideas?

uniqueck

Zitat von: Ulm32b am 14 Januar 2017, 14:07:24
Ob es an der fünften Jahreszeit liegt? Für Köln liefert das FHEM-departure einwandfreie Ergebnisse, HTTPMOD streikt. ???
Im Einzelnen:
define myDeparture Departure 60
attr myDeparture departure_provider Bahn
attr myDeparture departure_departure 8071474

erzeugt – alternativ auch unter dem Provider Vrs – zutreffende Readings:
Internals
BASE_URL http://transportrest-sbiermann.rhcloud.com
CFGFN
DEF 60

Interval 60
NAME AbfahrtSchlebusch
NR 668
STATE active
TRIGGERTIME 1484397596.96234
TRIGGERTIME_FMT 2017-01-14 13:39:56
TYPE Departure

Readings
departure_0_delay 0 2017-01-14 13:38:02
departure_0_number 4 2017-01-14 13:38:02
departure_0_text Bocklemünd 2017-01-14 13:38:02
departure_0_time 2017-01-14T13:45+0100 2017-01-14 13:38:02
departure_0_timeInMinutes 7 2017-01-14 13:38:02
[. . .]


http://transportrest-sbiermann.rhcloud.com/departureFHEM?from=http://transportrest-sbiermann.rhcloud.com/departureFHEM?from=8071474&provider=Bahn
wie auch
http://transportrest-sbiermann.rhcloud.com/departureFHEM?from=http://transportrest-sbiermann.rhcloud.com/departureFHEM?from=8071474&provider=Vrs
liefert leider nur
EFA error status: INVALID_STATION
obwohl
http://transportrest-sbiermann.rhcloud.com/station/suggest?q=Schlebusch&provider=Bahn
die oben verwendete Stations-ID ausgibt.

Any ideas?
Bist du dir sicher das du hier die korrekten URLs gekostet hast, welche von dir verwendet werden. Sehen mir nicht danach aus.

Gruß Constantin

Gesendet von meinem ONEPLUS A3003 mit Tapatalk


ext23

Hi,

super Modul! Ich nutze es in Berlin für die BVG. Macht bis jetzt was es soll.

Gruß
Daniel
HM, KNX, FS20, 1-Wire, PanStamp, AVR-NET-IO, EM1000EM, PCA301, EC3000, HM-LAN, CUL868, RFXtrx433, LGW, DMX @Ubuntu-Server (Hauptsystem) & Raspberry Pi (Satellit)

ext23

Ich hab da gleich noch 2 Sachen.

1. Hat einer ein Beispiel wie ich die Zeit in ein neues userreading umschreiben kann damit diese schöner lesbar ist?

2. Es wäre (für mich) eine super Funktion wenn ich Linien ausfiltern kann. Warum? Ich habe vor der Tür eine TRAM Halte, die lasse ich mir anzeigen. An der U Bahn, die ich mir auch anzeigen lasse fahren aber genau dieselben TRAM Linien da dies eine Halte weiter ist. Das raubt mir natürlich Platz da mich die TRAM Linien dort gerade nicht interessieren. Aber das ist nur ein persönlicher Wunsch.

UPDATE:
Noch ein kleiner Bug, wenn ein Fehler aufgetreten ist, der URL nicht erreichbar oder was auch immer dann macht er nicht mehr alleine weiter. Dann muss man erst manuell ein set update machen.

/Daniel
HM, KNX, FS20, 1-Wire, PanStamp, AVR-NET-IO, EM1000EM, PCA301, EC3000, HM-LAN, CUL868, RFXtrx433, LGW, DMX @Ubuntu-Server (Hauptsystem) & Raspberry Pi (Satellit)

MichaelT

Zitat von: ext23 am 28 Januar 2017, 21:43:34
Ich hab da gleich noch 2 Sachen
...

UPDATE:
Noch ein kleiner Bug, wenn ein Fehler aufgetreten ist, der URL nicht erreichbar oder was auch immer dann macht er nicht mehr alleine weiter. Dann muss man erst manuell ein set update machen.

/Daniel


Siehe Post #19
Gruß Michael
Großes Mischmasch aus HM, Philips, WLAN und Eigenprojekte.
ABER alles mit FHEM.

uniqueck

Zitat von: MichaelT am 29 Januar 2017, 09:14:58

Siehe Post #19
Gruß Michael
Ich schaue mal ob ich heute dazu komme. Falls sich jemand dazu in der Lage fühlt den Fehler zu beheben und Github Account hat bei mir melden, dann einfach forken und Fehler beheben und per pullrequest wieder ins Original Repository zurück schicken.

Gruß Constantin

Gesendet von meinem ONEPLUS A3003 mit Tapatalk


MichaelT

Großes Mischmasch aus HM, Philips, WLAN und Eigenprojekte.
ABER alles mit FHEM.

uniqueck

Zitat von: MichaelT am 29 Januar 2017, 13:09:47
Ich versuch mal. Github.??

Gruß
Michael
Naja das Modul ist bei Github gehostet in einem Repository von mir. Wenn nicht dann schicke mir den Patch hier und ich commite ihn dann.

Gruß Constantin

Gesendet von meinem ONEPLUS A3003 mit Tapatalk


MichaelT

Zitat von: uniqueck am 29 Januar 2017, 13:51:37
Naja das Modul ist bei Github gehostet ...

Habs mal probiert. Hatte nie mit github zu tun.

Gruß
Michael
Großes Mischmasch aus HM, Philips, WLAN und Eigenprojekte.
ABER alles mit FHEM.