2016-08-30 11 views
0

私の投稿が「標準」に従わない場合は、これは私の最初の投稿です。 そして私は本当にPythonとプログラミングの新しい、私は私が行くように勉強しようとしています。Pythonは印刷文字列からデータを分割します

私は、スクリプトを使用しています私は理解し、私は結果を変更したいいけないラインがあることをスクリプトで制御し、私のハスクバーナAutomower

のthats。

print(dict(mow.status()['mowerInfo'])) 

私はこの

{u'storedTimestamp': u'1472541846629', u'hdop': u'0.0', u'latitude': u'57.57320833333333', u'lastErrorCode': u'0', u'nextStartTimestamp': u'1472587200', u'mowerStatus': u'PARKED_TIMER', u'cachedSettingsUUID': u'c1029c29-ecd5-48bd-a27b-fa98c6985ff0', u'hostMessage': u'0', u'configChangeCounter': u'846', u'longitude': u'12.04773', u'nextStartSource': u'WEEK_TIMER', u'secondsOld': u'-1471069304597', u'gpsStatus': u'USING_GPS_MAP', u'gsmRssi': u'0', u'batteryPercent': u'100', u'connected': u'true', u'operatingMode': u'AUTO', u'lastErrorCodeTimestamp': u'0'} 

のようなプリントを出すスクリプトを実行すると、私はこの行は「ステータス」機能を実行し、結果を出力しますが、私は本当に辞書を理解していけないことを理解しています['mowerInfo']と、なぜ私は['mowerInfo']への参照を見つけることができませんでした。私が理解しているように、スクリプトには二桁の数字が含まれているはずです。しかし、私はそれを見つけることができません。

そして今、質問

printコマンドのInsteed、insteed情報解析されINTE変数のSOMを取得したいと思いをaccualします。例については

iはmowerStatusという変数を持っていると思いますし、それは価値PARKED_TIMERとbatteryPercentという変数を持っている必要があり、それはスクリプトがIndigodomoと呼ばれ、ルーン文字が刻まれsmarthomesolutionによってrunnedされる値100

を持つべきですPythonを使用してMac上で02

これを行う方法を知っている人は誰ですか?

は私が

import requests 
import xmltodict 

class API: 
    _API_IM = 'https://tracker-id-ws.husqvarna.net/imservice/rest/' 
    _API_TRACK = 'https://tracker-api-ws.husqvarna.net/services/' 

    def __init__(self): 
     self.session = requests.Session() 
     self.device_id = None 
     self.push_id = None 

    def login(self, login, password): 
     request = ("<login>" 
        " <email>%s</email>" 
        " <password>%s</password><language>fr-FR</language>" 
        "</login>") % (login, password) 
      response = self.session.post(self._API_IM + 'im/login', 
             data=request, headers={'Content type': 'application/xml'}) 
      response.raise_for_status() 

      self.session.headers.update({'Session-Token': response.headers['Session-Token']}) 

      self.select_first_robot() 

    def logout(self): 
     response = self.session.post(self._API_IM + 'im/logout') 
     response.raise_for_status() 
     self.device_id = None 
     del (self.session.headers['Session-Token']) 

    def list_robots(self): 
     response = self.session.get(self._API_TRACK + 'pairedRobots_v2') 
     response.raise_for_status() 

     result = xmltodict.parse(response.content) 
     return result 

    def select_first_robot(self): 
     result = self.list_robots() 
     self.device_id = result['robots']['robot']['deviceId'] 

    def status(self): 
     response = self.session.get(self._API_TRACK + 'robot/%s/status_v2/' % self.device_id) 
     response.raise_for_status() 

     result = xmltodict.parse(response.content) 
     return result 

    def geo_status(self): 
     response = self.session.get(self._API_TRACK + 'robot/%s/geoStatus/' % self.device_id) 
     response.raise_for_status() 

     result = xmltodict.parse(response.content) 
     return result 

    def get_mower_settings(self): 
     request = ("<settings>" 
        " <autoTimer/><gpsSettings/><drivePastWire/>" 
        " <followWireOut><startPositionId>1</startPositionId></followWireOut>" 
        " <followWireOut><startPositionId>2</startPositionId></followWireOut>" 
        " <followWireOut><startPositionId>3</startPositionId></followWireOut>" 
        " <followWireOut><startPositionId>4</startPositionId></followWireOut>" 
        " <followWireOut><startPositionId>5</startPositionId></followWireOut>" 
        " <followWireIn><loopWire>RIGHT_BOUNDARY_WIRE</loopWire></followWireIn>" 
        " <followWireIn><loopWire>GUIDE_1</loopWire></followWireIn>" 
        " <followWireIn><loopWire>GUIDE_2</loopWire></followWireIn>" 
        " <followWireIn><loopWire>GUIDE_3</loopWire></followWireIn>" 
        " <csRange/>" 
        " <corridor><loopWire>RIGHT_BOUNDARY_WIRE</loopWire></corridor>" 
        " <corridor><loopWire>GUIDE_1</loopWire></corridor>" 
        " <corridor><loopWire>GUIDE_2</loopWire></corridor>" 
        " <corridor><loopWire>GUIDE_3</loopWire></corridor>" 
        " <exitAngles/><subareaSettings/>" 
        "</settings>") 
     response = self.session.post(self._API_TRACK + 'robot/%s/settings/' % self.device_id, 
            data=request, headers={'Content-type': 'application/xml'}) 
     response.raise_for_status() 

     result = xmltodict.parse(response.content) 
     return result 

    def settingsUUID(self): 
     response = self.session.get(self._API_TRACK + 'robot/%s/settingsUUID/' % self.device_id) 
     response.raise_for_status() 

     result = xmltodict.parse(response.content) 
     return result 

    def control(self, command): 
     if command not in ['PARK', 'STOP', 'START']: 
      raise Exception("Unknown command") 

     request = ("<control>" 
        " <action>%s</action>" 
        "</control>") % command 

     response = self.session.put(self._API_TRACK + 'robot/%s/control/' % self.device_id, 
            data=request, headers={'Content-type': 'application/xml'}) 
     response.raise_for_status() 

    def add_push_id(self, id): 
     request = "id=%s&platform=iOS" % id 
     response = self.session.post(self._API_TRACK + 'addPushId', data=request, 
            headers={'Content-type': 'application/x-www-form-urlencoded; charset=UTF-8'}) 
     response.raise_for_status() 
     self.push_id = id 

    def remove_push_id(self): 
     request = "id=%s&platform=iOS" % id 
     response = self.session.post(self._API_TRACK + 'removePushId', data=request, 
            headers={'Content-type': 'application/x-www-form-urlencoded; charset=UTF-8'}) 
     response.raise_for_status() 
     self.push_id = None 

if __name__ == '__main__': 

    retry = 5 

    while retry > 0: 
     try: 
      mow = API() 

      mow.login("[email protected]", "xxxxxx") 

      print(dict(mow.status()['mowerInfo'])) 

      retry = 0 
     except Exception as ex: 
      retry -= 1 
      if retry == 0: 
       print("[ERROR] Retrying to send the command") 
      else: 
       print("[ERROR] Failed to send the command") 
       exit(1) 

    print("Done") 

    mow.logout() 

    exit(0) 

orgiginalプロジェクト、スクリプトが

https://github.com/chrisz/pyhusmow

ここで見つける蜂することができます(私の資格が出XXedで)元ここ

である私の変更したスクリプトからスクリプトを変更しています

サーモンマーティン

+0

dictは、 'status'関数の結果に基づいて' print'の内部に作成されます。あなたが持っておきたい値は、実際には辞書のキーの形をしています。あなたは 'a_dict = dict(mow.status()['mowerInfo'])'と 'a_dict ['PARKED_TIMER' ] ' –

答えて

2
dic_info = dict(mow.status()['mowerInfo']) 
mowerStatus = dic_info.get('mowerStatus') 
batteryPercent = dic_info.get('batteryPercent') 
+0

私はこのコードを入力して実行すると、変数mowerStatusに「無効な構文」が表示されますか? – Gusten

+0

@Gusten新しいコードを試してみると構文エラーがありました。 –

+0

完璧、今働いてくれてありがとう – Gusten

関連する問題