[FTUI3] new Departure für FTUI3

Begonnen von mr_petz, 06 April 2021, 14:57:39

Vorheriges Thema - Nächstes Thema

mr_petz

#60
Zitat von: LuGu am 26 Februar 2022, 17:58:16
Prima, funktioniert.


ftui-departure {
  --departure-bgcolor: var(--primary-color);
  --departure-depcolor: var(--secondary-color);
}

Gruß LuGu
Super.
Hinweis:
Dein Beispiel zielt jetzt auf alle departures.
Du kannst auch eine id oder name verwenden um jedes einzeln anzusprechen.
LG mr_petz

Stonemuc

Und auch hier habe ich mal eine Frage:

Bei mir werden nach abgelaufener "Haltestellenzeit" keine neuen Daten angezeigt, auch nicht wenn ich manuell refreshe. Das Departure Widget bleibt dann leer...woran kann das liegen?
Nur wenn ich das FTUI in einem  komplett neuen Browser öffne, sind die Abfahrtszeiten bis zum Ablauf da....irgendwas mach ich ja sicher falsch

Hier mal mein device:
Internals:
   BUSY       0
   DEF        none 0
   FUUID      5e3069ce-f33f-6467-1371-309f68c0ed063af1
   Interval   0
   MainURL   
   ModuleVersion 4.1.10 - 6.7.2021
   NAME       myDeparture
   NOTIFYDEV  global
   NR         460
   NTFY_ORDER 50-myDeparture
   STATE      ???
   TYPE       HTTPMOD
   value     
   CompiledRegexes:
   HttpUtils:
     NAME       
     addr       https://transport.stefan-biermann.de:443
     auth       0
     buf       
     code       200
     compress   1
     conn       
     data       
     displayurl https://transport.stefan-biermann.de/publictransportapi/rest/departure/FHEM?from=8005947&provider=Db&limit=5
     header     
     host       transport.stefan-biermann.de
     httpheader HTTP/1.0 200 OK
Content-Length: 173
Content-Type: application/json
Date: Wed, 23 Mar 2022 07:56:01 GMT
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-Robots-Tag: noindex,nofollow,nosnippet,noarchive,notranslate,noimageindex
X-Xss-Protection: 1; mode=block
     httpversion 1.0
     hu_blocking 0
     hu_filecount 1
     hu_port    443
     hu_portSfx
     ignoreredirects 1
     loglevel   4
     path       /publictransportapi/rest/departure/FHEM?from=8005947&provider=Db&limit=5
     protocol   https
     redirects  0
     timeout    30
     url        https://transport.stefan-biermann.de/publictransportapi/rest/departure/FHEM?from=8005947&provider=Db&limit=5
     sslargs:
   QUEUE:
   READINGS:
     2022-03-23 08:56:01   Uffenheim       [["RB 58117","Treuchtlingen","22"],["RB 58118","Würzburg Hbf","47"],["RB 58119","Treuchtlingen","78"],["RB 58120","Würzburg Hbf","104"],["RB 58121","Treuchtlingen","138"]]
   REQUEST:
     context    get
     data       
     header     
     ignoreredirects 0
     num        01
     retryCount 0
     type       get01
     url        https://transport.stefan-biermann.de/publictransportapi/rest/departure/FHEM?from=8005947&provider=Db&limit=5
     value     
   defptr:
     readingBase:
       Uffenheim  get
     readingNum:
       Uffenheim  01
     readingOutdated:
     requestReadings:
       get01:
         Uffenheim  get 01
Attributes:
   get01Name  Uffenheim
   get01Regex (\[\[.*\]\]).*
   get01URL   https://transport.stefan-biermann.de/publictransportapi/rest/departure/FHEM?from=8005947&provider=Db&limit=5
   timeout    30


Und hier mein aufruf in meiner index.html
<ftui-grid-tile row="1" col="15" height="5" width="6" shape="round">
<header>Bahnlinie WÜ-UFF</header>

<ftui-departure [list]="myDeparture:Uffenheim" DB icon="train" getinterval="30" get="myDeparture Uffenheim" station="DB"  refreshlist="30" manuell switch alternate nextday depscroll>
</ftui-departure>
</ftui-grid-tile>

FHEM aus Raspberry PI 3 B+, Haussteuerung auf EnOcean Basis, Tecalor THZ 404eco Wärmepumpe

mr_petz

#62
Hi.
Als erstes solltest du noch das Attribute:

attr myDeparture getDecode UTF-8

einfügen im Device, da deine Sonderzeichen/Umlaute nicht richtig dargestellt werden.

Als zweites. Was passiert in FTUI und Fhem wenn du im Device ein
get myDeparture Uffenheim
ausführst?

Und zum dritten. refreshlist ist nur für statische Listen. Steht auch auf der ersten Seite.
Dadurch wird immer nur die aktuell sichtbare Liste aktualisiert bis nix mehr drin steht und erst am nächsten Tag wieder angezeigt wenn die Zeit ran ist.
getinterval ist hier für dich richtig!
Nimm das refreshlist mal raus und mache mal so:

<ftui-departure [list]="myDeparture:Uffenheim" DB icon="train" getinterval="30" get="myDeparture Uffenheim" station="DB" manuell switch alternate nextday depscroll>
</ftui-departure>


LG mr_petz

Edit: in der nächsten Version werde ich das get Attribut raus nehmen und so anpassen dass man es nur bei Bedarf angeben muss!

Stonemuc

Zitat von: mr_petz am 23 März 2022, 10:30:31
Hi.
Als erstes solltest du noch das Attribute:

attr myDeparture getDecode UTF-8

einfügen im Device, da deine Sonderzeichen/Umlaute nicht richtig dargestellt werden.

Als zweites. Was passiert in FTUI und Fhem wenn du im Device ein
get myDeparture Uffenheim
ausführst?

Und zum dritten. refreshlist ist nur für statische Listen. Steht auch auf der ersten Seite.
Dadurch wird immer nur die aktuell sichtbare Liste aktualisiert bis nix mehr drin steht und erst am nächsten Tag wieder angezeigt wenn die Zeit ran ist.
getinterval ist dann hier richtig!
Nimm das mal raus:

<ftui-departure [list]="myDeparture:Uffenheim" DB icon="train" getinterval="30" get="myDeparture Uffenheim" station="DB" manuell switch alternate nextday depscroll>
</ftui-departure>


LG mr_petz

Oh stimmt...das ist mir noch überhaupt nicht aufgefallen, dass ich das ja die Umlaute falsch drinnen habe.
Wenn ich
get myDeparture Uffenheim
ausführe wird natürlich ganz normal das Reading aktualisiert und im "alten" FTUI funktioniert das alles auch, da werden die Abfahrten im Departure auch angezeigt.

Ich lösch mal den Teil mit refreshlist raus....vermutlich läuft es dann korrekt..

FHEM aus Raspberry PI 3 B+, Haussteuerung auf EnOcean Basis, Tecalor THZ 404eco Wärmepumpe

mr_petz

ps. dein getinterval brauchst du nicht so niedrig setzen, da deine Abfahrtszeiten ja eh im ca. 20min Takt sind und der getinterval in sec gerechnet wird...
LG

mr_petz

#65
@setstate @all
Ich habe das get Attribute entfernt und einen Pull request angeschubst. Wenn es jetzt und später noch gesetzt ist, dann ist es nicht schlimm und wird ignoriert.
Das Referenz-Datum habe ich auch noch gefixt.

LG mr_petz

Edit: get muss, wenn der Pull request durch ist, nicht mehr angegeben werden! Bsp:

<ftui-departure
  [list]="depDummy:HBF"
  icon="train"
  getinterval="30"
  station="HBF"
  DB
  deptime
  alternate>
</ftui-departure>

rob

Hallo mr_petz.

OK, das get ist weg.  Das 'list=' im Bsp. holt sich das Reading HBF, richtig?
Wie sage ich im Widget von nun an, welche Funktion in FHEM zur Aktualisierung ausgeführt werden soll?

Vielen Dank und beste Grüße
rob

mr_petz

#67
Hi rob.
Der Pullrequest ist noch nicht durch.
Also get noch drinnen lassen.
Später holt sich departure durch die [ list ] Angabe die Daten und damit wird auch das get genommen und ausgeführt nach deinem eingestellten getinterval.
Hast du einen anderen Befehl zum Aktualisieren der Daten?
Ich habe bis jetzt nur immer gleiche Definitionen gesehen bei list und get.
Wenn dem so ist dass das get ein anderes ist, kann ich es noch optional einfügen.
LG

Edit: Ich habe es jetzt einfach mal als optionales Attribute wieder eingefügt...
Aber wie gesagt, der Pullrequest muss erstmal durch sein.
Das Referenzdatum hat ohne den Request keine Funktion!

rob

Hi.

Danke für Deine flinke Rückmeldung :)
Ja, ich habe tatsächlich mehrere Readings ungleich heißend zu den Update-Befehlen eingebaut.

Ausführlicher
Hab einen Dummy im Einsatz und dort die Befehle "update_bahn" und "update_bus" eingebaut, welcher eine Routine in der MyUtils ausführt und dadurch die passenden Readings im Dummy (Bus | Bahn) aktualisiert werden.
Das normale HTTPMOD Departure lt. Wiki konnte ich leider nicht mehr nehmen, weil die Aufrufe über https://transport.stefan-biermann.de bei mir nicht mehr klappen (ging eine Weile, jetzt nicht mehr). Ich aktualisiere via https://reiseauskunft.bahn.de/bin/bhftafel.exe/. Konstrukt ist leicht erweiterbar und kann mehrere FTUI3-Widgets gleichermaßen bedienen. Eigentlich ähnlich zu HTTPMOD, nur eingedampft auf ein einfaches HttpUtils_NonblockingGet($param);

Das get angeben zu können, fand ich sehr praktisch. Allerdings musste ich ja bereits get über ein cmd-alias abfangen und set ausführen --> mit der neuen Lösung müsste ich dann wohl gemäß Bsp. das "get HBF" im alias analog abfangen.
Nur wegen mir musst das also nicht unbedingt verbiegen :)  - wollte nur die neue Umsetzung gerne verstehen.
Alternativ kann ich auch einen Button ins FTUI3 packen und damit aktualisieren.

Viele Grüße
rob

mr_petz

#69
Moin.
Deine Konstelation kannte ich so noch nicht.
Ich kann auch noch ein optionales set Attribute hinzufügen. Also so:
set="Device value"
Damit wäre dann alles abgedeckt.
LG

Edit: Du könntest es auch wie ich machen. Bisher keine Ausfälle:
https://forum.fhem.de/index.php/topic,48255.msg1058924.html#msg1058924

rob

Moinsen.

Ja, den Post hatte ich bei meinen Recherchen gelesen und fand ihn hilfreich  8). Ich dachte mir halt: wenn ich eh schon myUtils anfasse, mache ich den aufwändigeren Teil nur dort und den Rest möglichst simpel (Dummy). Das HTTPMOD hatte ich auch schon definiert, es hakte noch und wurde mir dann zu oversized. Ist natürlich ein Eigenbau und genau deshalb musst/sollst Du das auch nicht supporten.

Wenn Du die set-Option trotzdem für sinnvoll erachtest, würde ich mich natürlich über diese Extrawurst freuen :) Kann natürlich passieren, dass es mit der Zeit andere User stört/ zu fragen führt.

Vielen Dank und beste Grüße
rob

mr_petz

@rob
Update ist durch.
Es gibt jetzt zusätzlich ein set Attribute und die Referenzzeit ist gefixt.
LG mr_petz

rob


DerFranke

Wie bekommt man eigentlich die Umlaute in den Griff?
https://transport.stefan-biermann.de/publictransportapi/rest/departure/FHEM?from=3003368&provider=Vgn
zeigt die Umlaute richtig an.

FHEM readings macht daraus zB
["293","Büchenbach/ER Lindnerstraße","26"]

was dann auch logischerweise von Departure so angezeigt wird.

Irgendeine Idee?