Metadata-Version: 1.0
Name: iot
Version: 0.1.2
Summary: Open source Internet of Things
Home-page: http://www.phodal.com
Author: Phodal.Gmszone
Author-email: gmszone@gmail.com
License: GPL version 2
Description: 
        
        #Minimum Internet of Things#
        A Minimum IOT with arduino and raspberry pi.
        
        一个最小的物联网系统设计方案及源码
        
            android/ 一个最小的Android程序实例
            rest/ PHP Laravel Framework to create RESTful API
            python/ 简单的pyhon示例
            hardware/  硬件串口通信收集
             -/ arduino Arduino板
            doc/  文档 简介ppt nginx配置 系统框架图
            dashboard/ 基于ruby框架dashing的dashboard
        
        ##简要的初始化代码说明##
        代码中因为有两个子模块，即Android与REST，Android是一个简单的Android程序示例,REST作为子模块的原因是考虑到后期会用更简单的源码来替换。但是laravel作为一个运行环境，还是很理想的。
        
        先clone
        
            git clone https://github.com/gmszone/iot.git iot 
        
        子模块
            
            git submodule init
            git submodule update
        
            
        
          
        
        ##系统框架图##
        
        ![](https://raw.github.com/gmszone/iot/master/doc/dot/struct.jpg)
        
        ##Documention##
        
        [Wiki][3]
        
        [一个最小的物联网系统设计方案及源码][2]
        
        [最小物联网系统（一）——系统组成][4]
        
        [最小物联网系统（二）——RESTful][5]
        
        [最小物联网系统（三）——创建RESTful][6]
        
        [最小物联网系统（四）——详解Laravel的RESTful][7]
        
        [最小物联网系统（五）——Laravel RESTful模板化][8]
        
        [最小物联网系统（六）——Ajax打造可视化][9]
        
        [最小物联网系统（七）——与服务器通讯][10]
        
        [最小物联网系统（八）——与单片机通讯][11]
        
        [最小物联网系统（九）——Android客户端][12]
        
        [最小物联网系统设计——给Laravel添加测试][15]
        
        [最小物联网系统——Dashboard][16]
        
        ##How to test On you computer##
         1. If you have a Arduino.
        
         2. Upload the arduino/BareMinimum.ino to you Arduino 
        
        
         3. if Windows need to Change the /dev/ttyACM0 to the COM port for example COM3.If Use of ttyACM0 need to change it to suitable
        
                cd python
         
                sudo python get.py
        
         4. open localhost/athome/create to create a seed.and open /athome/1/edit for a status change
        
         5. For a basic test you can visit [b.phodal.com][1]
         
        ##How to test On you Android Phone
        
        ![](https://raw.github.com/gmszone/iot/master/doc/images/android.png)
        
          1. Download the Android app [Stay at Home][13]
        
        ##Basic##
        
        - RESTful Services
        - Serial Commucation
        
        ##Language##
        - PHP(Laravel Framework)
        - Python(for Raspberry pi)
        - Processing/C/C++ (Arduino)
        
        ##Seed##
        
            php  artisan db:seed
        
        ##交流##
        
        QQ群：348100589
        
        BBS： http://bbs.phodal.com
        
        
        #如何使用#
        
        ##目录说明##
        这是一个简短的功能目录说明，而且还会不断地更新，当有足够的硬件，以及其他语言支持的时候。
        
         * android 目录下是android的程序
            * 构建工具 gradle
            * IDE     android studio
            * 第三方库 RESTClient,Google GSON
         * hardware 硬件相关程序
            * Arduino Arduino开发板程序
         * python 脚本文件运行于Raspberry PI或者是你的PC
         * rest   用于构建RESTful
            * 语言PHP
            * 框架Laravel
         * doc 基础的一些文档说明
            * dot 构建框架图
            * images 图片放置目录
            * ppt jmpress.js做的ppt
            * nginx nginx配置示例以及说明
            
        ##使用说明##
        需要在开机前用RPI连上硬件，RPI需要联网，在开机前做好准备。
        
        ###Raspberry PI###
        RPI主要运行获取数据以及与Arduino通讯，通过开头运行python脚本的方法。
        
        修改rc.local
            
             sudo vim /etc/rc.local
             
        添加信命令到exit 0之前
        
             sudo python /home/iot.py
             
        需要将python目录下的iot.py复制到home目录下,访问/dev/ttyACM0需要root权限。
        
        ###Hardware###
        
        ####Arduino####
        烧写程序到Ardiuino
        程序目录Hardware/Arduino/BareMinimum。。
        
        ###REST###
        如果你有一个可以用于运行的服务器，当然你也可以用RPI去做一个服务器。
        那么，请在开始之前配置好LNMP环境或者LAMP等等，即Linux+Nginx/Apache+MySQL/MaraiDB+PHP
        需要创建一个名为iot的数据库，以及修改数据库密码，如果你了解此可以跳过这些步骤。
        创建数据库步骤如下：
        
            mysql -uroot -p
            create database iot;    
        
        修改数据库密码的路径
        
            app/config/database.php
        
        相关位置代码如下：
        
            'mysql' => array(
                'driver'    => 'mysql',
                'host'      => 'localhost',
                'database'  => 'iot',
                'username'  => 'root',
                'password'  => '',
                'charset'   => 'utf8',
                'collation' => 'utf8_unicode_ci',
                'prefix'    => '',
                ),
                
        
        ###Android###
        构建了一个简单的获取JSON数据及解析的程序，在Android 4.0上运行正常，其他设备或平台暂未测试。
        依赖于Google GSON
        
        ##如何添加硬件##
        
        对于一个有硬件需求的项目来说，足够多的硬件支持对于这个系统后期的扩展有着相当重要的意义。至于在这个最小物的物联网系统设计的过程中，一开始用的是Arduino只要是对于其他软件开发者来说是相对简单的，我们也需要足够多的硬件支持来支持硬件开发者。
        
        通常在这里我们说的硬件是独立于RPI的硬件，也就是用串口通信来控制的部分，只是在这里我们也可以用其他的通信方式来替代串口通信。只是对应于这其他来说，串口通信是比较常用的，及简洁的。
        （ps:PRI指的是Raspberry PI，也就是其的缩写。）
        
        ###关于硬件###
        
        硬件的种类比较繁多，可能有FPGA,51,STM32,AVR等等系列的芯片，至于ARM，如果有足够的网络支持我想可以替换掉RPI。
        
         - 在这里的硬件通常是指可以替换其他硬件，通过使用串口通信的方式进行控制的。
         - 硬件的串口通信为比较简洁的两部分，即由接收到的串口通信的1和0来实现简单的控制。
         - 这里说的简单的控制指的是我们可以用LED的亮和灭来充当一个状态控制显示。
        
        你可以自由的添加硬件种类，不过请让源码simple，当你需要推送到github上面可以联系我。
        
        ###添加到github###
        
        ####如果你没有用过github####
        
         - 注册一个github帐号
         - 建一个简单的项目及使用git版本管理工具来进行基本的操作熟悉
         - git clone 项目到你的工作目录。
            - 如果你不熟悉git的用法，那么请先clone 
            - 将你修改完的代码放至指定的目录，hardware/硬件设备
            - 确认没有添加其他不必要的东西，如可执行的二进制文件也不是必需的。
         - git push 就这简单
            - 你还需要联系我或者其他项目成员获得push权限。
            
         ####注意事项####
         
         - 不要push可执行的二进制文件
         - 仅工程及源码就足够了
         - 如果一个硬件下面有多个不同的源码库
           - 假设有lib1以及lib2，硬件为atmega16
           - 重新命名原来的项目名为atmega16-lib1，新的项目名为atmega16-lib2再进行push
          
        ##关于物联网##
        <blockquote>物联网（Internet of Things，缩写IOT）是一个基于互联网、传统电信网等信息承载体，让所有能够被独立寻址的普通物理对象实现互联互通的网络。</blockquote>
        
        <blockquote>物联网一般为无线网，由于每个人周围的设备可以达到一千至五千个，所以物联网可能要包含500万亿至一千万亿个物体，在物联网上，每个人都可以应用电子标签将真实的物体上网联结，在物联网上都可以查找出它们的具体位置。通过物联网可以用中心计算机对机器、设备、人员进行集中管理、控制，也可以对家庭设备、汽车进行遥控，以及搜寻位置、防止物品被盗等各种应用。</blockquote>
        
        简单的来说
        Internet是一个由计算机组成的网络，那么物联网就是一个由物体(Things)组成的网络，只不过其依赖于Internet，是Internet的一部分。
        
        ##最小物联网系统##
        这个也就是我们要讨论的主题了，我们要做的最小物联网系统其实也就相当于是一个平台。我们可以上传我们各种物体的信息，同时给予这些物体一些属性，我们也可以通过网络来控制这些物体，而他们之间也可以相互控制。因此，我们需要给他们提供一个网络，这就是RESTful的由来。
        
        所以我们也稍微了解一下RESTful吧。
        
        ###RESTful###
        
        <blockquote>REST 从资源的角度来观察整个网络，分布在各处的资源由URI确定，而客户端的应用通过URI来获取资源的表征。获得这些表征致使这些应用程序转变了其状态。随着不断获取资源的表征，客户端应用不断地在转变着其状态，所谓表征状态转移（Representational State Transfer）。</blockquote>
        
        我们的世界是由资源来组成的，一个物体也就相当于是一个资源，以这种方式来构建我们的物联网系统，在目前来说是再好不过的一个方案了。
        
        <blockquote>REST架构就是希望能够统一这一类的Hypermedia Controls, 赋予他们标准的, 高度可扩展的标准语义及表现形式, 使得甚至无人工干预的机器与机器间的通用交互协议边的可能.</blockquote>
        
        这个也就是我们的目的了，物联网最后的核心就是使物体与物体之间的交互成为可能。
        
        那么，这里也就解释了为什么我们要用RESTful来做这个最小系统的原因了。
        
        ###最小系统中的RESTful###
        
        例如，一个简单的例子，
        列举所有物体状态，
        
            GET http://localhost/athome
        
        呈现某一特定状态，
        
            GET http://localhost/athome/1/
        
        剩下的部分这里就不多说了，多说无益，可以自己谷歌去。
        
        接着我们要讨论的就是系统框架
        
        ##系统框架##
        
        ###为什么是Raspberry PI###
        
        Raspberry Pi在这里只是充当了数据的发送和接收，虽然我们可以直接将Raspberry PI作为控制的对象，但是将这个从中剥离来讲清楚系统的结构会更加简单。从而，可以让我们把核心注意力聚焦在要解决的问题上，也就是数据传送，每个部分都可以简单地从系统剥离出来，用另外的事物来替换。
        
        
        ###为什么是Arduino###
        这个问题的答案和上面是一样的，只是因为有些搞物联网是从软件过来的，对于他们来说去理解端口的难道可能有点大。所以，我们在简化系统设计的同时，也把系统的代码简化了。因为Arduino足够的简单，我们可以关心问题的本质，而不是如何去编程。
        
        ###为什么是Ajax###
        至于什么是Ajax，
        
        <blockquote>AJAX即“Asynchronous JavaScript and XML”（异步的JavaScript与XML技术），指的是一套综合了多项技术的浏览器端网页开发技术。
        </blockquote>
        
        这里的目的只是在于演示如何运用这些数据，使它具有他应有的价值，而不在于技术本身。当然ajax不是必需的，如果你需要的只是用来控制这个灯。
        
        ###为什么是Laravel###
        只是因为个人喜爱，你也可以用Ruby On Rails来搭建这样一个功能，或者是Java。只不过PHP在我的服务器上运行得挺不错的，而且我又不需要重新去写配置那些配置。
        同时Laravel可以简单的开发我们所需要的功能，换句话说他是PHP世界的Ruby On Rails。
        
        [1]:http://b.phodal.com
        [2]:http://www.phodal.com/blog/bare-minimum-iot
        [3]:https://github.com/gmszone/iot/wiki
        [4]:http://www.phodal.com/blog/bare-minimum-iot-system-structure/
        [5]:http://www.phodal.com/blog/bare-minimum-iot-system-restful/
        [6]:http://www.phodal.com/blog/bare-minimum-iot-system-create-restful/
        [7]:http://www.phodal.com/blog/bare-minimum-iot-system-about-restful/
        [8]:http://www.phodal.com/blog/bare-minimum-iot-system-restful-template/
        [9]:http://www.phodal.com/blog/bare-minimum-iot-system-ajax/
        [10]:http://www.phodal.com/blog/bare-minimum-iot-system-date-commucation/
        [11]:http://www.phodal.com/blog/bare-minimum-iot-system-mcu-commucation/
        [12]:http://www.phodal.com/blog/bare-minimum-iot-system-android-example/
        [13]:https://github.com/gmszone/Home-Anywhere/raw/master/app/build/apk/app-debug-unaligned.apk
        [14]:http://bbs.phodal.com
        [15]:http://www.phodal.com/blog/bare-minimum-iot-system-add-test-for-laravel/
        [16]:http://www.phodal.com/blog/bare-minimum-iot-system-dashboard-framework-dashing/
        
        
Platform: UNKNOWN
