{ "info": { "author": "Sergio Sanchez, Ruben Morales", "author_email": "sergio.sanchezs@ingenieros.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "Intended Audience :: Education", "License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0)", "Natural Language :: English", "Operating System :: POSIX :: Linux", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Topic :: System :: Hardware :: Hardware Drivers" ], "description": "IOT-GD\n======\n\nMOACON MODULES LIBRARY\n----------------------\n**RS-ADIN4 AND RS-SADIN6 MODULES**\n\nIoT. You can read moacon modules (Modbus communication - cubloc.com) and mcp3208 - 8 channel 12Bit ADC from Rpi 3 and others.\n\nYou can install this package by typing the following code in terminal in the rapsberry Pi:\n\n.. code-block:: bash\n\n $ sudo pip install IOT_GD\n\nThis package include serveral modules:\n\n**Module moacon.py:** This module contains the folling functions:\n\n**OpenSerialfor_Moacon():**\n\nThis function allows to open a serial port in raspberry pi 3 named 'Serial0'\nand Baud Rate speed at 115200, to communicate well with the \nIn Rpi 3 you have to disable bluetooth device and swippe the serial port. \nWhen you execute the following command and you have 'Serial0 -> ttyAMA0':\n\n.. code-block:: bash\n\n $ ls -l /dev/\n\n**CloseSerialfor_Moacon():**\n\nThis function close the serial connection oppened by OpenSerialfor_Moacon().\n\n**RS_ADIN4(Module Number):**\n\nThis function read the RS-ADIN4 moacon module from Cubloc.com.\n\n- **Module Number:** The number of moacon module from 0 to 9 on the device. With a little modification in hardwrare you could read from 10 to 15.\n\n**RS_SADIN6(Module Number):**\n\nThis function read the RS-SADIN6 moacon module from Cubloc.com.\n\n- **Module Number:** The number of moacon module from 0 to 9 on the device. With a little modification in hardwrare you could read from 10 to 15.\n\nWhen data result in each channel is:\n\n- **(-1)**: probably the channel is damaged.\n- **(-2)**: Probably the data received is incomplete.\n- **(-3)**: It tried to read 3 times and it couldn't get an answer from the module. \n- **(-4)**: Module is Disconnected. Please verify the connection.\n\n**READING EXAMPLE CODE FOR RS_ADIN4. TESTING AND WORKING:**\n\n.. code-block:: python\n\n import serial\n import time\n from IOT_GD import moacon\n ModuleNumber = 1\n if __name__ == '__main__':\n if moacon.OpenSerialfor_Moacon() is True:\n results = moacon.RS_ADIN4(ModuleNumber)\n # print results\n print \"Module \" + str(ModuleNumber)\n for res in range(0, 4):\n print \"Channel \" + str(res+1) + \": \" + str(results[res])\n moacon.CloseSerialfor_Moacon()\n\n\n**READING EXAMPLE CODE FOR RS_SADIN6. TESTING AND WORKING:**\n\n.. code-block:: python\n\n import serial\n import time\n from IOT_GD import moacon\n ModuleNumber = 7\n if __name__ == '__main__':\n if moacon.OpenSerialfor_Moacon() is True:\n results = moacon.RS_SADIN6(ModuleNumber)\n # print results\n print \"Module \" + str(ModuleNumber)\n for res in range(0, 6):\n print \"Channel \" + str(res+1) + \": \" + str(results[res])\n moacon.CloseSerialfor_Moacon()\n\nMODPORT MODULES LIBRARY\n=======================\n\n**MD_ADIN4 - 4 Analog Inputs Module Hi Resolution**\n\nThe AD Input Modules' inputs are not isolated, so please be sure not to provide voltage or current\nin excess of the specified ranges. Doing so could cause permanent damage.\n\nThe AD Input Modules can be wired to read voltage sources or current sources. When reading voltages\nsources, the modules can be configured for a 0 ~ 10V range or a 1 ~ 5V range using the dipswitch on the\nside of the module. When reading a current source (4-20mA), connect a 250 ohms resister across the input\nterminals.\n\n- Output Value: 0 to 10.000\n- Resolution: 13.3 bits\n- Precision: 0.1%\n- Convesion Speed: 30 ms per channel\n\n**How to use the function:**\n\n.. code-block:: python\n\n MD_ADIN4(Module_Number)\n\n**Module Number:** This is the number of the rotary switch on the face of each module to set its\nModbus slave address. It can be from 1 to 15, but directly on the rotary switch you can use \nfrom 1 to 10, if you wanna connect 5 more modules (from 11 to 15) you need to make a little simple \nsoldering modification in hardware.\n\n**READING EXAMPLE CODE FOR MD_ADIN4. TESTING AND WORKING:**\n\n.. code-block:: python\n\n import serial\n import time\n from IOT_GD import modport\n ModuleNumber = 10\n form = '{:5}'\n if __name__ == '__main__':\n if modport.OpenSerialfor_ModPort() is True:\n results = modport.MD_ADIN4(Module_Number)\n print \"MD-ADIN4, Module_Number \" + str(Module_Number) + \": \"\n for res in range(0, 4):\n data = form.format(results[res])\n print \"Channel \" + str(res+1) + \": \" + data + \" \",\n print \"\"\n modport.CloseSerialfor_ModPort()\n\n**MD_HADIN4 - 4 Analog Inputs Module ULTRA Hi Resolution**\n\nThe AD Input Modules' inputs are not isolated, so please be sure not to provide voltage or current\nin excess of the specified ranges. Doing so could cause permanent damage.\n\nThe AD Input Modules can be wired to read voltage sources or current sources. When reading voltages\nsources, the modules can be configured for a 0 ~ 10V range or a 1 ~ 5V range using the dipswitch on the\nside of the module. When reading a current source (4-20mA), connect a 250 ohms resister across the input\nterminals.\n\n- Output Value: 0 to 100.000\n- Resolution: 16.6 bits\n- Precision: 0.1%\n- Convesion Speed: 240 ms per channel\n\n**How to use the function:**\n\n.. code-block:: python\n\n MD_HADIN4(Module_Number)\n\n**Module Number:** This is the number of the rotary switch on the face of each module to set its\nModbus slave address. It can be from 1 to 15, but directly on the rotary switch you can use \nfrom 1 to 10, if you wanna connect 5 more modules (from 11 to 15) you need to make a little simple \nsoldering modification in hardware.\n\n**READING EXAMPLE CODE FOR MD_HADIN4. TESTING AND WORKING:**\n\n.. code-block:: python\n\n import serial\n import time\n from IOT_GD import modport\n ModuleNumber = 10\n form = '{:6}'\n if __name__ == '__main__':\n if modport.OpenSerialfor_ModPort() is True:\n results = modport.MD_HADIN4(Module_Number)\n print \"MD-HADIN4, Module_Number \" + str(Module_Number) + \": \"\n for res in range(0, 4):\n data = form.format(results[res])\n print \"Channel \" + str(res+1) + \": \" + data + \" \",\n print \"\"\n modport.CloseSerialfor_ModPort()\n\n**MD_DIDC8 - 8 pin 12-24VDC Digital Inputs**\n\nThis module can be read signals from 12 to 24 VDC depending on the ground referenced\nin pins C1 and C2. C1 references the 4 first digital inputs, and C2 references the 4 last\ndigital inputs.\n\n**How to use the function:**\n\n.. code-block:: python\n\n MD_DIDC8(Module_Number)\n\n**Module Number:** This is the number of the rotary switch on the face of each module to set its\nModbus slave address. It can be from 1 to 15, but directly on the rotary switch you can use \nfrom 1 to 10, if you wanna connect 5 more modules (from 11 to 15) you need to make a little simple \nsoldering modification in hardware.\n\n**READING EXAMPLE CODE FOR MD_DIDC8. TESTING AND WORKING:**\n\n.. code-block:: python\n\n import serial\n import time\n from IOT_GD import modport\n Module_Number = 10\n form = '{:5}'\n if __name__ == '__main__':\n if modport.OpenSerialfor_ModPort() is True:\n results = modport.MD_DIDC8(Module_Number)\n print \"MD-DIDC8, Module_Number \" + str(Module_Number) + \": \"\n for res in range(0, 8):\n data = form.format(results[res])\n print \"Ch\" + str(res) + \": \" + data + \" \",\n print \"\"\n modport.CloseSerialfor_ModPort()\n\n**MD_DOSI8 - 8 pin Digital Sink Ouputs**\n\nThis module can be set the ground from signals from 3.3V to 27 VDC on 1 Ampere Maximum current rate.\n\n**How to use the functions available in this module:**\n\n.. code-block:: python\n\n MD_DOSI8_Write_One(Module_Number, channel, value)\n MD_DOSI8_Write_All(Module_Number, MD_Data)\n MD_DOSI8_Read_All(Module_Number)\n\n**Module Number:** This is the number of the rotary switch on the face of each module to set its\nModbus slave address. It can be from 1 to 15, but directly on the rotary switch you can use \nfrom 1 to 10, if you wanna connect 5 more modules (from 11 to 15) you need to make a little simple \nsoldering modification in hardware.\n\n**channel:** This is the number of the fisical digital channel. This number need to be from 0 to 7.\n\n**Value:** This is the value that you want to set the channel. Deactivated is 0 and Activated is 1.\n\n**MD_Data:** This is the number in integer value that you want to give to all digital bits in the module.\nThe most significant bit is the channel 7.\nThe least significant bit is the channel 0.\n\n**READING EXAMPLES CODES FOR MD_DOSI8. TESTING AND WORKING:**\n\n**Using MD_DOSI8_Write_One function:**\n\n.. code-block:: python\n\n import serial\n import time\n from IOT_GD import modport\n Module_Number = 10\n if __name__ == '__main__':\n if modport.OpenSerialfor_ModPort() is True:\n print \"MD-DOSI8, Module Number: \" + str(10), \" \"\n Value = 1 # Value to be assiged to the channel (0 - Logic Low, 1 - Logic High)\n for channel in range(0,8):\n bac = modport.MD_DOSI8_Write_One(Module_Number, channel, Value)\n print \"Channel\" + str(channel) + \" Value: \" + str(bac)\n modport.CloseSerialfor_ModPort()\n\n**Using MD_DOSI8_Write_All function:**\n\n.. code-block:: python\n\n import serial\n import time\n from IOT_GD import modport\n Module_Number = 10\n form = '{:5}'\n if __name__ == '__main__':\n if modport.OpenSerialfor_ModPort() is True:\n Data_bits = b'10110010' # Binary number that you want on the outputs\n Data_to_be = sum(int(c) * (2 ** i) for i, c in enumerate(Data_bits[::-1])) # converting to integer before passing to the function\n print \"Data: \" + str(Data_to_be)\n results = modport.MD_DOSI8_Write_All(Module_Number, Data_to_be)\n for res in range(0, 8):\n data = form.format(results[res])\n print \"Ch\" + str(res) + \": \" + data + \" \",\n print \"\"\n modport.CloseSerialfor_ModPort()\n\n**Using MD_DOSI8_Read_All function:**\n\n.. code-block:: python\n\n import serial\n import time\n from IOT_GD import modport\n Module_Number = 10\n form = '{:5}'\n if __name__ == '__main__':\n if modport.OpenSerialfor_ModPort() is True:\n print \"--------------------------------------------------------------\"\n results = modport.MD_DOSI8_Read_All(Module_Number)\n print \"MD-DOSI8, Module Number \" + str(Module_Number) + \": \"\n for res in range(0, 8):\n data = form.format(results[res])\n print \"Ch\" + str(res) + \": \" + data + \" \",\n print \"\"\n modport.CloseSerialfor_ModPort()\n\nSPI MODULE LIBRARY\n==================\n\n**ADC with MCP3208**\n\nThis module let you use the chip ADC MCP3208 which have 8 analog channels to use in differents purposes. Per example, You can connect a LM35 sensor to measure and control the temperature in a close place to control. You can use a different many sensor depending your application. You can measure the voltage, current, humidity and many things more. \n\n``Note: You need to add a voltage divider to measure voltages higher than the Vdd Vref``\n\nThis module use the SPI protocol to send to RPI all measured data.\n\nThe module use the function **_readadc(n)_** where n is the ADC channel where the sensor is connected. You can use a cycle \"for\" from n=0 to n=7 if you have connected eight sensors to chip and you want take every measure of these at the same time.\n\n.. code-block:: python\n\n import time\n from IOT_GD import mcp3208\n if __name__ == \"__main__\":\n while True:\n channels = []\n for n in range(0, 8):\n data = mcp3208.readadc(n)\n channels.insert(n, data)\n #print channels\n print \"----------------------\"\n for n in range(0, 8):\n print \"channel \" + str(n+1) + \": \" + str(channels[n])\n print \"\",\n time.sleep(1)\n\n", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/sergiosanchezs/IOT-GD", "keywords": "IOT_GD moacon ADC modbus rs-485 spi Analog", "license": "Mozilla Public License Version 2.0", "maintainer": "", "maintainer_email": "", "name": "IOT-GD", "package_url": "https://pypi.org/project/IOT-GD/", "platform": "", "project_url": "https://pypi.org/project/IOT-GD/", "project_urls": { "Homepage": "https://github.com/sergiosanchezs/IOT-GD" }, "release_url": "https://pypi.org/project/IOT-GD/1.0.8/", "requires_dist": null, "requires_python": "", "summary": "IoT. You can read moacon modules (Modbus communication - cubloc.com) and mcp3208 - 8 channel 12Bit ADC from Rpi 3 and others.", "version": "1.0.8" }, "last_serial": 2819825, "releases": { "1.0.2": [ { "comment_text": "", "digests": { "md5": "1d78c1fd856504d9e4c152eb4fac66c3", "sha256": "f764abda943ee7cadfbcc111410a0bd923d73172f7332aa00b2dbf911cb1b98a" }, "downloads": -1, "filename": "IOT_GD-1.0.2-py2-none-any.whl", "has_sig": false, "md5_digest": "1d78c1fd856504d9e4c152eb4fac66c3", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 11072, "upload_time": "2017-02-15T21:51:59", "url": "https://files.pythonhosted.org/packages/ce/54/14e6cfe1dfca71cf646dd4a2d247372d2d5692991c6eb9d9427bd09c2ad3/IOT_GD-1.0.2-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b80ee31264a8d76ae00dee2e7669fa0e", "sha256": "8f2c51978515d73d653fc53d3a4ea8a2c78491ee50445439aa7d8584f966d327" }, "downloads": -1, "filename": "IOT_GD-1.0.2.tar.gz", "has_sig": false, "md5_digest": "b80ee31264a8d76ae00dee2e7669fa0e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7678, "upload_time": "2017-02-15T21:52:02", "url": "https://files.pythonhosted.org/packages/ff/02/0eba836b681deac85793b2e455d65941ca9c7047354afbb0fc7442e29b08/IOT_GD-1.0.2.tar.gz" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "105cf66f86159a7a5c8143d88fede99b", "sha256": "8e2854c1a06477f9f3efe429a536f1e18f4405ac35563ae9f8171268e6e67393" }, "downloads": -1, "filename": "IOT_GD-1.0.3-py2-none-any.whl", "has_sig": false, "md5_digest": "105cf66f86159a7a5c8143d88fede99b", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 11153, "upload_time": "2017-02-15T22:16:41", "url": "https://files.pythonhosted.org/packages/69/f2/e3d49de4fed63fec7f884137eed5ba2d7fee010d0c13dfdbb5871e98b8a7/IOT_GD-1.0.3-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "79999bf2fcf1b472fe4b4c26ab4d6dd9", "sha256": "50cf2ff887138f2476c84cba130e6b7bca752308a992c8367757f7f4bdac1c32" }, "downloads": -1, "filename": "IOT_GD-1.0.3.tar.gz", "has_sig": false, "md5_digest": "79999bf2fcf1b472fe4b4c26ab4d6dd9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7729, "upload_time": "2017-02-15T22:16:42", "url": "https://files.pythonhosted.org/packages/90/95/a031d38f76a49ba0bcd688615122e8fdeff79c79fa054bd08110c911a958/IOT_GD-1.0.3.tar.gz" } ], "1.0.4": [ { "comment_text": "", "digests": { "md5": "5bebd99d8853525afbd130aa2d85ecc7", "sha256": "56287215df90bd93681726f91a9b10cb0bafc4ff338dfcbc08b35fa22877932d" }, "downloads": -1, "filename": "IOT_GD-1.0.4-py2-none-any.whl", "has_sig": false, "md5_digest": "5bebd99d8853525afbd130aa2d85ecc7", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 11181, "upload_time": "2017-03-01T22:48:18", "url": "https://files.pythonhosted.org/packages/a5/da/2a559c132845c59235da5ccf553ee50a0ae1cdbd7c8d95c2e04eaff22653/IOT_GD-1.0.4-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "feb4d01a4f952829350cb863f3fd7ebb", "sha256": "4092e389c22cf1448c67645de6b024a98faa107d915ea3e7d93ca714e6b70a1d" }, "downloads": -1, "filename": "IOT_GD-1.0.4.tar.gz", "has_sig": false, "md5_digest": "feb4d01a4f952829350cb863f3fd7ebb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7763, "upload_time": "2017-03-01T22:48:20", "url": "https://files.pythonhosted.org/packages/33/37/77be0d9199eaf320296b345e3218b93b39a5688146abb8225026af6d4081/IOT_GD-1.0.4.tar.gz" } ], "1.0.5": [ { "comment_text": "", "digests": { "md5": "e023f4c60e2937be1fb27e5c198b38a3", "sha256": "d1755392fc351364c4dbffb1558f2b889e81c8c324b541cc5454626ecc829ec2" }, "downloads": -1, "filename": "IOT_GD-1.0.5-py2-none-any.whl", "has_sig": false, "md5_digest": "e023f4c60e2937be1fb27e5c198b38a3", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 11207, "upload_time": "2017-03-02T14:03:03", "url": "https://files.pythonhosted.org/packages/08/56/d0f803e627dfe6f71095c22bbdfd2526cbbb062de0f14dbec6de41459a03/IOT_GD-1.0.5-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9f616ff1f156de3529aeba720353a6e3", "sha256": "14f4986933ca8541eb46c13bad4088dd53f0d8648a574d0b0fa7e494543b31c8" }, "downloads": -1, "filename": "IOT_GD-1.0.5.tar.gz", "has_sig": false, "md5_digest": "9f616ff1f156de3529aeba720353a6e3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7784, "upload_time": "2017-03-02T14:03:06", "url": "https://files.pythonhosted.org/packages/67/20/64aec35a19c7510a7968da6db3664dc6b8f929b467775133d9df1a172d61/IOT_GD-1.0.5.tar.gz" } ], "1.0.6": [ { "comment_text": "", "digests": { "md5": "25122bd105354eae367c71779aca72f0", "sha256": "f8eb8f58fbf257146a41ed5bc2ec0f113163b34bd24f1845c8d3132fbea9eb64" }, "downloads": -1, "filename": "IOT_GD-1.0.6-py2-none-any.whl", "has_sig": false, "md5_digest": "25122bd105354eae367c71779aca72f0", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 20939, "upload_time": "2017-04-19T21:56:15", "url": "https://files.pythonhosted.org/packages/61/b2/aecf6146e96cf135d7d3eed855bf253a7eb6c05b0508dee6f77c8d73d68e/IOT_GD-1.0.6-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3d4e217fea5db94b53d11a605bce67db", "sha256": "afb85fc230c652e3ae8de876c176077945e6077c15a30afcefce071db09dc2f8" }, "downloads": -1, "filename": "IOT_GD-1.0.6.tar.gz", "has_sig": false, "md5_digest": "3d4e217fea5db94b53d11a605bce67db", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15114, "upload_time": "2017-04-19T21:56:16", "url": "https://files.pythonhosted.org/packages/a2/d3/fa51df603a46eb0786b0b0e22a008d487520ab95888851090fb6d26b38fb/IOT_GD-1.0.6.tar.gz" } ], "1.0.7": [ { "comment_text": "", "digests": { "md5": "752e31fcbe761870de15942e06555a81", "sha256": "aa9755b73f04f880e046352b732d9bc8b0bd01759e01eaaba24fc3aded78ee9f" }, "downloads": -1, "filename": "IOT_GD-1.0.7-py2-none-any.whl", "has_sig": false, "md5_digest": "752e31fcbe761870de15942e06555a81", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 20974, "upload_time": "2017-04-19T22:17:37", "url": "https://files.pythonhosted.org/packages/f1/0e/5e89620172c73778108aad93ef7e5d7357356bcf5b8d93fe800deac96138/IOT_GD-1.0.7-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4b6d48cb2c3def9b26a9d89a02e27640", "sha256": "15bb98c2f533b50e92a41eae5f1ca8ce966d246ecee5b23565b8f65a18b4158f" }, "downloads": -1, "filename": "IOT_GD-1.0.7.tar.gz", "has_sig": false, "md5_digest": "4b6d48cb2c3def9b26a9d89a02e27640", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15136, "upload_time": "2017-04-19T22:17:39", "url": "https://files.pythonhosted.org/packages/9b/dc/5a116f4fad74111612b93dc043699a9b23da50cc920f754813637b01c836/IOT_GD-1.0.7.tar.gz" } ], "1.0.8": [ { "comment_text": "", "digests": { "md5": "37ebba4d75f60eaf949013fafc309327", "sha256": "c42d52a8be2fb18c8860984b0332aa3721ca3e577e6500d567b12b191c9458fb" }, "downloads": -1, "filename": "IOT_GD-1.0.8-py2-none-any.whl", "has_sig": false, "md5_digest": "37ebba4d75f60eaf949013fafc309327", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 20539, "upload_time": "2017-04-21T16:19:34", "url": "https://files.pythonhosted.org/packages/6b/47/b976974444d7acbfc09d5d49b689c31bfca96f59ed3eac51fc20f635d9a8/IOT_GD-1.0.8-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e44ba511838a76f60f32d1b1b36df8a6", "sha256": "57b80f3d0aa41ee13a001fdf1e84e9fbd5aa17159ea1d67c0edb66ab8a65847d" }, "downloads": -1, "filename": "IOT_GD-1.0.8.tar.gz", "has_sig": false, "md5_digest": "e44ba511838a76f60f32d1b1b36df8a6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14763, "upload_time": "2017-04-21T16:19:38", "url": "https://files.pythonhosted.org/packages/7a/a1/3565e5f36493fd55ae690de5506e72d3f0aff479bb5b4ad587e440321879/IOT_GD-1.0.8.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "37ebba4d75f60eaf949013fafc309327", "sha256": "c42d52a8be2fb18c8860984b0332aa3721ca3e577e6500d567b12b191c9458fb" }, "downloads": -1, "filename": "IOT_GD-1.0.8-py2-none-any.whl", "has_sig": false, "md5_digest": "37ebba4d75f60eaf949013fafc309327", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 20539, "upload_time": "2017-04-21T16:19:34", "url": "https://files.pythonhosted.org/packages/6b/47/b976974444d7acbfc09d5d49b689c31bfca96f59ed3eac51fc20f635d9a8/IOT_GD-1.0.8-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e44ba511838a76f60f32d1b1b36df8a6", "sha256": "57b80f3d0aa41ee13a001fdf1e84e9fbd5aa17159ea1d67c0edb66ab8a65847d" }, "downloads": -1, "filename": "IOT_GD-1.0.8.tar.gz", "has_sig": false, "md5_digest": "e44ba511838a76f60f32d1b1b36df8a6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14763, "upload_time": "2017-04-21T16:19:38", "url": "https://files.pythonhosted.org/packages/7a/a1/3565e5f36493fd55ae690de5506e72d3f0aff479bb5b4ad587e440321879/IOT_GD-1.0.8.tar.gz" } ] }