FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Suner am 31 Mai 2016, 13:02:16

Titel: Regex in HTTMOD für google API distancematrix in Tabletui
Beitrag von: Suner am 31 Mai 2016, 13:02:16
Hallo,
ich verzweifel gerade mal wieder...
Plan:
Umsetzen von folgendem Artikel:
http://www.juergenstechnikwelt.de/smarthome-2/smarthome-mit-fhem-fahrzeiten-mit-verkehr-mittels-google-maps-api-anzeigen/#comment-12065
Eigentlich alles total klar.
gemacht getan, funktioniert aber nicht.
Nun bin ich dabei, mich mal ein wenig einzulesen in regex, aber ich kriege es einfach nicht hin und weiß auch nicht genau wo mein Fehler ist.
:-(
Ich bekomme durch mein http Mod folgenden Wert:

[..] <row> <element> <status>OK</status> <duration> <value>1520</value> <text>25 Minuten</text> </duration> <distance> <value>38468</value> <text>38,5 km</text> </distance> <duration_in_traffic> <value>1617</value> <text>27 Minuten</text> </duration_in_traffic> </element> </row> </DistanceMatrixResponse>

Nun war mein Plan, die Minuten, km etc. auszulesen..
Habe alle Möglichen regulären Ausdrücke versucht..
egal was ich im Internet gefunden habe, versucht habe mir selber zusammenzubasteln, es klappt einfach nicht.
Ich versuche meinen Ausdruck dann wie folgt in eine readingsgroup zum Überprüfen einzufügen:

FahrzeitHauseArbeit:duration

"duration" ist der Name meines Readings.

Vielleicht kann mir da ja jemand helfen..
aktuell habe ich:
attr Name1 reading01Name duration
attr Name1 reading01Regex (?s)duration.* "(.* Minuten).*duration_in


aus http://www.fhemwiki.de/wiki/Verkehrslage

Gruß suner
Titel: Antw:Regex in HTTMOD für google API distancematrix in Tabletui
Beitrag von: MadMax-FHEM am 31 Mai 2016, 13:29:53
Bin jetzt auch kein regex-Experte aber ich helfe mir immer damit:

https://regex101.com/ (https://regex101.com/)

Vielleicht hilft dir das ja bereits weiter...
...oder gar zu Ende ;-)

Gruß, Joachim
Titel: Antw:Regex in HTTMOD für google API distancematrix in Tabletui
Beitrag von: frank am 31 Mai 2016, 20:08:25
(?s)duration_in_traffic.*?<text>(.*?)<
Titel: Antw:Regex in HTTMOD für google API distancematrix in Tabletui
Beitrag von: Icinger am 31 Mai 2016, 20:43:10
Das sollte doch zwischenzeitlich mittels JSON leichter gehn.

ZitatIf a webservice delivers data in JSON format, HTTPMOD can directly parse JSON which might be easier in this case than definig regular expressions.

Habs aber noch nicht probiert.

lg, Stefan
Titel: Antw:Regex in HTTMOD für google API distancematrix in Tabletui
Beitrag von: Suner am 01 Juni 2016, 08:31:15
Zitat von: Icinger am 31 Mai 2016, 20:43:10
Das sollte doch zwischenzeitlich mittels JSON leichter gehn.

Habs aber noch nicht probiert.

lg, Stefan


ja geht leichter!!
bin nun ein ganzes Stück weiter, dank JSON und folgendem Eintrag in der Log Datei
the attribute reading01Expr should no longer be used. Please use reading01OExpr instead

Jetzt noch mal schauen wie das aussieht mit der FTUI und dann bin ich irgendwann happy :-)
Titel: Antw:Regex in HTTMOD für google API distancematrix in Tabletui
Beitrag von: Vize am 01 Juni 2016, 08:35:52
Zitatdank JSON und folgendem Eintrag in der Log Datei

the attribute reading01Expr should no longer be used. Please use reading01OExpr instead

Und den wirst du ja - wie dort steht- auch noch los, indem du readingXXOExpr statt readingXXExpr nimmst...

Gruß
Andreas
Titel: Antw:Regex in HTTMOD für google API distancematrix in Tabletui
Beitrag von: Suner am 01 Juni 2016, 08:58:58
genau das hat ja auch noch geholfen.

Problem ist nun gelöst - Patient tod :

;)

Titel: Antw:Regex in HTTMOD für google API distancematrix in Tabletui
Beitrag von: CoolTux am 01 Juni 2016, 09:04:00
Würdest Du mir bitte ein list von Deinem HTTPMOD Device geben.

Danke Dir
Titel: Antw:Regex in HTTMOD für google API distancematrix in Tabletui
Beitrag von: Suner am 01 Juni 2016, 10:10:11
klaro:

(Habs Anonymisiert)

Internals:
   BUSY       0
   DEF        https://maps.googleapis.com/maps/api/distancematrix/json?destinations=xxxxxxxxx&origins=xxxxxxxxx,+Deutschland&traffic_model=best_guess&departure_time=now&mode=driving&language=de-DE&key=xxxxxxxxx 3600
   Interval   3600
   LASTSEND   1464767822.11446
   MainURL    https://maps.googleapis.com/maps/api/distancematrix/json?destinations=xxxxxxxxx&origins=xxxxxxxxx,+Deutschland&traffic_model=best_guess&departure_time=now&mode=driving&language=de-DE&key=xxxxxxxxx
   NAME       FahrzeitHauseArbeit
   NR         188
   STATE      Normal:00:25 Aktuell:00:27
   TRIGGERTIME 1464771422.11351
   TRIGGERTIME_FMT 2016-06-01 10:57:02
   TYPE       HTTPMOD
   addr       https://maps.googleapis.com:443
   buf        HTTP/1.0 200 OK

Content-Type: application/json; charset=UTF-8

Date: Wed, 01 Jun 2016 07:57:03 GMT

Expires: Wed, 01 Jun 2016 07:57:33 GMT

Cache-Control: public, max-age=30

Server: mafe

X-XSS-Protection: 1; mode=block

X-Frame-Options: SAMEORIGIN

Alternate-Protocol: 443:quic

Alt-Svc: quic=":443"; ma=2592000; v="34,33,32,31,30,29,28,27,26,25"

Accept-Ranges: none

Vary: Accept-Encoding



{
   "destination_addresses" : [ "xxxxxxxxxxxxxx" ],
   "origin_addresses" : [ "xxxxxxxxxxxxxxxx" ],
   "rows" : [
      {
         "elements" : [
            {
               "distance" : {
                  "text" : "38,5 km",
                  "value" : 38468
               },
               "duration" : {
                  "text" : "25 Minuten",
                  "value" : 1520
               },
               "duration_in_traffic" : {
                  "text" : "27 Minuten",
                  "value" : 1599
               },
               "status" : "OK"
            }
         ]
      }
   ],
   "status" : "OK"
}

   code       200
   conn
   data
   displayurl https://maps.googleapis.com/maps/api/distancematrix/json?destinations=xxxxxxxxx&origins=xxxxxxxxx,+Deutschland&traffic_model=best_guess&departure_time=now&mode=driving&language=de-DE&key=xxxxxxxxx
   header
   host       maps.googleapis.com
   httpheader HTTP/1.0 200 OK

Content-Type: application/json; charset=UTF-8

Date: Wed, 01 Jun 2016 07:57:03 GMT

Expires: Wed, 01 Jun 2016 07:57:33 GMT

Cache-Control: public, max-age=30

Server: mafe

X-XSS-Protection: 1; mode=block

X-Frame-Options: SAMEORIGIN

Alternate-Protocol: 443:quic

Alt-Svc: quic=":443"; ma=2592000; v="34,33,32,31,30,29,28,27,26,25"

Accept-Ranges: none

Vary: Accept-Encoding
   httpversion 1.0
   hu_blocking 0
   hu_filecount 1
   ignoreredirects 0
   loglevel   4
   path       /maps/api/distancematrix/json?destinations=xxxxxxxxx&origins=xxxxxxxxx,+Deutschland&traffic_model=best_guess&departure_time=now&mode=driving&language=de-DE&key=xxxxxxxxx
   protocol   https
   redirects  0
   timeout    2
   url        https://maps.googleapis.com/maps/api/distancematrix/json?destinations=xxxxxxxxx&origins=xxxxxxxxx,+Deutschland&traffic_model=best_guess&departure_time=now&mode=driving&language=de-DE&key=xxxxxxxxx
   value      0
   QUEUE:
   Readings:
     2016-06-01 09:57:03   Standard        00:25
     2016-06-01 09:57:03   Verkehr         00:27
   Request:
     data
     header
     ignoreredirects 0
     retryCount 0
     type       update
     url        https://maps.googleapis.com/maps/api/distancematrix/json?destinations=xxxxxxxxx&origins=xxxxxxxxx,+Deutschland&traffic_model=best_guess&departure_time=now&mode=driving&language=de-DE&key=xxxxxxxxx
     value      0
   Defptr:
     Readingbase:
       Standard   reading
       Verkehr    reading
     Readingnum:
       Standard   01
       Verkehr    02
     Readingoutdated:
     Readingsubnum:
       Standard
       Verkehr
   Sslargs:
Attributes:
   reading01Name Standard
   reading01OExpr GoogleExpr($val)
   reading01Regex (?s)duration.* "(.* Minuten).*duration_in
   reading02Name Verkehr
   reading02OExpr GoogleExpr($val)
   reading02Regex (?s)duration_in.*"(.* Minuten)
   stateFormat Normal:Standard Aktuell:Verkehr
   userattr   reading01Expr reading01Name reading01OExpr reading01Regex reading02Expr reading02Name reading02OExpr reading02Regex
Titel: Antw:Regex in HTTMOD für google API distancematrix in Tabletui
Beitrag von: CoolTux am 01 Juni 2016, 10:33:21
Supi. Ich danke Dir