[erledigt] hilfegesuch für httmod mit json (nur abfragen)

Begonnen von the ratman, 31 August 2020, 20:07:45

Vorheriges Thema - Nächstes Thema

amenomade

Hast Du ein update gemacht? Bei Fhem, oder beim Drucker?
Wir hatten mal auch den Fall, dass curl standardmässig HTTP 1.1 nutzt, wenn HTTPMOD 1.0 einsetzt. Vielleicht hilft das Attribut httpVersion
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

the ratman

#16
thx für deine hilfe - steh tatsächlich voll am schlauch ...

ich hab nur (wie jeden tag) fhem upgedatet. wenn, wars aber ein update kurz nach 2020-09-21 21:05:48 - bis dahin hat noch alles gefunzt.
alles andere beteiligte hat nix neues bekommen.

hab mal httpversion auf 1.1 und 1.0 gesetzt - ist in beiden fällen kein erfolg sichtbar.

ich krieg aber eindeutig genau beim abruf dann folgende meldungen, wobei ich grad gar ned am handy bin, dort würd aber ne readingsgroup mit dem httpmod werkeln:2020.09.22 18:53:22 1:  ERROR: addToWritebuffer for handyWEB_192.168.178.51_10183 without FD
2020.09.22 18:53:22 1:  probably caused at  TcpServer_Close:352 TcpServer_WriteBlocking:394 FW_Read:3816 CallFn:763
2020.09.22 18:53:50 1:  ERROR: addToWritebuffer for handyWEB_192.168.178.51_10187 without FD
2020.09.22 18:53:50 1:  probably caused at  TcpServer_Close:352 TcpServer_WriteBlocking:394 FW_Read:3816 CallFn:763
→do↑p!dnʇs↓shit←

amenomade

Zeig mal bitte ein verbose Output von deinem curl Befehl (option -v oder so, ich weiss nicht mehr)
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

the ratman

ich hoff, ich hab's richtig gemacht:PS C:\Users\Ratman> @echo. >> %USERPROFILE%\Desktop\3d45_status.jsoncurl 192.168.178.9/command -X POST -H -v "Content-Type: application/x-form-urlencoded" -d "GETPRINTERSTATUS" > %USERPROFILE%\Desktop\3d45_status.json
In Zeile:1 Zeichen:7
+ @echo. >> %USERPROFILE%\Desktop\3d45_status.jsoncurl 192.168.178.9/co ...
+       ~
Eigenschaftsname fehlt nach dem Verweisoperator.
In Zeile:1 Zeichen:54
+ ... ERPROFILE%\Desktop\3d45_status.jsoncurl 192.168.178.9/command -X POST ...
+                                             ~~~~~~~~~~~~~~~~~~~~~
Unerwartetes Token "192.168.178.9/command" in Ausdruck oder Anweisung.
In Zeile:1 Zeichen:68
+ ...  >> %USERPROFILE%\Desktop\3d45_status.jsoncurl 192.168.178.9/command  ...
+                                                                  ~
Sie müssen nach dem Operator "/" einen Wertausdruck bereitstellen.
In Zeile:1 Zeichen:68
+ ... ERPROFILE%\Desktop\3d45_status.jsoncurl 192.168.178.9/command -X POST ...
+                                                           ~~~~~~~
Unerwartetes Token "command" in Ausdruck oder Anweisung.
In Zeile:1 Zeichen:1
+ @echo. >> %USERPROFILE%\Desktop\3d45_status.jsoncurl 192.168.178.9/co ...
+ ~~~~~
Der Splat-Operator "@" kann nicht dazu verwendet werden, auf Variablen in einem Ausdruck zu verweisen. "@echo" kann nur als Argument für einen Befehl verwendet werden. Wenn Sie auf Variablen in einem
Ausdruck verweisen möchten, verwenden Sie "$echo".
    + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : MissingPropertyName
trotz der meldungen füllt er das file richtig
→do↑p!dnʇs↓shit←

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

the ratman

mußt du mir näher erklären ich tippe auch auf curl-seite nur ab *g*

hab einfach die .bat genommen, in ne powershell kopiert und dein -v an verschiedenen stellen ausprobiert. nachdem immer das selbe gekommen ist, dacht ich, das paßt schon.

die bat-datei:curl 192.168.178.9/command -X POST -H "Content-Type: application/x-form-urlencoded" -d "GETPRINTERSTATUS" > %USERPROFILE%\Desktop\3d45_status.json -v
@echo. >> %USERPROFILE%\Desktop\3d45_status.json

oder meinst du den output, den er generiert? da kommt mit und ohne -v:{"buildPlate_target_temperature":70,"chamber_temperature":32,"door_open":0,"elaspedtime":534,"error_code":200,"extruder_target_temperature":250,"fanSpeed":0,"filament_type ":"PETG","firmware_version":"v3.0_R02.09.04","jobname":"test.gcode","jobstatus":"building","layer":0,"message":"success","networkBuild":1,"platform_temperature":69,"progress":6.7000000000000002,"remaining":2588,"status":"busy","temperature":250,"totalTime":2774}
→do↑p!dnʇs↓shit←

amenomade

Ich meine das:
curl -v -X POST -H "Content-Type: application/x-form-urlencoded" -d "GETPRINTERSTATUS" https://www.google.de
Note: Unnecessary use of -X or --request, POST is already inferred.
*   Trying 172.217.22.67...
* TCP_NODELAY set
* Expire in 149995 ms for 3 (transfer 0x1f45880)
* Expire in 200 ms for 4 (transfer 0x1f45880)
* Connected to www.google.de (172.217.22.67) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*   CAfile: none
  CApath: /etc/ssl/certs
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
* TLSv1.3 (IN), TLS handshake, Certificate (11):
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
* TLSv1.3 (IN), TLS handshake, Finished (20):
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.3 (OUT), TLS handshake, Finished (20):
* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384
* ALPN, server accepted to use h2
* Server certificate:
*  subject: C=US; ST=California; L=Mountain View; O=Google LLC; CN=www.google.de
*  start date: Aug 26 08:13:17 2020 GMT
*  expire date: Nov 18 08:13:17 2020 GMT
*  subjectAltName: host "www.google.de" matched cert's "www.google.de"
*  issuer: C=US; O=Google Trust Services; CN=GTS CA 1O1
*  SSL certificate verify ok.
* Using HTTP2, server supports multi-use
* Connection state changed (HTTP/2 confirmed)
* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0
* Using Stream ID: 1 (easy handle 0x1f45880)
> POST / HTTP/2
> Host: www.google.de
> User-Agent: curl/7.64.0
> Accept: */*
> Content-Type: application/x-form-urlencoded
> Content-Length: 16
>
* We are completely uploaded and fine
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* old SSL session ID is stale, removing
* Connection state changed (MAX_CONCURRENT_STREAMS == 100)!
< HTTP/2 405
< allow: GET, HEAD
< date: Wed, 23 Sep 2020 18:00:00 GMT
< content-type: text/html; charset=UTF-8
< server: gws
< content-length: 1589
< x-xss-protection: 0
< x-frame-options: SAMEORIGIN
< alt-svc: h3-Q050=":443"; ma=2592000,h3-29=":443"; ma=2592000,h3-27=":443"; ma=2592000,h3-T051=":443"; ma=2592000,h3-T050=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000,quic=":443"; ma=2592000; v="46,43"
<
<!DOCTYPE html>
<html lang=en>
  <meta charset=utf-8>
  <meta name=viewport content="initial-scale=1, minimum-scale=1, width=device-width">
(... und hier die zurückgelieferte Seite ...)

* Connection #0 to host www.google.de left intact
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

the ratman

#22
sorry, da kommt ned mehr - ich bin übrigens auf windows, nur, falls es da falsche eindrücke geben sollte ...

hab einfach mal deine zeile eingegeben:PS C:\Users\Ratman> curl -v -X POST -H "Content-Type: application/x-form-urlencoded" -d "GETPRINTERSTATUS" https://www.google.de
Invoke-WebRequest : Der Parameter "Headers" kann nicht gebunden werden. Der Wert "Content-Type: application/x-form-urlencoded" vom Typ "System.String" kann nicht in den Typ "System.Collections.IDictionary"
konvertiert werden.
In Zeile:1 Zeichen:20
+ ... l -v -X POST -H "Content-Type: application/x-form-urlencoded" -d "GET ...
+                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Invoke-WebRequest], ParameterBindingException
    + FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.PowerShell.Commands.InvokeWebRequestCommand

PS C:\Users\Ratman>
wird auch ned mehr ...
→do↑p!dnʇs↓shit←

amenomade

#23
OK, curl unter Powershell ist aber kein curl sondern ein Alias von Invoke-WebRequest. (genauso für wget übrigens)

Dann musst Du die Parameter von Invoke-WebRequest benutzen !

EDIT: Leider hat aber Invoke-WebRequest kein verbose Parameter. Invoke-RestMethod hat einen, aber sehr sparsam (und nicht mit curl vergleichbar)
Invoke-RestMethod -Verbose -Uri "192.168.178.9/command" -Method "Post"  -Body "GETPRINTERSTATUS"

Eigentlich wollte ich versuchen zu verstehen, warum Du ein "empty answer received" bekommts. Aber Du bist anscheinend nicht der einzige: https://forum.fhem.de/index.php/topic,45176.msg1087151.html#msg1087151

Versuch mal auf der alten Version von HTTPMOD zurück zu kommen.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

the ratman

#24
servus,
das is es - mit der version vom 22. rennts wie ein glöckerl.
→do↑p!dnʇs↓shit←