首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在azure上创建表的python脚本

在azure上创建表的python脚本
EN

Stack Overflow用户
提问于 2016-09-29 02:30:04
回答 1查看 529关注 0票数 2

因此,我尝试运行一个python脚本,它通过Rpi从Z波传感器读取数据,并在我设置的pi上使用crontab,这样python脚本将每分钟运行一次,并将其存储在文本文件中。然后,我有了另一个python脚本,它以表格的形式将数据发送到蔚蓝云存储。问题是确实创建了一个表,但是出现了一个错误“这个XML文件似乎没有任何与它相关的样式信息”。我一直在想办法,但我看不出有什么不对的。

这是向云发送数据的python脚本

代码语言:javascript
复制
from azure.storage import TableService, Entity
from datetime import datetime
import socket

ac_name = 'account name'
#you will have to use your own azure account
primary_key = 'use your key'
table_name = 'Readings'

current_temperature = 0

def get_connection_string_and_create_table():
    global table_service
    table_service = TableService(account_name = ac_name,account_key=primary_key)
    #table_service.delete_table(table_name = table_name) #TO BE USED IF THE TABLE NEEDS TO BE DELETED
    table_service.create_table(table=table_name)

def insert_data():
    reading = create_entity()
    try:
        if check_internet_available():
            table_service.insert_entity(table_name = table_name,entity = reading)
            return True
    except Exception, e:
        return False


def create_entity():

    """
    -   Creates the data block that would be sent to the cloud, named as Entity
    """

    time_now = datetime.strftime(datetime.now(),'%d-%m-%Y %H:%M:%S')
    print('Date time is {0}'.format(time_now))
    reading = Entity()
    reading.PartitionKey = 'Room1'
    reading.RowKey = time_now
    reading.Timestamp = datetime.now()
    reading.Temperature = str(current_temperature)
    return reading

def initialize_azure():
    get_connection_string_and_create_table()

def send_data_to_cloud(temperature):
    global current_temperature
    current_temperature = temperature
    sent_success = insert_data()
    print temperature
    print sent_success
    return sent_success


def check_internet_available():

    """
    -   Checks internet availability, the data will be sent to cloud
        only if there is an active internet connection

         remote_server = 'www.google.com'
    try:
        host = socket.gethostbyname(remote_server)
        s = socket.create_connection((host,80),2)
        return True
    except:
        pass
    return False


if __name__ == '__main__':

    get_connection_string_and_create_table()
    f = open('Meter.txt', 'r')
    send_data_to_cloud(f.readline())

这是通过HTTP请求从API读取数据的脚本

代码语言:javascript
复制
import urllib2
import json
import requests
import time
import json

class EnergyConsumptionControl:

    # Class constructor
    def __init__(self):
        # Global Variables
        self.energyMeterDeviceUrl = "http://IpaddressofyourRpi"
        self.session = requests.Session()
        # Logging in
        self.Login()


    def ActivateDevice(self, deviceID):
        energyMeterDeviceSwitchOn = ":8083/ZWaveAPI/Run/devices[" +  str(deviceID)  + "].SwitchBinary.Set(255)"
        response = self.SendGetCommand(energyMeterDeviceSwitchOn)  # Command to turn device on
        return [response]


    def DeactivateDevice(self, deviceID):
        energyMeterDeviceSwitchOff = ":8083/ZWaveAPI/Run/devices[" + str(deviceID)  + "].SwitchBinary.Set(0)"
        response = self.SendGetCommand(energyMeterDeviceSwitchOff)  # Command to turn device off
        return [response]


    def GetDeviceState(self,  deviceID):
        # Call the Get() function to update the SwitchBinary data
        energyMeterDeviceSwitchGet = ":8083/ZWaveAPI/Run/devices[" + str(deviceID) + "].SwitchBinary.Get()"
        response = self.SendGetCommand(energyMeterDeviceSwitchGet)
        # Call to return the SwitchBinary JSON object
        energyMeterDeviceSwitchGet = ":8083/ZWaveAPI/Run/devices[" + str(deviceID) + "].SwitchBinary"
        response = self.SendGetDeviceStateCommand(energyMeterDeviceSwitchGet)
        return response


    # def GetDeviceMeter(self, deviceID):
    #     # Refreshing server-side information on the Meter through device interrogation
    #     energyMeterDeviceMeterGetVals = ":8083/ZWaveAPI/Run/devices[" + str(deviceID) + "].Meter.Get()"
    #     response = self.SendGetCommand(energyMeterDeviceMeterGetVals)
    #     # Retrieving the JSON of all Meter related data
    #     energyMeterDeviceMeterGet = ":8083/ZWaveAPI/Run/devices[" + str(deviceID) + "].Meter"
    #     response = self.GetMeterWattage(energyMeterDeviceMeterGet)
    #     return [response]

    def GetDeviceEnergyConsumption(self,  deviceID):
        # Refreshing server-side information on the Meter through device interrogation
        energyMeterDeviceMeterRefreshVals = ":8083/ZWaveAPI/Run/devices[" + str(deviceID) + "].Meter"
        response = self.SendGetCommand(energyMeterDeviceMeterRefreshVals)

        # Retrieving the JSON of all Meter related data
        energyMeterDeviceMeterGetVals = ":8083/ZWaveAPI/Run/devices[" + str(deviceID) + "].Meter"
        energyConsumption = self.GetMeterConsumption(energyMeterDeviceMeterGetVals)

        response = self.ResetDeviceMeter(deviceID)
        return energyConsumption
 def GetDeviceEnergyWattage(self,  deviceID):
        # Refreshing server-side information on the Meter through device interrogation
        energyMeterDeviceMeterRefreshVals = ":8083/ZWaveAPI/Run/devices[" + str(deviceID) + "].Meter.Get()"
        response = self.SendGetCommand(energyMeterDeviceMeterRefreshVals)

        # Retrieving the JSON of all Meter related data
        energyMeterDeviceMeterGetVals = ":8083/ZWaveAPI/Run/devices[" + str(deviceID) + "].Meter"
        energyWattage = self.GetMeterWattage(energyMeterDeviceMeterGetVals)
        print energyWattage
        return energyWattage


    def ResetDeviceMeter(self, deviceID):
        energyMeterDeviceMeterReset = ":8083/ZWaveAPI/Run/devices[" + str(deviceID) + "].Meter.Reset(255)"
        response = self.SendPostCommand(energyMeterDeviceMeterReset)  # Command to reset device meter value
        return [response]


    def Login(self):
        data = {
            "form": True,
            "login": "admin",
            "password": "#password",
            "keepme": False,
            "default_ui": 1
        }

        # Authenticating
        headers = {'Content-Type': 'application/json'}
        response = self.session.post(self.energyMeterDeviceUrl + ':8083/ZAutomation/api/v1/login', headers=headers,
                                data=json.dumps(data))

    # Generic function to send GET commands to individual Z-Wave devices
    def SendGetCommand(self, command):
        status = self.session.get(self.energyMeterDeviceUrl + command)
        print status
        print status.text
        return [status]

    # Generic function to send POST commands to individual Z-Wave devices
    def SendPostCommand(self, command):
        status = self.session.post(self.energyMeterDeviceUrl + command)
        print status
        print status.text
        return [status]

    def GetMeterWattage(self, command):
        status = self.session.get(self.energyMeterDeviceUrl + command)
        json_data = json.loads(status.text)
        # Parsing the JSON data to get just the energy wattage (W)
        return json_data['data']['2']['val']['value']


    def GetMeterConsumption(self, command):
        status = self.session.get(self.energyMeterDeviceUrl + command)
        json_data = json.loads(status.text)
        # Parsing the JSON data to get just the energy consumption (kWh)
        return json_data['data']['0']['val']['value']
 def SendGetDeviceStateCommand(self, command):
        status = self.session.get(self.energyMeterDeviceUrl + command)
        json_data = json.loads(status.text)
        # Parsing the JSON data to get just the 'level'
        return int(json_data['data']['level']['value'])


control = EnergyConsumptionControl()
response = control.GetDeviceEnergyConsumption(8)
print response


control = EnergyConsumptionControl()
response = control.ActivateDevice(8)
print response

有没有办法将两者结合起来,以便调用数据并将其发送到云?如何修复错误消息?

EN

回答 1

Stack Overflow用户

发布于 2016-10-03 21:05:33

如果没有呈现的表示/样式信息,而在这种情况下,它是用于通信的Xml,则可能不需要,就会发生此错误。下面是另一条相关的线索--这可能会有所帮助。

This XML file does not appear to have any style information associated with it

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39760427

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档