这里第一次说它具体......所以这里就是。
我正在做一个小项目,将Salesforce连接到我的Raspberry Pi。当一个高优先级案例来自Salesforce的客户端时,我们的目标是制作一个灯(Think a beacon,siren-like light)闪烁。目前,客户通常会向某个地址发送电子邮件,这会创建一个案例。它转到“未分配的队列”并通过电子邮件向团队发送此案例,等待分配。
Salesforce使用REST,因此我需要能够让Pi接受JSON,以便它可以轻松了解Salesforce希望它做什么。
目前,我想我赢了一半的战斗。我有一个在Pi上运行的Web服务器(Lighttpd),它托管一个索引页面和一个Python脚本。我也使用Python包装器,它允许我从我安装的Telldus程序轻松运行命令。该程序控制我已连接的USB射频发射器,它与射频插座配对,射频插座连接到主电源,并连接有灯。
所以Python脚本叫做power.py,可以用URL变量控制,所以如果我去power.py?device=1&power=on&time=10&password=hunter2打开设备1持续10秒我还在索引页面上创建了一个POST表单,它只是POSTS到python脚本,并以与使用URL变量相同的方式运行它。一切都很好。
所以我需要做的就是将它连接到Salesforce。我想使用REST和JSON,这样如果我从Salesforce转移到另一个CRM程序,它将能够轻松地适应和接收来自新地方的指令。
我发布了我在这里使用的Python脚本: https://github.com/7ewis/RemotePiControl/blob/master/power.py
目前Pi不允许离开本地网络,因此我需要以某种方式开发一种发送JSON命令的方法,并使用正确的变量等接收并转换它们。我不是程序员,我只是接触到来自黑客攻击和探索的语言。因此,为什么我需要一些指导。
我之前从未使用过REST或JSON,那么我需要做些什么来实现这个目标呢?
答案 0 :(得分:3)
似乎将Flask http://flask.pocoo.org添加到您的Raspberry Pi Web服务器将是一个很好的举措。它允许运行服务器端python以响应JQuery ajax(和常规)请求。在这里查看几个例子:
http://flask.pocoo.org/docs/patterns/jquery/
此堆栈溢出问题:how can I use data posted from ajax in flask?
Flask的启动和运行非常简单,并且很高兴与许多服务器合作,包括Lighttpd。编写RESTful flask也是一个非常合理的命题,请参阅:http://blog.miguelgrinberg.com/post/designing-a-restful-api-with-python-and-flask
此外,很多人已经在树莓派上使用了烧瓶 - 这样可以帮助您顺利开展和运行:http://mattrichardson.com/Raspberry-Pi-Flask/
祝你好运!答案 1 :(得分:0)
首先不要使用直接将结果打印到CGI的Python脚本。你将永远调试它。
使用像Flask这样的轻量级框架。你可以做一些简单的事情
from flask import Flask
application = Flask(__name__)
@application.route('/', methods=['GET', 'POST'])
def index():
if request.method == 'POST':
# use Flask's build in json decoder
the_data = request.get_json()
# then do something with the data
return "This was a POST request, how interesting..."
else:
# request was GET rather than POST, so do something with else
return "Hello World!"
在此处了解如何配置Flask与Lighttpd一起运行http://flask.pocoo.org/docs/deploying/fastcgi/
如果你想测试这个,你可以编写另一个Python脚本来将JSON数据发送到你的服务器(我建议查看这个http://www.python-requests.org/en/latest/的Python请求库),或者你可以使用HTTP手动执行此操作请求构建器,例如用于Firefox的HTTPRequester(https://addons.mozilla.org/en-US/firefox/addon/httprequester/)