#PB_HTTP_Response auswerten

Anfängerfragen zum Programmieren mit PureBasic.
Helmut_number_one
Beiträge: 9
Registriert: 19.09.2020 19:13

#PB_HTTP_Response auswerten

Beitrag von Helmut_number_one »

Ich habe ein Tasmota Relais bzw mehrere Tasmota Relais, das ich in einem PB Programm ansteuere, nur möchte ich, dass beim ersten Aufruf der Zustand des Relais erkannt wird.
Ich erhalte mit

Code: Alles auswählen

  
           HttpRequest = HTTPRequest(#PB_HTTP_Get, URL$ +"/cm?cmnd=power4%20?)")           
           ; Debug "StatusCode: " + HTTPInfo(HTTPRequest, #PB_HTTP_StatusCode)
             Debug "Response: " + HTTPInfo(HTTPRequest, #PB_HTTP_Response)  
              
dieses im Debugfenster

Code: Alles auswählen

{"POWER4":"OFF"} 
Ich nehme an es ist JSON .
Wie erhalte ich als Variable den Wert von "OFF" oder "ON" der nach dem Doppelpunkt kommt.
Ich habe einiges über JSON decodieren in der Hilfe gelesen, muß oder ist Das sehr aufwendig....?
Oder ist es doch einfacher
Benutzeravatar
Sicro
Beiträge: 963
Registriert: 11.08.2005 19:08
Kontaktdaten:

Re: #PB_HTTP_Response auswerten

Beitrag von Sicro »

Code: Alles auswählen

Define jsonCode$
Define json, jsonMember

jsonCode$ = ~"{\"POWER4\":\"OFF\"}"

json = ParseJSON(#PB_Any, jsonCode$)
If json
  jsonMember = GetJSONMember(JSONValue(json), "POWER4")
  If jsonMember
    Debug GetJSONString(jsonMember)
  EndIf
  FreeJSON(json)
Else
  Debug JSONErrorMessage()
EndIf
Bild
Warum OpenSource eine Lizenz haben sollte :: PB-CodeArchiv-Rebirth :: Pleasant-Dark (Syntax-Farbschema) :: RegEx-Engine (kompiliert RegExes zu NFA/DFA)
Manjaro Xfce x64 (Hauptsystem) :: Windows 10 Home (VirtualBox) :: Neueste PureBasic-Version
Benutzeravatar
mk-soft
Beiträge: 3845
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: #PB_HTTP_Response auswerten

Beitrag von mk-soft »

Sieht nach JSON aus ;)

Code: Alles auswählen


Define sInput.s, Member, sValue.s

sInput = ~"{\"POWER4\":\"OFF\"}"

If ParseJSON(0, sInput)
  Member = GetJSONMember(JSONValue(0), "POWER4")
  If Member
    sValue = GetJSONString(Member)
    Debug sValue
  EndIf
  FreeJSON(0)
EndIf
Mit JSON tue ich mich auch noch schwer
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Helmut_number_one
Beiträge: 9
Registriert: 19.09.2020 19:13

Re: #PB_HTTP_Response auswerten

Beitrag von Helmut_number_one »

Prima, das funktioniert.
Wenn ich es in die Open Windows Routine packe, wird es dann mit Aufrufen der Event Routine in Ruhe gelassen oder wird die JSON Abfrage neu gestartet?
Das stelle ich jedenfalls fest, oder mache ich was in der Eventschleife falsch, dort frage ich
zB die ButtonImageID mit

Code: Alles auswählen

 
 Select EventType()
  Case #PB_EventType_LeftClick
  SetGadgetAttribute(#Kind,#PB_Button_PressedImage, ImageID(#Imag_1)) 
    Kind = GetGadgetState(#Kind)         
    If Kind =0 
         ; Debug URL$+"cm?cmnd=power4%20off"  
           HttpRequest = HTTPRequest(#PB_HTTP_Get, URL$ +"/cm?cmnd=power4%20off")
          ; Debug "StatusCode: " + HTTPInfo(HTTPRequest, #PB_HTTP_StatusCode)
           ;Debug "Response: " + HTTPInfo(HTTPRequest, #PB_HTTP_Response)

     EndIf

     If Kind =1
           HttpRequest = HTTPRequest(#PB_HTTP_Get, URL$+"/cm?cmnd=power4%20on")  
           ;  Debug "StatusCode: " + HTTPInfo(HTTPRequest, #PB_HTTP_StatusCode)
           ;  Debug "Response: " + HTTPInfo(HTTPRequest, #PB_HTTP_Response)  
      EndIf  
   ;MessageRequester("Information", "Button Image Name : #Kind")
EndSelect
 
Helmut_number_one
Beiträge: 9
Registriert: 19.09.2020 19:13

Re: #PB_HTTP_Response auswerten

Beitrag von Helmut_number_one »

@sicro und @mk-soft
Bei den Shelly Geräten, Shelly ADD ON

Code: Alles auswählen

{
  "id": 1,
  "params": {
    "temperature:101": {}
  }
}

Code: Alles auswählen

{
  "id": 1,
  "params": {
    "humidity:100": {},
    "temperature:100": {}
  }
}
usw sehr nützlicher Code. Danke dafür.
Kann man(n) da gut gebrauchen.
JSON Antworten sind immer öfter zu finden.
Benutzeravatar
Sicro
Beiträge: 963
Registriert: 11.08.2005 19:08
Kontaktdaten:

Re: #PB_HTTP_Response auswerten

Beitrag von Sicro »

Helmut_number_one hat geschrieben: 26.12.2022 19:33 Wenn ich es in die Open Windows Routine packe, wird es dann mit Aufrufen der Event Routine in Ruhe gelassen oder wird die JSON Abfrage neu gestartet?
Das stelle ich jedenfalls fest, oder mache ich was in der Eventschleife falsch, dort frage ich
zB die ButtonImageID mit

Code: Alles auswählen

Select EventType()
  Case #PB_EventType_LeftClick
    SetGadgetAttribute(#Kind,#PB_Button_PressedImage, ImageID(#Imag_1)) 
    ...
EndSelect
 
Prüfst du vor EventType() das betreffende Gadget mit EventGadget()?

Das SetGadgetAttribute() brauchst du nur einmal aufrufen, nachdem du das Gadget erstellt hast.
Bild
Warum OpenSource eine Lizenz haben sollte :: PB-CodeArchiv-Rebirth :: Pleasant-Dark (Syntax-Farbschema) :: RegEx-Engine (kompiliert RegExes zu NFA/DFA)
Manjaro Xfce x64 (Hauptsystem) :: Windows 10 Home (VirtualBox) :: Neueste PureBasic-Version
Antworten