Blog

Blog

PHODAL

Arduino显示Bamboo持续集成的状态

看到已经有其他组有了这个东西,于是便动手做了一个,做起来也挺简单的~~

基本原理

因为暂时没有RPI,于是就用Arduino+Mac Mini动手做了一个,原理上就是

  1. 用Python获取Bamboo的状态
  2. 用Python的串口通讯将构建状态发送给Arduino
  3. Arduino显示这些状态

获取状态

官方上提供的API,大致就是获取这个URL的XML

http://bamboo.example.com/rest/api/latest/result/PROJECT_NAME

接着用Python解析,获取其中的状态,发送给Arduino。于是就有了

import requests
import xml.etree.cElementTree as ET
import serial
import time

url = 'http://bamboo.example.com/rest/api/latest/result/PROJECT_NAME'
s = serial.Serial(port='/dev/tty.usbmodem1451', baudrate=9600)
while(True):
    lastest = requests.get(url)
    if lastest.status_code == 200:
        root = ET.fromstring(lastest.text)
        print root.attrib["state"]
        if str(root.attrib["state"]) == "Successful":
                s.write('S')
        elif str(root.attrib["state"]) == "Fail":
                s.write('F')
        else:
                s.write('U')

    time.sleep(60)

当state是成功的时候,发送一个S,失败的时候发送一个F,其他状态就是闪烁。

显示状态

同样对就于上面的代码,也就有了Arduino的代码。当收到的字符是F的时候,便让灯灭,如果是S的时候,便点亮LED,如果是未知的状态,便闪烁。

int led = 13;

void setup() {                
  pinMode(led, OUTPUT);  
  Serial.begin(9600);  
}

void loop() {
  String content = "";
  char character;

  while(Serial.available()) {
      character = Serial.read();
      content.concat(character);
  }

  Serial.println(content);
  if (content != "") {
    if(content == "U"){
       digitalWrite(led, HIGH);   
       delay(1000);               
       digitalWrite(led, LOW);    
       delay(1000);    
    }else if(content == "S"){
       digitalWrite(led, HIGH);   
       delay(1000);  
    }else if( content == "F"){
       digitalWrite(led, LOW);   
       delay(1000); 
    }      
  }
}

最后的代码可见https://github.com/gmszone/bamboo_py

其他

Python的依赖库有

  • requests
  • lxml
  • pyserial

如果clone下了代码可以用

sudo pip install -r  requirements.txt

安装依赖。


或许您还需要下面的文章:

关于我

Github: @phodal     微博:@phodal     知乎:@phodal    

微信公众号(Phodal)

围观我的Github Idea墙, 也许,你会遇到心仪的项目

QQ技术交流群: 321689806
comment

Feeds

RSS / Atom

最近文章

关于作者

Phodal Huang

Engineer, Consultant, Writer, Designer

ThoughtWorks 技术专家

工程师 / 咨询师 / 作家 / 设计学徒

开源深度爱好者

出版有《前端架构:从入门到微前端》、《自己动手设计物联网》、《全栈应用开发:精益实践》

联系我: h@phodal.com

微信公众号: 最新技术分享

标签