Paso 5: Código de Python
#import biblioteca para hacer peticiones http:
importar urllib.request #import pyserial biblioteca importación #import serial tiempo para retrasos importación tiempo
Import os import subproceso
#import xml parser llamado minidom: de xml.dom.minidom importar parseString
datamem = "0" datamem2 = "0"
#Initialize la conexión serie en COM3 o cualquier puerto de tu arduino utiliza en 9600 baudios tasa ser = serial. Serie ("/dev/tty.usbmodem1411", 9600)
i = 1 #delay para estabilidad mientras que la conexión es lograr time.sleep(5) mientras yo == 1:
strMarkerPing = ''
#if (un == un): # comprobar si el host está vivo con PING
strPingStates = ' *,'
con open (os.devnull, "wb") como limbo: resultado = subproceso. Popen (["ping", "-c", "1", "-n", "-W", "2", "146.50.1.XXX"], stdout = limbo, stderr=limbo).wait() if resultado: strPingStates = strPingStates + '0', otra: strPingStates = strPingStates + '1',
con open (os.devnull, "wb") como limbo: resultado = subproceso. Popen (["ping", "-c", "1", "-n", "-W", "2", "145.18.1.XXX"], stdout = limbo, stderr=limbo).wait() if resultado: strPingStates = strPingStates + '0', otra: strPingStates = strPingStates + '1',
con open (os.devnull, "wb") como limbo: resultado = subproceso. Popen (["ping", "-c", "1", "-n", "-W", "2", "145.109.1.XXX"], stdout = limbo, stderr=limbo).wait() if resultado: strPingStates = strPingStates + '0', otra: strPingStates = strPingStates + '1',
con open (os.devnull, "wb") como limbo: resultado = subproceso. Popen (["ping", "-c", "1", "-n", "-W", "2", "145.18.1.XXX"], stdout = limbo, stderr=limbo).wait() if resultado: strPingStates = strPingStates + '0', otra: strPingStates = strPingStates + '1',
con open (os.devnull, "wb") como limbo: resultado = subproceso. Popen (["ping", "-c", "1", "-n", "-W", "2", ""], stdout = limbo, stderr=limbo).wait() if resultado: strPingStates = strPingStates + '0', otra: strPingStates = strPingStates + '1',
con open (os.devnull, "wb") como limbo: resultado = subproceso. Popen (["ping", "-c", "1", "-n", "-W", "2", ""], stdout = limbo, stderr=limbo).wait() if resultado: strPingStates = strPingStates + '0', otra: strPingStates = strPingStates + '1',
ser.Write (bytes (strPingStates + '\n', 'UTF-8'))
#if (a == a):
#download el archivo rss no dude en poner tu propia url del rss en el archivo aquí = urllib.request.urlopen ('http://www.nu.nl/feeds/rss/algemeen.rss') #convert de datos de cadena = file.read() #close el archivo file.close()
#parse el xml de la cadena de dom = parseString(data)
#retrieve la primera etiqueta xml (datos) que el analizador encuentra con nombre tagName cambiar etiquetas para obtener diferentes datos xmlTag = dom.getElementsByTagName('title')[1].toxml() # [2] indica que se analiza la etiqueta de título 3 encuentra, cuenta inicia en 0
Si xmlTag! = datamem:
#strip de la etiqueta (datos---> datos) xmlData=xmlTag.replace ('
'') #write el marcador ~ a ser.write serial (bytes ("~" + '\n', 'UTF-8')) time.sleep(5) #split la cadena en palabras individuales nums = xmlData.split(' ') #loop hasta que todas las palabras en cadena se han impreso para num en nums: #write 1 palabra ser.write (bytes (num, 'UTF-8'))
# escribir 1 espacio ser.write (bytes (' ', 'UTF-8'))
# EL RETRASO ES NECESARIO. Evita el desbordamiento del búfer de arduino. Time.Sleep(2) # escriba ~ para cerrar la cadena y envío de información de arduino es acabado ser.write (bytes ("~" + '\n', 'UTF-8')) # espere 5 minutos antes de la segunda verificación de RSS y volver a enviar datos a Arduino
datamem = xmlTag time.sleep(10) otro: time.sleep(10)
#download el archivo rss no dude en poner su propia url del rss en archivo2 aquí = urllib.request.urlopen ('https://www.facebook.com/feeds/notifications.php?id=XXX & viewer = XXX & clave = XXX & formato = rss20') #convert a data2 = file2.read() #close el archivo file2.close()
#parse el xml de la cadena dom2 = parseString(data2)
#retrieve la primera etiqueta xml (datos) que el analizador encuentra con nombre tagName cambiar etiquetas para obtener diferentes datos xmlTag2 = dom2.getElementsByTagName('title')[1].toxml() # [2] indica que se analiza la etiqueta de título 3 encuentra, cuenta inicia en 0
Si xmlTag2! = datamem2:
#strip de la etiqueta (datos---> datos) xmlData2=xmlTag2.replace ('
'') #write el marcador ~ a ser.write(b"~") serial time.sleep(5) #split la cadena en palabras individuales nums = xmlData2.split(' ') #loop hasta que todas las palabras en cadena se han impreso para num en nums: #write 1 palabra ser.write (bytes (num, 'UTF-8'))
# escribir 1 espacio ser.write (bytes (' ', 'UTF-8'))
# EL RETRASO ES NECESARIO. Evita el desbordamiento del búfer de arduino. Time.Sleep(2) # escriba ~ para cerrar la cadena y envío de información de arduino es acabado ser.write(b"~") # espere 5 minutos antes de la segunda verificación de RSS y volver a enviar datos a Arduino
datamem2 = xmlTag2 time.sleep(10) otro: time.sleep(10)