Autor Thema: Hilfe zu HTTPMOD, verstehe leider nur Bahnhof...  (Gelesen 4927 mal)

Offline Ma_Bo

  • Hero Member
  • *****
  • Beiträge: 1102
Hilfe zu HTTPMOD, verstehe leider nur Bahnhof...
« am: 28 März 2017, 15:53:59 »
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/getLatestPositionseingebe, 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/getLatestPositionsein, 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.

Offline amenomade

  • Hero Member
  • *****
  • Beiträge: 2651
FHEM 5.8 Pi 3, EchoDot, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, und HM Komponenten

F:"Schatz? Mach aus bitte"
M: "Alexa? Licht aus"-"Ich bin mir leider nicht sicher"  M:"Alexa? aus Licht"-"Das weiss ich leider nicht" M:"Alexa? Schalte...
F: "Drück mal auf den blöden Knopf!

Offline amenomade

  • Hero Member
  • *****
  • Beiträge: 2651
Antw:Hilfe zu HTTPMOD, verstehe leider nur Bahnhof...
« Antwort #2 am: 28 März 2017, 17:00:50 »
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:
Zitat
Set-Cookie: JSESSIONID=1ewp7z4w2cw6gwyqcawgi8xg6;Path=/
FHEM 5.8 Pi 3, EchoDot, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, und HM Komponenten

F:"Schatz? Mach aus bitte"
M: "Alexa? Licht aus"-"Ich bin mir leider nicht sicher"  M:"Alexa? aus Licht"-"Das weiss ich leider nicht" M:"Alexa? Schalte...
F: "Drück mal auf den blöden Knopf!

Offline Ma_Bo

  • Hero Member
  • *****
  • Beiträge: 1102
Antw:Hilfe zu HTTPMOD, verstehe leider nur Bahnhof...
« Antwort #3 am: 28 März 2017, 17:31:46 »
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.

Offline Ma_Bo

  • Hero Member
  • *****
  • Beiträge: 1102
Antw:Hilfe zu HTTPMOD, verstehe leider nur Bahnhof...
« Antwort #4 am: 28 März 2017, 18:02:31 »
Bin schonmal ein Stück weiter.
folgendes funktioniert:

Zitat
define 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:

Zitat
define 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.

Offline amenomade

  • Hero Member
  • *****
  • Beiträge: 2651
Antw:Hilfe zu HTTPMOD, verstehe leider nur Bahnhof...
« Antwort #5 am: 28 März 2017, 23:51:41 »
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?
FHEM 5.8 Pi 3, EchoDot, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, und HM Komponenten

F:"Schatz? Mach aus bitte"
M: "Alexa? Licht aus"-"Ich bin mir leider nicht sicher"  M:"Alexa? aus Licht"-"Das weiss ich leider nicht" M:"Alexa? Schalte...
F: "Drück mal auf den blöden Knopf!

Offline amenomade

  • Hero Member
  • *****
  • Beiträge: 2651
Antw:Hilfe zu HTTPMOD, verstehe leider nur Bahnhof...
« Antwort #6 am: 29 März 2017, 00:06:38 »
FHEM 5.8 Pi 3, EchoDot, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, und HM Komponenten

F:"Schatz? Mach aus bitte"
M: "Alexa? Licht aus"-"Ich bin mir leider nicht sicher"  M:"Alexa? aus Licht"-"Das weiss ich leider nicht" M:"Alexa? Schalte...
F: "Drück mal auf den blöden Knopf!

Offline Ma_Bo

  • Hero Member
  • *****
  • Beiträge: 1102
Antw:Hilfe zu HTTPMOD, verstehe leider nur Bahnhof...
« Antwort #7 am: 29 März 2017, 09:40:10 »
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.

Offline StefanStrobel

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1038
Antw:Hilfe zu HTTPMOD, verstehe leider nur Bahnhof...
« Antwort #8 am: 29 März 2017, 19:37:44 »
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

Offline Ma_Bo

  • Hero Member
  • *****
  • Beiträge: 1102
Antw:Hilfe zu HTTPMOD, verstehe leider nur Bahnhof...
« Antwort #9 am: 29 März 2017, 19:46:55 »
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.

Online rohlande

  • Jr. Member
  • **
  • Beiträge: 69
Antw:Hilfe zu HTTPMOD, verstehe leider nur Bahnhof...
« Antwort #10 am: 03 Mai 2017, 20:35:38 »
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
my perl5 (revision 5 version 24 subversion 1)
fhem.pl 15766 2018-01-03
EspEasy / HMLan / Hue / Sonos / Jeelink / NanoCul433 / Homebridge / CUL 868 / Telegram / MQTT - Tasmota / SML Energiezähler / AMAD

Offline amenomade

  • Hero Member
  • *****
  • Beiträge: 2651
Antw:Hilfe zu HTTPMOD, verstehe leider nur Bahnhof...
« Antwort #11 am: 03 Mai 2017, 20:48:05 »
Zitat
Nur 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ß
FHEM 5.8 Pi 3, EchoDot, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, und HM Komponenten

F:"Schatz? Mach aus bitte"
M: "Alexa? Licht aus"-"Ich bin mir leider nicht sicher"  M:"Alexa? aus Licht"-"Das weiss ich leider nicht" M:"Alexa? Schalte...
F: "Drück mal auf den blöden Knopf!

Online rohlande

  • Jr. Member
  • **
  • Beiträge: 69
Antw:Hilfe zu HTTPMOD, verstehe leider nur Bahnhof...
« Antwort #12 am: 03 Mai 2017, 21:52:28 »
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
my perl5 (revision 5 version 24 subversion 1)
fhem.pl 15766 2018-01-03
EspEasy / HMLan / Hue / Sonos / Jeelink / NanoCul433 / Homebridge / CUL 868 / Telegram / MQTT - Tasmota / SML Energiezähler / AMAD

Offline Ma_Bo

  • Hero Member
  • *****
  • Beiträge: 1102
Antw:Hilfe zu HTTPMOD, verstehe leider nur Bahnhof...
« Antwort #13 am: 03 Mai 2017, 23:30:02 »
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.

Offline amenomade

  • Hero Member
  • *****
  • Beiträge: 2651
Antw:Hilfe zu HTTPMOD, verstehe leider nur Bahnhof...
« Antwort #14 am: 04 Mai 2017, 13:04:21 »
@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ß

FHEM 5.8 Pi 3, EchoDot, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, und HM Komponenten

F:"Schatz? Mach aus bitte"
M: "Alexa? Licht aus"-"Ich bin mir leider nicht sicher"  M:"Alexa? aus Licht"-"Das weiss ich leider nicht" M:"Alexa? Schalte...
F: "Drück mal auf den blöden Knopf!