0

I have the python script which crashes after the second alarm would be triggered. So when the first fault occurs the phone call happens. But when the second call would be triggerd the script crashes. The script will wait for the GPIO to be high and then will make a phone call to alert that there is a problem with the machine.

#!/usr/bin/env python3
#coding: utf8
import os
from os.path import join, dirname
from pprint import pprint
import vonage
import RPi.GPIO as GPIO
import time, datetime
client = vonage.Client(
 application_id="XXXXXXX",
 private_key="XXXXXX",
voice = vonage.Voice(client)
GPIO.setmode(GPIO.BOARD)
GPIO.setup(18, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
################################### MAIN ##################################
 
 def call1():
 response = voice.create_call({
 'to': [{'type': 'phone', 'number': "XXXXX"}],
 'from': {'type': 'phone', 'number': "XXXXX"},
 'ncco': [{'action': 'talk','text': 'Störung Heizomat erkannt!',"language": "de-DE","style": 6 },]})
while True:
 if GPIO.input(18) == GPIO.HIGH:
 time.sleep (15)
 if GPIO.input(18) == GPIO.HIGH:
 make_call = call1()
 while GPIO.input(18) == GPIO.HIGH:
 time.sleep(60)
 time.sleep (5)

Error message:

Traceback (most recent call last): File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 699, in urlopen
 httplib_response = self._make_request( File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 445, in _make_request
 six.raise_from(e, None) File "<string>", line 3, in raise_from File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 440, in _make_request
 httplib_response = conn.getresponse() File "/usr/lib/python3.9/http/client.py", line 1347, in getresponse
 response.begin() File "/usr/lib/python3.9/http/client.py", line 307, in begin
 version, status, reason = self._read_status() File "/usr/lib/python3.9/http/client.py", line 268, in _read_status
 line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1") File "/usr/lib/python3.9/socket.py", line 704, in readinto
 return self._sock.recv_into(b) File "/usr/lib/python3.9/ssl.py", line 1241, in recv_into
 return self.read(nbytes, buffer) File "/usr/lib/python3.9/ssl.py", line 1099, in read
 return self._sslobj.read(len, buffer) ConnectionResetError: [Errno 104] Connection reset by peer
During handling of the above exception, another exception occurred:
Traceback (most recent call last): File "/usr/lib/python3/dist-packages/requests/adapters.py", line 439, in send
 resp = conn.urlopen( File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 755, in urlopen
 retries = retries.increment( File "/usr/lib/python3/dist-packages/urllib3/util/retry.py", line 532, in increment
 raise six.reraise(type(error), error, _stacktrace) File "/usr/lib/python3/dist-packages/six.py", line 718, in reraise
 raise value.with_traceback(tb) File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 699, in urlopen
 httplib_response = self._make_request( File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 445, in _make_request
 six.raise_from(e, None) File "<string>", line 3, in raise_from File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 440, in _make_request
 httplib_response = conn.getresponse() File "/usr/lib/python3.9/http/client.py", line 1347, in getresponse
 response.begin() File "/usr/lib/python3.9/http/client.py", line 307, in begin
 version, status, reason = self._read_status() File "/usr/lib/python3.9/http/client.py", line 268, in _read_status
 line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1") File "/usr/lib/python3.9/socket.py", line 704, in readinto
 return self._sock.recv_into(b) File "/usr/lib/python3.9/ssl.py", line 1241, in recv_into
 return self.read(nbytes, buffer) File "/usr/lib/python3.9/ssl.py", line 1099, in read
 return self._sslobj.read(len, buffer) urllib3.exceptions.ProtocolError: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))
During handling of the above exception, another exception occurred:
Traceback (most recent call last): File "/home/pi/Documents/Heizomat_Stoerung/call.py", line 80, in <module>
 make_call = call1() File "/home/pi/Documents/Heizomat_Stoerung/call.py", line 50, in call1
 response = voice.create_call({ File "/home/pi/.local/lib/python3.9/site-packages/vonage/voice.py", line 22, in create_call
 return self._jwt_signed_post("/v1/calls", params or kwargs) File "/home/pi/.local/lib/python3.9/site-packages/vonage/voice.py", line 85, in _jwt_signed_post
 self._client.api_host(), self._client.session.post(uri, json=params, headers=self._client._headers()) File "/usr/lib/python3/dist-packages/requests/sessions.py", line 590, in post
 return self.request('POST', url, data=data, json=json, **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 498, in send
 raise ConnectionError(err, request=request) requests.exceptions.ConnectionError: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))

Do you have any idea, why this happens?

Thanks in advance! Philipp

asked Oct 13, 2022 at 7:54

1 Answer 1

1

If you just google what „Connection reset by peer" you what happened. It‘s very simple, your connection was closed by the server you‘re connecting to. You‘re waiting too long for the server, so it‘s closing your connection because you timed out

I didn‘t watch the vonage API docs for long, but you should think of creating the client instance in the if where you do want to create a call.

#!/usr/bin/env python3
#coding: utf8
import os
from os.path import join, dirname
from pprint import pprint
import vonage
import RPi.GPIO as GPIO
import time, datetime
GPIO.setmode(GPIO.BOARD)
GPIO.setup(18, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
################################### MAIN ##################################
def call1():
 response = voice.create_call({
 'to': [{'type': 'phone', 'number': "XXXXX"}],
 'from': {'type': 'phone', 'number': "XXXXX"},
 'ncco': [{'action': 'talk','text': 'Störung Heizomat erkannt!',"language": "de-DE","style": 6 },]})
while True:
 if GPIO.input(18) == GPIO.HIGH:
 time.sleep (15)
 if GPIO.input(18) == GPIO.HIGH:
 client = vonage.Client(
 application_id="XXXXXXX",
 private_key="XXXXXX",
 )
 voice = vonage.Voice(client)
 make_call = call1()
 while GPIO.input(18) == GPIO.HIGH:
 time.sleep(60)
 time.sleep (5)

If I didn‘t do a typo that should work for you

answered Oct 13, 2022 at 9:11
Sign up to request clarification or add additional context in comments.

1 Comment

Hey Kejax, thank you very much for your answer! I will try the code you posted and provide feedback. But yes, as you mentioned it in your answer it makes sense :-) Greetings

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.