I have placed several tests for connection in the program and do not understand why they are not working. Here is partial code that first uses an 'if adafruit.is_active:' test, where "adafruit=PingServer('adafruit.com', event_delay=20.0)" is set in the early portion of the code.
Code: Select all
while True:
# Look for a new packet: only accept if addresses to my_node
packet = rfm9x.receive(with_ack=True, with_header=True)
# If no packet was received during the timeout then None is returned.
if packet is not None:
#print("Received raw packet:", [hex(x) for x in packet])
payload = str(packet[4:], "utf-8")
tag = int(payload[0])
#print(tag)
if tag == 1:
temperature = payload[1:]
temperature = (float(temperature)*1.8 + 32)
temperature=round(temperature, 2)
print("temperature = ", temperature, "F")
if adafruit.is_active:
aio.send(temperature_feed.key, str(temperature))
else:
print("wifi not ready")
elif tag == 3:
pressure = payload[1:]
print("pressure = ", pressure, "mB")
if adafruit.is_active:
aio.send(pressure_feed.key, str(pressure))
else:
print("wifi not ready")
elif tag == 2:
humidity = payload[1:]
print("humidity = ", humidity, "%")
if adafruit.is_active:
aio.send(humidity_feed.key, str(humidity))
else:
print("wifi not ready")
Traceback (most recent call last):
File "/home/pi/backup/Downloads/Adafruit_CircuitPython_RFM9x-main/rfm9x_flag_ack_aio_wind3.py", line 99, in <module>
aio.send(humidity_feed.key, str(humidity))
File "/home/pi/backup/Downloads/Adafruit_CircuitPython_RFM9x-main/Adafruit_IO/client.py", line 154, in send_data
return self.create_data(feed, payload)
File "/home/pi/backup/Downloads/Adafruit_CircuitPython_RFM9x-main/Adafruit_IO/client.py", line 254, in create_data
return Data.from_dict(self._post(path, data._asdict()))
File "/home/pi/backup/Downloads/Adafruit_CircuitPython_RFM9x-main/Adafruit_IO/client.py", line 122, in _post
response = requests.post(self._compose_url(path),
File "/usr/lib/python3/dist-packages/requests/api.py", line 119, in post
return request('post', url, data=data, json=json, **kwargs)
File "/usr/lib/python3/dist-packages/requests/api.py", line 61, in request
return session.request(method=method, url=url, **kwargs)
File "/usr/lib/python3/dist-packages/requests/sessions.py", line 542, in request
resp = self.send(prep, **send_kwargs)
File "/usr/lib/python3/dist-packages/requests/sessions.py", line 655, in send
r = adapter.send(request, **kwargs)
File "/usr/lib/python3/dist-packages/requests/adapters.py", line 516, in send
raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPSConnectionPool(host='io.adafruit.com', port=443): Max retries exceeded with url: /api/v2/Rcayot/feeds/humidity/data (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0xb4fcc3a0>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution'))
What I would like to know is why if adafruit.is_active: is true why does the code fail when the next line is executed:
Code: Select all
if adafruit.is_active:
aio.send(humidity_feed.key, str(humidity))
else:
Any help would be welcome.
Roger