Python:用树莓派将传感器数据推送到xively时出错TypeError:__init __()

麦克奈特

我尝试用树莓派从ds18b20温度传感器读取数据并将其推入xive。

在控制台中执行一些先决条件和python文件:

sudo modprobe w1-gpio && sudo modprobe w1_therm
source .envs/venv/bin/activate
FEED_ID=244127069 API_KEY=Nqeje SENSOR_ID=28-00000539324e python xively_ds18b20.py

此后,出现以下错误:

Traceback (most recent call last):
  File "xively_ds18b20.py", line 59, in <module>
    run()
  File "xively_ds18b20.py", line 42, in run
    feed = api.feeds.get(FEED_ID)
  File "/home/pi/xively_tutorial/.envs/venv/local/lib/python2.7/site-packages/xively/managers.py", line 266, in get
    feed = self._coerce_feed(data)
  File "/home/pi/xively_tutorial/.envs/venv/local/lib/python2.7/site-packages/xively/managers.py", line 289, in _coerce_feed
    feed = Feed(**feed_data)
TypeError: __init__() got an unexpected keyword argument 'email'

我该如何解决这个错误?这很有趣,但是在另一台Raspberry Pi上却可以运行...

这是我的代码(xively_ds18b20.py):

#!/usr/bin/env python

import os
import xively
import subprocess
import time
import datetime
import requests


FEED_ID = os.environ["FEED_ID"]
API_KEY = os.environ["API_KEY"]
SENSOR_ID_PRE = os.environ["SENSOR_ID"]
SENSOR_ID = SENSOR_ID_PRE[-7:]

# initialize api client
api = xively.XivelyAPIClient(API_KEY)

# function to read the temperature from ds18b20 temperature sensor on i2c 
def read_temperature():
   tempfile = open("/sys/bus/w1/devices/"+SENSOR_ID_PRE+"/w1_slave")
   thetext = tempfile.read()
   tempfile.close()
   tempdata = thetext.split("\n")[1].split(" ")[9]
   temperature = float(tempdata[2:])
   temperature = temperature / 1000
   return temperature

# function to return a datastream object. This either creates a new datastream,
# or returns an existing one
def get_datastream(feed):
  try:
    datastream = feed.datastreams.get("PiTemperature"+SENSOR_ID)
    return datastream
  except:
    datastream = feed.datastreams.create("PiTemperature"+SENSOR_ID, tags="temperature")
    return datastream

# main program entry point - runs continuously updating our datastream with the
# latest temperature reading
def run():
  feed = api.feeds.get(FEED_ID)

  datastream = get_datastream(feed)
  datastream.max_value = None
  datastream.min_value = None

  while True:
    degreesCelcius = read_temperature()
    datastream.current_value = degreesCelcius
    datastream.at = datetime.datetime.utcnow()
    try:
      datastream.update()
    except requests.HTTPError as e:
      print "HTTPError({0}): {1}".format(e.errno, e.strerror)

    time.sleep(10)

run()
损害

根据此错误报告,您可以通过从Feed元数据中删除电子邮件地址来解决此问题:

当我从Feed元数据中删除我的电子邮件地址(通过工作台)并重新运行时,api.feeds.get(FEED_ID)它工作正常。

然而,当我看在GitHub上最新的源代码,我可以看到email 支持:

class Feed(Base):
    """Xively Feed, which can contain a number of Datastreams.
    :param title: A descriptive name for the feed
    :param description: A longer text description of the feed
    :param website: The URL of a website which is relevant to this feed e.g.
    home page
    :param email: A public contact email address for the provider of this feed
    :param tags: Tagged metadata about the environment (characters ' " and
    commas will be stripped out)
    :param location: :class:`.Location` object for this feed
    :param private: Whether the environment is private or not.
    :type private: bool
    Usage::
    >>> import xively
    >>> xively.Feed(title="Xively Office environment")
    <xively.Feed(None)>
    """
    VERSION = "1.0.0"
    # Set id and feed directly as they aren't part of state. By setting them on
    # the class they won't get entered into _data and will be set on the
    # instance itself.
    id = None
    feed = None
    _datastreams_manager = None
    def __init__(self, title, description=None, website=None, email=None,
    tags=None, location=None, private=None, datastreams=None):

看来这个错误是最近才修复的(6月27日)您可以尝试xively-python从github提取最新版本,并使用它代替当前版本吗?

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将传感器数据树莓派保存到数据库

来自分类Dev

温度传感器 /w 树莓派 3

来自分类Dev

arduino 无法打开树莓派的红外传感器

来自分类Dev

在 Raspberry Pi 上使用 MQTT 将传感器数据发布到 Thingspeak 时出错

来自分类Dev

上树莓裨使用Python最有效的方式来存储数据从传感器

来自分类Dev

在树莓派中使用超声波传感器测量距离

来自分类Dev

将数据从传感器写入文件

来自分类Dev

将TI传感器数据发送到服务器

来自分类Dev

通过UDP将数据从android发送到外部传感器

来自分类Dev

通过UDP将数据从android发送到外部传感器

来自分类Dev

如何将传感器数据(如来自 DHT11 传感器的温度数据)发送到 Google Cloud IoT Core 并进行存储

来自分类Dev

使用react-native-ble-plx将数据发送到树莓派RFCOMM服务器

来自分类Dev

Kivy - 用传感器数据更新标签?

来自分类Dev

使用Arduino GSM / GPRS SIM900将传感器数据发送到我的Web服务

来自分类Dev

将传感器数据发送到移动应用程序供其他人查看

来自分类Dev

通过 numpy 将传感器读数存储到数据文件(python 2.7)

来自分类Dev

用传感器重构树莓派上的多线程程序

来自分类Dev

python中的传感器数据日志csv

来自分类Dev

如何使用带有树莓派(C语言)的i2c程序配置霍尔效应传感器(si7210)

来自分类Dev

初始化android传感器管理器时出错

来自分类Dev

用传感器唤醒XBee

来自分类Dev

如何将传感器值发送到Android应用程序?

来自分类Dev

停止位置传感器Firemonkey XE6时出错

来自分类Dev

MongoDB查询传感器数据收集

来自分类Dev

检测传感器数据的变化点

来自分类Dev

同步来自不同传感器的数据

来自分类Dev

如何顺序获取传感器数据?

来自分类Dev

用于传感器数据连接的 DBus

来自分类Dev

树莓派python编辑器

Related 相关文章

  1. 1

    将传感器数据树莓派保存到数据库

  2. 2

    温度传感器 /w 树莓派 3

  3. 3

    arduino 无法打开树莓派的红外传感器

  4. 4

    在 Raspberry Pi 上使用 MQTT 将传感器数据发布到 Thingspeak 时出错

  5. 5

    上树莓裨使用Python最有效的方式来存储数据从传感器

  6. 6

    在树莓派中使用超声波传感器测量距离

  7. 7

    将数据从传感器写入文件

  8. 8

    将TI传感器数据发送到服务器

  9. 9

    通过UDP将数据从android发送到外部传感器

  10. 10

    通过UDP将数据从android发送到外部传感器

  11. 11

    如何将传感器数据(如来自 DHT11 传感器的温度数据)发送到 Google Cloud IoT Core 并进行存储

  12. 12

    使用react-native-ble-plx将数据发送到树莓派RFCOMM服务器

  13. 13

    Kivy - 用传感器数据更新标签?

  14. 14

    使用Arduino GSM / GPRS SIM900将传感器数据发送到我的Web服务

  15. 15

    将传感器数据发送到移动应用程序供其他人查看

  16. 16

    通过 numpy 将传感器读数存储到数据文件(python 2.7)

  17. 17

    用传感器重构树莓派上的多线程程序

  18. 18

    python中的传感器数据日志csv

  19. 19

    如何使用带有树莓派(C语言)的i2c程序配置霍尔效应传感器(si7210)

  20. 20

    初始化android传感器管理器时出错

  21. 21

    用传感器唤醒XBee

  22. 22

    如何将传感器值发送到Android应用程序?

  23. 23

    停止位置传感器Firemonkey XE6时出错

  24. 24

    MongoDB查询传感器数据收集

  25. 25

    检测传感器数据的变化点

  26. 26

    同步来自不同传感器的数据

  27. 27

    如何顺序获取传感器数据?

  28. 28

    用于传感器数据连接的 DBus

  29. 29

    树莓派python编辑器

热门标签

归档