neues Modul: TRAFFIC - google maps directions

Begonnen von jmike, 27 Juli 2016, 10:51:23

Vorheriges Thema - Nächstes Thema

tuppertasse

kannste auch selber triggern mit set VARIABLE update (ganz oben ist das)

jmike

@tuppertasse:

ZitatMein Arbeitsweg hat 3 verschiedene Wegmöglichkeiten. ...

Ja da ist Google Maps etwas zickiger als in meiner Doku beschrieben. Hatte das Problem auch, siehe: https://forum.fhem.de/index.php/topic,56045.msg480064.html#msg480064
Am besten ganz genau Latitude & Longitude angeben. Dabei kann es nur Probleme beim return_* geben :/
#notiz-an-mich-selbst: Doku muss detaillierter bei Waypoints werden

@Mitch:
Hast ja schon rausbekommen was es mit dem config_error auf sich hat.
Siehe auch in der Doku im ersten Post ("config_error"       - Konfigurationsfehler (start_address oder end_address leer) ) ;)
#notiz-an-mich-selbst: Fehelrmeldung für invalide Config überarbeiten

Ich schätze mit
Zitat von: Mitch am 25 September 2016, 12:01:21
Mal sehen, dauert ja ein paar Minuten.
meintest du dein Google Maps API Key oder?

Läuft nun alles?

Mitch

Also, nachdem ich dann endlich gefunden habe, wie und wo ich die API auch noch aktivieren muss, geht es, Danke!

Früher war die API Console um ein vielfaches besser und leichter zu bedienen  >:(
FHEM im Proxmox Container

tuppertasse

@jmike:
Zitat von: jmike am 25 September 2016, 19:40:27
@tuppertasse:
Ja da ist Google Maps etwas zickiger als in meiner Doku beschrieben. Hatte das Problem auch, siehe: https://forum.fhem.de/index.php/topic,56045.msg480064.html#msg480064
Am besten ganz genau Latitude & Longitude angeben. Dabei kann es nur Probleme beim return_* geben :/
Mhhhhh,
ich steh da momentan auf dem Schlauch.
Ich habe es ja so eingegeben ohne Erfolg --> Straße 1, PLZ1 STADT1|Straße 2, PLZ2 STADT2|Straße 3, PLZ3 STADT3

Wo gebe ich denn da jetzt LA & LO an und wie sieht der Syntax dann aus ?

@Mitch:
Zitat von: Mitch am 26 September 2016, 09:04:28
Früher war die API Console um ein vielfaches besser und leichter zu bedienen
Da gebe ich dir vollkommen Recht !

jmike

Zitat von: tuppertasse am 26 September 2016, 09:14:09
Wo gebe ich denn da jetzt LA & LO an und wie sieht der Syntax dann aus ?

Für mich hat es am besten funktioniert wenn man in Google Maps ganz genau auf die Strasse zoomst die man fahren möchte und dann "rechte Maustaste" -> "Was ist hier?" anklickst.
Unten bekommst du dann die Koordinaten eingeblendet. Bei Autobahnen sollte man sogar die korrekte Richtungs-Spur wählen.

Dann die Koordinaten mit Komma getrennt eintragen:
Zitat48.187083,11.556913|48.241531,11.601545




Mitch

Könnte man noch ein Reading anlegen, welches die Zeit des letzten Updates (damit die Abfahrtzeit) speichert?
FHEM im Proxmox Container

jmike

Zitat von: Mitch am 26 September 2016, 09:54:20
Könnte man noch ein Reading anlegen, welches die Zeit des letzten Updates (damit die Abfahrtzeit) speichert?

Reicht nicht der Timestamp der Readings selber aus? Den kann man z.b. mit ReadingsTimestamp($DEVICE,"<reading>","") leicht auslesen.

tuppertasse

Zitat von: jmike am 26 September 2016, 09:51:06
Dann die Koordinaten mit Komma getrennt eintragen:

Supi vielen Dank, klappt jetzt mit waypoints. Ich musste allerdings zwischen den Koordinaten also zwischen LA und LO ein Leerzeichen einfügen!

LO, LA und nicht LO,LA

Warum auch immer.

Mitch

Zitat von: jmike am 26 September 2016, 09:56:10
Reicht nicht der Timestamp der Readings selber aus? Den kann man z.b. mit ReadingsTimestamp($DEVICE,"<reading>","") leicht auslesen.

reicht, vielen Dank!
FHEM im Proxmox Container

tuppertasse

Mhhhh,
habe mal grad ins Log geschaut und habe dort anscheinend ein Warning:

PERL WARNING: Argument "6 min" isn't numeric in numeric

Anscheinend wird da irgendwo mit 6 min und nicht mit 6 gerechnet oder ?
Gilt übrigens auch für jede andere Zahl auch für 0.

tuppertasse

Moin,

kleine Info - vielleicht mit aufnehmen in die error Liste ?

Ich bekomme die message "OVER_QUERY_LIMIT" --> nach nachforschen scheint die free Version der API 2500 requests pro Tag zu akzeptieren mehr nicht. Entsprechend muß die Zeit eingestellt sein je nachdem wieviele Strecken man sich da hinein gebastelt hat :-)

Frage ist ob man das hinbekommt, dass die Zeit "flexibel" ist, also nur angestoßen wird wenn die Wegzeit sich ändert ? Allerdings besteht die Möglichkeit auch da die Limits zu erreichen denke ich.
Also zeit hochsetzen

jmike

Hi.

Komisch, die Perl Warnings bekomme ich nicht. Eigentlich kann der Wert auch nur aus "delay" oder "return_delay" kommen und die werden eigentlich nicht weiterverarbeitet.
Kannst du mir mehr Input liefern? Mal ein List vom device und die volle Fehlermeldung dazu?


Zu deinem API Limit... 2500 API Calls pro Tag sind alle 35 Sekunden ein API Call ?!

Selbst bei einem 5-Minuten Interval könntest du 8 TRAFFIC devices laufen lassen ohne das Limit zu erreichen.
Wenn das nicht reicht erhöhe das Interval grundsätzlich und nutze die Burst Funktion für die "Stosszeiten" wo du eine feinere Abtastung brauchst.


Wie gesagt, ich denke über eine art Scheduler nach. von 6-9Uhr alle 5min, sonst 1 Stunde oder sowas.

FHEMAN

Ich werte jetzt beide Richtungen der wichtigsten Straße meiner Arbeitsroute aus. Dabei summiere ich einfach die Delays und vergebe "Staupunkte": 0 (0-4 min Delay), 1 (5-9 min Delay), 2 (10-14 min Delay), ... Ausgehend davon (da eine Änderung hier nicht so häufig erfolgt, quasi als Hysterese) schalte ich im Haus eine farbige Status-LED und sende mir eine Pushover Nachricht. Und auf Arbeit erfahre ich, wann es Zeit wird, die Biege zu machen, bevor es sich staut.
Hier mal ein Screenshot von meinem einfachen Plot:

(https://picload.org/image/rddadcdc/citytraffic.jpg)

Wie man sieht ist, das Thema Stau für unser verschlafenes Städtchen zumindest meistens ein wenig overkill, das Modul aber doch ein schönes Beispiel, wie man ohne teure Hardwareanschaffungen alleine durch die Community sein Zuhause smarter machen kann. Von meiner Seite daher nochmal danke für deine Arbeit, jmike!
NUC7i5 | PROXMOX | FHEM 6.2 | 1 HMLAND | 2 UART | HM | LMS | HIFIBERRY | DOORBIRD | BLINK | BUDERUS | HUE | ALEXA | MILIGHT | LUFTDATENINFO | MQTT| ZIGBEE2MQTT | INDEGO | ROBOROCK | SMA | APC | OPENWB

tuppertasse

Zitat von: jmike am 28 September 2016, 11:47:57
Wie gesagt, ich denke über eine art Scheduler nach. von 6-9Uhr alle 5min, sonst 1 Stunde oder sowas.

TOP kann ich nur auch nochmal sagen ! Super arbeit jmike.

Werde mal das List und Log schicken.

tuppertasse

Zitat von: jmike am 28 September 2016, 11:47:57
Kannst du mir mehr Input liefern? Mal ein List vom device und die volle Fehlermeldung dazu?

So hier das List:
Internals:
   DEF        <Bezeichnung>,<Weglänge [km]>,<Zeit>,<Zeit>,<Verspätung>,<Ankunftszeit> INF_HTM_FAHRZEIT_HOME_WORK.*:distance,duration,duration_in_traffic,delay,eta
   NAME       ReadingsGroup_Traffic
   NR         228
   NTFY_ORDER 50-ReadingsGroup_Traffic
   STATE      Initialized
   TYPE       readingsGroup
   mayBeVisible 1
   Content:
     INF_HTM_FAHRZEIT_HOME_WORK_B236 1
     INF_HTM_FAHRZEIT_HOME_WORK_B54 1
     INF_HTM_FAHRZEIT_HOME_WORK_Stadt 1
   Content2:
   DEVICES:
     ARRAY(0x32c0470)
     ARRAY(0x35e29e0)
     ARRAY(0x35e5b60)
     ARRAY(0x35eda18)
   Fhem:
     lastDefChange 48
     last_update 1475060549.93354
   Helper:
     DEF
     valueStyle {if($READING eq "delay") {
  if($VALUE > 9.9) { 'style="color:red"' }
  elsif($VALUE > 4.9) { 'style="color:orange"' }
  elsif($VALUE > 2) { 'style="color:yellow"' }
  else { 'style="color:green"' }
}
}
     Positions:
       INF_HTM_FAHRZEIT_HOME_WORK_B236.delay 2:4
       INF_HTM_FAHRZEIT_HOME_WORK_B236.distance 2:1
       INF_HTM_FAHRZEIT_HOME_WORK_B236.duration 2:2
       INF_HTM_FAHRZEIT_HOME_WORK_B236.duration_in_traffic 2:3
       INF_HTM_FAHRZEIT_HOME_WORK_B236.eta 2:5
       INF_HTM_FAHRZEIT_HOME_WORK_B54.delay 3:4
       INF_HTM_FAHRZEIT_HOME_WORK_B54.distance 3:1
       INF_HTM_FAHRZEIT_HOME_WORK_B54.duration 3:2
       INF_HTM_FAHRZEIT_HOME_WORK_B54.duration_in_traffic 3:3
       INF_HTM_FAHRZEIT_HOME_WORK_B54.eta 3:5
       INF_HTM_FAHRZEIT_HOME_WORK_Stadt.delay 4:4
       INF_HTM_FAHRZEIT_HOME_WORK_Stadt.distance 4:1
       INF_HTM_FAHRZEIT_HOME_WORK_Stadt.duration 4:2
       INF_HTM_FAHRZEIT_HOME_WORK_Stadt.duration_in_traffic 4:3
       INF_HTM_FAHRZEIT_HOME_WORK_Stadt.eta 4:5
     Values:
       formated:

         ARRAY(0x36e0dd0)
         ARRAY(0x3619930)
         ARRAY(0x31d4430)
         ARRAY(0x379e380)
         ARRAY(0x369ff08)
       orig:

         ARRAY(0x3642a10)
         ARRAY(0x35daca0)
         ARRAY(0x36e12c8)
         ARRAY(0x3573bb0)
         ARRAY(0x36a2330)
       prefixsuffix:

         ARRAY(0x35d7818)
         ARRAY(0x356c2e8)
         ARRAY(0x316b248)
         ARRAY(0x375c728)
         ARRAY(0x36a1ef8)
Attributes:
   alias      @Home2Work
   group      01 Wegzeiten von @Home zur Arbeit
   room       80_Traffic
   valueStyle {if($READING eq "delay") {
  if($VALUE > 9.9) { 'style="color:red"' }
  elsif($VALUE > 4.9) { 'style="color:orange"' }
  elsif($VALUE > 2) { 'style="color:yellow"' }
  else { 'style="color:green"' }
}
}
   verbose    5


Und hier das Log:

2016.09.28 13:02:09 1: PERL WARNING: Argument "0 min" isn't numeric in numeric gt (>) at (eval 96917) line 2.
2016.09.28 13:02:09 1: PERL WARNING: Argument "0 min" isn't numeric in numeric gt (>) at (eval 96922) line 2.
2016.09.28 13:02:09 1: PERL WARNING: Argument "1 min " isn't numeric in numeric gt (>) at (eval 96927) line 2.
2016.09.28 13:02:09 1: PERL WARNING: Argument "1 min " isn't numeric in numeric gt (>) at (eval 96932) line 2.
2016.09.28 13:02:09 1: PERL WARNING: Argument "0 min" isn't numeric in numeric gt (>) at (eval 96937) line 2.
2016.09.28 13:02:09 1: PERL WARNING: Argument "1 min " isn't numeric in numeric gt (>) at (eval 96942) line 2.
2016.09.28 13:02:09 1: PERL WARNING: Argument "13 min " isn't numeric in numeric gt (>) at (eval 96947) line 2.
2016.09.28 13:02:09 1: PERL WARNING: Argument "0 min" isn't numeric in numeric gt (>) at (eval 96952) line 2.
2016.09.28 13:02:09 1: PERL WARNING: Argument "0 min" isn't numeric in numeric gt (>) at (eval 96957) line 2.
2016.09.28 13:02:09 5: TRAFFIC: (INF_HTM_FAHRZEIT_HOME_WORK_B236) set INF_HTM_FAHRZEIT_HOME_WORK_B236 ?
2016.09.28 13:02:16 1: PERL WARNING: Argument "0 min" isn't numeric in numeric gt (>) at (eval 96972) line 2.
2016.09.28 13:02:16 1: PERL WARNING: Argument "0 min" isn't numeric in numeric gt (>) at (eval 96977) line 2.
2016.09.28 13:02:16 1: PERL WARNING: Argument "1 min " isn't numeric in numeric gt (>) at (eval 96982) line 2.
2016.09.28 13:02:29 1: PERL WARNING: Argument "0 min" isn't numeric in numeric gt (>) at (eval 96998) line 2.
2016.09.28 13:02:29 1: PERL WARNING: Argument "0 min" isn't numeric in numeric gt (>) at (eval 97003) line 2.
2016.09.28 13:02:29 1: PERL WARNING: Argument "1 min " isn't numeric in numeric gt (>) at (eval 97008) line 2.
2016.09.28 13:03:01 1: PERL WARNING: Argument "0 min" isn't numeric in numeric gt (>) at (eval 97030) line 2.
2016.09.28 13:03:01 1: PERL WARNING: Argument "0 min" isn't numeric in numeric gt (>) at (eval 97035) line 2.
2016.09.28 13:03:01 1: PERL WARNING: Argument "1 min " isn't numeric in numeric gt (>) at (eval 97040) line 2.
2016.09.28 13:03:01 1: PERL WARNING: Argument "1 min " isn't numeric in numeric gt (>) at (eval 97045) line 2.
2016.09.28 13:03:01 1: PERL WARNING: Argument "0 min" isn't numeric in numeric gt (>) at (eval 97050) line 2.
2016.09.28 13:03:01 1: PERL WARNING: Argument "1 min " isn't numeric in numeric gt (>) at (eval 97055) line 2.
2016.09.28 13:03:01 1: PERL WARNING: Argument "13 min " isn't numeric in numeric gt (>) at (eval 97060) line 2.
2016.09.28 13:03:01 1: PERL WARNING: Argument "0 min" isn't numeric in numeric gt (>) at (eval 97065) line 2.
2016.09.28 13:03:01 1: PERL WARNING: Argument "0 min" isn't numeric in numeric gt (>) at (eval 97070) line 2.
2016.09.28 13:03:01 5: TRAFFIC: (INF_HTM_FAHRZEIT_HOME_WORK_B236) set INF_HTM_FAHRZEIT_HOME_WORK_B236 ?
2016.09.28 13:03:08 5: TRAFFIC: (INF_HTM_FAHRZEIT_HOME_WORK_B236) set INF_HTM_FAHRZEIT_HOME_WORK_B236 ?
2016.09.28 13:03:08 5: TRAFFIC: (INF_HTM_FAHRZEIT_HOME_WORK_B236) set INF_HTM_FAHRZEIT_HOME_WORK_B236 ?
2016.09.28 13:03:22 1: PERL WARNING: Argument "0 min" isn't numeric in numeric gt (>) at (eval 97077) line 2.
2016.09.28 13:03:22 1: PERL WARNING: Argument "0 min" isn't numeric in numeric gt (>) at (eval 97082) line 2.
2016.09.28 13:03:22 1: PERL WARNING: Argument "1 min " isn't numeric in numeric gt (>) at (eval 97087) line 2.
2016.09.28 13:03:22 1: PERL WARNING: Argument "1 min " isn't numeric in numeric gt (>) at (eval 97092) line 2.
2016.09.28 13:03:22 1: PERL WARNING: Argument "0 min" isn't numeric in numeric gt (>) at (eval 97097) line 2.
2016.09.28 13:03:22 1: PERL WARNING: Argument "1 min " isn't numeric in numeric gt (>) at (eval 97102) line 2.
2016.09.28 13:03:22 1: PERL WARNING: Argument "13 min " isn't numeric in numeric gt (>) at (eval 97107) line 2.
2016.09.28 13:03:22 1: PERL WARNING: Argument "0 min" isn't numeric in numeric gt (>) at (eval 97112) line 2.
2016.09.28 13:03:22 1: PERL WARNING: Argument "0 min" isn't numeric in numeric gt (>) at (eval 97117) line 2.
2016.09.28 13:03:22 5: TRAFFIC: (INF_HTM_FAHRZEIT_HOME_WORK_B236) set INF_HTM_FAHRZEIT_HOME_WORK_B236 ?
2016.09.28 13:03:26 1: PERL WARNING: Argument "0 min" isn't numeric in numeric gt (>) at (eval 97122) line 2.
2016.09.28 13:03:26 1: PERL WARNING: Argument "0 min" isn't numeric in numeric gt (>) at (eval 97127) line 2.
2016.09.28 13:03:26 1: PERL WARNING: Argument "1 min " isn't numeric in numeric gt (>) at (eval 97132) line 2.
2016.09.28 13:04:44 1: PERL WARNING: Use of uninitialized value $v in sprintf at fhem.pl line 2126.