Oxoscript se transforme en NanoPy - plus d'infos

Fonctions réseau

postRequest

  postRequest(url:byte[], body:byte[])->bool

Pour cette fonction, la carte doit être connectée à Internet.

Envoie une requête POST à l’URL définie.
La fonction renvoie true si la demande a réussi (200 OK).

Exemple:

# Toggle Shelly relay
url = "http://192.168.42.146/relay/0"
body = "turn=toggle"
def onDraw():
    if getButton():
        postRequest(url, body)
        while(getButton()): delay(50)
    delay(50)

readRequestJSON

  readRequestJSON(jsonPath:byte[])->byte[128]

Renvoie le contenu d’une réponse JSON sous forme de texte (max. 128 octets) de la requête préalablement demandée avec getRequest().

La clé à lire peut être définie avec jsonPath.
Les objets JSON imbriqués peuvent également être sélectionnés avec ‘.’ ou ‘/’.

Exemple1:

url = "http://api.nanopy.io/v1/utc"
getRequest(url) # {"utc":1667912328}
drawText(10, 10, readRequestJSON("utc"))
update()

Exemple2:

# {
#   "myObj": {
#     "mySubObj": {
#       "myArray": [
#         {"myKey":111},
#         {"myKey":222},
#         {"myKey":333}
#       ],
#     }
#   }
# }
readRequestJSON("myObj.mySubObj.myArray.0.myKey") # "111"
readRequestJSON("myObj/mySubObj/myArray/2/myKey") # "333"

Remarque:
readRequestJSON() renvoie toujours une chaîne de caractères (byte[]). Avec les fonctions stringTo…(), le résultat peut ensuite être converti dans le type de données approprié.

readRequest

  readRequest(offset:int)->byte[128]

Renvoie le texte (max. 128 octets) de la requête précédemment demandée avec getRequest().

Avec offset, on peut définir la position de départ, qui détermine à partir de quel point la réponse doit être lue.
Cela permet de lire des réponses plus longues en plusieurs étapes.

Exemple:

url = "http://api.nanopy.io/v1/hello_world"
getRequest(url)
drawText(10, 10, readRequest(0))
drawText(10, 50, readRequest(6))
update()

Remarque:
Si un serveur personnel est utilisé et que l’on souhaite renvoyer du texte brut, il est impératif de définir également la ‘longueur du contenu’ dans l’en-tête.

readRequestLength

  readRequestLength()->int

Renvoie la longueur (en octets) de la requête précédemment demandée avec getRequest().

getRequest

  getRequest(url:byte[])->bool

Pour cette fonction, la carte doit être connectée à Internet.

Envoie une requête GET à l’URL définie.
La fonction renvoie true si la requête a abouti (200 OK).

Les données demandées peuvent ensuite être lues à l’aide des fonctions suivantes:

readRequestLength()
readRequest(offset)
readRequestJSON(jsonPath)

Exemple:

url = "http://api.nanopy.io/v1/utc"
if (getRequest(url)):
    utc = readRequestJSON("utc")
    drawText(10, 10, stringToInt(utc))
else:
    drawText(10, 10, "error")
update()

Limitations: - Un maximum de 8k octets peut être demandé. Les réponses plus longues sont coupées. - Les requêtes https ne sont pas supportées