《树莓派开发实战(第2版)》——2.11 在Mac上共享树莓派的屏幕
本节书摘来自异步社区《树莓派开发实战(第2版)》一书中的第2章,第2.11节,作者[英]Simon Monk(蒙克),韩波 译,更多章节内容可以访问云栖社区“异步社区”公众号查看。
2.11 在Mac上共享树莓派的屏幕
面临问题
你已经建立了VNC,但是希望共享树莓派的屏幕,就像共享网络中的其他Mac OS X设备那样。
解决方案
首先,按照2.8节介绍的方法安装VNC。同时,你还要看完2.10节才行。
然后,输入下列命令。
$ sudo nano /etc/avahi/services/rfb.service
然后,将下列内容粘贴到编辑器中。
<?xml version="1.0" standalone='no'?>
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
<name replace-wildcards="yes">%h</name>
<service>
<type>_rfb. _tcp</type>
<port>5901</port>
</service>
</service-group>
现在,输入下列命令。
$ sudo /etc/init.d/avahi-daemon restart
这时,你将看到如图2-12所示的Share Screen选项。当提示输入密码时,请输入为VNC所设置的密码,而非树莓派的密码。
进一步探讨
利用本节介绍的方法,可以简化分享树莓派屏幕的过程。
如果网络中有多个树莓派的话,就需要分别给它们取不同的名称,以便能够在网络中标识它们(见2.4节)。
如果你使用的是Windows或Linux系统,那么还可以利用VNC来连接树莓派(见2.8节)。
参考资料
本节改编自http://bit.ly/HRnOBv 提供的教程,该教程出自Matt Richardson和Shawn Wallace所著的Getting Started with Raspberry Pi(O’Reilly)。
文章
数据安全/隐私保护 · 数据格式 · XML · Linux · Windows · iOS开发 · MacOS
2017-05-02
《树莓派开发实战(第2版)》——2.11 在Mac上共享树莓派的屏幕
本节书摘来异步社区《树莓派开发实战(第2版)》一书中的第2章,第2.11节,作者:【英】Simon Monk(蒙克),更多章节内容可以访问云栖社区“异步社区”公众号查看。
2.11 在Mac上共享树莓派的屏幕
面临问题你已经建立了VNC,但是希望共享树莓派的屏幕,就像共享网络中的其他Mac OS X设备那样。
解决方案首先,按照2.8节介绍的方法安装VNC。同时,你还要看完2.10节才行。
然后,输入下列命令。
$ sudo nano /etc/avahi/services/rfb.service```
然后,将下列内容粘贴到编辑器中。
<?xml version="1.0" standalone='no'?>%h
<type>_rfb. _tcp</type>
<port>5901</port>
`现在,输入下列命令。
$ sudo /etc/init.d/avahi-daemon restart```
这时,你将看到如图2-12所示的Share Screen选项。当提示输入密码时,请输入为VNC所设置的密码,而非树莓派的密码。
<div style="text-align: center"><img src="https://yqfile.alicdn.com/c70c2b888825b59933e7783d4b2e820c4bf9a97e.png" width="" height="">
</div>
进一步探讨
利用本节介绍的方法,可以简化分享树莓派屏幕的过程。
如果网络中有多个树莓派的话,就需要分别给它们取不同的名称,以便能够在网络中标识它们(见2.4节)。
文章
数据安全/隐私保护 · 数据格式 · XML · iOS开发 · MacOS
2017-05-02
树莓派使用实例之:2 Pi R
很多人都对树莓派的硬件 hack 功能(译注:就是用户可以自己发挥想像力,把树莓派设计成自己想要的机器)感兴趣,而我看中的一点是树莓派的低耗电功能,我可以用它来代替现在在用的 Linux 服务器。在以前的文章中我已经介绍过如何用树莓派代替这些服务器来管理我的啤酒冰箱,以及我在澳大利亚托管的一台树莓派。托管树莓派之后,我开始思考我正在使用的服务器的单点故障问题,并且考虑着手解决它。当你看到文章标题里的“2 Pi R”,你也许会想到圆周长计算公式(C = 2PiR,Pi 为圆周率,R 为半径),但在本文中,“R”的意思是“冗余(redundancy)”。当然,一块树莓派并不能实现冗余,至少需要两块。下面我将介绍如何用两块树莓派实现冗余。
本文将建立一个底层框架,为俩树莓派实现冗余提供基础服务,首先我要用 GlusterFS 建立一个集群网络文件系统。在之后的文章中,我还会介绍如何利用共享存储来建立其他冗余服务。注意,虽然本文使用的是树莓派,但下面的配置操作同样适用于其他硬件。
配置俩树莓派
首先从树莓派官网下载最新的 Linux 发行版,并安装到两块 SD 卡中。将树莓派接到电视机上,然后按照文档提示选择内核镜像并启动系统,确认一下 SSH 服务有没有启动(默认情况下 SSH 应该是开机启动的)。你可以使用 raspi-config 命令来增加根分区空间,以便能充分利用 SD 卡的容量。确认系统正常工作、SSH 正常启动后,我可以过程访问它了。我将树莓派与电视机断开,并连到交换机上,重启系统,没有显示界面。
默认情况下,Raspbian 会通过 DHCP 获取自己的网络信息,但是在设置冗余服务时,我们希望树莓派每次开机都使用同一个 IP 地址。在我的环境中,我设置了我的 DHCP 服务器,它会在树莓派启动时为它们分配固定的 IP 地址。而你可以编辑 /etc/network/interfaces 文件:
iface eth0 inet dhcp
修改成:
auto eth0
iface eth0 inet static
address 192.168.0.121
netmask 255.255.255.0
gateway 192.168.0.1
当然,要将上面的参数修改成你自己的参数,确保每个树莓派使用不同的 IP 地址。我把两个树莓派的主机名都改了,便于在(通过 SSH)登录的时候区分它们。怎么改主机名呢?以 root 权限编辑 /etc/hostname 文件。最后重启系统,确认树莓派使用了正确的网络配置和主机名。
配置 GlusterFS 服务器
GlusterFS 是一个用户态的集群文件系统,我选择它,是因为它配置共享网络文件系统很方便。首先选一个树莓派作为主设备(master)。在主设备上你需要做一些初始化操作,完成后,它们会自动执行故障转移。下面是我架设的环境:
Master hostname: pi1
Master IP: 192.168.0.121
Master brick path: /srv/gv0
Secondary hostname: pi2
Secondary IP: 192.168.0.122
Secondary brick path: /srv/gv0
在开始之前,登入这两个树莓派,然后安装 glusterfs-server 软件包:
$ sudo apt-get install glusterfs-server
GlusterFS 将数据保存在一些被称为“块”的设备中。一个“块”是一个系统路径,由你指定给 gluster 使用。GlusterFS 会将所有“块”组合成一个存储卷,给客户端使用。GlusterFS 会将文件的数据分割成多份,保存在不同的“块”中。所以虽然一个“块”看起来就是一个普通的路径,你最好不要在树莓派中直接操作它,而应该通过客户端访问 GlusterFS 服务,让 GlusterFS 操作。本文中我在两个树莓派中都新建一个 /srv/gv0 目录作为 GlusterFS 的“块”:
$ sudo mkdir /srv/gv0
在我的环境中,我将 SD 卡上的根文件系统共享出来,而你可能需要共享更大的存储空间。如果是这样的话,在两块树莓派上都接上 USB 硬盘,格式化后挂载到 /srv/gv0 上。编辑下 /etc/fstab 文件,确保系统每次启动时都会把你的 USB 硬盘挂载上去。两个树莓派上的“块”不一定需要有相同的名字或者相同的路径名称,但是把它们设置为相同的值也没什么坏处。
配置好“块”的路径,安装好 glusterfs-server 软件包,确认两个树莓派都正常工作,然后登入被你设为主设备的树莓派,输入“gluster peer probe”命令,将次设备加入到集群中。在我的环境中,我用 IP 地址表示第二个节点,如果你比较有个性,并且有设置过 DNS,你也可以用主机名表示这个节点。
pi@pi1 ~ $ sudo gluster peer probe 192.168.0.122
Probe successful
目前为止,我的 pi1 (192.168.0.121) 信任 pi2 (192.168.0.122),我可以建立一个存储卷,名字都想好了:gv0。在主设备端运行命令“gluster volume create”:
pi@pi1 ~ $ sudo gluster volume create gv0 replica 2 192.168.0.121:/srv/gv0 192.168.0.122:/srv/gv0
Creation of volume gv0 has been successful. Please start
the volume to access data.
这里稍微解释一下命令的意思。“gluster volume create”就是新建一个卷;“gv0”是卷名,这个名称将会在客户端被用到;“replica 2”表示这个卷的数据会在两个“块”之间作冗余,而不是将数据分割成两份分别存于两个“块”。这个命令保证了卷内的数据会被复制成两份分别保存在两个“块”中。最后我定义两个独立的“块”,作为卷的存储空间:192.168.0.121 上的 /srv/gv0 和 192.168.0.122 上的 /srv/gv0。
现在,卷被成功创建,我只需启动它:
pi@pi1 ~ $ sudo gluster volume start gv0
Starting volume gv0 has been successful
然后我可以在任何一个树莓派上使用“volume info”命令来查看状态:
$ sudo gluster volume info
Volume Name: gv0
Type: Replicate
Status: Started
Number of Bricks: 2
Transport-type: tcp
Bricks:
Brick1: 192.168.0.121:/srv/gv0
Brick2: 192.168.0.122:/srv/gv0
配置 GlusterFS 客户端
卷已启动,现在我可以在一个支持 GlusterFS 的客户端上,将它作为一个 GlusterFS 类型的文件系统挂载起来。首先我想在这两个树莓派上挂载这个卷,于是我在两个树莓派上都创建了挂载点,并下面的命令把这个卷挂载上去:
$ sudo mkdir -p /mnt/gluster1
$ sudo mount -t glusterfs 192.168.0.121:/gv0 /mnt/gluster1
$ df
Filesystem 1K-blocks Used Available Use% Mounted on
rootfs 1804128 1496464 216016 88% /
/dev/root 1804128 1496464 216016 88% /
devtmpfs 86184 0 86184 0% /dev
tmpfs 18888 216 18672 2% /run
tmpfs 5120 0 5120 0% /run/lock
tmpfs 37760 0 37760 0% /run/shm
/dev/mmcblk0p1 57288 18960 38328 34% /boot
192.168.0.121:/gv0 1804032 1496448 215936 88% /mnt/gluster1
如果你是一个喜欢钻研的读者,你可能会问了:“如果我指定了一个 IP 地址,如果192.168.0.121当机了,怎么办?”。别担心,这个 IP 地址仅仅是为了指定使用哪个卷,当我们访问这个卷的时候,卷内的两个“块”都会被访问到。
当你挂载好这个文件系统后,试试在里面新建文件,然后查看一下“块”对应的路径:/srv/gv0。你应该可以看到你在 /mngt/gluster1 里创建的文件,在两个树莓派的 /srv/gv0 上都出现了(重申一遍,不要往 /srv/gv0 里写数据):
pi@pi1 ~ $ sudo touch /mnt/gluster1/test1
pi@pi1 ~ $ ls /mnt/gluster1/test1
/mnt/gluster1/test1
pi@pi1 ~ $ ls /srv/gv0
test1
pi@pi2 ~ $ ls /srv/gv0
test1
你可以在 /etc/fstab 上添加下面一段,就可以在系统启动的时候自动把 GlusterFS 的卷挂载上来:
192.168.0.121:/gv0 /mnt/gluster1 glusterfs defaults,_netdev 0 0
注意:如果你想通过其他客户端访问到这个 GlusterFS 卷,只需要安装一个 GlusterFS 客户端(在基于 Debian 的发行版里,这个客户端叫 glusterfs-client),然后接我上面介绍的,创建挂载点,将卷挂载上去。
冗余测试
现在我们就来测试一下这个冗余文件系统。我们的目标是,当其中一个节点当掉,我们还能访问 GlusterFS 卷里面的文件。首先我配置一个独立的客户端用于挂载 GlusterFS 卷,然后新建一个简单的脚本文件放在卷中,文件名为“glustertest”:
#!/bin/bash
while [ 1 ]
do
date > /mnt/gluster1/test1
cat /mnt/gluster1/test1
sleep 1
done
这个脚本运行无限循环并每隔1秒打印出系统时间。当我运行这个脚本时,我可以看到下面的信息:
# chmod a+x /mnt/gluster1/glustertest
root@moses:~# /mnt/gluster1/glustertest
Sat Mar 9 13:19:02 PST 2013
Sat Mar 9 13:19:04 PST 2013
Sat Mar 9 13:19:05 PST 2013
Sat Mar 9 13:19:06 PST 2013
Sat Mar 9 13:19:07 PST 2013
Sat Mar 9 13:19:08 PST 2013
我发现这个脚本偶尔会跳过1秒,可能是 date 这个命令并不是很精确地每隔1秒钟打印一次,所以偶尔会出现输出时间不连惯的现象。
当我执行这个脚本后,我登入一个树莓派并输入“sudo reboot”重启这个设备。这个脚本一直在运行,如果出现输出时间不连惯现象,我不知道还是不是上面说的偶然现象。当第一个树莓派启动后,我重启第二个树莓派,确认下这个系统有一个节点丢失后,我的程序仍然能正常工作。这个冗余系统配置起来只需要几个命令,如果你需要一个冗余系统,这是个不错的选择。
现在你已经实现了 2 Pi R 组成的冗余文件系统,在我的下篇文章中,我将会加入新的冗余服务,将这个共享存储系统好好利用起来。
原文发布时间为:2014-02-21
本文来自云栖社区合作伙伴“Linux中国”
文章
存储 · Linux · 网络安全 · 网络协议 · Shell
2017-05-02
树莓派 之 用Samba共享文件
在树莓派上:
sudo apt-get install samba samba-common-bin
sudo nano /etc/samba/smb.conf
找到 ############ Misc ############
添加(可以提升文件传输速度,有线连接情况下约10MB/s):
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=65536 SO_SNDBUF=65536
找到======================= Share Definitions =======================
把
read only = yes
改为:
read only = no
添加用户pi并设置密码
sudo smbpasswd -a pi
重启:
sudo service samba reload
Windows上(win10):
此电脑 > 映射网络驱动器 > 输入 \raspberrypi\pi
文章
Windows · 数据安全/隐私保护 · API
2016-09-16
带你读《面向Arduino用户的树莓派实用指南:物联网应用开发》之一:采购清单
电子与嵌入式系统设计译丛点击查看第二章点击查看第三章面向Arduino用户的树莓派实用指南:物联网应用开发Raspberry Pi for Arduino Users: Building IoT and Network Applications and Devices
[美] 詹姆斯·R.斯特里克兰(James R. Strickland) 著梁捷 曹建 胡训强 译
第1章
采 购 清 单本章将用较短的篇幅介绍开始学习前所要准备的电子元器件。本书中并未涉及很多硬件项目,并且很多软件项目也基于相同的硬件实现。如果你在阅读本书前一直使用Arduino,那么你应该有想要连接到树莓派的项目。阅读更多的类似“点亮7段LED”的教程真的有必要吗?你可能已经很了解Arduino的主要内容,比如ATmega328P、74LVC-245、LED阵列、电阻和连接线等。假设你已经准备好了工具—数字万用表、线切割器和剥皮器、温控焊台等。如果你的Arduino经验主要是关于连接各种电路板,那么除了购买电子元器件外,你可能还要读一读之前我写过的一本书—《Junk Box Arduino:Ten Projects in Upcycled Electronics》(Apress出版),那本书主要涵盖了在线Arduino教程和基础电子知识方面的内容。在本书中,我假设你已经掌握Arduino和基础电子知识了。树莓派是低成本、高性能的32位或64位单板计算机,可以运行Linux的一个发布版本(称为Raspbian),也可以运行完整的桌面系统和现代网页浏览器(Chromium)。本书将介绍3B+型树莓派(以1.4GHz运行的四核64位版本)和Zero W型树莓派(以1GHz运行的单核32位版本),它们可以通过USB、HDMI、802.3以太网、蓝牙和WiFi连接现代外设。
1.1 树莓派
你需要一个树莓派—3B+型或者Zero W型,当然,使用3B型树莓派也可以。
1.1.1 3B+型树莓派
3B+型树莓派是目前性能最好的树莓派,如图1-1所示。3B+型树莓派采用运行频率为1.4GHz的四核、64位的Arm Cortex-A53作为CPU内核,具有容量为1GiB的运行频率为900MHz的RAM,还带有遵循1000BASE-T 802.3的以太网(带宽300Mbit/s)组件、遵循802.11ac协议的2.4GHz的WiFi组件以及4.2版本的蓝牙组件。它在microSD卡上存储数据,并具有1个HDMI接口、1个3.5mm模拟音视频插孔、4个USB 2.0接口、1个1000BASE-T以太网接口以及1个40针GPIO接头(引脚已置入其中),还有分别连接相机和显示器的串行接口。
下面详细介绍树莓派的主要部件。1.四核处理器在3B+型树莓派的Broadcom 2837B0芯片中,内置了4个CPU(中央处理器),它们可以一次执行4个线程或进程(以后再讨论)。通常,在多核CPU中,每个CPU有自己的一级(L1)缓存,但同时共享二级(L2)缓存。这意味着,每个CPU有自己独占的容量小却速度快的内存空间(L1缓存),L1缓存不与外部存储器直接通信,而是与L2缓存通信,L2缓存依次由系统RAM更新数据。缓存用来做什么?设置缓存是为了提高运行速度。从距离CPU远近的角度,主存比缓存更远一点(几毫米),所以与CPU通信必须经过更多的电子器件,每一个阶段都增加了一点延迟。如果CPU中内置了RAM,那么就意味着CPU不必等待系统RAM更新数据。当CPU忙于执行命令时,内置RAM还可以帮助CPU读取下一条命令。当程序不是顺序执行时(跳转命令),这个过程将变得很复杂,考虑并且处理这些有关缓存的工作,是CPU制造商的主要任务。2. 64位寄存器每个寄存器(CPU工作过程中,其内部用来存储数据的区域)至少是64位或者8个字节宽(字节只是描述位宽的一种数量表示。在20世纪七八十年代,你可能听说过计算机科学家谈论12位和16位为一字节,但现在字节已被标准化,1字节只为8位)。从技术上来说,这是基本需求,尽管至系统RAM的接口位宽也可能是64位。结果呢?每个核可以执行64位的单条命令。如果命令是与RAM交换数据,你可以一次移动8位不相关的字节。64位的真正价值是对64位值进行数学运算。如果需要对64位值进行数学运算,而CPU无法处理64位数值,则必须写很多额外的代码来将数值转换为32位,甚至8位,之后才能进行数学运算,然后再把结果转换为64位。执行命令需要时间,那些运行在64位数据上的命令能节省时间。3. ARM Cortex-A53ARM Cortex-A53是CPU内核的一种类型。ARM(Acorn RISC Machine)是根据CPU内核定义的一个大家庭,从ARM派生的所有芯片都是为英国剑桥Acorn公司生产的Archi-medes个人计算机所设计的。后来,这些芯片由ARM Holdings公司和剑桥Acorn公司设计,授权给众多芯片制造商生产,包括树莓派系统芯片的制造商Broadcom公司。为了完善Arduino生态圈,Atmel公司(现在叫作Micorchip公司,它是用于Ardunio的ATmeg微控制器的制造商)也开始生产基于ARM的产品。几乎所有的平板电脑和手机中都装有ARM内核,此外,众多嵌入式设备中也装有ARM内核。ARM内核高效省电,这对于电池寿命至关重要。ARM内核种类繁多。其中,A53基于v8-A架构,有1~4个内核,向下兼容32位内核ARM v7,这无疑是树莓派基金会选择它的原因。与之前的版本相比,它能更好地处理浮点数数学运算,计算能力也更强。A53主要用于平板电脑和手机中。3B+型树莓派中的BCM2837B0还内置了Broadcom VideoCore IV GPU,事实上,GPU拥有比ARM更多的芯片空间,和台式计算机中的GPU完全一样,它也用于图形加速和视频流解码。4.网络现在,802.3 1000BASE-T以太网是有线以太网最常见的形式。它在树莓派和五类双绞线之间的传输速度高达300Mbit/s。如果你在过去10年中使用过以太网,那么你可能已经用到了这种1000BASE-T类型的布线(从10BASE-T、100BASE-T发展到1000BASE-T是巨大的进步,相比之下,10BASE-2实在是糟糕透了)。802.11 ac是目前WiFi的标准。如果有一个802.11ac无线接入点(WAP),理论上传输速度可以达到1.3Gbit/s,尽管树莓派的实际速度只有75~100Mbit/s。我没有这样的WAP,所以不能以个人经验评价它的速度,但可以说它的速度足够快了。5. GPIO引脚尽管树莓派上的GPIO引脚的电平严格限制在3.3V,但是具有许多和Arduino上的GPIO引脚相同的功能。如果在树莓派的GPIO接头上用上5V电压,则会损毁芯片本身的内部线路(也可能造成更多的破坏)。它们没有任何保护或限流措施。3B+型树莓派已经在GPIO接头内部焊接好了引脚,这一点十分重要,当你感觉在拥挤的印刷电路板上进行焊接不舒服时,就能体会到这一点。6.摄像头和显示器串行接口摄像头和显示器串行接口可以插入排线,连接到官方的树莓派专用摄像头和显示器上。7. Gibibyte和GigabyteJEDEC标准定义了描述内存大小的单位:千字节(KB)为1024B,兆字节(MB)为1024KB,千兆字节(GB)为1024MB。在20世纪90年代,硬盘制造商曾利用十进制的千兆字节(1000MB)代替二进制的千兆字节(1024MB),这种行为存在数字欺骗,导致了诉讼。为了解决这个问题,在ISO80000-13中,ISO/IEC对显式二进制(默认情况下)单元集进行了标准化:kibibyte(KiB)、mebibyte(MiB)、gibibyte(GiB)等。所以,你的microSD卡将以十进制千兆字节出售,其容量标称略带欺骗意味,但你的RAM(感谢JEDEC标准)是按照二进制千兆字节出售。在本书中,我们将使用ISO/IEC标准。
1.1.2 为何购买3B+型树莓派
如果你打算在树莓派上做很多开发,并且价格符合预算,相较于用Zero W型树莓派来实现各种项目,还是建议你选择3B+型树莓派。在编写本书时,3B+型树莓派才刚刚面世,所以大部分代码原型实际上是在它之前的型号上完成的,只是稍微慢一点。即使如此,更快的速度和更大的RAM也会使编译变得更愉快。
1.1.3 Zero W型树莓派
如果你的预算很紧张,或者你暂时不想花费30多美元购买树莓派,那么你可以选购Zero W型树莓派,如图1-2所示。Zero W型树莓派价格不到3B+型树莓派的一半(大约为10美元),但可以在其上执行本书中的所有项目。我已经测试了这本书中的所有项目,即使你对书中项目做了相应的修改,也都可以在Zero W型树莓派上运行。Zero W型树莓派是最便宜的一款,内置了蓝牙和802.11n WiFi组件,采用了与之前的型号中相同的BCM2835处理器芯片。BCM2835处理器是一个单核、32位ARM、1GHz主频、带有视频IV GPU的处理器。Zero W型树莓派中装有容量为512MiB、频率为600MHz的内存,这是从原来的树莓派基础上超频得到的,基本稳定。还有一个较早的ARM内核版本ARM11,具有ARMV6架构而不是ARMV8-A。
Zero W型树莓派与3B+型树莓派在外设方面主要存在两个区别—Zero W型树莓派没有1000BASE-T以太网插孔或IC,并且只有一个微型Micro-B型USB(Mini-USB)接口,除此之外它们的外设都相同。Zero W型树莓派出厂时没有GPIO引脚。这意味着如果你想要普通的GPIO引脚,必须依据电路板上的焊接孔自己焊接。为了后面使用方便,你也可以这样做—将Zero W型树莓派插进一个分线板,并焊接了一个有2×20引脚的分线板,如图1-2左下角所示(这个分线板可以在Adafruit购买:https://www.adafruit.com/product/1979 )。由于接线板上的孔是通孔并且是双面的,我把引脚放在下面,并焊接在板的上面。这让我的Zero W型树莓派和分线板插座直接连接起来,而不需要用到带状电缆。
1.1.4 为何购买Zero W型树莓派
综上所述,Zero W型树莓派价格低廉。如果你想通过本书找到一种有效、便宜的方法来把你的小工具连接到网上,选择Zero W型树莓派是最便宜的。如果你选择了Zero W型树莓派,可能需要用到一些适配器,而使用3B+型树莓派则不需要。关于适配器我们将在1.1.5节中介绍。
1.1.5 适配器
从图1-2中还可以看到,为了与键盘、鼠标和监视器一起使用,需要为Zero W型树莓派配置适配器。最上面的是一个Mini-HDMI转HDMI的适配器,这可以让你用标准的HDMI电缆连接显示器和Zero W型树莓派。下面是USB OTG主机电缆,一端连接到Zero W型树莓派的Micro-B OTG插座,另一端是标准的USB的母插座,可用于连接键盘。确保你得到的是OTG电缆,而不是Mini-USB电缆,它们不是同一个连接器。我把键盘连接到OTG电缆上,把鼠标连接到键盘上。如果你想完成第11章的项目,还需要一个USB集线器和一个microSD转USB的适配器。这些都是常见的器材,比较容易获得。
1.1.6 其他型号的树莓派
3B型树莓派(没有“+”)同样适用于这些项目。其他的树莓派应该也可用。理论上,如果你把一个WiFi网卡插入一个2012年出厂的树莓派,也可以完成本书中的所有项目,但速度会比Zero W型树莓派慢。虽然Zero W型树莓派的处理器和老型号的树莓派的处理器一样,但是它的运行速度更快,并且内存是早期树莓派的两倍,这些应该起作用。因为我没有在其他的树莓派上测试过书中的项目,所以不能说它们都适用。假设你已经用过Arduino,准备开始学习使用树莓派,这样,你需要购买新的树莓派。此外,第一代的树莓派有一些问题,特别是在机载电源和SD卡的损坏方面,这有时会带来不好的体验。从2012年起,树莓派变得越来越好。插上USB设备而导致树莓派崩溃(主要因为有电流波动)的日子已经一去不复返了,强烈推荐大家使用树莓派。还有一点也很重要:在2代树莓派之前,树莓派都有26个GPIO引脚。引脚数量不同,处理器芯片的引脚也不同。如果你使用2代树莓派之前的型号,本书中的电路图将不适用,并且许多当下的树莓派外围设备(包括所有HAT)将不能连接使用。建议至少选用Zero W型树莓派。
1.2 树莓派的GPIO分线板
除了以上设备外,你还需要一个树莓派GPIO分线板,如图1-3所示。当然,如果没有分线板,你也可以选用母转公预制跳线来引出引脚,但不推荐这种做法。我们将使用树莓派上几乎所有的引脚,奇怪的连接状况会带来很大困扰。GPIO分线板是树莓派的专用器件,能够让你轻松地把树莓派上的GPIO引脚连接到面包板。通常,需要使用一个有40个引脚的电缆将它连接到树莓派。你可能很想和我一样,使用一个旧的PATA(并口)40引脚电缆和一些引脚来连接GPIO,但不幸的是,它不起作用。通常,PATA20号引脚虽然接上了但并不与电路连接,可我们需要20号引脚连接上电路。这一部分没有很好的替代品,虽然随着树莓派的大量使用,这种连接电缆应该不少见。分线板有多种走线排列方式。不推荐使用直型板,因为它们把丝带电缆放在面包板的一侧或另一侧,而且经常挡在面包板上。
我在本书撰写时使用了一个分线板。建议使用T型板,如图1-3所示。你可以买到组装好的或是未组装的分线板。对于未组装的分线板,必须把插座和电缆头焊接到分线板上。显然,如果你不想焊接未组装的80个离得很近的引脚,还是买一个组装好的分线板吧。有一个需要考虑的重要内容—对于现代树莓派,如3B+型树莓派和Zero W型树莓派,需要40个引脚的分线板,而不是26个引脚的,可在分线板的说明文档中看到相关信息。本书使用40个引脚的分线板。
1.3 5V USB微型电源
图1-4显示了为树莓派设计的5V USB微型电源。至少对于项目开发而言,在所有供电方案中,建议使用这一电源。
我用过手机充电器和USB集线器,还有树莓派的其他电源,这些供电方案都是很可靠的。插入错误的键盘时,键盘会无故抖动,停电可能会损坏microSD卡,这些故障现在已经不会出现,而你第一次知道这些故障存在,可能是因为出现了在系统启动时死机或者发出了系统警告等情况。总之,购买一个好的电源是值得的。其他电源选项如果拥有一个台式机电源,你可能会尝试用它为树莓派供电。将用于电源供电的Micro-BM(也叫作MicroUSB)连接器插入树莓派,它也应该能工作。我不推荐将电源先连接到面包板上,然后将树莓派的5V供电线连接到面包板。我尝试过这样做,树莓派可以启动并正常运行,但会绕过内置在树莓派供电模块中的保险丝和其他电源保护电路。我的台式电源是改装的PC ATX电源,最大可输出10A。当绕过树莓派供电模块时,如果出现短路,树莓派中没有任何电路可以承受这么大的电流,所以,一定要使用树莓派板载的供电模块。你可能想从桌面计算机或拥有独立供电的USB集线器为你的树莓派供电。基于上述原因,Adafruit甚至出售能够供电的USB集线器。这一供电方案也能工作。如果根据规范生产且连线正确,USB 1.0和2.0端口最大可以提供500mA电流。对于Zero W型树莓派,这可能就足够了,但不一定适用于其他型号的树莓派。大多数USB电缆不能承载大电流,并且它们的电阻相当高。带有沉重载荷的高电阻电缆会将电压降到5V以下,会使你的树莓派性能下降(老旧的树莓派不会降低性能,而是直接被毁坏)。你可能还想用iPad的大功率充电器连接一个标准的USB电缆来为树莓派供电。原来我就是这样用的,后来我发现,把万用表跨接在树莓派的5V电路轨道上,也就是在电缆电阻和充电器的输出电压之间,得到的树莓派端的电压略小于4.5V,树莓派供电不足。对于本书中的项目来说,这些供电方案都可用。建议使用一个专用的树莓派电源,因为它一定会起作用。对于开发项目而言,一个由于供电不足而表现奇怪的树莓派并不是我们所期望的。
1.4 集成电路
1.4.1 ATmega328P-PU
如果熟悉Arduino,你可能会认出图1-5所示的Arduino Uno的核心。这是一个ATmega328P-PU。稍后,我们将用它制作一个Arduino兼容设备,并连接到树莓派的GPIO端口上。
比较ATmega328P-PU与树莓派微控制器之间的规格是很有趣的。ATmega是一个8位AVR RISC微控制器,运行频率为20MHz(按照大多数Arduino的标准,我们使其以16MHz频率运行)。每一个时钟周期内,ATmega执行大约一条命令,并具有SPI、I2C、模数转换器和可编程的UART。它有32KiB的闪存和2KiB的RAM。与树莓派相比,ATmega是一个更小、功能不太强大的计算机。
1.4.2 16MHz TTL时钟振荡器
如图1-6所示是一个16MHz的TTL时钟振荡器,整个振荡器封装在一个外壳中,除了供电元件外,不需要其他外部元件。它将为面包板上的Arduino项目提供时钟信号。当大多数Arduino使用传统的电容+晶体的方法产生时钟振荡时,我们将使用图1-6所示的一体式封装的时钟振荡器来完成这项工作。这是因为我们将要使用的无焊面包板会给电路增加一定的电容,并且因存在电线长度、制造商、连接点的腐蚀等不确定因素,我们不能确定会增加多少电容。TTL时钟振荡器可以消除这些不确定性,并保证为ATmega运行提供一个16MHz的纯净信号。
图1-6显示了一个“全尺寸”14引脚双列直插版本的时钟振荡器。这些标识是通用的。我从我一大堆时钟振荡器中取出了一个16MHz的14引脚双列直插式TTL振荡器,它工作得很好。下面列出的数据手册就是一个例子。
1.4.3 74LVC245A八进制总线收发器
74LVC245A八进制总线收发器(见图1-7)是一种通常用于驱动电子总线的IC。对于Arduino,我们习惯于把想要的元件通通接入Arduino引脚。
所有ATmega微控制器都是鲁棒的,其引脚有内部保护以及强大的驱动电路。不是所有IC都是这样的。树莓派的GPIO引脚根本没有得到很好的保护,所以任何噪声、过载、过电压都被直接发送回系统芯片。如果系统芯片中引脚的驱动电路被损坏,将是不可修复的。74LVC245A具有一项附加功能,即能作为一个低电压版本的八进制总线收发器。这意味着其最大工作电压为3.3V,并且其逻辑高电平输出,按照这个最大电压的大百分比输出。但其输入能处理高达6.5V,远远高于传统的5V TTL电平。我们将使用74LVC245A作为电平转换器。通过使用这个IC将输入电压减少到3.3V左右,就可将5V TTL信号安全地输入树莓派中。你可能会问,3.3V左右输出的74LVC245A怎么能驱动5V的TTL逻辑电路(这里指ATmega328P-PU)?这是一个很好的问题,我将在第12章中回答。也可以参考ATmega数据手册的第386页。
1.5 LED
本书项目中所用到的LED没有特别之处,可以使用任何普通型号的LED(可能亮度低、电流高),但要连接它们,可能需要适当调整原理图。
1.5.1 10段光带
我使用了一对由Kingbright生产的型号为DC10GWA的10段LED光带,因为在之前的其他项目中就使用了它们。其外观如图1-8所示。
你可以使用任何型号的LED 10段光带,只要它们的电流需求不超出树莓派所能提供的最大值(将在第5章中阐述)即可,但是仍要注意安全。一些较大的光带是用LED连接在一起而形成的,使用这种光带需要复用树莓派的引脚,而不是将每个LED都连接一个树莓派引脚。多路复用非常有趣,但是我并不打算在本书中介绍它。Kingbright LED也有内容丰富、易于阅读的数据手册,据说这是很多其他型号的LED所不具备的。我是从Mouser购买的Kingbright LED,但是大多数电子产品供应商都有这种LED或者与之相似的LED。为了清晰起见,我们在这里按照每个LED连接树莓派的一个引脚。它的数据手册可以参见http://www.us.kingbright.com/images/catalog/SPEC/DC10GWA.pdf 。
1.5.2 普通LED
我还使用了一个普通的LED,如图1-9所示。
在第12章中我们将使用它作为工作指示灯。我从Vishay得到了一个关于通用LED的数据手册,但还是无法明确这个LED是哪个厂商生产的。我猜测它的正向电压降大约是2V,并为它选择了一个保守的电阻值,可以使LED足够亮以便于观察。使用普通的LED就能做到以上两点。至于高亮度、颜色多样以及更高级的类型,则没有什么必要。在你的零件抽屉里发现一个LED了吗?就用它吧。它很可能会工作得很好。这里就不列出供应商了,大多数电子商店中都能买到LED。其数据手册可在http://www.vishay.com/docs/83030/tllg540.pdf 找到。
1.6 microSD卡
本书所支持的树莓派都使用相同的microSD格式的SDHC/SDXC卡,如图1-10所示。它们是小卡,而不是数码单反相机中最常用的那种标准SD卡。
microSD是指存储卡的物理格式。SDHC和SDXC是指与这些卡通信的电子规范。SDHC(Secure Digital High Capacity,安全数字高容量)表明存储卡的容量介于4GiB和32GiB之间。建议为你的树莓派装备这种存储卡。树莓派也可以和SDXC卡通信,但是在大多数情况下,不需要那么大的容量。如果确实需要大容量,最好把一个USB-SATA适配器插在树莓派上,然后挂载一个小硬盘或者SSD。SD卡的速度很慢,它们并不是为Linux设计的。为树莓派安装一张8GiB的卡。你也可以暂时用4GiB的卡,但长期使用可能会出现存储空间不足的问题。Linux正常运行需要磁盘空间,它不能在系统空间快满的情况下运行。Class 10卡读取速度快,但在树莓派上,Class 10和其他Class的读取速度并没有太大区别。建议选用正规厂家生产的存储卡。
1.7 USB闪存设备
对于树莓派,一个大小至少为1GiB的U盘,或是一个配有USB读卡器的microSD卡都是可用的。我们将在第11章中使用它们来编写文件。这些闪存设备很容易得到,我使用了一个配有USB读卡器的microSD卡。如图1-11所示为一些USB闪存设备的例子。
1.8 电阻
我们在整个工程中只使用了2种阻值的电阻。即使对于由20个LED构成的阵列,也只需要2种电阻。如图1-12所示为阻值为220Ω,功率为1W的电阻。它会将通过LED的电流降到10mA。从功率来看,1W的最大功率过高了(即实际工作功率远远小于1W)。我所见过的电阻的最小功率是,但这仍然过高。对于大部分工程项目,我都用了功率为1W的电阻,只在第11章和第12章中用到了1/4W的电阻。你还需要一个阻值为10kΩ的电阻,如图1-13所示,它是第12章中将用到的复位上拉电阻。同样,这些电阻也比较容易买到。
1.9 连接线和面包板
连接线是很有用的工具,将各种器件正确连接,这些项目才得以进行。如果你熟悉Arduino,那么你可能有自己最喜欢的一卷连接线。连接线的使用很简单,我有一个连接线盒子(见图1-14),它最主要的优点就是有多种颜色。
连接线的制造商并不重要,实际颜色也不重要,只要能明确线的连接走向就可以。我的连接线是由Elenco制造、从Microcenter购买的。连接线最重要的特性是它必须是22轨距(0.35mm)的,这一尺寸与面包板的连线孔匹配。同时,它必须是单股铜线,而不是多股绞线。为了能够分辨清楚,建议至少准备3种颜色的连接线,一种颜色代表地线,一种颜色代表Vcc供电线,一种颜色代表数据线。最好有更多颜色。
预制的跳线很多地方都出售预制的跳线。我有线束,但并不使用它们。由于反复使用或坏的操作习惯(请养成从根部拔出接头的好习惯),导线很快就会从引脚接头处断开。有的时候,由于断点位于热塑管下,你并不知道连接线已经损坏了。我曾经因此困惑了好几个小时,并试图找出为什么电路会停止工作。我曾不断尝试使用多种颜色的导线以使连线更加漂亮。这样浪费了很多导线吗?好吧,是的。如果这让你不舒服,你可以购买预制的跳线,但要注意上面提出的问题。
面包板下面我们来讨论面包板。如图1-15所示就是我使用的面包板。
这块面包板没有什么特别的,除了它是一块新板。我发现特别便宜的面包板坏得也很快。价格便宜的面包板上的小插孔比较容易磨损,并且出现磨损时不易被发现。如果电路莫名其妙地停止工作,或根本不工作,这时可能要使用万用表检查和确保面包板小插孔是正常的,并检查各电子器件和连线是否正常。
从价格上就可看出面包板是“爱好”级的还是专业级的。专业面包板起价约为20美元,而且价格在大幅上涨。它们通常也有一个金属底座,这有助于将它们调整到合适的角度。图1-15中所示的是非专业的面包板,所以我要冒一定风险。对于本书中的各种电路,我将用一块旧的、质量更好的面包板搭建电路原型,它仍然可靠。如果你接触Arduino很久了,可能拥有一个质量更好的面包板。如果没有,就要考虑买一个。
1.10 微动开关
你需要一个通常为开状态,支持瞬间动作的微动开关。只有按下开关按钮时,才会闭合电路。如图1-16所示是我采用的微动开关。
我发现用钳子把它的引脚拉直,就可以很容易地把它放进面包板。但这样,它们也很容易从面包板里弹出来。同样,从很多电器商店都能买到微动开关,或类似的能够实现按钮功能的其他原件。
1.11 焊接工具和技巧
看上去你十分需要焊接工具和工具使用技巧。实际上,如果你能找到一个树莓派分线板和一个已经焊接了引出针脚的树莓派,你也可以完成所有项目,不用焊接。但如果要在电子方面有进步,那么焊接是一项必备技能。为了进行焊接,找个好工具吧。我将在第11章简要地介绍焊接工具和技巧。有了工具和技巧,再加上适当的指导,就能创造更多可能。
1.12 关于供货商
你可能已经注意到,我为本章讨论的多数器件都列出了供应商名单。这并不是一个详尽的清单。这些都是我最近用过的供应商,我从他们那里购买电子元器件。我是美国人,所以选择的大多数供应商都在美国,Newark是我为英国读者提供的。我已经列出了各种各样的供应商,所以理想的情况是,你可以用1~2个订单购买到所需的所有部件。通常(至少在美国)运费比购买它们更贵。举例来说,如果你没有选择Mouser,而从其他渠道订购了LED、电阻器和其他器件(可能售价比Mouser便宜),也不得不多花几美元才能从Mouser买到一个树莓派,但算总的花费的话,就不如大多数器件都从Mouser买,节省的运费可能就足以弥补器件价格差额了。检查一下运费。厘清运费的组成并按照最划算的方式购买至少也是一件快乐的事。
1.13 关于元器件
当我的上一本书出版时,我曾收到一封一位来自印度的先生发来的电子邮件,问我是否可以用ATmega328P-PU代替我在书中所用的ATmega1284P-PU。我忘记了确切的汇率换算,但结果是他购买ATmega1284P-PU的价格相当于我用50~ 100美元买一个IC芯片。我不敢给他提出建议,因为我在那本书中的建议之一就是“买一个备用,它们是廉价的”。由于汇率问题,实现上一本书中的项目的实际花费可能与我描述的非常不同。这本书不同,书中许多项目都是围绕软件方面开展的。这也是树莓派和Arduino之间的巨大差异。本书中,我尽量使用能够满足需求的便宜、常用的零件。
1.14 元器件一览
下面简要列出本书中用到的所有元器件,有些人觉得这种概览性的清单更好。
1个树莓派,最好为3B+型树莓派,尽管对大多数项目来说Zero W型树莓派足够了
1个树莓派分线板
1个5V的USB微型电源
1个ATmega328P-PU微控制器
1个16MHz TTL时钟振荡器
1个74LVC245A八进制总线收发器(电平转换器)
2个10段LED光带
1个普通LED
1个microSD卡
若干个220Ω电阻,功率至少为1/4W
1个10kΩ电阻,功率至少为1/4W
连接线
1个无焊面包板
1个微动开关(按钮),支持瞬间动作,通常为开状态
1个microSD到USB适配器,或容量为1GB或更大的U盘
1个拥有独立供电装置的USB集线器(可选)
文章
芯片 · 缓存 · 物联网 · 内存技术 · 异构计算
2019-11-17
玩转树莓派:OpenHAB的入门(一)
玩转树莓派:OpenHAB的入门(一)
如果你对那些仅仅只是为了控制一盏灯而不得不下载一个特定的App的智能家居感到厌烦,这里有个好消息:OpenHAB可以为你实现最灵活的控制智能家居,OpenHAB是一个成熟的,开源的家庭自动化平台,既可以运行不少软件,还无关乎协议,这意味着如今它可以连接到几乎市面上所有的家庭自动化硬件。
在这里,我们将告诉你如何安装并启动免费的智能家居系统。
我们先使用树莓派2建立OpenHAB,本文涵盖了几个5个主题:
1、 在树莓派2上安装OpenHAB并运行,然后安装Demo House配置,检查核心系统的正常工作。
2、 如何为设备添加bindings和配置文件。本文将用Philips Hue做演示。
3、 启用远程访问和连接到IFTTT。
4、 使用蓝牙添加一个DIY的传感器,并介绍REST接口。
5、 配置OpenHAB移动应用程序。
前期准备
最起码,你需要一个树莓派,以及以太网或无线适配器(首选以太网)。需要注意的是OpenHAB在旧版本的树莓派上也一样运行,但有一个问题,就是处理速度较慢以及Z-Wave设备的使用问题。你需要升级到最新版本的树莓派然后添加Z-Wave。不过,如果没有Z-Wave的需求,你可以放心地忽略这个问题,并使用树莓派B或B+来制作,因为他们也可以工作。
OpenHAB的最新稳定版本是1.71版。 1.8版本预计不久更新,虽然可能会有出现更多的功能,但是不影响本文。本文并不兼容版本2
安装OpenHAB
首先我们安装通过命令行这样的老式方法来安装。
从最新的Raspbian SD image开始。插上你的网线,然后开机,通过SSH运行:
sudo raspi-config
扩展filesystem;然后从高级菜单将内存分割为16。完成后,重新启动,再完整地运行更新
sudo apt-get update
sudo apt-get upgrade
安装OpenHAB的更简单的方法是通过apt-get,但首先我们需要添加一个安全密钥和新的存储库:
wget -qO - &#039;https://bintray.com/user/downloadSubjectPublicKey?username=openhab&#039; |sudo apt-key add -
echo "deb http://dl.bintray.com/openhab/apt-repo stable main" | sudo tee /etc/apt/sources.list.d/openhab.list
sudo apt-get update
sudo apt-get install openhab-runtime
sudo update-rc.d openhab defaults
奇怪的是,属于“root”的都被安装了。我们需要用下面的命令解决这个问题:
sudo chown -hR openhab:openhab /etc/openhab
sudo chown -hR openhab:openhab /usr/share/openhab
接下来,我们要安装Samba和共享配置和用户文件夹,这会更容易安装加载项并远程更改sitemap。
sudo apt-get install samba samba-common-bin
sudo nano /etc/samba/smb.conf
如果有需要可以更改工作组的名称,但是其他的需要wins support为yes:(你需要去掉注释,将no改为yes)
wins support = yes
然后将一下添加到共享定义部分(滚动至文件底部):
[OpenHAB Home]
comment= OpenHAB Home
path=/usr/share/openhab
browseable=Yes
writeable=Yes
only guest=no
create mask=0777
directory mask=0777
public=no[OpenHAB Config]
comment= OpenHAB Site Config
path=/etc/openhab
browseable=Yes
writeable=Yes
only guest=no
create mask=0777
directory mask=0777
public=no
保存并退出。最后我们需要设置一个Samba的密码
sudo smbpasswd -a openhab
openhab”作为密码只是为了方便使用,并不重要。
重新启动Samba(用sudo来重新启动)之后,测试是否可以访问共享驱动器。在Mac上它可能不会自动出现;但你可以使用Finder – > Go – > Connect to Server 和地址。
smb://openhab@raspberrypi.local
用户名openhab验证和你的密码,然后打开你的两个共享看看。你也可以在你的浏览器打开http://raspberrypi.local:8080 /,但你会遇到一个错误,因为我们还没有建立一个sitemap呢。
现在就来跟踪OpenHAB日志,以便留意出现的错误。
tail -f /var/log/openhab/openhab.log
安装Demo House
我们深入配置文件之前,先增加设备和bindings等;然后我们检查demo内容是否一切正常。你可以在OpenHAB.org的下载项中找到“Demo Setup”。
解压缩它后,出现两个文件夹:插件和配置。
使用网络共享,复制配置到OpenHAB的配置共享然后覆盖现有文件夹。复制插件到其他的OpenHAB Home share,再次覆盖现有文件夹。如果没有提示你覆盖东西,那么就是你做错了。打开raspberry.local:8080 / openhab.app?sitemap=demo查看demo。
这是基本的查看,OpenHAB的开源意味着我们可以安装一个可爱的主题或者完全不同的界面。现在,我们只需要知道它所有工作。需要注意的是,我们要的是sitemap。它不是网络或传感器的设备。它是自定义的。如果想要了解如何创建,打开上OpenHAB配置共享deedsitemaps/demo.sitemap文件。
这很困难,但在大多数情况下,你可以从其他例子复制粘贴代码段来创建自己的自定义界面。这里有所有可能的sitemap元素的技术概述,这些足以开始思考你要建立什么样的界面和你想要显示什么信息。
打开items / demo.items,这是你创建控制和定义传感器项目的路径。
本文转自 K1two2 博客园博客,原文链接:http://www.cnblogs.com/k1two2/p/4819999.html ,如需转载请自行联系原作者
文章
传感器 · 数据安全/隐私保护 · 智能硬件 · 网络架构 · 安全 · Go · 网络安全 · 存储
2017-11-15
玩转树莓派:OpenHAB的入门(一)
如果你对那些仅仅只是为了控制一盏灯而不得不下载一个特定的App的智能家居感到厌烦,这里有个好消息:OpenHAB可以为你实现最灵活的控制智能家居,OpenHAB是一个成熟的,开源的家庭自动化平台,既可以运行不少软件,还无关乎协议,这意味着如今它可以连接到几乎市面上所有的家庭自动化硬件。
在这里,我们将告诉你如何安装并启动免费的智能家居系统。
我们先使用树莓派2建立OpenHAB,本文涵盖了几个5个主题:
1、 在树莓派2上安装OpenHAB并运行,然后安装Demo House配置,检查核心系统的正常工作。
2、 如何为设备添加bindings和配置文件。本文将用Philips Hue做演示。
3、 启用远程访问和连接到IFTTT。
4、 使用蓝牙添加一个DIY的传感器,并介绍REST接口。
5、 配置OpenHAB移动应用程序。
前期准备
最起码,你需要一个树莓派,以及以太网或无线适配器(首选以太网)。需要注意的是OpenHAB在旧版本的树莓派上也一样运行,但有一个问题,就是处理速度较慢以及Z-Wave设备的使用问题。你需要升级到最新版本的树莓派然后添加Z-Wave。不过,如果没有Z-Wave的需求,你可以放心地忽略这个问题,并使用树莓派B或B+来制作,因为他们也可以工作。
OpenHAB的最新稳定版本是1.71版。 1.8版本预计不久更新,虽然可能会有出现更多的功能,但是不影响本文。本文并不兼容版本2
安装OpenHAB
首先我们安装通过命令行这样的老式方法来安装。
从最新的Raspbian SD image开始。插上你的网线,然后开机,通过SSH运行:
sudo raspi-config
扩展filesystem;然后从高级菜单将内存分割为16。完成后,重新启动,再完整地运行更新
sudo apt-get update
sudo apt-get upgrade
安装OpenHAB的更简单的方法是通过apt-get,但首先我们需要添加一个安全密钥和新的存储库:
wget -qO - &#039;https://bintray.com/user/downloadSubjectPublicKey?username=openhab&#039; |sudo apt-key add -
echo "deb http://dl.bintray.com/openhab/apt-repo stable main" | sudo tee /etc/apt/sources.list.d/openhab.list
sudo apt-get update
sudo apt-get install openhab-runtime
sudo update-rc.d openhab defaults
奇怪的是,属于“root”的都被安装了。我们需要用下面的命令解决这个问题:
sudo chown -hR openhab:openhab /etc/openhab
sudo chown -hR openhab:openhab /usr/share/openhab
接下来,我们要安装Samba和共享配置和用户文件夹,这会更容易安装加载项并远程更改sitemap。
sudo apt-get install samba samba-common-bin
sudo nano /etc/samba/smb.conf
如果有需要可以更改工作组的名称,但是其他的需要wins support为yes:(你需要去掉注释,将no改为yes)
wins support = yes
然后将一下添加到共享定义部分(滚动至文件底部):
[OpenHAB Home]
comment= OpenHAB Home
path=/usr/share/openhab
browseable=Yes
writeable=Yes
only guest=no
create mask=0777
directory mask=0777
public=no[OpenHAB Config]
comment= OpenHAB Site Config
path=/etc/openhab
browseable=Yes
writeable=Yes
only guest=no
create mask=0777
directory mask=0777
public=no
保存并退出。最后我们需要设置一个Samba的密码
sudo smbpasswd -a openhab
openhab”作为密码只是为了方便使用,并不重要。
重新启动Samba(用sudo来重新启动)之后,测试是否可以访问共享驱动器。在Mac上它可能不会自动出现;但你可以使用Finder – > Go – > Connect to Server 和地址。
smb://openhab@raspberrypi.local
用户名openhab验证和你的密码,然后打开你的两个共享看看。你也可以在你的浏览器打开http://raspberrypi.local:8080 /,但你会遇到一个错误,因为我们还没有建立一个sitemap呢。
现在就来跟踪OpenHAB日志,以便留意出现的错误。
tail -f /var/log/openhab/openhab.log
安装Demo House
我们深入配置文件之前,先增加设备和bindings等;然后我们检查demo内容是否一切正常。你可以在OpenHAB.org的下载项中找到“Demo Setup”。
解压缩它后,出现两个文件夹:插件和配置。
使用网络共享,复制配置到OpenHAB的配置共享然后覆盖现有文件夹。复制插件到其他的OpenHAB Home share,再次覆盖现有文件夹。如果没有提示你覆盖东西,那么就是你做错了。打开raspberry.local:8080 / openhab.app?sitemap=demo查看demo。
这是基本的查看,OpenHAB的开源意味着我们可以安装一个可爱的主题或者完全不同的界面。现在,我们只需要知道它所有工作。需要注意的是,我们要的是sitemap。它不是网络或传感器的设备。它是自定义的。如果想要了解如何创建,打开上OpenHAB配置共享deedsitemaps/demo.sitemap文件。
这很困难,但在大多数情况下,你可以从其他例子复制粘贴代码段来创建自己的自定义界面。这里有所有可能的sitemap元素的技术概述,这些足以开始思考你要建立什么样的界面和你想要显示什么信息。
打开items / demo.items,这是你创建控制和定义传感器项目的路径。
文章
传感器 · 数据安全/隐私保护 · 智能硬件 · 网络架构 · 安全 · Go · 网络安全 · 存储
2015-09-18
IoT日志利器:嵌入式日志客户端(C Producer)发布
2017年12月19日至20日,2017云栖大会·北京峰会在国家会议中心召开,飞天智能是贯穿云栖大会不变的主题,云计算、大数据、人工智能、物联网等热门话题备受各方关注。其中阿里云日志服务发布的嵌入式日志采集客户端(C Producer Library) 就是其中解决物联网日志采集、分析难的利器。
系列文章:
IOT/智能设备日志解决方案(1):概述
IOT/智能设备日志解决方案(2):全方位数据采集
IOT/智能设备日志解决方案(3):上下游对接
IOT/智能设备日志解决方案(4):计算与分析
IOT/智能设备日志解决方案(5):线上问题调查
IOT/智能设备日志解决方案(6):实时监控
IOT/智能设备日志解决方案(7):搭建业务大盘
背景
IoT(Internet of Things)正在高速增长,越来越多设备开始逐步走进日常生活(例如智能路由器、各种电视棒、天猫精灵、扫地机器人),让我们体验到智能领域的便利。距Gartner预测,到2020年末预计会有200亿智能设备,可见该领域的巨大市场。
作为IoT/嵌入式工程师,除了需要深厚的开发功底外,面对海量的设备,如何有能力管理、监控、诊断这些“黑盒”设备至关重要。我们总结了嵌入式开发需求,主要有以下几点:
数据采集:如何实时采集分散在全球各地的百万/千万级设备上的数据?
调试:如何使用一套方案既满足线上数据采集以及开发时的实时调试?
线上诊断:某个线上设备出现错误,如何快速定位设备,查看引起该设备出错的上下文是什么?
监控:当前有多少个设备在线?工作状态分布如何?地理位置分布如何?出错设备如何实时告警?
数据实时分析:设备产生数据如何与实时计算、大数据仓库对接,构建用户画像?
思考以上问题的解决方案,我们发现在传统软件领域那一套手段面临IoT领域基本全部失效,主要挑战来自于IoT设备这些特点:
数目多:在传统运维领域管理1W台服务器属于一家大公司了,但10W在线对于IoT设备而言只是一个小门槛
分布广:硬件一旦部署后,往往会部署在全国、甚至全球各地
黑盒:难以登陆并调试,大部分情况属于不可知状态
资源受限:出于成本考虑,IoT设备硬件较为受限(例如总共只有32MB内存),传统PC领域手段往往失效
针对不同端的数据采集
日志服务(原SLS) 客户端Logtail在X86服务器上有百万级部署,可以参见文章:Logtail技术分享 : 多租户隔离技术+双十一实战效果,Polling + Inotify 组合下的日志保序采集方案。除此之外我们还有以下几种方式:
移动端SDK:Android/IOS平台数据采集,一天已有千万级DAU
Web Tracking(JS):类似百度统计,Google Analytics 轻量级采集方式,无需签名
在IoT领域,我们从多年Logtail的开发经验中,汲取其中精华的部分,并结合IoT设备针对CPU、内存、磁盘、网络、应用方式等特点,开发出一套专为IoT定制的日志数据采集方案:C Producer
C Producer特点
C Producer Library 继承Logtail稳定、边界特点,可以定位是一个“轻量级Logtail”,虽没有Logtail实时配置管理机制,但具备除此之外70%功能,包括:
提供多租户概念:可以对多种日志(例如Metric,DebugLog,ErrorLog)进行优先级分级处理,同时配置多个客户端,每个客户端可独立配置采集优先级、目的project/logstore等
支持上下文查询:同一个客户端产生的日志在同一上下文中,支持查看某条日志前后相关日志
并发发送,断点续传:支持缓存上线可设置,超过上限后日志写入失败
还有一些专门为IoT准备功能,例如:
本地调试:支持将日志内容输出到本地,并支持轮转、日志数、轮转大小设置
细粒度资源控制:支持针对不同类型数据/日志设置不同的缓存上线、聚合方式
日志压缩缓存:支持将未发送成功的数据压缩缓存,减少设备内存占用
功能优势
C-Producer是量身为IoT定制的方案,因此会有一些特定考虑:
客户端高并发写入:可配置的发送线程池,支持每秒数十万条日志写入,详情参见性能测试
低资源消耗:每秒20W日志写入只消耗70% CPU;同时在低性能硬件(例如树莓派)上,每秒产生100条日志对资源基本无影响
客户端日志不落盘:既数据产生后直接通过网络发往服务端
客户端计算与 I/O 逻辑分离:日志异步输出,不阻塞工作线程
支持多优先级:不通客户端可配置不同的优先级,保证高优先级日志最先发送。
本地调试:支持设置本地调试,便于您在网络不通的情况下本地测试应用程序。
在以上场景中,C Producer Library 会简化您程序开发的步骤,您无需关心日志采集细节实现、也不用担心日志采集会影响您的业务正常运行,大大降低数据采集门槛。
为了有一个感性认识,我们对C-Producer 方案与其他嵌入式采集方案做了一个对比,如下:
整体解决方案
C-Producer + 日志服务可以给IoT带来什么?答案是:IoT日志解决方案:
规模大
支持亿级别客户端实时写入
支持 PB/Day 数据量
速度快
采集快:0延迟:写入0延迟,写入即可消费
查询快:一秒内,复杂查询(5个条件)可处理10亿级数据
分析快:一秒内,复杂分析(5个维度聚合+GroupBy)可聚合亿级别数据
对接广
与阿里云各类产品无缝打通
各种开源格式存储、计算、可视化系统完美兼容
如何使用
一个应用可创建多个producer,每个producer可包含多个client,每个client可单独配置目的地址、日志level、是否本地调试、缓存大小、自定义标识、topic等信息。
参见github地址
性能测试
环境配置:传统X86服务器,树莓派(低功耗环境),配置分别如下:
C-Producer配置
ARM(树莓派)
缓存:10MB
聚合时间:3秒 (聚合时间、聚合数据包大小、聚合日志数任一满足即打包发送)
聚合数据包大小:1MB
聚合日志数:1000
发送线程:1
自定义tag : 5
X86
缓存:10MB
聚合时间:3秒 (聚合时间、聚合数据包大小、聚合日志数任一满足即打包发送)
聚合数据包大小:3MB
聚合日志数:4096
发送线程:4
自定义tag : 5
日志样例
10个键值对,总数据量约为600字节
9个键值对,数据量约为350字节
__source__: 11.164.233.187
__tag__:1: 2
__tag__:5: 6
__tag__:a: b
__tag__:c: d
__tag__:tag_key: tag_value
__topic__: topic_test
_file_: /disk1/workspace/tools/aliyun-log-c-sdk/sample/log_producer_sample.c
_function_: log_producer_post_logs
_level_: LOG_PRODUCER_LEVEL_WARN
_line_: 248
_thread_: 40978304
LogHub: Real-time log collection and consumption
Search/Analytics: Query and real-time analysis
Interconnection: Grafana and JDBC/SQL92
Visualized: dashboard and report functions
测试结果
X86平台结果
C Producer可以轻松到达90M/s的发送速度,每秒上传日志20W,占用CPU只有70%,内存140M
服务器在200条/s,发送数据对于cpu基本无影响(降低到0.01%以内)
客户线程发送一条数据(输出一条log)的平均耗时为:1.2us
树莓派平台结果
在树莓派的测试中,由于CPU的频率只有600MHz,性能差不多是服务器的1/10左右,最高每秒可发送2W条日志
树莓派在20条/s的时候,发送数据对于cpu基本无影响(降低到0.01%以内)
客户线程发送一条数据(输出一条log)的平均耗时为:12us左右(树莓派通过USB连接到PC共享网络)
一些典型场景可以参见云栖论坛 和最佳实践。
硝烟四起的物联网,如何自处安宁?
当莱特兄弟1903年进行具有开创性的飞行实验时,是否有安全员坚持要求配备降落伞和降落减震装置?没有,所有的焦点都在于他们是否可以离开地面!这是他们的胜利。四年后,安全成了人们关注的焦点。再不久,安全成为航空业的首要任务。
这就是技术革新!第一个迫在眉睫的问题是“它会工作吗?”,接踵而至的将是令人兴奋的机遇——技术革新的礼物,最后关注的才是滥用或剥削。随着物联网设备越来越普遍,在我们日常生活中,降低安全风险也逐渐成为主流的关注焦点。
具体的物联网挑战
一开始,将任何一个简单的、低成本设备连接到网络就会产生直接的风险:PC是一个相对复杂的终端,它需要大量的资源去布防内部防火墙和反恶意系统软件。但是你不可能为监测5美元而建立昂贵的保护。
虽然已经有像树莓派这样的新一代的微型低成本电脑来弥补差距,但是大部分的安全负担落在网络本身,如果我们想要受益于数以百万的物联网微型传感器连接,网络的安全必须得以保证。
接下来是复杂性的挑战,许多不同的协议共享同一复杂的网络。选择物联网设备的无线连接类型意味着平衡多个因素,例如数据吞吐量,覆盖范围,终端电池的寿命和延迟,以及接收器的大小和成本。每个系统都有他的优缺点。
蜂窝数据几乎无处不在,但使用电池供电并且相对昂贵的硬件会持续产生网络费用。办公楼里到处都有WiFi,虽然硬件设备比较廉价,但是它的安全密码设置不适合像智能灯泡这样的硬件连接。蓝牙甚至更便宜,并且电池寿命长,但是只能工作在有限的范围内,并需要一个中心接入点将其连接到物联网网络。
Mesh网络的设置更加复杂,但确实提供了一个高弹性的网络解决方案。如Sigfox,Lorawan 和Ingenu等廉价、低功耗的LPWAN技术是理想的低数据流量(如智能电表)解决方案,但是对于更复杂的通讯没有太大价值。
测试手机的性能和安全性,不但需要深刻理解包括蓝牙、WiFi、GPS在内的各种移动通讯技术,还需要找到在所有这些不同网络上同时运行手机时产生的额外漏洞。
从市场来看,目前物联网创新有五个关键领域,即:智慧城市、重型设备、汽车、医疗和监测。
常见的入侵形式
犯罪袭击有两种主要形式:盗窃和勒索。罪犯可以从系统中偷取钱或数据,如果不交赎金,就会受到损害。如果驱动力是恐怖主义或单纯的破坏而不是获得犯罪利益,罪犯可以没有任何警告地带来破坏。
在汽车行业,车联网涉及物联网的许多方面:从简单的车辆联网和GPS位置服务,到车辆的最佳安全性能和防盗措施检测,再到复杂事故的避免甚至无人驾驶汽车。
犯罪分子要么通过黑客行为入侵安全系统来直接盗取车辆和汽车内件,要么会去敲诈制造商。GPS干扰器已经被用来隐藏被盗车的位置,远程锁定系统被黑客攻击进而使车辆被盗。这样的攻击时常发生,但仅是冰山一角。
一辆联网的汽车可允许车主限制车的速度,由他的儿子来驾驶,但儿子可以去破解它而且开赛车,或者他的对手可以把速度阈值设的很低。此外,若繁忙的高管想利用汽车联网进行转账--他们能够确保他们的交易完全像在家里或办公室的网络一样安全吗?
医疗保健是特别容易受到勒索威胁的:一个病人的医疗记录可能对罪犯没有太大的价值,但上传所有的医疗记录到公众互联网上可以威胁一家私人医院拿出大笔的赎金。甚至以公开宣布可信医院系统并不安全来进行威胁。至少有一家大型的美国医院已经遭受这样的攻击。
大型的工业控制也是一个很诱人的敲诈目标。篡改这些进程不仅会在关机状态下造成资金流失,也会使整个系统受到损坏。--例如Stuxne蠕虫病毒摧毁了伊朗一千台离心机。规模庞大的公用事业网络是恐怖袭击的理想选择,这可能会导致一个广阔范围里电力、水或通信的破坏。
在这个名单中,我们没有把财务算进来。长期以来,犯罪分子都以金融系统为最明显的窃取目标,而手机银行应用程序和自动取款机被视为物联网的组成部分,这些终端应用程序应该定期测试安全问题。
安全测试必不可少
测试网络或云是有必要的,因为系统太复杂了,任何人都很难分析和预测所有可能形式的漏洞。除了大型网络的物理复杂性,从网络上的硬件和不同的操作系统开始,有许多不同的层次可以分析。
网络上应用程序使用人数不断变化,并且有着不同的协议和安全系统。蜂窝网可以在SIM卡上接入安全服务,WiFi接入需要一个密码,蓝牙可以使用密码或预共享应用程序密钥。
也有像一些特定安全功能的人或机器用户的认证,在他们被授权接入网络时,确定是什么样的互动级别。最后有一些物理安全的问题:端点和实际网络是否足够牢固?他们是否容易被篡改?
许多想法将进入该领域的各个方面,但当涉及到确定整体端到端的安全性,只有一个方法可行,那就是测试。在实验室条件下,网络可以被精确模拟,进行详尽的功能测试。可以在正常的操作环境下测试它的性能是否可靠。也可以持续监测网络的故障迹象。
物联网在一个极端或压力条件下如何执行?这种极端条件都会以明显或不明显的形式呈现。举一个入侵大都会区的报警系统的例子:通常情况下,这些报警器通过本地WiFi保持与总部的联系,只在WiFi连接失败时才转到3G网络。如果整个地区出现停电,大量的报警系统同时连接到移动网络,将会给网络造成什么样的影响?这将对网络上的其他简单系统造成严重的影响,更不用说实时的报警相应了。
测试需要对涉及到的许多因素有足够经验和深入的了解,能够预见到这样的问题,并做出合适的测试。但是,目前已经有可编程测试解决方案来模拟每一个这样的情况。虽然一般都要建立一个真实交通测试参数,但这并不是必要的。相反,系统可以记录现实生活中的交通数据,然后乘以它的许多倍,以模拟交通风暴--应对紧急事件导致活动激增。
在测试性能的同一时间,统计该网络可以受到任何已知的恶意软件攻击的数量。如果它是一个基于云的测试解决方案,它将保持最新的恶意软件攻击记录。“模糊测试”不仅可以测试已知的攻击,也会测出错误的数据被意外或故意注入系统的边界错误。
总结
通过物联网机器与机器的连接,有着无尽的机会,但我们对这样一个复杂的系统可能出现的风险要有足够的了解--特别是故意的犯罪意图所带来的风险。包括汽车业,医疗保健、工业和公用事业控制系统等关键领域,则需要非常谨慎和全面的安全措施。
尽管物联网增加了许多新的因素和风险的组合,但是复杂测试的基础技术、多协议网络已经很好地建立。复杂的测试解决方案已经可用,并在长时间证明他们的能力,预见问题并确保在每一个正常和极端的操作条件下的安全性。
物联网的发展过程可能是艰辛的,但在安全测试等多种解决方案的加持下,许多专业知识都可为物联网的发展提供辅助。
原文出处:物联网智库
原文链接
转载请与作者联系,同时请务必标明文章原始出处和原文链接及本声明。
文章
安全 · 物联网 · 测试技术 · 定位技术 · 数据安全/隐私保护
2018-02-09
基于Docker API的工具综述
本文讲的是基于Docker API的工具综述,【编者的话】考虑到过去三年Docker取得的骄人成绩以及远程API的成熟,毫无疑问,Docker会成为开发者的首选平台。随着Docker的发展壮大,开发者也共享了很多围绕Docker的开源项目,本文中将讨论这些项目是如何使用Docker API的。
Docker是在虚拟容器中简易部署应用最前沿技术。之前我们已经知道Docker可以减少开发维护复杂度,使得正在成长中的架构得以实践。这种架构使得整个应用以及底层操作系统以轻量级容器方式创建和部署,而不是依靠增量式的更改。考虑到过去三年Docker取得的骄人成绩以及远程API的成熟,毫无疑问,Docker会成为开发者的首选平台。随着Docker的发展壮大,开发者也共享了很多围绕Docker的开源项目,本文中将讨论这些项目是如何使用Docker API的。Dogfooding
DokcerAPI最大的用户就是Docker本身,Dokcer内置了很多整合与编排容器配置的工具。Dockercompose面向多容器应用部署,而Docker Swarm则负责Docker容器集群创建。Docker自身在这一领域做的很好,但是仍然对其它Docker编排技术持开放态度。编排领域涉及面很广泛,包括调度、集群,服务发现以及其它一些任务。考虑到有效性,透明性,以及依赖性,一般不希望几个进程运行在同一个容器内;实际使用中,每个容器只负责处理定义清楚的服务。因此一个完整的应用一般由多个Docker容器构成,这也是基于Docker的解决方案非常丰富的原因。调度(Scheduling)
Docker容器调度也是容器编排中重要的一环,这里所说的调度是指容器如何在各个主机之间运行的规则。例如,一个调度策略可能会牵涉到运行在同一个主机中的不同容器,而其功能是互补的。因为有了调度策略,可以从一个应用中抽象出两个集群行为的容器。除了DockerSwarm的调度功能,CoreOS的Fleet和Marathon都是Docker调度开源实现。如想深入了解容器架构,可以深入阅读API-Driven DevOps: Spotlight on Docker。
集群管理(Cluster Management)
集群意味着将很多主机内的众多Docker容器联系起来,使它们表现为一个统一调度的系统。对应于Docker Swarm的开源项目包括 Google的Kubernetes, 通过Docker容器的pods来管理集群,其它的还包括Shipyard,CoreOS的Fleet和Marathon。像Spotify这种公司开发并开源了自己的Docker管理系统,而这正是每个基于Docker系统必需的。服务发现(Service Discovery)
服务发现是在一个多主机、集群环境的网络中,如何发现所需服务的IP地址,像GliderLabs这样的公司利用Docker的远程API侦听事件,创建基于容器的软件应用。Registrator,一家由Weave支持的开源项目,可以通过监控新建Docker容器,将它们在目录服务Consul中注册,提供发现服务。网络(Networking)
为了链接构成服务的容器,Docker也提供一些网络功能。默认地virtual bridge网络被激活,同时也可以用不同的配置。提供商提供了适用于其他使用场景的网络配置。Weave使用一种称为imicro-routers的虚拟网络跨主机连接容器,使得网络配置简化,动态添加节点,通讯加密。Weave还提供一个叫Weave Scope的网络监控功能。Flannel是CoreOS提出的overley网络解决方案,使用etcd集群来存储网络配置。Calico项目另外一个基于‘Layer3’网络的开源项目,这不是一个overlay网络,意味着OSI模型三层以上都不会封装包,相对于其他方案会大大提高性能。存储(Storage)
Docker在数据库领域并不太成熟,这是因为按照定义数据库是经常变化的,因此运行数据库的容器不能简单被重新部署而不比较数据一致性。针对这一问题Docker内置基于数据卷和数据卷容器的解决方案。数据卷在容器被删除时,数据仍然是持久化的。数据卷容器可以在多个容器之间共享数据时候使用。数据卷可以被备份和恢复;像ClusterHQ的Flocker产品,就是一个开源的数据卷管理器,而且为了支持基于容器的数据库,提供数据迁移功能。持续集成(Continuous Integration)
为了更好管理Docker容器创建,测试和部署的生命周期,有很多针对持续集成(CI)领域的工具。例如,CodeFresh可以监测Git库中变化,或者持续集成服务器中变化,从而触发创建和部署Docker容器,CodeShip的Jet是面向Docker的CI平台,可以从任何Docker注册库中拉images,与DockerCompose整合,便于并发创建和部署基于容器的应用。Drone是另外一个基于Docker的持续集成平台,它在创建过程中使用一个短暂生成的容器。如需了解,可以阅读如下网址:Continuous Integration Tools to Spur API Development。
Hosted Docker Registries
除了DockerHub之外,还有几家公司提供Docker注册库服务,例如Quay.io, Artifactory和Google的Container Registry。这些服务提供私有的容器注册库访问,提供高级库功能,第三方整合和极佳DevOps体验。日志整合(Log Aggregation)
Logspout是GliderLabs的另外一个开源项目。当几个Docker容器共享一个主机时,Logspout将日志路由并汇总到类似PaperTrail的日志管理系统。另外,Filebeat可以对容器日志打上标签并发往logstash。监控(Monitoring)
大量第三方的,由业界云监控大厂开发的,基于Docker的监控工具,一般都是用Docker静态API,并将结果显示在动态仪表盘上。这些监控方案包括:
AppDynamics的Docker扩展(Docker extension by AppDynamics)
DataDog agent
first-class citizen treatment of Docker containers in New Relic
Scout’s Docker agent
配置管理(Configuration Management)
Docker可以通过标签方式(labels)给图像、容器和进程(守护进程)添加客制化元数据。标签类似于key-value对,可以被用于标注配置信息,例如版本号和环境信息。为了避免名字冲突,Docker鼓励在标签中使用命名空间,但是并不强制。Docker Label Inspector是GarethRushgrove(PuppetLabs的资深工程师 )开发的应用,可以根据发布指南或者指定JSON Schema检查发布的Docker映像。安全审计Security Auditing
很多问题都围绕基于Docker应用的安全问题,尽管过去很多年已经补上了很多漏洞,但是开发商提供的Docker应用带来了更多安全问题。一个例子是Scalock,这是一款扫描容器发现安全问题的软件,并且控制对容器访问,监控容器运行状态使得不会破坏安全设置。PaaS
越来越多的基于Docker软件,造成了整合性的困难,同时也是一个生态系统发展良好的预兆。很多公司瞄准了这一需求,将赌注压在端到端类PaaS的方案,用来创建、部署、编排和监控基于Docker的应用,从而将复杂性隐藏起来。Openshift是RedHat的PaaS方案,构建于Docker和Kubernetes之上。Deis是EngineYard开发,由Heroku驱动的PaaS方案,构建于Docker和CoreOS之上,Paz是基于Docker、CoreOS、etcd和Fleet的开源项目,可以将容器应用运行于PaaS之上。最后,Docker最近收购了Tutum(类似PaaS的套件,用于部署和管理Docker引擎),重新命名为Docker Cloud。Full-blown OS
由于Docker发展太迅猛,已经有先行者开始使用容器做整个操作系统。Rancher的RancherOS是一个完全基于Docker的轻量级操作系统,它是专为运行基于容器应用的20MB大小的Linux发行版。HypriotOS是在树莓派上使用的Docker实现,允许在SD卡上运行轻量级容器应用。结论Conclusion
Docker的创生诞生了DevOps软件生态环境,随着Docker应用不断增加,看起来这个增长势头在未来会更加强劲。在下一篇文章中,我们将会深入DevOps其它领域,也就是持续集成和配置管理,未完待续……原文链接:Tools Built on Top of The Docker API(翻译:杨峰)
原文发布时间为:2016-05-11
本文作者:hokingyang
本文来自云栖社区合作伙伴DockerOne,了解相关信息可以关注DockerOne。
原文标题:基于Docker API的工具综述
文章
监控 · 安全 · API · 数据库 · 容器 · Docker · 调度 · 持续交付 · Devops · 开发者
2017-09-21