Hilfe zu HTTPMOD, verstehe leider nur Bahnhof...

Begonnen von Ma_Bo, 28 März 2017, 15:53:59

Vorheriges Thema - Nächstes Thema

Ma_Bo

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
NUC mit FHEM, HM Heizungsthermostate, HM Wandthermostate, Intertechno Funksteckdosen, 10" Tablet als Wanddisplay, KeyMatic, Fensterkontakte, Fensterkontakte umgebaut als Wassermelder und Briefkastenmelder, Aussenthermostat, Anwesenheitssteuerung über Fritz Box, Google Home usw. usw.

amenomade

Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

amenomade

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=/
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Ma_Bo

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.
NUC mit FHEM, HM Heizungsthermostate, HM Wandthermostate, Intertechno Funksteckdosen, 10" Tablet als Wanddisplay, KeyMatic, Fensterkontakte, Fensterkontakte umgebaut als Wassermelder und Briefkastenmelder, Aussenthermostat, Anwesenheitssteuerung über Fritz Box, Google Home usw. usw.

Ma_Bo

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
NUC mit FHEM, HM Heizungsthermostate, HM Wandthermostate, Intertechno Funksteckdosen, 10" Tablet als Wanddisplay, KeyMatic, Fensterkontakte, Fensterkontakte umgebaut als Wassermelder und Briefkastenmelder, Aussenthermostat, Anwesenheitssteuerung über Fritz Box, Google Home usw. usw.

amenomade

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?
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

amenomade

Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Ma_Bo

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
NUC mit FHEM, HM Heizungsthermostate, HM Wandthermostate, Intertechno Funksteckdosen, 10" Tablet als Wanddisplay, KeyMatic, Fensterkontakte, Fensterkontakte umgebaut als Wassermelder und Briefkastenmelder, Aussenthermostat, Anwesenheitssteuerung über Fritz Box, Google Home usw. usw.

StefanStrobel

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

Ma_Bo

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
NUC mit FHEM, HM Heizungsthermostate, HM Wandthermostate, Intertechno Funksteckdosen, 10" Tablet als Wanddisplay, KeyMatic, Fensterkontakte, Fensterkontakte umgebaut als Wassermelder und Briefkastenmelder, Aussenthermostat, Anwesenheitssteuerung über Fritz Box, Google Home usw. usw.

rohlande

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
HostSystem: Synology DS918 | FHEM im Docker Version: 6.0-s22528_v2.2.4 (dedizierte IP Adresse) | MQTT_Broker auf DS918 NAS | MQTT_FHEM | TASMOTA_DEVICE | SSChatBot | SSCam | LaMetric | FBAHAHTTP | CUL | SONOS | HUEBridge (deCONZ) Zigbee | FB_CALLMONITOR | InfluxDBLogger

amenomade

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ß
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

rohlande

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
HostSystem: Synology DS918 | FHEM im Docker Version: 6.0-s22528_v2.2.4 (dedizierte IP Adresse) | MQTT_Broker auf DS918 NAS | MQTT_FHEM | TASMOTA_DEVICE | SSChatBot | SSCam | LaMetric | FBAHAHTTP | CUL | SONOS | HUEBridge (deCONZ) Zigbee | FB_CALLMONITOR | InfluxDBLogger

Ma_Bo

Sorry, bei mir leigt das im Moment auf Eis, aber vielleicht kommt ihr ja schon weiter und ich kann daraus lernen...
NUC mit FHEM, HM Heizungsthermostate, HM Wandthermostate, Intertechno Funksteckdosen, 10" Tablet als Wanddisplay, KeyMatic, Fensterkontakte, Fensterkontakte umgebaut als Wassermelder und Briefkastenmelder, Aussenthermostat, Anwesenheitssteuerung über Fritz Box, Google Home usw. usw.

amenomade

@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ß

Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus