Hey Leute,
ich habe eine Tracking Server Software auf meinem NUC laufen, mit der ich sehen kann, wo sich mein Handy, (welches ich im Auto fest verbaut habe) gerade befindet.
Dieses sendet mir alle 5 Sekunden den aktuellen Standort, Batterie, Geschwindigkeit usw. an die Server Software TRACCAR.
Ich habe mir vor ca. 1,5 Jahren das ganze installiert und lese meine letzten Daten, mit einem PHP Script aus der Datenbank von TRACCAR aus und sende mir diese an einen DUMMY in FHEM.
Diesen Umweg möchte ich mir jetzt ersparen, da jetzt ein 2. Device hinzukommt und es einen einfacheren Weg gibt.
Man kann laut der Doku von Traccar: http://traccar.litvak.su/features/rest-api.html die Daten direkt auslesen.
Ich verstehe aber HTTPMOD überhaupt nicht und habe auch schon ein paar Stunden experimentiert, durch folgendes kann ich mich zumindest einmal anmelden und bekomme auch Daten, doch leider nicht die die ich haben möchte:
define Traccar_HTTPMOD_Login HTTPMOD http://192.168.0.45:8082/traccar/rest/login?payload=[fhem,fhem] 60
attr Traccar_HTTPMOD_Login extractAllJSON 1
Damit erhalte ich folgendes:
Internals:
.getList
.setList
BUSY 0
CFGFN
DEF http://192.168.0.45:8082/traccar/rest/login?payload=[fhem,fhem] 60
Interval 60
JSONEnabled 1
LASTSEND 1490708416.61838
MainURL http://192.168.0.45:8082/traccar/rest/login?payload=[fhem,fhem]
ModuleVersion 3.3.5 - 29.9.2016
NAME Traccar_HTTPMOD_Login
NR 813458
STATE ???
TRIGGERTIME 1490708476.61765
TRIGGERTIME_FMT 2017-03-28 15:41:16
TYPE HTTPMOD
addr http://192.168.0.45:8082
buf
code 200
conn
data
displayurl http://192.168.0.45:8082/traccar/rest/login?payload=[fhem,fhem]
header
host 192.168.0.45
httpheader HTTP/1.1 200 OK
Date: Tue, 28 Mar 2017 13:40:16 GMT
Set-Cookie: JSESSIONID=1ewp7z4w2cw6gwyqcawgi8xg6;Path=/
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Content-Type: application/json; charset=UTF-8
Content-Length: 295
Server: Jetty(9.2.13.v20150730)
httpversion 1.0
hu_blocking 0
hu_filecount 3
hu_portSfx :8082
ignoreredirects 0
loglevel 4
path /traccar/rest/login?payload=[fhem,fhem]
protocol http
redirects 0
timeout 2
url http://192.168.0.45:8082/traccar/rest/login?payload=[fhem,fhem]
value 0
.readingParseList:
QUEUE:
Readings:
2017-03-28 15:40:16 admin false
2017-03-28 15:40:16 archive false
2017-03-28 15:40:16 id 2
2017-03-28 15:40:16 login fhem
2017-03-28 15:40:16 manager false
2017-03-28 15:40:16 password_hash_method MD5
2017-03-28 15:40:16 readOnly false
2017-03-28 15:40:16 userSettings_centerLatitude xx.geändert
2017-03-28 15:40:16 userSettings_centerLongitude x.geändert
2017-03-28 15:40:16 userSettings_mapType GOOGLE_HYBRID
2017-03-28 15:40:16 userSettings_speedUnit kilometersPerHour
2017-03-28 15:40:16 userSettings_timePrintInterval 1
2017-03-28 15:40:16 userSettings_zoomLevel 18
Request:
data
header
ignoreredirects 0
retryCount 0
type update
url http://192.168.0.45:8082/traccar/rest/login?payload=[fhem,fhem]
value 0
Defptr:
Readingbase:
admin reading
archive reading
id reading
login reading
manager reading
password_hash_method reading
readOnly reading
userSettings_centerLatitude reading
userSettings_centerLongitude reading
userSettings_mapType reading
userSettings_speedUnit reading
userSettings_timePrintInterval reading
userSettings_zoomLevel reading
Readingnum:
admin
archive
id
login
manager
password_hash_method
readOnly
userSettings_centerLatitude
userSettings_centerLongitude
userSettings_mapType
userSettings_speedUnit
userSettings_timePrintInterval
userSettings_zoomLevel
Readingoutdated:
Requestreadings:
Update:
admin reading
archive reading
id reading
login reading
manager reading
password_hash_method reading
readOnly reading
userSettings_centerLatitude reading
userSettings_centerLongitude reading
userSettings_mapType reading
userSettings_speedUnit reading
userSettings_timePrintInterval reading
userSettings_zoomLevel reading
Sslargs:
Attributes:
extractAllJSON 1
Jetzt müsste ich mit Eingabe von http://192.168.0.45:8082/traccar/rest/getLatestPositions die Angaben erhalten, die ich brauche, aber wie baue ich das jetzt ein???
Wenn ich in meinem Browser erst
http://192.168.0.45:8082/traccar/rest/getLatestPositions
eingebe, kommt eine Fehlermeldung, klar, weil ich mich nicht angemeldet habe, gebe ich jetzt zur Anmeldung
http://192.168.0.45:8082/traccar/rest/login?payload=[fhem,fhem]
gefolgt von
http://192.168.0.45:8082/traccar/rest/getLatestPositions
ein, dann erhalte ich meine Angaben, die ich haben möchte:
[{"id":7462829,"device":{"id":1,"uniqueId":"xxxxxxxxxxxx350","name":"Car","timeout":300,"idleSpeedThreshold":0.0,"iconType":{"OFFLINE":{"width":53,"height":20,"urls":["img/sedan-white.png","img/sedan-green.png"]},"LATEST":{"width":53,"height":20,"urls":["img/sedan-red.png","img/sedan-green.png"]}}},"time":"Tue, 28 Mar 2017 15:48:18 +0200","valid":true,"latitude":xx.geändert,"longitude":x.geändert,"altitude":xxx.geändert,"speed":0.0,"course":xxx.geändert,"other":"{\"battery\":\"100.0\",\"ip\":\"xxx.xxx.x.17\"}","protocol":"osmand","serverTime":"Tue, 28 Mar 2017 15:48:20 +0200"}]
Wie kann ich mich nun mit HTTPMOD erst einloggen und dann die Daten abrufen?
Grüße Marcel
Vielleicht kann folgendes helfen:
https://wiki.fhem.de/wiki/HTTPMOD#Advanced_configuration_to_create_a_valid_session_id_that_might_be_necessary
Gruß
Wie im Beispiel
attr PM get01Name MyGetValue <br>
attr PM get01URL http://MyPoolManager/cgi-bin/directory/webgui.fcgi?special=1?sid=$sid <br>
attr PM getHeader1 Content-Type: application/json <br>
attr PM get01Data {"get" :{"30.1234.value"}} <br>
solltes Du dein jsessionid speichern und wieder benutzen: etwas in der Art
get01URL https://d.traccar.litvak.su/traccar/rest/getDevices?jsessionid=$id
Dein $id kriegst Du beim login:
ZitatSet-Cookie: JSESSIONID=1ewp7z4w2cw6gwyqcawgi8xg6;Path=/
Mhhhh, das ist mir gerade einfach zu kompliziert, habe jetzt schon einiges probiert, aber so wirklich weiss ich nicht, was welches attr bewirkt.
Hatte ich mir irgendwie einfacher vorgestellt.
Danke aber für die Links und die Hilfestellung, werde weiter probieren.
Bin schonmal ein Stück weiter.
folgendes funktioniert:
Zitatdefine Traccar_HTTPMOD_Login HTTPMOD http://192.168.0.45:8082/traccar/rest/login?payload=[fhem,fhem] 60
attr Traccar_HTTPMOD_Login enableCookies 1
attr Traccar_HTTPMOD_Login extractAllJSON 1
somit erhalte ich ja meine Daten, die ich nicht wirklich brauche, dann geh ich in die DEF und ändere das oben ROT markierte um:
Zitatdefine Traccar_HTTPMOD_Login HTTPMOD http://192.168.0.45:8082/traccar/rest/getLatestPositions 60
attr Traccar_HTTPMOD_Login enableCookies 1
attr Traccar_HTTPMOD_Login extractAllJSON 1
Dann bekomme ich alle Readings, die ich brauche, aber das muss doch auch anders gehen, ich weiss ja jetzt nicht, wie lange das Cookie gilt und ob es ein FHEM Neustart überlebt.
Grüße Marcel
Weil dein HTTPMOD ist mit dem ersten DEF angemeldet und besitzt die Sitzung. Er kann dann weitere Daten holen.
Das gleiche passiert wenn Du get01URL, get02URL usw nutzt.
Ansonsten kanns Du in 99_myUtils ein Script mit curl entwickelt. Das kann dann genauso wie in der Einlatung deiner Webseite aussehen. Vielleicht einfacher?
Hier ein anderes Beispiel mit mehrere Anfrage
https://forum.fhem.de/index.php/topic,63043.msg544893.html#msg544893
Danke für die Hilfe, werde an dem Thema nächste Woche weitermachen, heute ist erst einmal mein Hue System dran.
Gesendet von iPhone mit Tapatalk
Mit den sidXX Attributen kannst Du eine Sequenz von Abfragen definieren, die für das Login benötigt werden. Steht im Wiki auch beschrieben.
Gruß
Stefan
Den Wiki Beitrag hab ich auch schon gelesen, werde da nur noch nicht wirklich schlau draus, aber wie schon geschrieben, habe heute erst einmal mein neues Spielzeug in Betrieb genommen und mache nächste Woche an dieser Baustelle hier weiter.
Grüße Marcel
Hallo Experten,
also ich habe auch ein Traccar auf meiner Synology laufen.
Nur leider funktionieren die Logins via API / rest wie in der Doku beschrieben in Kombination mit httpmod nicht.
Gibt es da schon weitere Erkenntnisse?
Gruss Denny
ZitatNur leider funktionieren die Logins via API / rest wie in der Doku beschrieben in Kombination mit httpmod nicht.
Naja. Und wie nicht? Hast Du vielleicht ein "list httpmoddevice" für uns? Und eine Log mit verbose 5? Meine Glaskugel haben leider meine Kinder schon lange gebrochen... ;)
Gruß
Sorry.
Ja da hast Du wohl Recht mein Fehler / Entschuldigung!
BUSY
0
CFGFN
CHANGED
DEF
http://192.168.178.20:55000/traccar/rest/login?payload=[fhem,fhem] 60
HTTPCookies
Interval
60
JSONEnabled
1
LASTSEND
1493840343.93542
MainURL
http://192.168.178.20:55000/traccar/rest/login?payload=[fhem,fhem]
ModuleVersion
3.3.9 - 23.3.2017
NAME
Traccar_HTTPMOD_Login
NR
2427
STATE
???
TRIGGERTIME
1493840403.93464
TRIGGERTIME_FMT
2017-05-03 21:40:03
TYPE
HTTPMOD
addr
http://192.168.178.20:55000
buf
code
404
conn
data
displayurl
http://192.168.178.20:55000/traccar/rest/login?payload=[fhem,fhem]
header
host
192.168.178.20
httpheader
HTTP/1.1 404 Not Found Date: Wed, 03 May 2017 19:39:03 GMT Content-Type: text/html; charset=ISO-8859-1 Cache-Control: must-revalidate,no-cache,no-store Content-Length: 89 Server: Jetty(9.2.19.v20160908)
httpversion
1.0
hu_blocking
0
hu_filecount
4
hu_portSfx
:55000
ignoreredirects
0
loglevel
4
path
/traccar/rest/login?payload=[fhem,fhem]
protocol
http
redirects
0
timeout
2
url
http://192.168.178.20:55000/traccar/rest/login?payload=[fhem,fhem]
value
0
Sorry, bei mir leigt das im Moment auf Eis, aber vielleicht kommt ihr ja schon weiter und ich kann daraus lernen...
@rohlande: sorry, aber alles ist durcheinander. Das Ding ist unlesbar.
Hab einen HTTP/1.1 404
gesehen: Page not found. Du hast irgendwelche URL aufgerufen, die nicht existiert. Leider mit der Log, die Du uns zur Verfüngung gestellt hast, kann ich nicht sagen wie und wo.
Anscheinend fehlt auch die weitere Nutzung vom Ergeniss von der Anmeldung (z.B. $sid). Aber wiederum... bitte einmal das DEF/list, richtig formatiert, und einmal die Log mit verbose 5.
Hilfreich wäre auch eine httpTrace von der Anmeldungsprozess, wenn du es manuell in einem Browser machst. Oder mind. copy/paste von den verschiedenen urls und Fehlermeldungen.
Gruß
@Ma_Bo: probier sowas:
define Traccar HTTPMOD http://192.168.0.45:8082/traccar/rest/getLatestPositions 60
attr Traccar enableCookies 1
attr Traccar verbose 5
attr Traccar extractAllJSON 1
attr Traccar reAuthRegex /rest/login
attr Traccar sid1URL http://192.168.0.45:8082/traccar/rest/login?payload=[fhem,fhem]
Erklärung (wenn StefanStrobel in der Nähe, bitte um Korrektur/Ergänzung):
- define auf die Poll URL wo deine interessante Werte sind
- attr enableCookies selbst erklärend
- attr extractAllJSON zumindest am Anfang, bist du weiter in Details von den Readings forschst- erstmal alles holen und extrahieren
- attr reAuthRegex : detektieren, wenn ein Login nötig ist, durch irgendwelche regex. Da gehe ich davon aus, dass dein Ding einfach die Login Seite zurückschickt, wenn man sich anmelden muss
- attr sid1URL: ruf die AuthentifizierungsURL mit payload user,password: normalerweise laut Traccar Doku, sollte es reichen, um sich anzumelden, und sid oder jsessionid zu bekommen
Weitere Polling Verfahren mit
attr Traccar get[0-9]URL
im gleichen Device (define).
Probier mal, und poste mal die list und logs.
@rohlande: was ergibt bei dir http://192.168.178.20:55000/traccar/rest/login?payload=[fhem,fhem]
in einem Browser?
Gruß
@amenomade:
die URL gibt mir im BROWSER ein "404 not Found" wieder.
list httmoddevice:
Internals:
BUSY 0
CHANGED
DEF http://192.168.178.20:55001/traccar/rest/login?payload=[fhem,fhem] 60
HTTPCookies
Interval 60
JSONEnabled 1
LASTSEND 1493919188.12202
MainURL http://192.168.178.20:55001/traccar/rest/login?payload=[fhem,fhem]
ModuleVersion 3.3.9 - 23.3.2017
NAME Traccar_HTTPMOD_Login
NR 399
STATE ???
TRIGGERTIME 1493919248.12126
TRIGGERTIME_FMT 2017-05-04 19:34:08
TYPE HTTPMOD
addr http://192.168.178.20:55001
buf
data
displayurl http://192.168.178.20:55001/traccar/rest/login?payload=[fhem,fhem]
header
host 192.168.178.20
httpversion 1.0
ignoreredirects 0
loglevel 4
path /traccar/rest/login?payload=[fhem,fhem]
protocol http
redirects 0
timeout 2
url http://192.168.178.20:55001/traccar/rest/login?payload=[fhem,fhem]
value 0
Httpcookiehash:
QUEUE:
Readings:
Request:
data
header
ignoreredirects 0
retryCount 0
type update
url http://192.168.178.20:55001/traccar/rest/login?payload=[fhem,fhem]
value 0
Sslargs:
Attributes:
enableCookies 1
extractAllJSON 1
room Halle
verbose 2
Ok. der 404 ist scheinbar weg. Komisch :o
Nun muss ich wohl die Session hinbekommen.
EDIT: Ups Fehler drin im Port. 404 kommt weiterhin. ich hatte nur einen weiteren Port geteset.
hier der aktuelle Auszug, welcher auch im Browser nicht funnktioniert
Internals:
BUSY 0
CHANGED
DEF http://192.168.178.20:55000/traccar/rest/login?payload=[fhem,fhem] 60
HTTPCookies
Interval 60
JSONEnabled 1
LASTSEND 1493920431.74037
MainURL http://192.168.178.20:55000/traccar/rest/login?payload=[fhem,fhem]
ModuleVersion 3.3.9 - 23.3.2017
NAME Traccar_HTTPMOD_Login
NR 399
STATE ???
TRIGGERTIME 1493920491.73923
TRIGGERTIME_FMT 2017-05-04 19:54:51
TYPE HTTPMOD
addr http://192.168.178.20:55000
buf
code 404
conn
data
displayurl http://192.168.178.20:55000/traccar/rest/login?payload=[fhem,fhem]
header
host 192.168.178.20
httpheader HTTP/1.1 404 Not Found
Date: Thu, 04 May 2017 17:53:51 GMT
Content-Type: text/html; charset=ISO-8859-1
Cache-Control: must-revalidate,no-cache,no-store
Content-Length: 89
Server: Jetty(9.2.19.v20160908)
httpversion 1.0
hu_blocking 0
hu_filecount 5
hu_portSfx :55000
ignoreredirects 0
loglevel 4
path /traccar/rest/login?payload=[fhem,fhem]
protocol http
redirects 0
timeout 2
url http://192.168.178.20:55000/traccar/rest/login?payload=[fhem,fhem]
value 0
Httpcookiehash:
QUEUE:
Readings:
Request:
data
header
ignoreredirects 0
retryCount 0
type update
url http://192.168.178.20:55000/traccar/rest/login?payload=[fhem,fhem]
value 0
Sslargs:
Attributes:
enableCookies 1
extractAllJSON 1
reAuthRegex /traccar/rest/
room Halle
verbose 5
Zitat von: amenomade am 04 Mai 2017, 16:10:59
@Ma_Bo: probier sowas:
define Traccar HTTPMOD http://192.168.0.45:8082/traccar/rest/getLatestPositions 60
attr Traccar enableCookies 1
attr Traccar verbose 5
attr Traccar extractAllJSON 1
attr Traccar reAuthRegex /rest/login
attr Traccar sid1URL http://192.168.0.45:8082/traccar/rest/login?payload=[fhem,fhem]
Erklärung (wenn StefanStrobel in der Nähe, bitte um Korrektur/Ergänzung):
- define auf die Poll URL wo deine interessante Werte sind
- attr enableCookies selbst erklärend
- attr extractAllJSON zumindest am Anfang, bist du weiter in Details von den Readings forschst- erstmal alles holen und extrahieren
- attr reAuthRegex : detektieren, wenn ein Login nötig ist, durch irgendwelche regex. Da gehe ich davon aus, dass dein Ding einfach die Login Seite zurückschickt, wenn man sich anmelden muss
- attr sid1URL: ruf die AuthentifizierungsURL mit payload user,password: normalerweise laut Traccar Doku, sollte es reichen, um sich anzumelden, und sid oder jsessionid zu bekommen
Weitere Polling Verfahren mit
attr Traccar get[0-9]URL
im gleichen Device (define).
Probier mal, und poste mal die list und logs.
@rohlande: was ergibt bei dir http://192.168.178.20:55000/traccar/rest/login?payload=[fhem,fhem]
in einem Browser?
Gruß
Danke für das Beispiel, werde ich sobald wie möglich testen, leider wird das erst nächste Woche werden. Ggfs. schaffe ich das diese oder morgen Nacht noch.
Ich werde dann berichten.
@rohlande:
Zitatdie URL gibt mir im BROWSER ein "404 not Found"
Dann musst du das erstmal lösen, das hat nichts mit FHEM zu tun. Ich würde sagen, dir fehlt noch etwas wie die so genannte "RestFul API" http://traccar.litvak.su/features/rest-api.html. Ohne diese API ist bestimmt eine andere Vorgehensweise zu suchen: andere URLs, usw.
So lang du keine vernünftige Vorgehensweise in einem Browser hast, brauchst Du nicht, es versuchen, in fhem zu implementieren!
@Ma_bo: kein Thema, ich bin nicht in Eile. Du bist derjenige, der an die Sache interessiert ist ;)
Gruß
ja das dachte ich mir schon.
Meine Traccar Instanz läuft auf einer Synology. Diese scheint eine Andere zu sein welche hier verwendet wird.
Obwohl diese von der Traccar Seite kommt.
Gruss Denny
Edit:
also auch die aktuelle Version löst das Problem nicht.
traccar3.10-016-noarch.spk
Schade! :-(
Ich habe den Entwickler angeschrieben mal sehen was kommt.
Schönen Abend noch Zusammen,
Ich glaube du versuchst den falschen Port zu erreichen, das wird der Port sein, an den die Geräte senden.
@Ma_Bo: Ne, auf Synology ist der Port 55000 laut Doku zu nutzen. Ich glaube, das Problem ist eher, dass er versucht, die RESTful API von litvak zu nutzen, ohnedie installiert zu haben. Die RESTful API ist laut Litvak "a modified version of traccar-web".
@rohlande:
Was ergeben folgende Aufrufe in einem Browser?http://192.168.178.20:55000
http://192.168.178.20:55000/api/devices
http://192.168.178.20:55000/api/devices?payload=[fhem,fhem]
in einem Browser?
Gruß
@amenomade:
Also 1. habe ich den Entwickler angeschrieben welcher mich an Entwickler für die Synology verwiesen hat.
Es scheint wohl so zu sein, das laut "1sthandy", welcher der Entwickler für die Synology ist, nur die Installationsroutine für die Synology angepasst wurde.
Der Rest scheint Java zu sein.
2. habe ich mit Deinen Tipps der URL herum gespielt und konnte schonmal auf die Header und einige weitere Infos aus der MYSQL zugreifen.
[{"id":1,"attributes":{},"name":"Denny","uniqueId":"627038","status":"online","lastUpdate":"2017-05-07T12:30:33.422+0000","positionId":1355,"groupId":0,"geofenceIds":[],"phone":"xxxxxxxxxxx","model":"BlackBerry","contact":"Denny","category":"car"},{"id":2,"attributes":{},"name":"Sabine","uniqueId":"264804","status":"online","lastUpdate":"2017-05-07T12:28:08.854+0000","positionId":1353,"groupId":0,"geofenceIds":[],"phone":"xxxxxxxxxxxx","model":"HTC one Mini II","contact":"Sabine","category":"person"},{"id":3,"attributes":{},"name":"Mama","uniqueId":"519929","status":"online","lastUpdate":"2017-05-07T12:29:26.476+0000","positionId":1354,"groupId":0,"geofenceIds":[],"phone":"xxxxxxxxxxxx","model":"Samsung J5","contact":"Beate","category":"person"}]
das list httpmodlistdevice:
Internals:
BUSY 0
CHANGED
DEF http://192.168.178.20:55000/api/devices?payload=[fhem,fhem] 60
HTTPCookies
Interval 60
JSONEnabled 1
LASTSEND 1494160844.04444
MainURL http://192.168.178.20:55000/api/devices?payload=[fhem,fhem]
ModuleVersion 3.3.9 - 23.3.2017
NAME Traccar_HTTPMOD_Login
NR 399
STATE ???
TRIGGERTIME 1494160904.04326
TRIGGERTIME_FMT 2017-05-07 14:41:44
TYPE HTTPMOD
addr http://192.168.178.20:55000
buf
code 415
conn
data
displayurl http://192.168.178.20:55000/api/devices?payload=[fhem,fhem]
header
host 192.168.178.20
httpheader HTTP/1.1 415 Unsupported Media Type
Date: Sun, 07 May 2017 12:40:44 GMT
Access-Control-Allow-Headers: origin, content-type, accept, authorization
Access-Control-Allow-Credentials: true
Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS
Access-Control-Allow-Origin: *
Content-Length: 61
Server: Jetty(9.2.21.v20170120)
httpversion 1.0
hu_blocking 0
hu_filecount 1195
hu_portSfx :55000
ignoreredirects 0
loglevel 4
path /api/devices?payload=[fhem,fhem]
protocol http
redirects 0
timeout 2
url http://192.168.178.20:55000/api/devices?payload=[fhem,fhem]
value 0
Httpcookiehash:
QUEUE:
Readings:
Request:
data
header
ignoreredirects 0
retryCount 0
type update
url http://192.168.178.20:55000/api/devices?payload=[fhem,fhem]
value 0
Sslargs:
Attributes:
enableCookies 1
extractAllJSON 1
room Halle
verbose 5
So hier noch der log:
2017.05.07 18:26:08 4: Traccar_HTTPMOD_Login: GetUpdate called (update)
2017.05.07 18:26:08 4: Traccar_HTTPMOD_Login: update timer modified: will call GetUpdate in 60.0 seconds at 2017-05-07 18:27:08
2017.05.07 18:26:08 4: Traccar_HTTPMOD_Login: AddToQueue adds update, initial queue len: 0
2017.05.07 18:26:08 5: Traccar_HTTPMOD_Login: AddToQueue adds type update to URL http://192.168.178.20:55000/api/devices?payload=[fhem,fhem], no data, no headers, retry 0
2017.05.07 18:26:08 5: Traccar_HTTPMOD_Login: HandleSendQueue called, qlen = 1
2017.05.07 18:26:08 4: Traccar_HTTPMOD_Login: HandleSendQueue sends request type update to URL http://192.168.178.20:55000/api/devices?payload=[fhem,fhem], No Data, No Header,
timeout 2
2017.05.07 18:26:08 4: HttpUtils url=http://192.168.178.20:55000/api/devices?payload=[fhem,fhem]
2017.05.07 18:26:08 5: HttpUtils request header:
GET /api/devices?payload=[fhem,fhem] HTTP/1.0
Host: 192.168.178.20:55000
User-Agent: fhem
Content-Length: 0
Content-Type: application/x-www-form-urlencoded
2017.05.07 18:26:08 4: http://192.168.178.20:55000/api/devices?payload=[fhem,fhem]: HTTP response code 415
2017.05.07 18:26:08 4: HttpUtils http://192.168.178.20:55000/api/devices?payload=[fhem,fhem]: Got data, length: 61
2017.05.07 18:26:08 5: HttpUtils response header:
HTTP/1.1 415 Unsupported Media Type
Date: Sun, 07 May 2017 16:26:08 GMT
Access-Control-Allow-Headers: origin, content-type, accept, authorization
Access-Control-Allow-Credentials: true
Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS
Access-Control-Allow-Origin: *
Content-Length: 61
Server: Jetty(9.2.21.v20170120)
2017.05.07 18:26:08 4: Traccar_HTTPMOD_Login: Read callback: request type was update retry 0,
Header: HTTP/1.1 415 Unsupported Media Type
Date: Sun, 07 May 2017 16:26:08 GMT
Access-Control-Allow-Headers: origin, content-type, accept, authorization
Access-Control-Allow-Credentials: true
Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS
Access-Control-Allow-Origin: *
Content-Length: 61
Server: Jetty(9.2.21.v20170120),
Body: HTTP 415 Unsupported Media Type - NotSupportedException (...)
2017.05.07 18:26:08 3: Traccar_HTTPMOD_Login: error while parsing JSON data: malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "HTTP 415 Unsupported...") at (eval 353189) line 1.
2017.05.07 18:26:08 5: Traccar_HTTPMOD_Login: looking for Cookies in HTTP/1.1 415 Unsupported Media Type
Date: Sun, 07 May 2017 16:26:08 GMT
Access-Control-Allow-Headers: origin, content-type, accept, authorization
Access-Control-Allow-Credentials: true
Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS
Access-Control-Allow-Origin: *
Content-Length: 61
Server: Jetty(9.2.21.v20170120)
2017.05.07 18:26:08 5: Traccar_HTTPMOD_Login: ExtractSid called, context reading, num
2017.05.07 18:26:08 5: Traccar_HTTPMOD_Login: Checking SID with JSON 1ohywg1ok72dl10939tfbvtgam
2017.05.07 18:26:08 4: Traccar_HTTPMOD_Login: CheckAuth decided no authentication required
2017.05.07 18:26:08 3: Traccar_HTTPMOD_Login: no parsed JSON structure available
2017.05.07 18:26:08 5: Traccar_HTTPMOD_Login: Read starts parsing response to update with defined readings:
2017.05.07 18:26:08 3: Traccar_HTTPMOD_Login: Read response to update didn't match any Reading
2017.05.07 18:26:08 5: Traccar_HTTPMOD_Login: HandleSendQueue called, qlen = 0
Gruss Denny
Hallo Denny,
ich nutze auch Traccar und überlege wie ich es auf das TabletUI / mein Tablet bekomme...
Ich nutzte allerdings noch nicht mysql. Wie weit bist du mittlerweile?
Danke und Gruß
Christoph
Hi,
ich muss gestehen, dass ich es im Moment nicht verfolge.
Aber gut das Du fragst.
Denn aktuell bin ich gezwungen die GPS Position in ein FHEM dummy zu schreiben.
Das werde ich jetzt via php Script hoffentlich gelöst bekommen.
Dazu gab es wohl schon Umsetzungen. Muss mich aber erst damit befassen.
Wenn es etwas dazu gibt stelle ich es ein.
VG Denny
Zitat von: amenomade am 04 Mai 2017, 20:13:13
@rohlande: Dann musst du das erstmal lösen, das hat nichts mit FHEM zu tun. Ich würde sagen, dir fehlt noch etwas wie die so genannte "RestFul API" http://traccar.litvak.su/features/rest-api.html. Ohne diese API ist bestimmt eine andere Vorgehensweise zu suchen: andere URLs, usw.
So lang du keine vernünftige Vorgehensweise in einem Browser hast, brauchst Du nicht, es versuchen, in fhem zu implementieren!
@Ma_bo: kein Thema, ich bin nicht in Eile. Du bist derjenige, der an die Sache interessiert ist ;)
Gruß
Habe es mal ausprobiert mit (nicht wundern, der IP Bereich hat sich geändert, der hier verwendete ist aktuell):
define Traccar HTTPMOD http://192.168.178.45:8082/traccar/rest/getLatestPositions 60
attr Traccar enableCookies 1
attr Traccar verbose 5
attr Traccar extractAllJSON 1
attr Traccar reAuthRegex /rest/login
attr Traccar sid1URL http://192.168.178.45:8082/traccar/rest/login?payload=[fhem,fhem]
Dann kommt im Log:
2017.07.27 16:08:26.026 4: Traccar: GetUpdate called (update)
2017.07.27 16:08:26.026 4: Traccar: update timer modified: will call GetUpdate in 60.0 seconds at 2017-07-27 16:09:26
2017.07.27 16:08:26.027 4: Traccar: AddToQueue adds update, initial queue len: 0
2017.07.27 16:08:26.027 5: Traccar: AddToQueue adds type update to URL http://192.168.178.45:8082/traccar/rest/getLatestPositions, no data, no headers, retry 0
2017.07.27 16:08:26.027 5: Traccar: HandleSendQueue called, qlen = 1
2017.07.27 16:08:26.027 5: Traccar: HandleSendQueue is adding Cookies: JSESSIONID=n3u1h96fv8gf1d4082jxtcpy6
2017.07.27 16:08:26.027 4: Traccar: HandleSendQueue sends request type update to URL http://192.168.178.45:8082/traccar/rest/getLatestPositions, No Data,
header: Cookie: JSESSIONID=n3u1h96fv8gf1d4082jxtcpy6,
timeout 2
2017.07.27 16:08:26.027 4: HttpUtils url=http://192.168.178.45:8082/traccar/rest/getLatestPositions
2017.07.27 16:08:26.030 5: HttpUtils request header:
GET /traccar/rest/getLatestPositions HTTP/1.0
Host: 192.168.178.45:8082
User-Agent: fhem
Cookie: JSESSIONID=n3u1h96fv8gf1d4082jxtcpy6
Content-Length: 0
Content-Type: application/x-www-form-urlencoded
2017.07.27 16:08:26.037 4: http://192.168.178.45:8082/traccar/rest/getLatestPositions: HTTP response code 401
2017.07.27 16:08:26.038 4: HttpUtils http://192.168.178.45:8082/traccar/rest/getLatestPositions: Got data, length: 321
2017.07.27 16:08:26.038 5: HttpUtils response header:
HTTP/1.1 401 Unauthorized
Date: Thu, 27 Jul 2017 14:08:26 GMT
Content-Type: text/html; charset=ISO-8859-1
Cache-Control: must-revalidate,no-cache,no-store
Content-Length: 321
Server: Jetty(9.2.13.v20150730)
2017.07.27 16:08:26.038 4: Traccar: Read callback: request type was update retry 0,
Header: HTTP/1.1 401 Unauthorized
Date: Thu, 27 Jul 2017 14:08:26 GMT
Content-Type: text/html; charset=ISO-8859-1
Cache-Control: must-revalidate,no-cache,no-store
Content-Length: 321
Server: Jetty(9.2.13.v20150730),
Body: <html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>Error 401 Unauthorized</title>
</head>
<body><h2>HTTP ERROR 401</h2>
<p>Problem accessing /traccar/rest/getLatestPositions. Reason:
<pre> Unauthorized</pre></p><hr><i><small>Powered by Jetty://</small></i><hr/>
</body>
</html>
2017.07.27 16:08:26.038 3: Traccar: error while parsing JSON data: malformed JSON string, neither array, object, number, string or atom, at character offset 0 (before "<html>\n<head>\n<met...") at (eval 8382090) line 1.
2017.07.27 16:08:26.038 5: Traccar: looking for Cookies in HTTP/1.1 401 Unauthorized
Date: Thu, 27 Jul 2017 14:08:26 GMT
Content-Type: text/html; charset=ISO-8859-1
Cache-Control: must-revalidate,no-cache,no-store
Content-Length: 321
Server: Jetty(9.2.13.v20150730)
2017.07.27 16:08:26.038 5: Traccar: ExtractSid called, context reading, num
2017.07.27 16:08:26.039 5: Traccar: CheckAuth is checking buffer with ReAuthRegex /rest/login
2017.07.27 16:08:26.039 4: Traccar: CheckAuth decided no authentication required
2017.07.27 16:08:26.039 3: Traccar: no parsed JSON structure available
2017.07.27 16:08:26.039 5: Traccar: UpdateReadingList created list of reading.* nums to parse during getUpdate as
2017.07.27 16:08:26.039 5: Traccar: Read starts parsing response to update with defined readings:
2017.07.27 16:08:26.039 3: Traccar: Read response to update didn't match any Reading
2017.07.27 16:08:26.039 5: Traccar: HandleSendQueue called, qlen = 0
2017.07.27 16:09:26.027 4: Traccar: GetUpdate called (update)
2017.07.27 16:09:26.028 4: Traccar: update timer modified: will call GetUpdate in 60.0 seconds at 2017-07-27 16:10:26
2017.07.27 16:09:26.028 4: Traccar: AddToQueue adds update, initial queue len: 0
2017.07.27 16:09:26.028 5: Traccar: AddToQueue adds type update to URL http://192.168.178.45:8082/traccar/rest/getLatestPositions, no data, no headers, retry 0
2017.07.27 16:09:26.028 5: Traccar: HandleSendQueue called, qlen = 1
2017.07.27 16:09:26.029 5: Traccar: HandleSendQueue is adding Cookies: JSESSIONID=n3u1h96fv8gf1d4082jxtcpy6
2017.07.27 16:09:26.029 4: Traccar: HandleSendQueue sends request type update to URL http://192.168.178.45:8082/traccar/rest/getLatestPositions, No Data,
header: Cookie: JSESSIONID=n3u1h96fv8gf1d4082jxtcpy6,
timeout 2
2017.07.27 16:09:26.029 4: HttpUtils url=http://192.168.178.45:8082/traccar/rest/getLatestPositions
2017.07.27 16:09:26.031 5: HttpUtils request header:
GET /traccar/rest/getLatestPositions HTTP/1.0
Host: 192.168.178.45:8082
User-Agent: fhem
Cookie: JSESSIONID=n3u1h96fv8gf1d4082jxtcpy6
Content-Length: 0
Content-Type: application/x-www-form-urlencoded
2017.07.27 16:09:26.039 4: http://192.168.178.45:8082/traccar/rest/getLatestPositions: HTTP response code 401
2017.07.27 16:09:26.039 4: HttpUtils http://192.168.178.45:8082/traccar/rest/getLatestPositions: Got data, length: 321
2017.07.27 16:09:26.039 5: HttpUtils response header:
HTTP/1.1 401 Unauthorized
Date: Thu, 27 Jul 2017 14:09:26 GMT
Content-Type: text/html; charset=ISO-8859-1
Cache-Control: must-revalidate,no-cache,no-store
Content-Length: 321
Server: Jetty(9.2.13.v20150730)
2017.07.27 16:09:26.039 4: Traccar: Read callback: request type was update retry 0,
Header: HTTP/1.1 401 Unauthorized
Date: Thu, 27 Jul 2017 14:09:26 GMT
Content-Type: text/html; charset=ISO-8859-1
Cache-Control: must-revalidate,no-cache,no-store
Content-Length: 321
Server: Jetty(9.2.13.v20150730),
Body: <html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>Error 401 Unauthorized</title>
</head>
<body><h2>HTTP ERROR 401</h2>
<p>Problem accessing /traccar/rest/getLatestPositions. Reason:
<pre> Unauthorized</pre></p><hr><i><small>Powered by Jetty://</small></i><hr/>
</body>
</html>
2017.07.27 16:09:26.039 3: Traccar: error while parsing JSON data: malformed JSON string, neither array, object, number, string or atom, at character offset 0 (before "<html>\n<head>\n<met...") at (eval 8382883) line 1.
2017.07.27 16:09:26.040 5: Traccar: looking for Cookies in HTTP/1.1 401 Unauthorized
Date: Thu, 27 Jul 2017 14:09:26 GMT
Content-Type: text/html; charset=ISO-8859-1
Cache-Control: must-revalidate,no-cache,no-store
Content-Length: 321
Server: Jetty(9.2.13.v20150730)
2017.07.27 16:09:26.040 5: Traccar: ExtractSid called, context reading, num
2017.07.27 16:09:26.040 5: Traccar: CheckAuth is checking buffer with ReAuthRegex /rest/login
2017.07.27 16:09:26.040 4: Traccar: CheckAuth decided no authentication required
2017.07.27 16:09:26.040 3: Traccar: no parsed JSON structure available
2017.07.27 16:09:26.040 5: Traccar: Read starts parsing response to update with defined readings:
2017.07.27 16:09:26.040 3: Traccar: Read response to update didn't match any Reading
2017.07.27 16:09:26.040 5: Traccar: HandleSendQueue called, qlen = 0
List vom Traccar:
Internals:
.getList
.setList
BUSY 0
CFGFN
CHANGED
DEF http://192.168.178.45:8082/traccar/rest/getLatestPositions 60
HTTPCookies JSESSIONID=n3u1h96fv8gf1d4082jxtcpy6
Interval 60
JSONEnabled 1
LASTSEND 1501164801.29707
MainURL http://192.168.178.45:8082/traccar/rest/getLatestPositions
ModuleVersion 3.3.11 - 8.5.2017
NAME Traccar
NR 411808
STATE ???
TRIGGERTIME 1501164861.29623
TRIGGERTIME_FMT 2017-07-27 16:14:21
TYPE HTTPMOD
addr http://192.168.178.45:8082
buf
code 401
conn
data
displayurl http://192.168.178.45:8082/traccar/rest/getLatestPositions
header Cookie: JSESSIONID=n3u1h96fv8gf1d4082jxtcpy6
host 192.168.178.45
httpheader HTTP/1.1 401 Unauthorized
Date: Thu, 27 Jul 2017 14:13:21 GMT
Content-Type: text/html; charset=ISO-8859-1
Cache-Control: must-revalidate,no-cache,no-store
Content-Length: 321
Server: Jetty(9.2.13.v20150730)
httpversion 1.0
hu_blocking 0
hu_filecount 8
hu_portSfx :8082
ignoreredirects 0
loglevel 4
path /traccar/rest/getLatestPositions
protocol http
redirects 0
timeout 2
url http://192.168.178.45:8082/traccar/rest/getLatestPositions
value 0
.readingParseList:
Httpcookiehash:
Jsessionid:
Options Path=/
Value n3u1h96fv8gf1d4082jxtcpy6
QUEUE:
Readings:
Request:
data
header
ignoreredirects 0
retryCount 0
type update
url http://192.168.178.45:8082/traccar/rest/getLatestPositions
value 0
Sslargs:
Attributes:
enableCookies 1
extractAllJSON 1
reAuthRegex /rest/login
sid1URL http://192.168.178.45:8082/traccar/rest/login?payload=[fhem,fhem]
userattr sid1URL
verbose 5
Wenn ich das im Browser abrufe:
http://192.168.178.45:8082/traccar/rest/login?payload=[fhem,fhem]
erhalte ich (teilweise Werte mit xxxx ersetzt):
{"id":2,"login":"fhem","password_hash_method":"MD5","admin":true,"manager":false,"userSettings":{"speedUnit":"kilometersPerHour","timePrintInterval":1,"zoomLevel":18,"centerLongitude":xxxx,"centerLatitude":xxxx,"mapType":"GOOGLE_HYBRID"},"readOnly":false,"archive":true}
wenn ich das dann im Browser abrufe:
http://192.168.178.45:8082/traccar/rest/getLatestPositions
erhalte ich alle Werte korrekt im Browser (teilweise Werte mit xxxx ersetzt):
[{"id":8336795,"device":{"id":1,"uniqueId":"xxxx","name":"Deaktiviert","timeout":300,"idleSpeedThreshold":0.0,"iconType":{"OFFLINE":{"width":53,"height":20,"urls":["img/sedan-white.png","img/sedan-green.png"]},"LATEST":{"width":53,"height":20,"urls":["img/sedan-red.png","img/sedan-green.png"]}}},"time":"Thu, 18 May 2017 12:54:18 +0200","valid":true,"latitude":xxxx,"longitude":xxxx,"altitude":xxxx,"speed":0.0,"course":148.83218383789062,"other":"{\"battery\":\"100.0\",\"ip\":\"xxxx\"}","protocol":"osmand","serverTime":"Fri, 19 May 2017 17:25:58 +0200"},{"id":9387104,"device":{"id":2,"uniqueId":"xxxx","name":"C220","timeout":300,"idleSpeedThreshold":0.0,"iconType":{"OFFLINE":{"width":53,"height":20,"urls":["img/sedan-white.png","img/sedan-green.png"]},"LATEST":{"width":53,"height":20,"urls":["img/sedan-red.png","img/sedan-green.png"]}}},"time":"Thu, 27 Jul 2017 16:18:59 +0200","valid":false,"latitude":xxxx,"longitude":xxxx,"altitude":64.0,"speed":0.0,"course":262.0,"other":"{\"sat\":2,\"event\":\"2\",\"input\":\"4210\",\"ip\":\"xxxx\"}","protocol":"wondex","serverTime":"Thu, 27 Jul 2017 16:19:01 +0200"},{"id":8842182,"device":{"id":3,"uniqueId":"xxxx","name":"MaBo iPhone","timeout":300,"idleSpeedThreshold":0.0,"iconType":{"OFFLINE":{"width":12,"height":20,"urls":["img/phone-white.png","img/phone-green.png"]},"LATEST":{"width":12,"height":20,"urls":["img/phone-red.png","img/phone-green.png"]}}},"time":"Wed, 21 Jun 2017 16:00:58 +0200","valid":true,"latitude":xxxx,"longitude":xxxx,"altitude":54.6765,"speed":0.0,"course":0.0,"other":"{\"battery\":\"78\",\"ip\":\"xxxx\"}","protocol":"osmand","serverTime":"Wed, 21 Jun 2017 16:01:54 +0200"}]
Also...
Der Versuch, getLatestPositions aufzurufen leitet nicht nach die Authentifizierungsseite weiter, sondern ergibt HTTP 401 "Unauthorized".
Dann kommt die Regex im Einsatz
attr Traccar reAuthRegex /rest/login
ZitatCheckAuth is checking buffer with ReAuthRegex /rest/login
Da in der HTTP401 Unauthorized Seite keine "/rest/login" zu finden ist, sagt HTTMOD
ZitatCheckAuth decided no authentication required
Und Schluss
Ich würde einfach reAuthRegex ändern, damit es auf z.B. "Unauthorized" geprüft wird
attr Traccar reAuthRegex Unauthorized
Damit sollte er sehen, dass er nicht authentifiziert ist, und deswegen sid1URL aufrufen.
Das Probier ich heute Nachmittag aus.
Danke für deine Hilfe.
Tapatalk mit Handy geschrieben, daher kurz gehalten.
MEGA, es funktioniert !
Jetzt muss ich nur noch schauen, dass ich nur die Readings bekomme, die ich brauche.
Grüße Marcel
#####EDIT
Ist doch ganz gut, dass ich ALLE Readings direkt in einem device habe... ;D
@Ma_Bo: welche Version hast Du installiert? Bin in der Zwischenzeit auf einen Debian Server umgezogen. Nur leider scheint bei der aktuellen Version auch kein RestFul Api zu laufen oder ich mache einen Fehler?
VG Denny
Hab dir schon den Link gegeben oder? Aber ok, lassen wir erstmal Ma_bo antworten.
V3.1 mit der litvak webui
Tapatalk iPhone, daher kurz gehalten.
Hab es gestern mal mit litvak 3.9 zum Laufen gebracht. Funktioniert echt gut. Danke für eure Ansätze. Hab mir noch ein kleines Helfer-Modul gebaut, um zu sehen, wann die letzte Position kam (wie lange her) und mir ggf. eine Telegram-Message zu schicken.
Falls jmd. noch Hilfe braucht...
Zitat von: Maui am 11 Juli 2018, 10:14:59
Hab es gestern mal mit litvak 3.9 zum Laufen gebracht. Funktioniert echt gut. Danke für eure Ansätze. Hab mir noch ein kleines Helfer-Modul gebaut, um zu sehen, wann die letzte Position kam (wie lange her) und mir ggf. eine Telegram-Message zu schicken.
Falls jmd. noch Hilfe braucht...
An dem Helfermodul hätte ich großes Interesse. Würdest du es teilen? 8)
Zitat von: Spezialtrick am 21 Februar 2020, 10:13:16
An dem Helfermodul hätte ich großes Interesse. Würdest du es teilen? 8)
Moin ich habe grad mal gekramt. Ich befürchte das ist irgendwann bei einem Systemwechsel verloren gegangen. Ich nutze das gps Modul auch nicht mehr. Sorry.