Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python RPi0仅在几周后挂起_Python_Mysql_Raspberry Pi - Fatal编程技术网

Python RPi0仅在几周后挂起

Python RPi0仅在几周后挂起,python,mysql,raspberry-pi,Python,Mysql,Raspberry Pi,我在爬行空间中设置了一个RPi0,用于测量和记录随时间变化的温度/湿度。简单地说,Python程序每隔几分钟使用Chron运行一次,收集温度/湿度并使用一个简单的HTTP页面将其发送到基于云的数据库(“一对一”),该页面运行一个简单的PHP程序,向MySQL数据库表添加一行。没有反馈(至少没有故意…)数据库按预期更新了几个星期(足够长的时间让我产生一种虚假的安全感…),然后停止。无法使用SSH访问RPi0 我拔下插头,把它带到我的办公室,插上电源,它又开始工作了,没问题……没有磁盘满的症状(总使

我在爬行空间中设置了一个RPi0,用于测量和记录随时间变化的温度/湿度。简单地说,Python程序每隔几分钟使用Chron运行一次,收集温度/湿度并使用一个简单的HTTP页面将其发送到基于云的数据库(“一对一”),该页面运行一个简单的PHP程序,向MySQL数据库表添加一行。没有反馈(至少没有故意…)数据库按预期更新了几个星期(足够长的时间让我产生一种虚假的安全感…),然后停止。无法使用SSH访问RPi0

我拔下插头,把它带到我的办公室,插上电源,它又开始工作了,没问题……没有磁盘满的症状(总使用率19%)。出现了虚假的python消息,但它们只是谈论类型转换警告

冲洗并重复

忽略本地数据库的插入设置。我已经注释掉了实际的命令执行,因为我不再使用本地数据库

#!/usr/bin/python
import sys
import Adafruit_DHT
import MySQLdb
import time
import urllib2

from Adafruit_BME280 import *

# BMP working, DHT not so much

sensor = BME280(address=0x76,t_mode=BME280_OSAMPLE_8, p_mode=BME280_OSAMPLE_8, h_mode=BME280_OSAMPLE_8)

# conn=MySQLdb.connect(host="192.168.2.204",user="jim",passwd="xxxx",db="EnviroLogger")
# c=conn.cursor()
humidity=0
temperaturec=0
# humidity, temperaturec = Adafruit_DHT.read_retry(11, 4)
temperaturef=((temperaturec*9.000)/5.000)+32.000

datatime=time.strftime('%Y-%m-%d %H:%M:%S',time.localtime())

dhtvalues="(null,'DHT-8200-Crawl',"+str(temperaturef)+","+str(humidity)+",null,'"+datatime+"')"


time.sleep(1)
BMPtemperaturef = ((sensor.read_temperature()*9.000)/5.000)+32.000
hectopascals = sensor.read_pressure()/100.0000
BMPhumidity = sensor.read_humidity()

bmpvalues="(null,'BMP-8200-Crawl',"+str(BMPtemperaturef)+","+str(BMPhumidity)+","+str(hectopascals)+",'"+datatime+"');"

finalSQLstring="INSERT INTO ResDataLog(ID,Location,Temperature, Humidity, Pressure, RecDate) VALUES " + dhtvalues +","+bmpvalues
# c.execute (finalSQLstring)
# conn.commit()

#Get Weather info from DarkSky

from forecastiopy import *

MyLatLong=[34.985928,-80.767389]
DarkSkyKey='587336fab8f4f5e8766aee23ca5cfee79f390943221acedddwerreffafde'

fio=ForecastIO.ForecastIO(DarkSkyKey, latitude=MyLatLong[0], longitude=MyLatLong[1])
current = FIOCurrently.FIOCurrently(fio)
ambienttemp=current.temperature
ambienthumidity=current.humidity
ambientpressure=current.pressure

url="http://telemetry.mywebhost.com/add_data.php?loc="+"BMP-8200-Crawl"+"&temp="+str(BMPtemperaturef)+"&hum="+str(BMPhumidity)+"&pr="+str(hectopascals)+"&atemp="+str(ambienttemp)+"&ahum="+str(ambienthumidity)+"&apress="+str(ambientpressure)
urllib2.urlopen(url)

我怎样才能在它死之前捕捉到这里发生的事情并把它保存在某个地方呢

此行为与脚本无关。只需每周或每天安排一次维护重启。最有可能的是它与WiFi有关,所以它可能还活着,但失去了连接。下次准备好串行连接以检查它是否处于活动状态。如果是WiFi连接问题,那么您可以编写简单的看门狗脚本来重置“过时”连接。这里还有一个与RPI设备相关的社区:。很可能他们对你的问题有答案。马克西姆,我认为这是一个很好的猜测。我曾经遇到过某些设备在重新启动客户端后无法重新连接的问题,只有通过重新启动路由器才能解决。我不知道该怎么写那个剧本。我会用谷歌搜索的。再次感谢你,Maxim。另外,RPi社区不是特别强大,但我下次会在那里尝试。