Skip to content

Commit db98a54

Browse files
encukouhroncok
authored andcommitted
intro/micropython: Use urequests instead of socket
1 parent 7bbe3b5 commit db98a54

1 file changed

Lines changed: 15 additions & 32 deletions

File tree

lessons/intro/micropython/index.md

Lines changed: 15 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -266,44 +266,27 @@ Pomocí WebREPL lze nejen zadávat interaktivní příkazy, ale i nahrávat soub
266266

267267
## Komunikace
268268

269-
MicroPython pro ESP8266 nemá (z důvodu šetření místem) knihovnu pro HTTP.
270-
Dá se buď nějaká stáhnout a nainstalovat nebo použít nízkoúrovňový `socket`.
271-
Následující kód (převzatý z velké míry z [oficiální dokumentace]) stáhne data
272-
ze stránky [api.thingspeak.com/channels/1417/field/2/last.txt](http://api.thingspeak.com/channels/1417/field/2/last.txt), kde se objevuje poslední barva tweetnutá s hashtagem `#cheerlights`.
269+
Pro komunikaci po síti můžete použít nízkoúrovňovou knihovnu `socket`,
270+
nebo protokol pro „internet of things“ (jako MQTT), ale
271+
MicroPython pro ESP8266 má zabudouvanou i knihovnu pro HTTP:
272+
ořezanou verzi známých Requests.
273+
Následující kód stáhne data ze stránky
274+
[api.thingspeak.com/channels/1417/field/2/last.txt](http://api.thingspeak.com/channels/1417/field/2/last.txt),
275+
kde se objevuje poslední barva tweetnutá s hashtagem `#cheerlights`.
273276

274-
[oficiální dokumentace]: http://docs.micropython.org/en/latest/esp8266/esp8266/tutorial/network_tcp.html#http-get-request
277+
Výslednou hodnotu lze použít jako barvu modul v LED pásku.
275278

276279
```python
277-
import socket
280+
import urequests
278281

279-
host = 'api.thingspeak.com'
280-
path = 'channels/1417/field/2/last.txt'
281-
282-
url = 'http://{}/{}'.format(host, path)
283-
ai = socket.getaddrinfo(host, 80)
284-
print('Address infos:', ai)
285-
addr = ai[0][-1]
286-
287-
print('Connect address:', addr)
282+
url = 'http://api.thingspeak.com/channels/1417/field/2/last.txt'
288283

289284
def download_color():
290-
s = socket.socket()
291-
s.connect(addr)
292-
s.send(bytes('GET /%s HTTP/1.0\r\nHost: %s\r\n\r\n' % (path, host), 'utf8'))
293-
color = ''
294-
data = ''
295-
while True:
296-
chunk = s.recv(100)
297-
if chunk:
298-
data += chunk.decode('utf-8')
299-
else:
300-
break
301-
s.close()
302-
303-
head, body = data.split('\r\n\r\n', 2)
304-
305-
if body and body[0] == '#':
306-
color = body[1:7]
285+
response = urequests.get(url)
286+
text = response.text
287+
288+
if text and text[0] == '#':
289+
color = text[1:7]
307290

308291
red = int(color[0:2], 16)
309292
green = int(color[2:4], 16)

0 commit comments

Comments
 (0)