这是一个odoo与树莓派结合的小实验。
实验目标:
- 试验树莓派GPIO接口的开关量输入。
- 试验树莓派与odoo通讯。
实验方法:
理想的方法:按一个按钮,树莓派检测按钮动作,然后写一条信息给odoo。
现实的方法:由于没有买按钮,按钮动作就用插拔电线来实现。然后给odoo添加一个产品,产品名称为当前系统时间,以此来验证树莓派与odoo的通讯。
基础知识与必备软件:
树莓派GPIO的知识就不说了,网上多的是。
树莓派与odoo的通讯,在python的程序里,可以使用xml rpc,官方文档在这里:https://www.odoo.com/documentation/master/api_integration.html
如果你在https://pypi.python.org/pypi 搜索odoo,你会发现有个东西叫:OdooRPC
OdooRPC is a Python module providing an easy way to pilot your Odoo servers through RPC.
用这个库可以极大的简化odoo xml rpc编程。非常不错。不过性能挺慢的。
硬件线路:
GPIO 11引脚设置为输出,用来点亮一个LED。
GPIO 13引脚设置为输入,检测按钮动作。(这里我们用电线的插拔来代替)
接线方式参考下图
没有画电路图软件,就不画图了,大家稍微看一下就好了。
程序:
import odoorpc import time import RPi.GPIO as GPIO odoo = odoorpc.ODOO('192.168.1.200') odoo.login('odoo8','admin','1') product = odoo.env['product.template'] GPIO.setmode(GPIO.BOARD) GPIO.setup(11,GPIO.OUT) GPIO.setup(13,GPIO.IN) def add_new_product(): timeformat='%Y-%m-%d %X' p_name = time.strftime(timeformat,time.localtime()) product.create({'name':p_name}) GPIO.output(11,False) while True: in_13 = GPIO.input(13) if not in_13: GPIO.output(11,True) while not in_13: in_13 = GPIO.input(13) GPIO.output(11,False) add_new_product()
如果有单片机基础,就能很快看明白这个程序。
总觉得RPi.GPIO这个库,应该有更好的方式来检测下降沿信息。等我再研究研究。
实验结果:
过段时间,会做一个更大的课题,比这个大很多。敬请期待!