[해결]네트워크가 연결되면 led가 ON되는 파이썬코드 질문



  • 안녕하세요.
    다음과 같이 코드를 작성했는데 GPIO가 동작하지 않아 질문올립니다.
    코드는 오렌지파이의 파이썬코드입니다.

    import OPi.GPIO as GPIO
    import os
    import time
    import urllib2
    import subprocess
    
    while True:
        try:
            urllib2.urlopen("http://www.google.com").close()
        except urllib2.URLError:
            print "Not Connected"
            while True:
                GPIO.output(netled, False)
        else:
            print "Connected"
            while True:
                GPIO.output(netled, True)
            break
    
    netled = 17
    
    GPIO.setmode(GPIO.BCM)
    GPIO.setup(netled, GPIO.OUT)
    GPIO.setwarnings(False) 
    

    에러는 다음과 같습니다.

    root@EMCALL:/home# python net.py
    Connected
    Traceback (most recent call last):
      File "net.py", line 17, in <module>
        GPIO.output(netled, True)
    NameError: name 'netled' is not defined
    

  • Global Moderator

    @hipertech 안녕하세요.
    산딸기마을 이장 나무꾼 입니다.

    위 소스를 아래와 같이 수정한 테스트 결과를 공유 해 드립니다.

    import RPi.GPIO as GPIO
    import os
    import time
    import urllib2
    import subprocess
    
    netled = 17
    
    GPIO.setmode(GPIO.BCM)
    GPIO.setup(netled, GPIO.OUT)
    GPIO.setwarnings(False)
    
    while True:
        try:
            urllib2.urlopen("http://www.google.com").close()
        except urllib2.URLError:
            print "Not Connected"
            while True:
                GPIO.output(netled, False)
        else:
            print "Connected"
            while True:
                GPIO.output(netled, True)
            break
    

    소스 수정 후 결과

    pi@ITCC:~/test $ sudo python2 net.py
    
    Not Connected
    


  • @jae-sang-lee
    감사합니다.

    원하는 내용은 다음과 같습니다.
    www.google.com.에 연결이 되면 Connected라는 출력과 함께 17이 ON이 되도록 하려고 합니다.
    연결이되면 17번이 ON, 연결이 끊어지면 OFF 가 되도록 하려고 합니다.

    그런데 보내주신 코드로는 프로그램을 실행하고 연결이 되어 있으면 oN이 됩니다.
    그런데 그 상태에서 연결이 끊어지면 LED가 OFF가 안됩니다.
    어떻게 해야 할까요?
    물론 물론 출력되는 내용도 처음 실행된 내용인 Connected로 표시가 되고요…


  • Global Moderator

    @hipertech 안녕하세요
    산딸기마을 이장 나무꾼 입니다.

    저도 퇴근하고 세팅 후 테스트 해봐야겠네요.



  • 일부는 해결했습니다.
    링크가 되면 led가 ON이되고, 링크가 되지 않으면 OFF가 되도록은 했습니다.
    led가 깜박이도록 하려고 하는데 잘 안되네요,.,.

    import OPi.GPIO as GPIO
    import urllib2
    import time
    import subprocess
    
    netled = 17
    
    GPIO.setmode(GPIO.BCM)
    GPIO.setup(netled, GPIO.OUT)
    GPIO.setwarnings(False)
    
    def internet_on():
        try:
            response=urllib2.urlopen('http://192.168.0.116',timeout=1)
            return True
        except urllib2.URLError as err: pass
        return False
    
    while 1:
        if internet_on() == 1:
                GPIO.output(netled, True)
    #        print "Network ON"
        else:
    #        while True:
                GPIO.output(netled, False)
    #        print "Network OFF"
        time.sleep(5)
        pass

  • Global Moderator

    @hipertech 안녕하세요.
    산딸기마을 이장 나무꾼 입니다.

    네트웍케이블이 접속이 되면, 깜빡 되고, 단선이 된 경우 점멸 이 되도록 수정했습니다.

    수고하세요 ~~

    import RPi.GPIO as GPIO
    import urllib2
    import time
    import subprocess
    
    netled = 17
    
    GPIO.setmode(GPIO.BCM)
    GPIO.setup(netled, GPIO.OUT)
    GPIO.setwarnings(False)
    
    def internet_on():
        try:
            response=urllib2.urlopen('http://google.co.kr',timeout=1)
            html = response.read()
            return True
        except urllib2.URLError as err: pass
        return False
    
    while 1:
        if internet_on() == 1:
                GPIO.output(netled, True)
                time.sleep(0.5)
                GPIO.output(netled, False)
                print "Network ON"
        else:
            while True:
                GPIO.output(netled, 0)
                print "Network OFF"
        time.sleep(1)
        pass
    
    try:
        main()
    except KeyboardInterrupt:
        GPIO.cleanup()
    
    


  • 매번 감사합니다.
    시험 해보고 결과 올리겠습니다.



  • 시험을 해 보았습니다.
    그런데 처음에는 동작을 하는데 시간이(대략10분정도?) 지나면 LED가 꺼지고 들어오지를 않네요…
    무슨문제일지…ㅠ
    해결되었습니다.

    import OPi.GPIO as GPIO
    import urllib2
    import time
    import subprocess
    
    netled = 17
    
    GPIO.setmode(GPIO.BCM)
    GPIO.setup(netled, GPIO.OUT)
    GPIO.setwarnings(False)
    
    def internet_on():
        try:
    #        response=urllib2.urlopen('http://192.168.0.116',timeout=1)
            response=urllib2.urlopen('http://192.168.0.116')
            return True
        except urllib2.URLError as err: pass
        return False
    
    while 1:
        if internet_on() == 1:
                GPIO.output(netled, True)
                time.sleep(0.2)
                GPIO.output(netled, False)
    
        else:
            while True:
                GPIO.output(netled, False)
        time.sleep(1)
        pass
    
    try:
        main()
    except KeyboardInterrupt:
        GPIO.cleanup()
    

  • Global Moderator

    @hipertech 안녕하세요.
    산딸기마을 이장 나무꾼 입니다.

    긴 시간동안 고생 많으셨습니다.


답글을 작성하기 위해 로그인
 

Rasplay Forum 사이트로의 연결이 끊어졌습니다. 다시 연결을 시도하는동안 잠시만 기다려 주십시오.