2017-01-30 9 views
-1

Pythonプログラムで変数を使用して、JSONに変換してスマートライトを制御しようとしています。変数 "bright"は、JSONのライトの明るさの数値です。私はそれが文字列として送信されない限り送信しないようにそれを含める方法がわかりません。私のコードは以下の通りです。PythonでJSON変数を使用する

import json 
import requests 
Light="http://192.168.1.102/api/F5La7UpN6XueJZUts1QdyBBbIU8dEvaT1EZs1Ut0/lights/5/state" 
off='{"on":false}' 
on='{"on":true}' 
bri='{"bri":bright}' 
def lights_off(): 
    r = requests.put(Light,off) 

def lights_on(): 
    r = requests.put(Light,on,bright) 
x=1 
while x==1: 
    choice=input("Lights on or off?") 
    briChoice=input("What percentage brightness?") 
    bright=int((briChoice/100)*254) 

    if choice=="on": 
     lights_on() 
    elif choice=="off": 
     lights_off() 
    else: 
     print("Don't be stupid.") 


    choice2=input("Would you like to exit? Y/N").lower() 
    if choice2=="y": 
     break 

答えて

2

最も簡単な方法は、JSONを送信するときにPython変数の値を挿入し、明るさのためにJSONにプレースホルダを置くことです。たとえば、次のように

bri = '{"bri": %s}' 

すると、それ以降:

def lights_on(): 
    r = requests.put(Light, on, bri % bright) 

あなたはJSONデータ要素として使用されるように特別な処理を必要としない整数、を扱っている場合は、この簡単な解決策はうまく機能。あなたは、文字列を持っている場合は、ブール、None、またはリストや辞書には、それを補間する前の値にJSON.dumpsを使用します。

"{bri: %s}" % JSON.dumps(bright) 
+0

ありがとうございました、素晴らしい作品:) –

関連する問題