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

新书《前端架构:从入门到微前端》

《前端架构:从入门到微前端》是一本围绕前端架构的实施手册,从基础的架构规范,到如何设计前端架构,再到采用微前端架构拆分复杂的前端应用。本书通过系统地介绍前端架构世界的方方面面,来帮助前端工程师更好地进行系统设计。

前端架构包含以下五部分内容:

  • 设计:讲述了架构设计的模式,以及设计和制定前端工作流。
  • 基础:通过深入构建系统、单页面应用原理、前端知识体系等,来构建出完整的前端应用架构体系。
  • 实施:通过与代码结构的方式,介绍如何在企业级应用中实施组件化架构、设计系统和前后端分离架构。
  • 微前端:引入6种微前端的概念,以及如何划分、设计微前端应用,并展示了如何实现这6种微前端架构。
  • 演进:提出更新、迁移、重构、重写、重新架构等架构演进方式,来帮助开发人员更好地设计演进式架构。
comment

Feeds

RSS / Atom

最近文章

关于作者

Phodal Huang

Developer, Consultant, Writer, Designer

ThoughtWorks 高级咨询师

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

开源深度爱好者

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

联系我: h@phodal.com

微信公众号: 与我沟通

标签