Autor Thema: neues Modul: TRAFFIC - google maps directions  (Gelesen 24209 mal)

Offline jmike

  • Developer
  • Full Member
  • ****
  • Beiträge: 187
neues Modul: TRAFFIC - google maps directions
« am: 27 Juli 2016, 10:51:23 »
Hi.

Habe ein kleines Modul geschrieben um Routen aus Google Maps in FHEM darzustellen.
Wie auch schon bei der HTTPMOD Lösung (https://forum.fhem.de/index.php/topic,20151.0.html) braucht ihr euren eigenen Google Maps API Key.
Mein dev-FHEM hat bisher alles sauber verkraftet, hoffe es läuft auch bei euch.

Das Modul ist ab heute über die Update Funktion und das SVN verfügbar.
Auch der Wiki Eintrag ist online: http://www.fhemwiki.de/wiki/TRAFFIC


initiale Beschreibung:
Hier die Fakten, [b]v0.42[/b]:
    Perl module (die möglicherweise fehlen z.B. mit #> cpan -i <packet> nachinstallieren):
        LWP::Simple
        JSON

    Installation:
        98_TRAFFIC in /FHEM kopieren, dann reload 98_TRAFFIC ausführen
        Attribute start_address und end_address ausfüllen.
        z.b. attr <device> start_address Winzererstraße 140, 80797 München

    Define:
        define <devicename> TRAFFIC <API-KEY> [update-interval]
   
    Features:
        Distanz
        Fahrzeit ohne Verkehr
        Fahrzeit mit Verkehr
        Verzögerung
        Waypoints
        Sprache
        Outputs in Sekunden / Meter
        Werte zusätzlich in Minuten
        Readings können angepasst werden über Attribut outputReadings (text min)
        state kann per Attribut ein Reading anzeigen, Attribut stateReading
        update-burst
        Strecke kann zusätzlich umgedreht werden, Attribut includeReturn
       
    Set/Commands:
        [i]"update" [burst-count] [burst-interval-sec][/i]          - aktualisiert Werte automatisch (Readings)
       
    Readings:
        delay
        distance
        duration
        duration_in_traffic
        state
        error_message
        delay_min (optional)
        duration_in_traffic_min (optional)
        duration_min (optional)
        eta
       
    State:
        "Initialized"   - modul initialisiert
        "OK"      - update hat geklappt
        "config_error"       - Konfigurationsfehler (start_address oder end_address leer)
        "<APIRETURN>"         - Fehlermeldung von Google Maps, falls vorhanden (siehe Reading error_message)

    custom Attribute:
         "start_address"           - Startadresse
         "end_address"           - Zieladresse
         "raw_data"           - Outputs in Sekunden / Meter, optional
         "language"           - Sprache festlegen, optional
         "waypoints"           - Zusätzliche Waypoints angeben, mit | getrennt, optional
         "stateReading"         - Name eines Readings welches state überschreibt
         "outputReadings"       - zum Filter der Readings, mögliche Werte "text min"
         "includeReturn"       - erstellt zusätzliche Readings für eine umgedrehte Strecke
         "disable"           - Modul deaktivieren

               
Der Umfang des Moduls ist noch relativ klein. Wenn ihr Wünsche / Feedback habt immer her damit.
Werde dann wie immer die Version hier im ersten Thread aktualisieren.

grüße
Mike

0.1-13
0.2-20
0.3-12
0.41-28
0.42-60
« Letzte Änderung: 08 Oktober 2016, 14:47:00 von jmike »
Gefällt mir Gefällt mir x 6 Liste anzeigen

Offline RaspiCOC

  • Full Member
  • ***
  • Beiträge: 341
Antw:neues Modul: TRAFFIC - google maps directions
« Antwort #1 am: 27 Juli 2016, 12:49:37 »
Bitte noch die Ankunftszeit mit aufnehmen. Also aktuelle Zeit + duration_in_traffic. Und die aktuelle Zeit bitte unterBerücksichtigung von Sommer- / Winterzeit.... :D

Offline Amenophis86

  • Hero Member
  • *****
  • Beiträge: 1766
  • Anti-Statement befreite Zone ;)
Antw:neues Modul: TRAFFIC - google maps directions
« Antwort #2 am: 27 Juli 2016, 14:24:58 »
Bitte noch die Option von Waypoints einbauen. Habe zB eine Strecke so definiert:

https://maps.googleapis.com/maps/api/directions/json?origin=XXXXX&destination=XXXX&waypoints=via:Berliner%20Stra%C3%9Fe,%20Offenbach&language=de-DE&departure_time=now&key=XXXX 1800

:) Danke
FHEM auf Raspberry3, Betriebssystem Jessy, HMLan, HM Komponenten, LD382A, H801, Sonoff, Harmony Hub und vieles mehr. Einfach ein tolles universelles System

Offline justme1968

  • Developer
  • Hero Member
  • ****
  • Beiträge: 17003
Antw:neues Modul: TRAFFIC - google maps directions
« Antwort #3 am: 27 Juli 2016, 14:26:58 »
gibt es einen grund das du LWP verwendest und nicht das FHEM eigene HttpNonBlockingGet?

gruss
  andre
FHEM5.4,DS1512+,2xCULv3,DS9490R,HMLAN,2xRasPi
CUL_HM:HM-LC-Bl1PBU-FM,HM-LC-Sw1PBU-FM,HM-SEC-MDIR,HM-SEC-RHS
HUEBridge,HUEDevice:LCT001,LLC001,LLC006,LWL001
OWDevice:DS1420,DS18B20,DS2406,DS2423
FS20:fs20as4,fs20bs,fs20di
AKCP:THS01,WS15
CUL_WS:S300TH

Offline jmike

  • Developer
  • Full Member
  • ****
  • Beiträge: 187
Antw:neues Modul: TRAFFIC - google maps directions
« Antwort #4 am: 27 Juli 2016, 14:43:48 »
Bitte noch die Ankunftszeit mit aufnehmen....
gute Idee, werde ich einbauen.

Bitte noch die Option von Waypoints einbauen.
Ist bereits drin, siehe oben bzw. commandref.
Über Attribut waypoints einfach die Strecke mit | angeben. z.b.
attr device waypoints nürnberg|würzburg|fulda

gibt es einen grund das du LWP verwendest und nicht das FHEM eigene HttpNonBlockingGet?
Nicht wirklich, die LWP calls sind zwar non-blocking umgesetzt aber ich werde mir die FHEM sub mal ansehen.

gruss
mike

Offline Amenophis86

  • Hero Member
  • *****
  • Beiträge: 1766
  • Anti-Statement befreite Zone ;)
Antw:neues Modul: TRAFFIC - google maps directions
« Antwort #5 am: 27 Juli 2016, 22:11:48 »
Ist bereits drin, siehe oben bzw. commandref.
Über Attribut waypoints einfach die Strecke mit | angeben. z.b.
attr device waypoints nürnberg|würzburg|fulda

Sry überlesen. Danke :)
FHEM auf Raspberry3, Betriebssystem Jessy, HMLan, HM Komponenten, LD382A, H801, Sonoff, Harmony Hub und vieles mehr. Einfach ein tolles universelles System

Offline RaspiCOC

  • Full Member
  • ***
  • Beiträge: 341
Antw:neues Modul: TRAFFIC - google maps directions
« Antwort #6 am: 27 Juli 2016, 22:35:43 »
Und noch ein Reading, das benötigt wird: duration_min

Also Fahrtzeit in Minuten. Nicht hh:mm sondern nur mmm. Dann kann man auch schöne Plots machen. (Ich versuche jetzt schon seit 8 Jahren das Muster hinter dem Verkehr auf der A99 zu verstehen...  :'()

Offline jmike

  • Developer
  • Full Member
  • ****
  • Beiträge: 187
Antw:neues Modul: TRAFFIC - google maps directions
« Antwort #7 am: 28 Juli 2016, 12:01:28 »
Hi.

v0.0.2 mit mehr Readings ist im ersten Thread.

estimated time of arrival (eta) ist leider statisch mit Startzeit "jetzt", ist also in 10min veraltet. Mal überlegen ob man irgendwie ein "live" Wert bauen kann.
Also immer aktuelle Uhrzeit + delay.

Für delay, duration und duration_in_traffic jetzt zusätzlich Minutenwerte.
Wenn die original Werte unter 1 Stunde sind, sind die Werte nun natürlich doppelt gelistet.

lg
mike
« Letzte Änderung: 28 Juli 2016, 12:03:37 von jmike »

Offline RaspiCOC

  • Full Member
  • ***
  • Beiträge: 341
Antw:neues Modul: TRAFFIC - google maps directions
« Antwort #8 am: 28 Juli 2016, 13:39:00 »
Schon klar, dass ETA immer auf jetzt bezogen  ist. Sonst wäre es ja auch ein Blick in die Kristallkugel.

Über ETA könnte ich dann aber ein Abfahrsignal triggern im Sinne von, wenn Du jetzt losfährst, kommst Du zur gewünschten Zeit an.

Man könnte natürlich auch auf Basis eines Trends (z.B. die Fahrtzeit wird immer länger über die letzten Abrufintervalle) eine Prognose wagen. Also aus historischen Werten (Monat / Tag / Stunde / Minute) die erwartete Verkehrsentwicklung berechnen und die ETA dann auf einen beliebige Zeit in der Zukunft gleitend berechnen. (siehe auch beigefügtes Chart der Entwicklung der Fahrzeit in Minuten)

Ich glaube aber, dass man damit einen RPi dann wohl doch etwas überfordert.... :D

Offline Raven

  • Full Member
  • ***
  • Beiträge: 257
Antw:neues Modul: TRAFFIC - google maps directions
« Antwort #9 am: 29 Juli 2016, 09:34:35 »
Moin,

danke für das Modul.  :D

Bei device update kommt diese Fehlermeldung: Undefined subroutine &main::from_json called at ./FHEM/98_TRAFFIC.pm line 249.
Der Aufruf über den Browser fkt. liegt also nicht an den Adressen.

Die o.g. PERL Pakete möchte ich nicht über CPAN installieren, sondern über apt-get install. Welche Pakete werden denn benötigt?
Installiert habe ich schon: libjson-perl libwww-perl

Danke vorab.
Cubietruck-Prod: HM-LAN, Heizung, Rolläden, Schalter, Viessmann (optolink)
Cubietruck-DEV:
Fritzbox 7490

Offline jmike

  • Developer
  • Full Member
  • ****
  • Beiträge: 187
Antw:neues Modul: TRAFFIC - google maps directions
« Antwort #10 am: 29 Juli 2016, 18:51:20 »
Hi.

Puuh. from_json ist definitiv im Perlpaket JSON beinhaltet. Das solltest du eigentlich über "apt-get install libjson-perl" bekommen.
Du kannst mal noch libjson-any-perl probieren, macht aber eigentlich keinen Sinn.

Kannst ja eventuell mal gucken welche JSON.pm du in deiner perl extlib hast. Vielleicht kommen wir so weiter.


Offline Raven

  • Full Member
  • ***
  • Beiträge: 257
Antw:neues Modul: TRAFFIC - google maps directions
« Antwort #11 am: 29 Juli 2016, 22:22:23 »
Moin,

Danke.

Auch ein FHEM-Neustart & FHEM-Update brachten nichts, ausser daß jetzt der Status "initialized" lautet, war zuvor "config Error", aber die o.g. Fehlermeldung kommt nach wie vor.
Installiert ist libjson-perl 2.61-1 (libjson-any-perl habe ich auch installiert).

Ansonsten: perl 5, version 20, subversion 2 (v5.20.2) unter Jessie
Cubietruck-Prod: HM-LAN, Heizung, Rolläden, Schalter, Viessmann (optolink)
Cubietruck-DEV:
Fritzbox 7490

Offline jmike

  • Developer
  • Full Member
  • ****
  • Beiträge: 187
Antw:neues Modul: TRAFFIC - google maps directions
« Antwort #12 am: 30 Juli 2016, 11:18:35 »
Hm...


was passiert wenn du auf der cli ausführst:
perl -e "use JSON;"

Bei mir läuft perl 5.14.2, JSON.pm liegt deshalb hier: /usr/local/share/perl/5.14.2/JSON.pm

version 2.90.
head /usr/local/share/perl/5.14.2/JSON.pm
  package JSON;
  ...
  BEGIN {
    $JSON::VERSION = '2.90';


was hast du?

Offline Raven

  • Full Member
  • ***
  • Beiträge: 257
Antw:neues Modul: TRAFFIC - google maps directions
« Antwort #13 am: 30 Juli 2016, 21:20:46 »
Danke für die Hilfe bei der Fehlersuche.

perl -e "use JSON;"   -> Kommt garnichts zurück. Ist aber dann ein Zeichen, daß das Modul installiert ist (nehme ich an  :o)

Verwende ich instmodsh -> wird reportet:
Zitat
Installed modules are:
   JSON
   JSON::XS
   Perl
   Types::Serialiser
   common::sense

Liegt bei mir unter: /usr/share/perl5/JSON.pm und ist $JSON::VERSION = '2.61';

Was ich noch nicht verstehe, meine Perl-Kenntnisse sind aber auch rudiemtentär,
auch andere FHEM-Module (Philips Hue Bridge und SYSMON) verwenden m.E. die Fkt. from_json
und hier erhalte ich keine Fehlermeldung.
Cubietruck-Prod: HM-LAN, Heizung, Rolläden, Schalter, Viessmann (optolink)
Cubietruck-DEV:
Fritzbox 7490

Offline jmike

  • Developer
  • Full Member
  • ****
  • Beiträge: 187
Antw:neues Modul: TRAFFIC - google maps directions
« Antwort #14 am: 31 Juli 2016, 09:32:23 »
Ah. 2.61 hattest du oben schon gepostet.
Laut repo ist from_json dort auch schon vorhanden.

Nun gehen mir die Ideen aus. Änder mal bei deinem 98_TRAFFIC.pm die Zeile 249 auf:
my $json = decode_json($body->decoded_content);

Falls  decode_json bei dir läuft werde ich es in 0.3 ändern, kommt aufs selbe raus.

 

decade-submarginal