neues Modul: TRAFFIC - google maps directions

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

Vorheriges Thema - Nächstes Thema

Firetic

Hallo zusammen,

das Modul funktioniert wirklich super :-)

Ich versuche jetzt mir die aktuellen Daten mit Hilfe des Telegram Moduls zuschicken zu lassen. Wenn ich jetzt allerdings in meiner Funktion ein "set ... update" ausführe und mir danach eine Nachricht mit den Readings zuschicken lasse, habe ich leider nicht die aktuellen Werte :-( Irgendwie müsste ich wohl hier auf die Abarbeitung des Updates warten... Leider scheint ein einfaches "sleep" nicht zu funktionieren.

Kann mir jemand vielleicht einen Tipp geben wie ich das umgehen könnte?

Gruß Firetic

AxelSchweiss

#46
Super Modul ...vielen Dank dafür.
Aber ... ich hätte da noch einen Wunsch  ;D

Kannst du noch eine Start/Stop Funktion hinzufügen?
Wenn ich "disable" dafür verwende aktualisiert das Modul nach einem "attr Verkehr disable 0" die Daten nicht mehr.
(oder mach ich da was falsch?)

Ich benötige die Informationen zum Verkehr eigentlich nur Morgens und da mach es keinen Sinn 24x7 Google mit den Abfragen alle fünf Minuten zu belasten.
Daher schalte ich mit einem "at"  die Abfrage zum Bahnverkehr und jetzt auch zum Autoverkehr  :D nur zwischen 8 und 10 Uhr ein.

EDIT: Bei dem DB-Fahrplanmodul ist so eine Funktion eingebaut: https://forum.fhem.de/index.php/topic,36057.0/topicseen.html

AxelSchweiss

Hat sich erledigt.
Nach einem kompletten Neustart von FHEM funktioniert es auf einmal.

FHEMAN

Hi mike,
Zitat von: jmike am 18 September 2016, 14:59:04
stateReading kann derzeit keine Kalkulation.

Das kannst du aber mittels userReadings lösen
OK, ich hatte ich es jetzt via stateFormat gelöst:

{int(ReadingsVal($name,"delay_min",0)) + int(ReadingsVal($name,"return_delay_min",0))}


Per Userreading setze ich mir noch ein Reading stau, welches die Werte 0,1,2,3 annehmen kann abhängig von der Staulänge. So kann ich mich bei Änderung benachrichtigen lassen (ohne Nachrichtenflut bei jeder Änderung der Delays).
Zitat
Zur Aktualisierung.
Per default ist das automatische Update Interval 3600 Sekunden (siehe Internal "Interval").
Du kannst das in deiner Definition statisch ändern wenn du z.b. hinter deinen API Key noch ein Interval in Sekunden angibst.
Das ist super. Hatte ich irgendwie überlesen. Und die Idee mit dem geänderten Intervall zur Rushhour ist auch top. Schön ressourcenschonend :)

Von meiner Seite nochmal vielen Dank für das coole Modul!
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

Ich hänge mich mal mit hier rein. Momentan läuft das Modul noch nciht bei mir:

beide CPAN Pakete installiert und 90_TRAFFIC ins FHEM Verzeichnis.

Nach reload wird mir config_error angegeben --> okay start und end definiert und boing fhem nicht mehr erreichbar.

Log sagt:
Undefined subroutine &main::BlockingCall called at ./FHEM/98_TRAFFIC.pm line 233

Kennt er den Funktionsaufruf nicht ?

jmike

Ahoi.

@Dirk: Ich schau mir den Wiki Artikel bei Gelegenheit an und melde mich.

Ich bin derzeit privat und beruflich extrem eingespannt. Daher hat es das Modul auch immer noch nicht ins SVN gepackt (und damit werden euch ein paar kleine neue Features wie durchschnittliche Werte vorenthalten ;) )

@FHEMAN: stateFormat... hatte ich nicht auf dem Schirm, tolle Lösung!

@Axel: Auch wenn du dein Problem gelöst hast, kann man einen Timer sicherlich mit einbauen :)

@Firetic: Ein "sleep" lässt ganz FHEM stehen, das willst du sicher nicht.
Du musst entsprechend Events erstellen (siehe event-on-change-reading / event-on-update-reading) und dann darauf mit einem Notify/DOIF reagieren.
Also z.b. attr traffic event-on-change-reading delay_min.*
Und dann per DOIF auffangen wenn der Wert höher als z.b. 5min ist:
define trafficDelayMsg DOIF ([traffic:delay_min] > 5 )(set Telegram message aktuelle Verzögerung [traffic:delay_min])
(...alles nicht getestet)


@tuppertasse:
Interessant, da BlockingCall eine FHEM Routine ist. Ist dein FHEM aktuell?
...andere Idee, editier mal dein 98_TRAFFIC.pm und füge bei Zeile 45 noch "use Blocking" dazu.

Möglich, dass ich das vergessen habe und du der erste bist der kein anderes Modul nutzt, welches Blocking vorher läd :)



tuppertasse

Zitat von: jmike am 24 September 2016, 13:43:25
@tuppertasse:
Interessant, da BlockingCall eine FHEM Routine ist. Ist dein FHEM aktuell?
...andere Idee, editier mal dein 98_TRAFFIC.pm und füge bei Zeile 45 noch "use Blocking" dazu.

Möglich, dass ich das vergessen habe und du der erste bist der kein anderes Modul nutzt, welches Blocking vorher läd :)

Hi,
habs es hinzugefügt und es klappt :-) Danke hatte ich mir schon gedacht, dass da der Funktionsaufruf fehlt.

DAHER EIN DANKE !

Nur zur Info. Habe ein Testsystem welche immer nur die Funktionalitäten bekommt die ich gerade haben möchte. Wenn es läuft wie ich es möchte kommt es rüber in mein Produktivsystem und wird auf dem testsystem gelöscht :-) daher ist da wirklich nur gaaaaaaanz wenig drauf :-)

tuppertasse

Zitat von: jmike am 27 Juli 2016, 14:43:48
Über Attribut waypoints einfach die Strecke mit | angeben. z.b.
attr device waypoints nürnberg|würzburg|fulda

Moin,
ich muss nochmal nachfragen:
Mein Arbeitsweg hat 3 verschiedene Wegmöglichkeiten.
Ich würde dazu gerne 3 Variablen erstellen um zu sehen welches der kürzeste Weg ist von der Fahrzeit her gesehen.

Wie kann ich über waypoints denn die Wege definieren. Momentan bekomme ich das Ergebnis zurück ZERO_RESULTS

Ich habe es so probiert

Straße 1, PLZ1 STADT1|Straße 2, PLZ2 STADT2|Straße 3, PLZ3 STADT3

wobei Straße2 zB eine Bundesstraße sein kann

Mitch

Wollte das Modul gerade testen, bekomme aber immer folgende Fehler:

Im state: config_error

und im Log:
2016.09.25 10:39:19.590 1: TRAFFIC: (Verkehr.Arbeit) is not configured correctly

Hier ein List (der Key stimmt  ;):
Internals:
   APIKEY     APIKEY
   CFGFN
   DEF        APIKEY 1800
   Interval   1800
   NAME       Verkehr.Arbeit
   NR         6913
   STATE      config_error
   TRIGGERTIME 1474794630.1729
   TRIGGERTIME_FMT 2016-09-25 11:10:30
   TYPE       TRAFFIC
   VERSION    0.42
   Readings:
     2016-09-25 10:40:30   state           config_error
Attributes:
   outputReadings text
   verbose    1
FHEM im Proxmox Container

tuppertasse

Zitat von: Mitch am 25 September 2016, 10:42:30
Hier ein List (der Key stimmt  ;):
Internals:
   DEF        APIKEY 1800
   verbose    1


Welcher KEY stimmt ?
in der DEF steht kein APIKEY sondern nur das Wort. Da muss der korrekte Key hin, der aus Zahlen und Buchstaben besteht und man sich aus dem Google developer holen muss

Mitch

Deswegen habe ich geschrieben, der Key stimmt  ;D

Habe ihn halt unkenntlich gemacht
FHEM im Proxmox Container

tuppertasse

@Mitch:
Okay verstanden.
Bei mir ging es erst als ich eine korrekt end_adress und start_adress gesetzt habe. Dann ging der Status auf OK

Mitch

Das wars wohl.
Jetzt habe ich noch ein API Rechteproblem: REQUEST_DENIED

Browser API keys cannot have referer restrictions when used with this API.
FHEM im Proxmox Container

tuppertasse

Mhhhh,
hast du den Key aktiviert ?
In dem Projekt in dem API MAnager bei Google kann man auch Rechte setzen.
Mal prüfen wo die drauf stehen:

/
HTTP-Verweis-URLs (Websites)
IP-Adressen (Webserver, Cronjobs usw.)
Android-Apps
iOS-Apps

Bei mir ist "/" aktiviert also alles

Mitch

Eigentlich stimmt alles.
Hab jetzt ein neues Projekt angelegt.
Mal sehen, dauert ja ein paar Minuten.
FHEM im Proxmox Container