Guten Abend,
ich würde gerne ein Blynk Project per httpmod abfragen. Zum Teil funktioniert das schon ganz gut. Zumindest die Set Befehle. Bei den Get Commands habe ich jetzt folgendes "Problem".
List Device:
Internals:
BUSY 0
CFGFN
DEF none 0
FUUID 5db3477b-f33f-a126-8071-6089036160f3658b
Interval 0
LASTSEND 1572196375.93425
MainURL
ModuleVersion 3.5.9 - 13.2.2019
NAME 3dMower
NOTIFYDEV global
NR 351
NTFY_ORDER 50-3dMower
STATE ???
TRIGGERTIME 0
TRIGGERTIME_FMT
TYPE HTTPMOD
addr http://blynk-cloud.com:80
auth 0
buf
code 200
compress 1
conn
data
displayurl http://blynk-cloud.com/XXXXXXXXXXXX/get/V3
header
host blynk-cloud.com
httpbody ["11.670"]
httpheader HTTP/1.1 200 OK
content-type: application/json;charset=utf-8
access-control-allow-origin: *
content-length: 10
connection: close
httpversion 1.0
hu_blocking 0
hu_filecount 30
hu_port 80
hu_portSfx
ignoreredirects 0
loglevel 4
path /XXXXXXXXXXXX/get/V3
protocol http
redirects 0
timeout 2
url http://blynk-cloud.com/XXXXXXXXXXXX/get/V3
value 0
QUEUE:
READINGS:
2019-10-27 18:09:24 Loops 1
2019-10-27 18:12:55 Volt 1.1
REQUEST:
data
header
ignoreredirects 0
retryCount 0
type get2
url http://blynk-cloud.com/XXXXXXXXXXXX/get/V3
value 0
defptr:
readingBase:
Loops get
Volt get
readingNum:
Loops 1
Volt 2
readingOutdated:
requestReadings:
get1:
Loops get 1
get2:
Volt get 2
sslargs:
Attributes:
get1Name Loops
get1Regex ([\d]+)
get1URL http://blynk-cloud.com/XXXXXXXXXXXX/get/V5
get2Name Volt
get2Poll 1
get2PollDelay 1800
get2Regex ([\d.]+)
get2URL http://blynk-cloud.com/XXXXXXXXXXXX/get/V3
get3Name Mowing
get3Poll 1
get3PollDelay 1800
get3URL http://blynk-cloud.com/XXXXXXXXXXXX/get/V7
get4Name Parked
get4Poll 1
get4PollDelay 1800
get4URL http://blynk-cloud.com/XXXXXXXXXXXX/get/V6
set01Name PauseStop
set01NoArg 1
set01URL http://blynk-cloud.com/XXXXXXXXXXXX/update/V2?value=1
set02Name QuickStart
set02NoArg 1
set02URL http://blynk-cloud.com/XXXXXXXXXXXX/update/V0?value=1
set03Name ExitDock
set03NoArg 1
set03URL http://blynk-cloud.com/XXXXXXXXXXXX/update/V10?value=1
set04Name GotoDock
set04NoArg 1
set04URL http://blynk-cloud.com/XXXXXXXXXXXX/update/V1?value=1
set05Name Vorwärts
set05NoArg 1
set05URL http://blynk-cloud.com/XXXXXXXXXXXX/update/V13?value=1
set06Name Rückwärts
set06NoArg 1
set06URL http://blynk-cloud.com/XXXXXXXXXXXX/update/V14?value=1
set07Name Links
set07NoArg 1
set07URL http://blynk-cloud.com/XXXXXXXXXXXX/update/V15?value=1
set08Name Rechts
set08NoArg 1
set08URL http://blynk-cloud.com/XXXXXXXXXXXX/update/V16?value=1
set09Name Rendommodus
set09NoArg 1
set09URL http://blynk-cloud.com/XXXXXXXXXXXX/update/V4?property=1
set10Name Spiralmodus
set10NoArg 1
set10TextArg 1
set10URL http://blynk-cloud.com/XXXXXXXXXXXX/update/V4?property=2
set11Name Parallelmodus
set11NoArg 1
set11TextArg 1
set11URL http://blynk-cloud.com/XXXXXXXXXXXX/update/V4?value=3
set12Name Manuel
set12NoArg 1
set12TextArg 1
set12URL http://blynk-cloud.com/XXXXXXXXXXXX/update/V4?value=4
showBody 1
userattr get01Name get01Regex get1Name get1Poll:0,1 get1PollDelay get1PollDelay:0,1 get1Regex get1URL get2Name get2Poll:0,1 get2PollDelay get2PollDelay:0,1 get2Regex get2URL get3Name get3Poll:0,1 get3PollDelay get3PollDelay:0,1 get3URL get4Name get4Poll:0,1 get4PollDelay get4PollDelay:0,1 get4URL reading01Regex set01Name set01NoArg:0,1 set01URL set02Name set02NoArg:0,1 set02URL set03Name set03NoArg:0,1 set03URL set04Name set04NoArg:0,1 set04URL set05Name set05NoArg:0,1 set05URL set06Name set06NoArg:0,1 set06URL set07Name set07NoArg:0,1 set07URL set08Name set08NoArg:0,1 set08URL set09Name set09NoArg:0,1 set09TextArg:0,1 set09URL set10Name set10NoArg:0,1 set10TextArg:0,1 set10URL set11Name set11NoArg:0,1 set11TextArg:0,1 set11URL set12Name set12NoArg:0,1 set12TextArg:0,1 set12URL
verbose 0
Wie man sieht, wird im Body folgendes ausgegeben: httpbody ["11.670"]. Mein Regex ([\d.]+) erfasst also 11.670. Als reading Volt, bekomme ich allerdings nur eine 1.1
Log.
2019.10.27 18:19:27 1: Logfile gelöscht
2019.10.27 18:19:59 5: 3dMower: get called with Volt
2019.10.27 18:19:59 5: 3dMower: get found option Volt in attribute get2Name
2019.10.27 18:19:59 4: 3dMower: get will now request Volt, no optional value
2019.10.27 18:19:59 4: 3dMower: AddToQueue adds get2, initial queue len: 0
2019.10.27 18:19:59 5: 3dMower: AddToQueue adds type get2 to URL http://blynk-cloud.com/XXXXXXXXXXXX/get/V3, no data, no headers, retry 0
2019.10.27 18:19:59 5: 3dMower: HandleSendQueue called, qlen = 1
2019.10.27 18:19:59 4: 3dMower: HandleSendQueue sends request type get2 to URL http://blynk-cloud.com/XXXXXXXXXXXX/get/V3, No Data, No Header
timeout 2
2019.10.27 18:19:59 5: HttpUtils url=http://blynk-cloud.com/XXXXXXXXXXXX/get/V3
2019.10.27 18:19:59 4: IP: blynk-cloud.com -> 139.59.206.133
2019.10.27 18:19:59 5: HttpUtils request header:
GET /XXXXXXXXXXXX/get/V3 HTTP/1.0
Host: blynk-cloud.com
User-Agent: fhem
Accept-Encoding: gzip,deflate
2019.10.27 18:19:59 4: http://blynk-cloud.com/XXXXXXXXXXXX/get/V3: HTTP response code 200
2019.10.27 18:19:59 5: HttpUtils http://blynk-cloud.com/XXXXXXXXXXXX/get/V3: Got data, length: 10
2019.10.27 18:19:59 5: HttpUtils response header:
HTTP/1.1 200 OK
content-type: application/json;charset=utf-8
access-control-allow-origin: *
content-length: 10
connection: close
2019.10.27 18:19:59 4: 3dMower: Read callback: request type was get2 retry 0,
Body: ["11.670"]
2019.10.27 18:19:59 5: 3dMower: ExtractSid called, context get, num 2
2019.10.27 18:19:59 4: 3dMower: CheckAuth decided no authentication required
2019.10.27 18:19:59 5: 3dMower: ExtractReading Volt with regex /([\d.]+)/...
2019.10.27 18:19:59 5: 3dMower: 1 capture group(s), matchlist = 1.1
2019.10.27 18:19:59 4: 3dMower: ExtractReading for get2-1 sets Volt to 1.1
2019.10.27 18:19:59 5: 3dMower: UpdateReadingList created list of reading.* nums to parse during getUpdate as
2019.10.27 18:19:59 4: 3dMower: Read response to get2 matched Reading(s) Volt
2019.10.27 18:19:59 5: 3dMower: HandleSendQueue called, qlen = 0
Sieht jemand mein Fehler?
Schönen Abend noch!
Das 1.1 kommt wahrscheinlich vom Header
HTTP/1.1
Mach lieber
\["([\d.]+)
Danke dir.
Wenn ich die url im Browser aufrufe, sehe ich den Header ja nicht, daher habe ich mich wohl täuschen lassen.
Immer nur Ärger, mit Sachen die man nicht sieht.
LG
Das sieht man aber ;)
Zitat2019.10.27 18:19:59 5: HttpUtils response header:
HTTP/1.1 200 OK
content-type: application/json;charset=utf-8
access-control-allow-origin: *
content-length: 10
connection: close