diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..0dcc6a9 Binary files /dev/null and b/.DS_Store differ diff --git a/Pipfile b/Pipfile new file mode 100644 index 0000000..7f725d0 --- /dev/null +++ b/Pipfile @@ -0,0 +1,33 @@ +[[source]] +url = "https://pypi.org/simple" +verify_ssl = true +name = "pypi" + +[packages] +argh = "==0.26.2" +click = "==8.0.1" +ghp-import = "==2.0.1" +importlib-metadata = "==4.6.1" +jinja2 = "==3.0.1" +markdown = "==3.3.4" +markupsafe = "==2.0.1" +mergedeep = "==1.3.4" +mkdocs = "==1.2.3" +mkdocs-material = "==7.1.10" +mkdocs-material-extensions = "==1.0.1" +packaging = "==21.0" +pygments = "==2.12" +pymdown-extensions = "==10.0" +pyparsing = "==2.4.7" +python-dateutil = "==2.8.2" +pyyaml = "==6.0.1" +pyyaml-env-tag = "==0.1" +six = "==1.16.0" +typing-extensions = "==3.10.0.0" +watchdog = "==2.1.3" +zipp = "==3.5.0" + +[dev-packages] + +[requires] +python_version = "3.9" diff --git a/Pipfile.lock b/Pipfile.lock new file mode 100644 index 0000000..0acaa03 --- /dev/null +++ b/Pipfile.lock @@ -0,0 +1,351 @@ +{ + "_meta": { + "hash": { + "sha256": "00c11923b7aa1964d0eace0374d7f4d6776add0f6cbadd9a5353aeb8c4e4bef6" + }, + "pipfile-spec": 6, + "requires": { + "python_version": "3.9" + }, + "sources": [ + { + "name": "pypi", + "url": "https://pypi.org/simple", + "verify_ssl": true + } + ] + }, + "default": { + "argh": { + "hashes": [ + "sha256:a9b3aaa1904eeb78e32394cd46c6f37ac0fb4af6dc488daa58971bdc7d7fcaf3", + "sha256:e9535b8c84dc9571a48999094fda7f33e63c3f1b74f3e5f3ac0105a58405bb65" + ], + "index": "pypi", + "version": "==0.26.2" + }, + "click": { + "hashes": [ + "sha256:8c04c11192119b1ef78ea049e0a6f0463e4c48ef00a30160c704337586f3ad7a", + "sha256:fba402a4a47334742d782209a7c79bc448911afe1149d07bdabdf480b3e2f4b6" + ], + "index": "pypi", + "markers": "python_version >= '3.6'", + "version": "==8.0.1" + }, + "ghp-import": { + "hashes": [ + "sha256:753de2eace6e0f7d4edfb3cce5e3c3b98cd52aadb80163303d1d036bda7b4483", + "sha256:8241a8e9f8dd3c1fafe9696e6e081b57a208ef907e9939c44e7415e407ab40ea" + ], + "index": "pypi", + "version": "==2.0.1" + }, + "importlib-metadata": { + "hashes": [ + "sha256:079ada16b7fc30dfbb5d13399a5113110dab1aa7c2bc62f66af75f0b717c8cac", + "sha256:9f55f560e116f8643ecf2922d9cd3e1c7e8d52e683178fecd9d08f6aa357e11e" + ], + "index": "pypi", + "markers": "python_version >= '3.6'", + "version": "==4.6.1" + }, + "jinja2": { + "hashes": [ + "sha256:1f06f2da51e7b56b8f238affdd6b4e2c61e39598a378cc49345bc1bd42a978a4", + "sha256:703f484b47a6af502e743c9122595cc812b0271f661722403114f71a79d0f5a4" + ], + "index": "pypi", + "markers": "python_version >= '3.6'", + "version": "==3.0.1" + }, + "markdown": { + "hashes": [ + "sha256:31b5b491868dcc87d6c24b7e3d19a0d730d59d3e46f4eea6430a321bed387a49", + "sha256:96c3ba1261de2f7547b46a00ea8463832c921d3f9d6aba3f255a6f71386db20c" + ], + "index": "pypi", + "markers": "python_version >= '3.6'", + "version": "==3.3.4" + }, + "markupsafe": { + "hashes": [ + "sha256:01a9b8ea66f1658938f65b93a85ebe8bc016e6769611be228d797c9d998dd298", + "sha256:023cb26ec21ece8dc3907c0e8320058b2e0cb3c55cf9564da612bc325bed5e64", + "sha256:0446679737af14f45767963a1a9ef7620189912317d095f2d9ffa183a4d25d2b", + "sha256:04635854b943835a6ea959e948d19dcd311762c5c0c6e1f0e16ee57022669194", + "sha256:0717a7390a68be14b8c793ba258e075c6f4ca819f15edfc2a3a027c823718567", + "sha256:0955295dd5eec6cb6cc2fe1698f4c6d84af2e92de33fbcac4111913cd100a6ff", + "sha256:0d4b31cc67ab36e3392bbf3862cfbadac3db12bdd8b02a2731f509ed5b829724", + "sha256:10f82115e21dc0dfec9ab5c0223652f7197feb168c940f3ef61563fc2d6beb74", + "sha256:168cd0a3642de83558a5153c8bd34f175a9a6e7f6dc6384b9655d2697312a646", + "sha256:1d609f577dc6e1aa17d746f8bd3c31aa4d258f4070d61b2aa5c4166c1539de35", + "sha256:1f2ade76b9903f39aa442b4aadd2177decb66525062db244b35d71d0ee8599b6", + "sha256:20dca64a3ef2d6e4d5d615a3fd418ad3bde77a47ec8a23d984a12b5b4c74491a", + "sha256:2a7d351cbd8cfeb19ca00de495e224dea7e7d919659c2841bbb7f420ad03e2d6", + "sha256:2d7d807855b419fc2ed3e631034685db6079889a1f01d5d9dac950f764da3dad", + "sha256:2ef54abee730b502252bcdf31b10dacb0a416229b72c18b19e24a4509f273d26", + "sha256:36bc903cbb393720fad60fc28c10de6acf10dc6cc883f3e24ee4012371399a38", + "sha256:37205cac2a79194e3750b0af2a5720d95f786a55ce7df90c3af697bfa100eaac", + "sha256:3c112550557578c26af18a1ccc9e090bfe03832ae994343cfdacd287db6a6ae7", + "sha256:3dd007d54ee88b46be476e293f48c85048603f5f516008bee124ddd891398ed6", + "sha256:4296f2b1ce8c86a6aea78613c34bb1a672ea0e3de9c6ba08a960efe0b0a09047", + "sha256:47ab1e7b91c098ab893b828deafa1203de86d0bc6ab587b160f78fe6c4011f75", + "sha256:49e3ceeabbfb9d66c3aef5af3a60cc43b85c33df25ce03d0031a608b0a8b2e3f", + "sha256:4dc8f9fb58f7364b63fd9f85013b780ef83c11857ae79f2feda41e270468dd9b", + "sha256:4efca8f86c54b22348a5467704e3fec767b2db12fc39c6d963168ab1d3fc9135", + "sha256:53edb4da6925ad13c07b6d26c2a852bd81e364f95301c66e930ab2aef5b5ddd8", + "sha256:5855f8438a7d1d458206a2466bf82b0f104a3724bf96a1c781ab731e4201731a", + "sha256:594c67807fb16238b30c44bdf74f36c02cdf22d1c8cda91ef8a0ed8dabf5620a", + "sha256:5b6d930f030f8ed98e3e6c98ffa0652bdb82601e7a016ec2ab5d7ff23baa78d1", + "sha256:5bb28c636d87e840583ee3adeb78172efc47c8b26127267f54a9c0ec251d41a9", + "sha256:60bf42e36abfaf9aff1f50f52644b336d4f0a3fd6d8a60ca0d054ac9f713a864", + "sha256:611d1ad9a4288cf3e3c16014564df047fe08410e628f89805e475368bd304914", + "sha256:6300b8454aa6930a24b9618fbb54b5a68135092bc666f7b06901f897fa5c2fee", + "sha256:63f3268ba69ace99cab4e3e3b5840b03340efed0948ab8f78d2fd87ee5442a4f", + "sha256:6557b31b5e2c9ddf0de32a691f2312a32f77cd7681d8af66c2692efdbef84c18", + "sha256:693ce3f9e70a6cf7d2fb9e6c9d8b204b6b39897a2c4a1aa65728d5ac97dcc1d8", + "sha256:6a7fae0dd14cf60ad5ff42baa2e95727c3d81ded453457771d02b7d2b3f9c0c2", + "sha256:6c4ca60fa24e85fe25b912b01e62cb969d69a23a5d5867682dd3e80b5b02581d", + "sha256:6fcf051089389abe060c9cd7caa212c707e58153afa2c649f00346ce6d260f1b", + "sha256:7d91275b0245b1da4d4cfa07e0faedd5b0812efc15b702576d103293e252af1b", + "sha256:89c687013cb1cd489a0f0ac24febe8c7a666e6e221b783e53ac50ebf68e45d86", + "sha256:8d206346619592c6200148b01a2142798c989edcb9c896f9ac9722a99d4e77e6", + "sha256:905fec760bd2fa1388bb5b489ee8ee5f7291d692638ea5f67982d968366bef9f", + "sha256:97383d78eb34da7e1fa37dd273c20ad4320929af65d156e35a5e2d89566d9dfb", + "sha256:984d76483eb32f1bcb536dc27e4ad56bba4baa70be32fa87152832cdd9db0833", + "sha256:99df47edb6bda1249d3e80fdabb1dab8c08ef3975f69aed437cb69d0a5de1e28", + "sha256:9f02365d4e99430a12647f09b6cc8bab61a6564363f313126f775eb4f6ef798e", + "sha256:a30e67a65b53ea0a5e62fe23682cfe22712e01f453b95233b25502f7c61cb415", + "sha256:ab3ef638ace319fa26553db0624c4699e31a28bb2a835c5faca8f8acf6a5a902", + "sha256:aca6377c0cb8a8253e493c6b451565ac77e98c2951c45f913e0b52facdcff83f", + "sha256:add36cb2dbb8b736611303cd3bfcee00afd96471b09cda130da3581cbdc56a6d", + "sha256:b2f4bf27480f5e5e8ce285a8c8fd176c0b03e93dcc6646477d4630e83440c6a9", + "sha256:b7f2d075102dc8c794cbde1947378051c4e5180d52d276987b8d28a3bd58c17d", + "sha256:baa1a4e8f868845af802979fcdbf0bb11f94f1cb7ced4c4b8a351bb60d108145", + "sha256:be98f628055368795d818ebf93da628541e10b75b41c559fdf36d104c5787066", + "sha256:bf5d821ffabf0ef3533c39c518f3357b171a1651c1ff6827325e4489b0e46c3c", + "sha256:c47adbc92fc1bb2b3274c4b3a43ae0e4573d9fbff4f54cd484555edbf030baf1", + "sha256:cdfba22ea2f0029c9261a4bd07e830a8da012291fbe44dc794e488b6c9bb353a", + "sha256:d6c7ebd4e944c85e2c3421e612a7057a2f48d478d79e61800d81468a8d842207", + "sha256:d7f9850398e85aba693bb640262d3611788b1f29a79f0c93c565694658f4071f", + "sha256:d8446c54dc28c01e5a2dbac5a25f071f6653e6e40f3a8818e8b45d790fe6ef53", + "sha256:deb993cacb280823246a026e3b2d81c493c53de6acfd5e6bfe31ab3402bb37dd", + "sha256:e0f138900af21926a02425cf736db95be9f4af72ba1bb21453432a07f6082134", + "sha256:e9936f0b261d4df76ad22f8fee3ae83b60d7c3e871292cd42f40b81b70afae85", + "sha256:f0567c4dc99f264f49fe27da5f735f414c4e7e7dd850cfd8e69f0862d7c74ea9", + "sha256:f5653a225f31e113b152e56f154ccbe59eeb1c7487b39b9d9f9cdb58e6c79dc5", + "sha256:f826e31d18b516f653fe296d967d700fddad5901ae07c622bb3705955e1faa94", + "sha256:f8ba0e8349a38d3001fae7eadded3f6606f0da5d748ee53cc1dab1d6527b9509", + "sha256:f9081981fe268bd86831e5c75f7de206ef275defcb82bc70740ae6dc507aee51", + "sha256:fa130dd50c57d53368c9d59395cb5526eda596d3ffe36666cd81a44d56e48872" + ], + "index": "pypi", + "markers": "python_version >= '3.6'", + "version": "==2.0.1" + }, + "mergedeep": { + "hashes": [ + "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8", + "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307" + ], + "index": "pypi", + "markers": "python_version >= '3.6'", + "version": "==1.3.4" + }, + "mkdocs": { + "hashes": [ + "sha256:89f5a094764381cda656af4298727c9f53dc3e602983087e1fe96ea1df24f4c1", + "sha256:a1fa8c2d0c1305d7fc2b9d9f607c71778572a8b110fb26642aa00296c9e6d072" + ], + "index": "pypi", + "markers": "python_version >= '3.6'", + "version": "==1.2.3" + }, + "mkdocs-material": { + "hashes": [ + "sha256:890e9be00bfbe4d22ccccbcde1bf9bad67a3ba495f2a7d2422ea4acb5099f014", + "sha256:92ff8c4a8e78555ef7b7ed0ba3043421d18971b48d066ea2cefb50e889fc66db" + ], + "index": "pypi", + "version": "==7.1.10" + }, + "mkdocs-material-extensions": { + "hashes": [ + "sha256:6947fb7f5e4291e3c61405bad3539d81e0b3cd62ae0d66ced018128af509c68f", + "sha256:d90c807a88348aa6d1805657ec5c0b2d8d609c110e62b9dce4daf7fa981fa338" + ], + "index": "pypi", + "markers": "python_version >= '3.5'", + "version": "==1.0.1" + }, + "packaging": { + "hashes": [ + "sha256:7dc96269f53a4ccec5c0670940a4281106dd0bb343f47b7471f779df49c2fbe7", + "sha256:c86254f9220d55e31cc94d69bade760f0847da8000def4dfe1c6b872fd14ff14" + ], + "index": "pypi", + "markers": "python_version >= '3.6'", + "version": "==21.0" + }, + "pygments": { + "hashes": [ + "sha256:5eb116118f9612ff1ee89ac96437bb6b49e8f04d8a13b514ba26f620208e26eb", + "sha256:dc9c10fb40944260f6ed4c688ece0cd2048414940f1cea51b8b226318411c519" + ], + "index": "pypi", + "markers": "python_version >= '3.6'", + "version": "==2.12.0" + }, + "pymdown-extensions": { + "hashes": [ + "sha256:9a77955e63528c2ee98073a1fb3207c1a45607bc74a34ef21acd098f46c3aa8a", + "sha256:e6cbe8ace7d8feda30bc4fd6a21a073893a9a0e90c373e92d69ce5b653051f55" + ], + "index": "pypi", + "markers": "python_version >= '3.7'", + "version": "==10.0" + }, + "pyparsing": { + "hashes": [ + "sha256:c203ec8783bf771a155b207279b9bccb8dea02d8f0c9e5f8ead507bc3246ecc1", + "sha256:ef9d7589ef3c200abe66653d3f1ab1033c3c419ae9b9bdb1240a85b024efc88b" + ], + "index": "pypi", + "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2'", + "version": "==2.4.7" + }, + "python-dateutil": { + "hashes": [ + "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86", + "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9" + ], + "index": "pypi", + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'", + "version": "==2.8.2" + }, + "pyyaml": { + "hashes": [ + "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5", + "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc", + "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df", + "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741", + "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206", + "sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27", + "sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595", + "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62", + "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98", + "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696", + "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290", + "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9", + "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d", + "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6", + "sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867", + "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47", + "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486", + "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6", + "sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3", + "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007", + "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938", + "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0", + "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c", + "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735", + "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d", + "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28", + "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4", + "sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba", + "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8", + "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef", + "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5", + "sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd", + "sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3", + "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0", + "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515", + "sha256:baa90d3f661d43131ca170712d903e6295d1f7a0f595074f151c0aed377c9b9c", + "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c", + "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924", + "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34", + "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43", + "sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859", + "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673", + "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54", + "sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a", + "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b", + "sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab", + "sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa", + "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c", + "sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585", + "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d", + "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f" + ], + "index": "pypi", + "markers": "python_version >= '3.6'", + "version": "==6.0.1" + }, + "pyyaml-env-tag": { + "hashes": [ + "sha256:70092675bda14fdec33b31ba77e7543de9ddc88f2e5b99160396572d11525bdb", + "sha256:af31106dec8a4d68c60207c1886031cbf839b68aa7abccdb19868200532c2069" + ], + "index": "pypi", + "markers": "python_version >= '3.6'", + "version": "==0.1" + }, + "six": { + "hashes": [ + "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", + "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" + ], + "index": "pypi", + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'", + "version": "==1.16.0" + }, + "typing-extensions": { + "hashes": [ + "sha256:0ac0f89795dd19de6b97debb0c6af1c70987fd80a2d62d1958f7e56fcc31b497", + "sha256:50b6f157849174217d0656f99dc82fe932884fb250826c18350e159ec6cdf342", + "sha256:779383f6086d90c99ae41cf0ff39aac8a7937a9283ce0a414e5dd782f4c94a84" + ], + "index": "pypi", + "version": "==3.10.0.0" + }, + "watchdog": { + "hashes": [ + "sha256:0bcdf7b99b56a3ae069866c33d247c9994ffde91b620eaf0306b27e099bd1ae0", + "sha256:0bcfe904c7d404eb6905f7106c54873503b442e8e918cc226e1828f498bdc0ca", + "sha256:201cadf0b8c11922f54ec97482f95b2aafca429c4c3a4bb869a14f3c20c32686", + "sha256:3a7d242a7963174684206093846537220ee37ba9986b824a326a8bb4ef329a33", + "sha256:3e305ea2757f81d8ebd8559d1a944ed83e3ab1bdf68bcf16ec851b97c08dc035", + "sha256:431a3ea70b20962e6dee65f0eeecd768cd3085ea613ccb9b53c8969de9f6ebd2", + "sha256:44acad6f642996a2b50bb9ce4fb3730dde08f23e79e20cd3d8e2a2076b730381", + "sha256:54e057727dd18bd01a3060dbf5104eb5a495ca26316487e0f32a394fd5fe725a", + "sha256:6fe9c8533e955c6589cfea6f3f0a1a95fb16867a211125236c82e1815932b5d7", + "sha256:85b851237cf3533fabbc034ffcd84d0fa52014b3121454e5f8b86974b531560c", + "sha256:8805a5f468862daf1e4f4447b0ccf3acaff626eaa57fbb46d7960d1cf09f2e6d", + "sha256:9628f3f85375a17614a2ab5eac7665f7f7be8b6b0a2a228e6f6a2e91dd4bfe26", + "sha256:a12539ecf2478a94e4ba4d13476bb2c7a2e0a2080af2bb37df84d88b1b01358a", + "sha256:acc4e2d5be6f140f02ee8590e51c002829e2c33ee199036fcd61311d558d89f4", + "sha256:b5fc5c127bad6983eecf1ad117ab3418949f18af9c8758bd10158be3647298a9", + "sha256:b8ddb2c9f92e0c686ea77341dcb58216fa5ff7d5f992c7278ee8a392a06e86bb", + "sha256:bf84bd94cbaad8f6b9cbaeef43080920f4cb0e61ad90af7106b3de402f5fe127", + "sha256:d9456f0433845e7153b102fffeb767bde2406b76042f2216838af3b21707894e", + "sha256:e4929ac2aaa2e4f1a30a36751160be391911da463a8799460340901517298b13", + "sha256:e5236a8e8602ab6db4b873664c2d356c365ab3cac96fbdec4970ad616415dd45", + "sha256:fd8c595d5a93abd441ee7c5bb3ff0d7170e79031520d113d6f401d0cf49d7c8f" + ], + "index": "pypi", + "markers": "python_version >= '3.6'", + "version": "==2.1.3" + }, + "zipp": { + "hashes": [ + "sha256:957cfda87797e389580cb8b9e3870841ca991e2125350677b2ca83a0e99390a3", + "sha256:f5812b1e007e48cff63449a5e9f4e7ebea716b4111f9c4f9a645f91d579bf0c4" + ], + "index": "pypi", + "markers": "python_version >= '3.6'", + "version": "==3.5.0" + } + }, + "develop": {} +} diff --git a/docs/.DS_Store b/docs/.DS_Store new file mode 100644 index 0000000..255751b Binary files /dev/null and b/docs/.DS_Store differ diff --git a/docs/English/.DS_Store b/docs/English/.DS_Store new file mode 100644 index 0000000..f0a4b7c Binary files /dev/null and b/docs/English/.DS_Store differ diff --git a/docs/device-configuration/configure-IoT.md b/docs/English/device-configuration/configure-IoT.md similarity index 100% rename from docs/device-configuration/configure-IoT.md rename to docs/English/device-configuration/configure-IoT.md diff --git a/docs/device-configuration/configure-ap-mesh.md b/docs/English/device-configuration/configure-ap-mesh.md similarity index 100% rename from docs/device-configuration/configure-ap-mesh.md rename to docs/English/device-configuration/configure-ap-mesh.md diff --git a/docs/device-configuration/configure-computer.md b/docs/English/device-configuration/configure-computer.md similarity index 100% rename from docs/device-configuration/configure-computer.md rename to docs/English/device-configuration/configure-computer.md diff --git a/docs/device-configuration/configure-edgerouter-x.md b/docs/English/device-configuration/configure-edgerouter-x.md similarity index 100% rename from docs/device-configuration/configure-edgerouter-x.md rename to docs/English/device-configuration/configure-edgerouter-x.md diff --git a/docs/device-configuration/troubleshoot-devices.md b/docs/English/device-configuration/troubleshoot-devices.md similarity index 100% rename from docs/device-configuration/troubleshoot-devices.md rename to docs/English/device-configuration/troubleshoot-devices.md diff --git a/docs/index.md b/docs/English/index.md similarity index 100% rename from docs/index.md rename to docs/English/index.md diff --git a/docs/installations/buildingassessment.md b/docs/English/installations/buildingassessment.md similarity index 100% rename from docs/installations/buildingassessment.md rename to docs/English/installations/buildingassessment.md diff --git a/docs/installations/hardware.md b/docs/English/installations/hardware.md similarity index 100% rename from docs/installations/hardware.md rename to docs/English/installations/hardware.md diff --git a/docs/installations/installations.md b/docs/English/installations/installations.md similarity index 65% rename from docs/installations/installations.md rename to docs/English/installations/installations.md index 18a8487..a29ab8b 100644 --- a/docs/installations/installations.md +++ b/docs/English/installations/installations.md @@ -3,11 +3,11 @@ title: Installation Overview --- # Installation Overview - Philly Community Wireless has partnered with [**PhillyWisper**](https://phillywisper.net/) to install antennas for our free WiFi network on rooftops in the Norris Square, Fairhill, and Kensington neighborhoods. PhillyWisper is a wireless internet service provider (WISP) which means our project delivers the internet the "last mile" to our customers using radio technology. -## Rooftop Installation Process +Philly Community Wireless seeks to build community-owned and community-operated wireless mesh network technologies. This page describes our process for installation and the type of network we are trying to build over a large expanse of the city. In a typical home network, all 'access points' (APs) are hard-wired to your router via Ethernet cable. In a mesh network, access points can not only be hard-wired, but connect to each other wirelessly, allowing a single Internet connection to be shared with significantly less infrastructure and labor than hard-wiring every single AP. +## Rooftop Installation Process Most installations proceed in the following order: 1. **Building Assessment** - A new address is submitted to us. We check if the address has line of sight (LoS) to a PhillyWisper high site using Google Earth and other mapping tools, and we conduct both remote and in-person building assessments as part of developing an install plan. For more information, please see [Building Assessments](../buildingassessment) page. @@ -21,25 +21,18 @@ Most installations proceed in the following order: During residential installs, we either broadcast a private network for the resident to use from the same access points broadcasting the public PCW network, or provide an additional router for the resident to have their own private network that gets its uplink from the PCW network. ## Length of Time for Antenna Installations - Typically, installs take between two and four hours to complete, but in certain cases they can take longer. The full installation process, from a rooftop antenna to a wall-mounted mesh kit, can involve 2-3 visits, each involving an hour or two of work. ## Hardware for Installation +Internet installations typically consist of a rooftop antenna, a power-over-Ethernet injector, a router, and a WiFi access point (all of which are typically Ubiquiti networking equipment). During installation we take every effort to minimally impact buildings. At any given install site, our installation work will be customized to ensure the least invasive and most secure placement of networking equipment, according to industry standards. -Rooftop installs consist of a rooftop antenna, a power-over-Ethernet injector, a router, and a mesh access point. Philly Community Wireless and PhillyWisper primarily deploy Ubiquiti radios and networking equipment. As each roof is different, the installation is customized for each location to ensure the most secure placement according to industry standards. +For most locations, we first install a Ubiquiti LiteBeam antenna on the roof of the home, which receives signal from a nearby high site managed by PhillyWisper. To install the rooftop antenna, PhillyWisper technicians will access a high point and mount a small radio antenna (approx 14" x 11" x 11", see attached images of various mounting techniques below) that they precision aim at the closest source tower. For mounting the radio, we never penetrate the roofing system itself, and wherever possible we utilize preexisting structures (chimneys, vent pipes, etc). If preexisting structures aren't an option, we use a non-penetrating roof mount, which is properly weighed down and rests on a rubber mat on top of your roof. -In general, we will install a Ubiquiti LiteBeam antenna on the roof of the home, which receives signal from a PhillyWisper tower. The antenna is wired into the home via an Ethernet cable. Currently, this part of the install must be completed by a PhillyWisper technician. For installation purposes, this means PhillyWisper technicians will need to mount a small radio antenna (approx 14" x 11" x 11") at roof height and precision aim it at the closest tower. - -PhillyWisper takes every effort to minimally impact buildings during installation. They use non-invasive techniques when mounting the radio (see attached images of various mounting techniques below). They never penetrate the roofing system itself and they try and utilize preexisting structures (chimneys, vent pipes, etc) when possible. - -If preexisting structures aren't an option, they will use a non-penetrating roof mount, which is properly weighed down and rests on a rubber mat on top of your roof. They then secure an outdoor-rated, UV stabilized network cable from the radio on the roof, down along the building exterior, and inside where your WiFi router will be located. - -Both PhillyWisper and Philly Community Wireless make sure the wire run is as inconspicuously as possible and ensure there is plenty of tension on the wire so that it doesn't flap in the wind. If there are any preexisting penetrations entering the building from previous ISPs, they will use that if possible and caulk when finished. +The rooftop radio gets powered via outdoor-rated Ethernet cable that runs into the home (our equipment uses Power over Ethernet (PoE), so we can power outdoor devices with Ethernet from an indoor outlet). We make sure the wire run is as inconspicuous and secure as possible. We try to use preexisting penetrations into the building from previous ISPs, and we seal any holes to the exterior. ## Installation Examples ### Non-Penetrating Roof Mounts - We utilize non-penetrating roof mounts (NPRM). A thick rubber mat is placed below the NPRM to protect the roof. Cinderblocks are used as ballast to secure the NPRM:
@@ -57,7 +50,6 @@ We utilize non-penetrating roof mounts (NPRM). A thick rubber mat is placed belo
### Mounting on existing roof structures - We also often use j-arm mounts or previously existing mounts from previous telecommunications installations (old TV/Satellite antennas)to mount our equipment:
@@ -86,11 +78,9 @@ The mast on the right has PTMP radios with symmetrical horn antennas. The radios The square-ish white device between and below the masts is a Ubiquiti EP-S16, an outdoor rated network switch. 54 VDC power is supplied to the EP-S16 which in turns provides power to the radios using POE (power of Ethernet). --> ## Outdoor Access Points Overview - Hosts of rooftop installations will also host a router in the house near the window to the front of the house. In some cases we may install a wall-mounted access point on the outside of the house to propagate the broadband signal throughout the neighborhood. ### Indoor Router and Access Points Overview - The Ethernet cable is passed through a Power-over-Ethernet (PoE) injector, which adds power to the signal the Ethernet cable is carrying and allows downstream devices to be powered solely through Ethernet.
@@ -116,7 +106,15 @@ Finally, a Ubiquiti Mesh AP ("bunny ears" because look at them!) is connected to
A Unifi UAP-AC-Mesh, or "bunny ears"
- For more information on configuring our access points, see our [Configure AP-Mesh Guide](../../Device-Configuration/configure-ap-mesh) +## Considerations When Installing a Mesh Node +Mesh nodes are installations where we do not use a Litebeam, but instead set up a wireless access point that meshes from a nearby access point wired to a router and Litebeam at a local hub. As documented by [Unifi](https://help.ui.com/hc/en-us/articles/115002262328-Considerations-for-Optimal-Wireless-Mesh-Networks), several factors must be considered when building a mesh network: + +* **Mesh networks should be supplemental** - Although mesh networks can operate comporably to a hard-wired network, connection quality and speed can be greatly affected by radiofrequency (RF) noise and obstructions between APs such as walls, trees, or other structures. + +* **Mesh 'hops' should be minimized** - A meshed AP should only have one 'parent' - each mesh 'hop', or mesh connection between APs, results in a significant performance decrease. Ideally, there should be a maximum of two 'hops' - e.g, a mesh AP meshes with another mesh AP, which then meshes to a hard-wired AP. + +* **Limit conncurrent connections to a 'parent'** - Similarly, meshing too many APs to the same 'parent' creates additional RF noise and performance demands on the parent, resulting in decreased performance and stability. +* **Ensure strong signal strength between meshed APs** - Ideally, a meshed AP will have clear Line-of-Sight (LoS) to its mesh parent. A signal strength of -60dbm is recommended for ideal performance. Ensure minimal obstructions between the meshed AP and the parent, such as walls, trees, furniture, etc. diff --git a/docs/installations/solar.md b/docs/English/installations/solar.md similarity index 100% rename from docs/installations/solar.md rename to docs/English/installations/solar.md diff --git "a/docs/Espa\303\261ol/.DS_Store" "b/docs/Espa\303\261ol/.DS_Store" new file mode 100644 index 0000000..7e0e771 Binary files /dev/null and "b/docs/Espa\303\261ol/.DS_Store" differ diff --git "a/docs/Espa\303\261ol/configurar/configurar-ap-mesh.md" "b/docs/Espa\303\261ol/configurar/configurar-ap-mesh.md" new file mode 100644 index 0000000..f5d29bf --- /dev/null +++ "b/docs/Espa\303\261ol/configurar/configurar-ap-mesh.md" @@ -0,0 +1,84 @@ +--- + +--- +# Configurar AP Mesh + +Esta guía lo guiará a través de la configuración de una malla de punto de acceso Ubiquiti para que pueda ser adoptada por la red PCW. + +## Hardware requerido + +* Unidad de malla AP: [Ubiquiti Mesh Dual-Band Access Point](https://store.ui.com/products/unifi-ac-mesh-ap) (antena Ubiquiti blanca con orejas de conejo) +* Inyector PoE +* Cable Ethernet +* Ordenador +* Adaptador Ethernet USB (si el ordenador no tiene puerto ethernet) +* Cable de regleta/alargador +* Paperclip + +![Materials](assets/images/mesh/Materials.jpeg) + +## Pasos de instalación + +### Establecer IP estática en el equipo + +Instrucciones para Mac (otros sistemas operativos por determinar) + +1. Abra `System Preferences` > `Network`. +2. Seleccione la conexión Ethernet que tiene con la unidad de malla AP. ![Mac Network Settings #1](../../assets/images/static-ip/Network_1.png) +3. Cambie el valor de `Configure IPv4` a `Manually`. + ![Mac Network Settings #2](../../assets/images/static-ip/Network_2.png) +4. Establezca la dirección IP en `192.168.1.29` (aunque la mayoría de los valores deberían funcionar aquí). +5. Establezca la máscara de subred a `255.255.255.0` + ![Mac Network Settings #3](../../assets/images/static-ip/Network_3.png) +6. Haga clic en `Apply` + +### Conecte la unidad de malla AP. + +1. Conecte el inyector PoE a una toma de corriente o a una regleta. +2. Conecte el puerto `POE` del inyector a la unidad de malla AP con un cable ethernet. +3. Conecte el puerto `LAN` del inyector al ordenador, utilizando el adaptador Ethernet USB si no dispone de un puerto Ethernet. + ![Ports](../assets/images/mesh/Ports.jpeg) + ![Wiring](../assets/images/mesh/Wiring.jpeg) + +### Restablecimiento de fábrica de la unidad de malla AP. + +Las unidades de malla AP han tenido un comportamiento inesperado incluso fuera de la caja, por lo que se recomienda reiniciarlas de fábrica antes de continuar. + +1. Con el clip, pulse el botón de restablecimiento situado en la parte inferior de la unidad de malla AP hasta que haga clic.![Reset Button](../../assets/images/mesh/Reset.jpeg) +2. Mantenga pulsado durante 15 segundos. +3. Una vez que la luz de estado de la unidad de malla AP ha destellado y se ha apagado, el dispositivo se ha restablecido. + +### Conecte a la unidad de malla AP. + +1. Abra un símbolo del sistema +2. Si se ha conectado previamente a una unidad de malla de AP, tendrá que editar el archivo de `known_hosts` , o obtendrá un error de`Host key verification failed` error. + 1. Abra `~/.ssh/known_hosts` con `vim`, `nano`, o el editor de texto que desee. + 2. Elimine la línea que comienza por `192.168.1.20` (tendrá un aspecto similar a `192.168.1.20 ssh-rsa AAAAB3NzaC1yc2E...`), y guarde el archivo. +3. Ejecute el comando `ssh ubnt@192.168.1.20` +4. Puede ver la alerta: + + The authenticity of host '192.168.1.20 (192.168.1.20)' can't be established. + RSA key fingerprint is SHA256:oUG6ABM3uor6lfBpJFcnHWyhhPnCrIx2Jf0U1+UAg4g. + Are you sure you want to continue connecting (yes/no/[fingerprint])? + + Presione sí para continuar. +5. Cuando se le solicite la contraseña, escriba `ubnt`. +6. Ahora debe estar conectado a la unidad de malla AP. + ![SSH Connection](../../assets/images/mesh/SSH.png) + +### Adopte AP Mesh Unit + +Necesitará acceso al portal Philly Community Wireless HostiFi para completar este paso. + +1. De su `ssh` , ejecute el comando `set-inform http://unifi.phillycommunitywireless.org:8080/inform`. + * Esto alertará al controlador HostiFi de que la unidad de malla AP desea ser adoptada. +2. Abra el portal HostiFi en el explorador y desplácese a la lista de dispositivos. +3. La unidad de malla AP debe aparecer en la lista de dispositivos en espera de adopción. +4. Pulse `Adopt` para adoptar la unidad de malla AP. + +## Solución de problemas + +1. Computadora no reconoce la unidad de malla AP en la configuración de red o el comando`ssh` falla. + * La unidad de malla AP puede tardar unos minutos en iniciarse después de enchufarla, por lo que espere hasta que la luz de estado se ilumine en blanco y vuelva a intentarlo. +2. ¿Qué significa este patrón de luces de estado? + * [LED Color Patterns for UniFi Devices](https://help.ui.com/hc/en-us/articles/204910134-UniFi-LED-Color-Patterns-for-UniFi-Devices) diff --git "a/docs/Espa\303\261ol/configurar/configurar-erx.md" "b/docs/Espa\303\261ol/configurar/configurar-erx.md" new file mode 100644 index 0000000..102e2e0 --- /dev/null +++ "b/docs/Espa\303\261ol/configurar/configurar-erx.md" @@ -0,0 +1,43 @@ +--- + +--- +# Configurar ERX Router + +Esta guía le guiará a través de la configuración de un Ubiquiti EdgeRouter X. + +## Hardware requerido + +* Router e cable de alimentación +* Tranque cable +* Computador +* Adaptador Ethernet USB (si la computadora no tiene puerto Ethernet) + +![Hardware](../assets/images/erx/hardware.jpg) + +## Pasos de instalación + +### Establecer IP estática en el equipo + +Ver [./static-ip](./static-ip.md) + +### Conecte el ERX + +1. Conecte el ERX a su cable de alimentación y conecte el cable de alimentación a una toma de corriente. +2. Conecte el puerto `eth0` del ERX al ordenador con un cable Ethernet, utilizando el adaptador Ethernet USB si no dispone de un puerto Ethernet. + +![Ports](../assets/images/erx/wiring.jpeg) +![Ports](../assets/images/erx/eth0.jpeg) + +### Configurar ERX + +1. Descargue el [ERX config file](../assets/configs/erx-config.tar.gz) +2. Navegue al portal en [https://192.168.1.1](https://192.168.1.1) en su navegador. +3. Regístrese sesión en el portal con nombre de usuario `ubnt`, contraseña `ubnt`. + ![Login](../assets/images/erx/login.jpeg) +4. En el `Use wizard?` , presione no. + ![Login](../assets/images/erx/wizard.jpeg) +5. Presione la pestaña `System` en la parte inferior de la página. +6. En la sección `Restore Config` , presione `Upload a file` y seleccione el archivo de configuración de ERX que descargó. + ![Login](../assets/images/erx/system.jpeg) +7. El ERX se reiniciará utilizando la nueva configuración. +8. ¡Eso es todo! Si necesita realizar más configuración, puede volver a iniciar sesión en el portal utilizando el nombre de usuario `pcwadmin`, y una contraseña que puede obtener de los mantenedores del proyecto. diff --git "a/docs/Espa\303\261ol/index.md" "b/docs/Espa\303\261ol/index.md" new file mode 100644 index 0000000..faad452 --- /dev/null +++ "b/docs/Espa\303\261ol/index.md" @@ -0,0 +1,32 @@ +--- + +--- +# **Documentación técnica** + +## El proyecto PCW +**Philly Community Wireless** (PCW) es un proyecto para desarrollar redes de malla de propiedad comunitaria en North Philly. Somos un grupo de trabajo de organizadores, tecnólogos, académicos, maestros de escuelas públicas y personal del Ayuntamiento de Filadelfia. Durante una época de distanciamiento social y enseñanza en línea, aproximadamente la mitad de los estudiantes de las escuelas públicas de la ciudad carecen de conexión wifi en casa. En ciertos vecindarios, aún más residentes carecen de conexión a Internet. In certain neighborhoods, even more residents lack any connection to the Internet. Buscamos abordar la brecha digital de **la ciudad con tecnologías de red de malla operadas y propiedad de la comunidad.** + +Las redes de malla permiten compartir una única conexión a Internet entre un grupo más amplio de usuarios con muy poco coste o infraestructura necesaria. Con la ayuda de **PhillyWisper**, un proveedor de servicios de Internet inalámbrico, pro-neutral, estamos trabajando para instalar dos sitios piloto en **Kensington y Fairhill**. A partir de ahí, planearemos talleres de diseño participativo y capacitación técnica para la comunidad que los capacitará para mantener y hacer crecer esta conexión de red gratuita. + +## Los documentos de PCW +Esta página de documentos proporciona información técnica en desarrollo y guías para replicar la configuración y distribución del proyecto de routers y antenas para construir una red de malla. + +Si está buscando una **descripción no técnica del proyecto** o está interesado en suscribirse a la cobertura de PCW, visite nuestra [homepage](https://phillycommunitywireless.org). + +### [Recursos Académicos]() +Esta página describe recursos secundarios sobre los problemas del acceso de banda ancha y la inequidad digital en ciudades urbanas como Philadelphia. + +### [Hardware requerido]() +Visión general del hardware necesario para la infraestructura del proyecto PCW. + +### [Instalaciones de antenas]() +Esta guía describe el proceso de instalación de antenas en la azotea como base para la red de malla inalámbrica y el wifi público gratuito. + +### [Configurar enrutadores ERX]() +La página Configurar enrutadores ERX explica la fase de configuración de los hosts de enrutador de las instalaciones en tejados. + +### [IP estática]() +Esta guía describe cómo configurar el ordenador con una IP estática, de modo que pueda configurar el router y el kit de malla. + +### [Configurar AP-Mesh]() +Esta guía describe la configuración de un kit de malla que se puede instalar en cualquier hogar muy cerca (medio bloque de vecindario) de un host de antena en la azotea. diff --git "a/docs/Espa\303\261ol/instalacions/Instalacion-de-antenas.md" "b/docs/Espa\303\261ol/instalacions/Instalacion-de-antenas.md" new file mode 100644 index 0000000..e6f2ded --- /dev/null +++ "b/docs/Espa\303\261ol/instalacions/Instalacion-de-antenas.md" @@ -0,0 +1,77 @@ +--- + +--- +# Instalación de antenas + +Philly Community Wireless se ha asociado con PhillyWisper para instalar antenas para la red wifi gratuita en los tejados del barrio de Norris Square Park. PhillyWisper es un proveedor de servicios de Internet inalámbrico (WISP), lo que significa que nuestro proyecto ofrece Internet a nuestros clientes a través de la tecnología de radio. + +## Proceso de instalación en la azotea + +La mayoría de las instalaciones se realizaron en el siguiente orden: + +1. Examine el edificio y la azotea para evaluar la línea de visión (LOV) de la torre de origen de la ubicación alta para la señal de banda ancha. +2. Instale la antena en la azotea y conecte el cable al edificio. +3. Configure el router wifi y los kits de malla (para obtener más información, consulte nuestra [Configure AP-Mesh Guide](./configure-ap-mesh.md) y nuestra [Configure ERX Router Guide](./configure-erx.md)). +4. Es posible que instale una antena montada en la pared para propagar la señal por la calle. + +## Duración de las instalaciones de antenas + +Normalmente, las instalaciones tardan entre dos y cuatro horas en completarse, pero en algunos casos pueden tardar más. El proceso de instalación completo, desde una antena en el techo hasta un kit de malla montado en la pared, puede implicar 2-3 visitas, cada una de las cuales implica una o dos horas de trabajo. + +# Hardware para la instalación + +Las instalaciones en la azotea constan de una antena en la azotea, un inyector de alimentación a través de Ethernet, un router y un punto de acceso de malla. Philly Community Wireless y PhillyWisper utilizan principalmente radios y equipos de red Ubiquiti. Como cada techo es diferente, la instalación se personaliza para cada ubicación para garantizar la colocación más segura de acuerdo con los estándares del sector. + +En general, instalamos una antena Ubiquiti LiteBeam en el techo de la casa, que recibe la señal de una torre PhillyWisper. La antena se conecta al hogar mediante un cable Ethernet. Actualmente, esta parte de la instalación debe ser completada por un técnico de PhillyWisper. Para fines de instalación, esto significa que los técnicos de PhillyWisper tendrán que montar una antena de radio pequeña (aproximadamente 14 x 11 x 11 pulgadas) a la altura del techo y apuntar con precisión a la torre más cercana. + +PhillyWisper se esfuerza al máximo por impactar los edificios durante la instalación. Utilizan técnicas no invasivas al montar la radio (consulte las imágenes adjuntas de las distintas técnicas de montaje que aparecen a continuación). Nunca penetran en el sistema de techado mismo y ellos intentan y utilizan estructuras preexistentes (chimeneas, tubos de ventilación, etc) cuando es posible. + +Si las estructuras preexistentes no son una opción, utilizarán un soporte de techo no penetrante, que se pesa correctamente y descansa sobre una alfombrilla de goma en la parte superior de su techo. A continuación, aseguran un cable de red estabilizado a los rayos UV para exteriores desde la radio del techo, hacia abajo a lo largo del exterior del edificio y el interior donde se ubicará el router WiFi. + +Tanto Philly Community Wireless y PhillyWisper como la de la comunidad Philly garantizan que el recorrido del cable sea lo más discreto posible y garantizan que el cable tenga mucha tensión para que no se solapa con el viento. Si hay alguna penetración preexistente que entra en el edificio de ISP anteriores, utilizarán eso si es posible y calafatearás cuando termine. + +## Ejemplos de instalación + +### Soportes de techo no penetrantes + +Utilizamos soportes de techo no penetrantes (NPRM). Una alfombra de goma gruesa se coloca debajo del NPRM para proteger el techo. Los bloques de cemento se utilizan como lastre para asegurar el NPRM: + +![Non-penetrating roof mount 1](../assets/images/install/image1.jpg) +![Non-penetrating roof mount 2](../assets/images/install/image2.jpg) + +### Antenas montadas en la pared + +La siguiente imagen muestra dos mástiles montados en la pared con radios, junto con un interruptor exterior y una caja de conexiones. + +El mástil de la izquierda tiene una radio Ubiquiti AF-24 que funciona a 24 GHz y proporciona una conexión de retorno de 1,4 Gbps al centro de datos. + +![Wall mounted antenna 1](../assets/images/install/image6.jpg) +![Wall mounted antenna 2](../assets/images/install/image7.jpg) +![Wall mounted antenna 3](../assets/images/install/image8.jpg) +![Wall mounted antenna 4](../assets/images/install/image9.jpg) + +El mástil de la derecha tiene radios PTMP con antenas de bocina simétricas. Las radios proporcionan servicio a clientes individuales. + +El dispositivo blanco cuadrado entre y debajo de los mástiles es un Ubiquiti EP-S16, un conmutador de red para exteriores. Se suministra alimentación de 54 V CC al EP-S16, que a su vez suministra alimentación a las radios mediante POE (alimentación de Ethernet). + +# Instalación de kit de malla para hosts de antena en la azotea + +Los anfitriones de las instalaciones en la azotea también albergará un router en la casa cerca de la ventana al frente de la casa. En algunos casos podemos instalar una antena montada en la pared en el exterior de la casa para propagar la señal de banda ancha a través del vecindario. + +Proporcionamos un kit con un inyector PoE y un AP de malla de orejas de conejo. Philly Community Wireless puede instalar el kit, o el residente puede instalar las orejas de conejo en cualquier lugar dentro de su casa, siempre y cuando otros puntos de acceso de malla estén dentro del alcance de radio (estamos planeando sugerir la entrada de la casa o el porche -- los puntos de acceso son impermeables). + +## Descripción general del kit de malla + +El cable Ethernet pasa a través de un inyector de alimentación a través de Ethernet (PoE), que añade alimentación a la señal que transporta el cable Ethernet y permite que los dispositivos de bajada se alimenten únicamente a través de Ethernet. + +![PoE Injector](../assets/images/install/image4.jpg) + +El cable Ethernet alimentado está conectado a un Ubiquiti EdgeRouter-X (o posiblemente a otro router en el futuro) configurado para admitir redes de malla. El router gestiona el tráfico de cada uno de los puntos de acceso (AP) con los que está conectado en malla. + +![EdgeRouter-X](../assets/images/install/image5.jpg) + +Por último, un Ubiquiti Mesh AP (“orejas de conejito” porque miren a ellos!) está conectado al router y permite que los dispositivos de su rango de señal de radio se conecten a la red. Las orejas de conejito deben instalarse en una ubicación que sea radiovisible para los puntos de acceso de malla en las instalaciones domésticas a su alcance. + +![Ubiquiti Mesh AP](../assets/images/install/image3.jpg) + +Para obtener más información sobre el kit de malla, consulte nuestra [Configure AP-Mesh Guide](./configure-ap-mesh.md) diff --git "a/docs/Espa\303\261ol/instalacions/hardware.md" "b/docs/Espa\303\261ol/instalacions/hardware.md" new file mode 100644 index 0000000..13cabda --- /dev/null +++ "b/docs/Espa\303\261ol/instalacions/hardware.md" @@ -0,0 +1,31 @@ +--- + +--- +# Hardware requerido + +## Kit de malla + +* [Ubiquiti Mesh Dual-Band Access Point](https://store.ui.com/products/unifi-ac-mesh-ap) + +## Instalación de antena en la azotea + +* [airMAX LiteBeam AC 5 GHz Bridge](https://store.ui.com/collections/wireless/products/litebeam-5ac-gen2) +* [Ubiquiti EdgeRouter ERX](https://dl.ui.com/qsg/ER-X/ER-X_EN.html) +* [Ubiquiti Mesh Dual-Band Access Point](https://store.ui.com/products/unifi-ac-mesh-ap) + +## Antenas adicionales + +* [Ubiquiti Directional Dual-Band Antenna](https://store.ui.com/collections/operator-airmax-and-ltu-antennas/products/directional-dual-band-antenna-for-uap-ac-m) + +### Routers alternativos + +* [MikroTik hEX PoE](https://www.doubleradius.com/mikrotik-hex-poe-rb960pgs) + +## Accesorios + +* [Ethernet Cables 3'](https://www.newegg.com/Product/ComboDealDetails?ItemList=Combo.4307102&quicklink=true) +* [6-outlet power strip](https://www.newegg.com/apc-pe63-nema-5-15r/p/1B4-0052-000C2?Description=power%20strip&cm_re=power_strip-_-1B4-0052-000C2-_-Product&quicklink=true) +* [Extension cords](https://www.newegg.com/black-monoprice-6-00-ft-others/p/0N6-01B8-002D6) +* [PoE Injector/Splitter](https://www.newegg.com/p/2WG-00DK-00004) +* [Ethernet to Ethernet adapter](https://www.newegg.com/p/0Y3-02J6-00001) +* [USB Type C to Ethernet adapter](https://www.ebay.com/itm/132225990432?epid=910384900&hash=item1ec9487f20:g:FhgAAOSwqiVdyN) \ No newline at end of file diff --git "a/docs/Espa\303\261ol/recursos.md" "b/docs/Espa\303\261ol/recursos.md" new file mode 100644 index 0000000..c68f11e --- /dev/null +++ "b/docs/Espa\303\261ol/recursos.md" @@ -0,0 +1,70 @@ +--- + +--- +# Recursos Académicos + +## Historia de la tecnología comunitaria en Philadelphia + +Breitbart, Joshua, Naveen Lakshmipathy, and Sascha D. Meinrath. “[The Philadelphia Story: Learning from a Municipal Wireless Pioneer](https://technical.ly/wp-content/uploads/2017/03/wireless-philadelphia-report-breitbart-et-al.pdf).” Washington DC: New America Foundation, December 2007. + +Dunbar-Hester, Christina. _Low Power to the People: Pirates, Protest, and Politics in FM Radio Activism._ MIT Press, 2014. + +
+ +## Currículo + +[Teaching Community Technology Handbook](https://detroitcommunitytech.org/teachcommtech) \[pdf\], Detroit Community Technology Project + +> designed using a "popular education method grounded in the history of Civil Rights-era Citizenship Schools and Paulo Freire’s _Pedagogy of the Oppressed._ . . . \[a\] people-guided approach to bring tech education to communities that have been harmed and oppressed by technology." + +[Neighborhood Network Construction Kit: Do-it-ourselves Guide to Community Networks](https://communitytechnology.github.io/docs/cck/index.html) + +> originally released as [Commotion Construction Kit](https://commotionwireless.net/docs/cck/), this tutorial was co-designed by New America's Open Technology Institute, The Work Department, Allied Media Projects, and the Detroit Community Technology Project + +[Portable Network Kit Setup Guide](http://communitytechny.org/stepping-through-the-portal-ctny-the-pandemic/), Community Tech NY + +[Wireless Networking in the Developing World](http://wndw.net). 3rd Edition. Copenhagen, 2013. + +[The Community Network Manual: How to Build the Internet Yourself](https://bibliotecadigital.fgv.br/dspace/handle/10438/25696) + +[Meshnet DWeb Camp 2019](https://dweb-camp-2019.github.io/meshnet/) + +
+ +## Modelos de política y organización + +[Detroit Digital Stewards Program](https://www.alliedmedia.org/dctp/digitalstewards) + +National Urban League's [Lewis Latimer Plan for Digital Equity and Inclusion](https://nul.org/news/national-urban-league-unveils-new-framework-bridge-digital-divide) + +Nicol Turner Lee (Brookings) proposing a “[Tech New Deal](https://www.brookings.edu/blog/techtank/2021/01/12/why-america-needs-a-tech-new-deal-to-build-back-better/)" + +
+ +## Lecturas adicionales + +Byrum, Greta. “[Building the People’s Internet](https://urbanomnibus.net/2019/10/building-the-peoples-internet/).” _Urban Omnibus_, October 2, 2019. + +Park, Claire. “[Community Broadband: The Fast, Affordable Internet Option That’s Flying Under the Radar](https://www.newamerica.org/oti/reports/community-broadband/).” Washington D.C.: New America Foundation, May 19, 2020. + +Rey-Moreno, Carlos. “[Supporting the Creation and Scalability of Affordable Access Solutions: Understanding Community Networks in Africa](https://www.internetsociety.org/resources/doc/2017/supporting-the-creation-and-scalability-of-affordable-access-solutions-understanding-community-networks-in-africa/).” Internet Society, May 2017. + +Sanchez, Alvaro. “[Toward Digital Inclusion: Broadband Access in the Third Federal Reserve District](https://www.philadelphiafed.org/-/media/egmp/resources/reports/toward-digital-inclusion-broadband-access-in-the-third-federal-reserve-district.pdf).” Cascade Focus. Federal Reserve Bank of Philadelphia, March 2020. + +Shaffer, Gwen. “[Common Sense: An Examination of Three Los Angeles Community WiFi Projects That Privileged Public Funding Over Commons-Based Infrastructure Management](https://doi.org/10.2139/ssrn.2941920).” Rochester, NY: Social Science Research Network, March 28, 2017. + +Solomon, Rory. [_Meshiness: Mesh Networks and the Politics of Connectivity_](http://search.proquest.com/pqdtglobal/docview/2408892960/abstract/479AB38D8B044610PQ/1)_._ Ph.D., New York University, 2020. + +Thakur, Dhanaraj, and Teddy Woodhouse. “[Meaningful Connectivity: A New Standard to Raise the Bar for Internet Access](https://a4ai.org/meaningful-connectivity/).” Alliance for Affordable Internet, 2020. + +
+ +## Prensa local + +Graham, Kristen A. “[Philly Schools Chief Says Internet Providers Refuse to Open Their Networks so Students Can Access Education](https://www.inquirer.com/education/internet-access-philadelphia-coronavirus-comcast-budget-council-hite-school-district-20200520.html).” _The Philadelphia Inquirer,_ May 20, 2020. + +Gross, Paige. “[A Digital Literacy Alliance Grant Is Creating Roles to Help Residents Access and Use Tech during the Pandemic](https://technical.ly/philly/2020/05/29/digital-literacy-alliance-grant-digital-navigator-help-residents-access-use-tech-during-pandemic/).” _Technical.Ly Philly,_ May 29, 2020, sec. Civic. + +Hetrick, Christian, and Dylan Purcell. “[Thousands of Philly Students Are Stuck at Home with No Computer or Internet after Coronavirus Closed Schools](https://www.inquirer.com/education/coronavirus-students-digital-divide-philadelphia-comcast-20200403.html).” _The Philadelphia Inquirer,_ April 3, 2020. + +Noor, Jaisal. “[Baltimore City Students Demand Comcast Increase Internet Speed During Pandemic](https://baltimorebeat.com/2020/05/26/baltimore-city-students-demand-comcast-increase-internet-speed-during-pandemic/).” _Baltimore Beat_, May 26, 2020. diff --git a/docs/assets/.DS_Store b/docs/assets/.DS_Store new file mode 100644 index 0000000..bb64de8 Binary files /dev/null and b/docs/assets/.DS_Store differ diff --git a/docs/assets/icons/.DS_Store b/docs/assets/icons/.DS_Store new file mode 100644 index 0000000..9c7469f Binary files /dev/null and b/docs/assets/icons/.DS_Store differ diff --git a/docs/installations/airmonitors.md b/docs/installations/airmonitors.md deleted file mode 100644 index 927a84c..0000000 --- a/docs/installations/airmonitors.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -title: Air Monitors ---- - -# Air Monitors -Philly Community Wireless, in collaboration with the Clean Air Council and Temple University's Geography and Urban Studies Program, has deployed [PurpleAir air monitors](https://www2.purpleair.com/) at several install sites around our network to provide real-time air monitoring. - -Purple Air monitors enable communities to engage in citizen science around pollution in their neighborhoods, and allow residents to assess: - -1. If their air quality is good in their area -2. How it compares to other parts of the city. - - -
- PurpleAir air monitor at KCT Gardens -
PurpleAir air monitor at KCT Gardens
-
- -Real-time air quality data can be viewed on [PurpleAir's map](https://map.purpleair.com/). - -
- -
- -PCW-installed air monitors are present at: - - -* Cesar Andreú Iglesias Community Garden -* GALAEI -* HACE - Caribe Tower -* HACE - Somerset Villas -* Kensington Library -* Lillian Marrero Library -* Multiple Residential Homes of PCW's Community -* Norris Square Neighborhood Project -* The Lighthouse 1893 -* West Kensington Ministry diff --git a/docs/installations/wirelessmesh.md b/docs/installations/wirelessmesh.md deleted file mode 100644 index 334491b..0000000 --- a/docs/installations/wirelessmesh.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: What is a Wireless Mesh Network? ---- - -## What is a Wireless Mesh Network? -Philly Community Wireless's goal, with assistance from [**PhillyWisper**](https://phillywisper.net/), is to address Philadelphia's digital divide with community-owned and community-operated mesh network technologies. - -In a typical home network, all 'access points' (APs) are hard-wired to your router via Ethernet cable. In a mesh network, access points can not only be hard-wired, but connect to each other wirelessly, allowing a single Internet connection to be shared with significantly less infrastructure and labor than hard-wiring every single AP. - -![Wall AP](assets/images/device-configs/mesh/hace_wall_mesh.jpg) -
-
This AP conveniently plugs directly into an outlet, and then meshes with nearby APs - meaning we don't have to run another cable!
-
- -## Performance Considerations for Wireless Mesh Networks - -Several factors must be considered while operating a mesh network: - -* **Mesh networks should be supplemental** - Although mesh networks can operate comporably to a hard-wired network, connection quality and speed can be greatly affected by radiofrequency (RF) noise and obstructions between APs such as walls, trees, or other structures. - -* **Mesh 'hops' should be minimized** - A meshed AP should only have one 'parent' - each mesh 'hop', or mesh connection between APs, results in a significant performance decrease. Ideally, there should be a maximum of two 'hops' - e.g, a mesh AP meshes with another mesh AP, which then meshes to a hard-wired AP. - -* **Limit conncurrent connections to a 'parent'** - Similarly, meshing too many APs to the same 'parent' creates additional RF noise and performance demands on the parent, resulting in decreased performance and stability. - -* **Ensure strong signal strength between meshed APs** - Ideally, a meshed AP will have clear Line-of-Sight (LoS) to its mesh parent. A signal strength of -60dbm is recommended for ideal performance. Ensure minimal obstructions between the meshed AP and the parent, such as walls, trees, furniture, etc. - -## Additional Resources -Please visit [this page](https://help.ui.com/hc/en-us/articles/115002262328-Considerations-for-Optimal-Wireless-Mesh-Networks) for more information on mesh networks. diff --git a/mkdocs.yml b/mkdocs.yml index 003bcfd..7a8d404 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -34,11 +34,10 @@ extra: homepage: https://phillycommunitywireless.org alternate: - name: English - link: /en/latest + link: /en/ lang: en - - name: Español - link: /es/latest + link: /es/ lang: es markdown_extensions: