neues Modul: TRAFFIC - google maps directions

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

Vorheriges Thema - Nächstes Thema

Raven

Hurra, ein Schritt nun weiter, aber mit neuer Meldung:

Zitat2016.07.31 10:18:51 3: TRAFFIC: (MG_Work) duration = 1538 - 1612
Undefined subroutine &main::encode_json called at ./FHEM/98_TRAFFIC.pm line 282.

Müssten diese Zeilen sein:
ZitatLog3 $hash, 5, "TRAFFIC: ($name) returning from TRAFFIC_DoUpdate: ".encode_json($returnJSON);
    Log3 $hash, 3, "TRAFFIC: ($name) TRAFFIC_DoUpdate done";
    return "$name;;;".encode_json($returnJSON);

Verstehe ich nicht...  :o "encode_json" existiert doch in meiner Version des JSON Moduls.
Cubietruck-Prod: HM-LAN, Heizung, Rolläden, Schalter, Viessmann (optolink)
Cubietruck-DEV:
Fritzbox 7490

jmike

Okay..

Sehr strange.
Mir ist aufgefallen dass ich JSON nicht inkludiert habe. Vielleicht hast du irgendeine "Randkonfiguration" bei der das was ausmacht.

Mach mal bei Zeile 42 folgendes rein:
use JSON;

Wenn das auch nicht geht, lass uns per PN weitermachen damit wir den Thread nicht mit Troubleshooting "zumüllen". Die Lösung reicht ja dann hier.

betateilchen

Zitat von: jmike am 28 Juli 2016, 12:01:28
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.

Das halte ich für überflüssig. Das Umrechnen von hh:mm in mmm sollte man bei Bedarf auch selbst hinbekommen, das kann man sich - wenn man es wirklich haben möchte - jederzeit per userReading hinzufügen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Raven

Das wars. Nun geht es. Dankeschön.

Ich hab eine Standard-Config (Igors Image für den Cubie).
HUEBridge verwendet auch explizit "use JSON".

Zitat von: jmike am 31 Juli 2016, 12:15:23
Mach mal bei Zeile 42 folgendes rein:
use JSON;
Cubietruck-Prod: HM-LAN, Heizung, Rolläden, Schalter, Viessmann (optolink)
Cubietruck-DEV:
Fritzbox 7490

jmike

@Raven: Sehr gut, nächstes Update kommt.

@betateilchen: Ich weiß was du meinst, wenn die Werte nicht sowieso in dem API return stehen würden, hätte ich bestimmt einen anderen Lösungsweg gesucht. Vielleicht mach ich die Readings konfigurierbar z.b. "attr readings hms min". Dann kann sich jeder das Modul zusammenklicken wie er möchte.

d.schoen

Ich häng mich mal dran. Danke für das Modul. Insbesondere die bereits andiskutierte Zeitreihenanalyse und Prognose finde ich hochinteressant.
FHEM 5.7 auf RasPi2
COC 868MHz, Jeelink Clone
Devices: IT, HomeMatic, LaCrosse, ENIGMA2, LG-TV, Thinkingcleaner (iRobot Roomba), LIFX Wifi-Bulbs
Helper: TelegramBot, Homebridge (Siri), Geofency

jmike

Hi.

Ich schieb gleich das nächste Update nach.
Die Änderungen umfassen zwei neue Attribute und ein paar kleine Code Optimierungen / Fehlerbehebungen.

Am besten macht ihr nach dem reload ein defmod auf das Device bzw. ein re-def vom API Key.

Danach wird ein neues Attribut, outputReadings, erstellt mit Wert "text".
"text" definiert dass wir nur noch Readings bekommen für returns aus der Google API (sowie eta und state).

     2016-08-01 12:23:44   delay           19 min
     2016-08-01 12:23:44   distance        119 km
     2016-08-01 12:23:44   duration        1 hour 18 mins
     2016-08-01 12:23:44   duration_in_traffic 1 hour 37 mins
     2016-08-01 12:23:44   eta             14:00:54
     2016-08-01 12:23:44   state           OK

     
Neben text gibt es auch noch min (und sec - was vermutlich kein Mensch braucht).
Wer z.b. nur minuten sehen will macht "attr device outputReadings min" und bekommt:

     2016-08-01 12:28:38   delay_min       17
     2016-08-01 12:28:38   duration_in_traffic_min 96
     2016-08-01 12:28:38   duration_min    78
     2016-08-01 12:28:38   eta             14:04:47
     2016-08-01 12:28:38   state           OK

     
     
Und wer alles sehen will setzt eben "attr device outputReadings text min".


Das zweite Attribut definiert den Namen eines Readings und überschreibt damit den device state.
Wer also z.b. duration_in_traffic als state haben möchte setzt:
"attr device stateReading duration_in_traffic"

Das File ist wieder im ersten Thread. Vermutlich lohnt sich langsam ein Wiki Eintrag + SVN /contrib

Posti123

ich hab mir ein Google Maps Distance Matrix API Key generiert, leider kommt trotz allem REQUEST DENIED

   
This API project is not authorized to use this API. Please ensure this API is activated in the Google Developers Console: https://console.developers.google.com/apis/api/directions_backend?project=_

Ist dies die falsche API ? Aus dem verlinkten Thread werde ich auch nicht ganz schlau.

Danke
18xHM-CC-RT-DN, 5xHM-TC-IT-WM-W-EU, HMLAN, 2xJeeLink 868, 1xJeeLink433, 1xCUL868, HM-LC-Bl1PBU-FM, HM-LC-Sw2-FM, HM-LC-SW1-FM, HM-LC-Sw1PBU-FM, 5xHM-Sec-SC-2, 2xHM-Sec-SCo, HM-ES-TX-WM, HM-Sen-MDIR-O-2, HM-WDS10-TH-O, 6xTechnoline, 2x PCA301,2xHM-PB-2-WM55-2,2xHM-RC-4-2,2xHM-WDS30-T-O, HM-SEC-WDS-2

jmike

Ist die API denn aktiviert?

Google API > API Manager > Google Maps Directions API

da sollte oben "DEAKTIVIEREN" stehen. Falls es bei dir "AKTIVIEREN" ist, draufklicken :)

RaspiCOC

Kann es sein, dass Du in der Google Console die Distance Matrix nicht aktiviert hast. Schau doch noch mal nach, ob Du I  der Google Console Fehlermeldungen findest. Das Gleiche passiert, wenn Du die 2500 Requests pro Tag überschreitet. Dann musst Du Dich anmelden und das wieder aktivieren.

RaspiCOC

Jacke war schneller....  Dennoch vielleicht von mir auch noch ein sinnvoller Hinweis gewesen...

Posti123

Danke hat geholfen. Aktiviert war die Google Distance Matrix API aber nun habe ich noch die Google Maps Directions API aktiviert, nun funktioniert es.

Vielen Dank!
18xHM-CC-RT-DN, 5xHM-TC-IT-WM-W-EU, HMLAN, 2xJeeLink 868, 1xJeeLink433, 1xCUL868, HM-LC-Bl1PBU-FM, HM-LC-Sw2-FM, HM-LC-SW1-FM, HM-LC-Sw1PBU-FM, 5xHM-Sec-SC-2, 2xHM-Sec-SCo, HM-ES-TX-WM, HM-Sen-MDIR-O-2, HM-WDS10-TH-O, 6xTechnoline, 2x PCA301,2xHM-PB-2-WM55-2,2xHM-RC-4-2,2xHM-WDS30-T-O, HM-SEC-WDS-2

Icinger

Mal so ein Gedanke: Die meisten defines werden ja wohl den Weg zum Arbeitsplatz oder so betreffen.
Ich lass mich auch gern per Nachricht erinnern, wenn der Heimweg länger dauert.

Könnte man nicht statt 2 defines da gleich den Hin- und auch Rückweg auswerten im TRAFFIC?

lg, Stefan
Verwende deine Zeit nicht mit Erklärungen. Die Menschen hören (lesen) nur, was sie hören (lesen) wollen. (c) Paulo Coelho

jmike

Hi Stefan.

Ich mag die Idee und nehme mal ein Attribut "wayBack" auf die 2do Liste.

gruß
Mike

Raven

Dankeschön für die neue Version!  :)

Bin ich der einzige, bei den es Abweichungen gibt zw. den Minuten- und Text-Angaben?

Zitat
delay                  0
delay_min          -1

duration_min        26
duration               27 mins

duration_in_traffic_min   24   
duration_in_traffic          25 mins

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