Map Your Particles!

Originalartikel

Backup

<html> <section class=„section-container“ id=„things“><h2 class=„section-title“><a class=„title-anchor“ href=„https://www.hackster.io/gusgonnet/map-your-particles-e34878?ref=part&amp;ref_id=9500&amp;offset=1#things“><i class=„fa fa-link“/></a>Things used in this project </h2><div class=„section-content“><table class=„sortable-table table table-hover fields-container parts-table“><tbody><tr class=„title“><td colspan=„6“><strong>Hardware components:</strong></td></tr><tr class=„fields part-row“ id=„part-9500“><td class=„part-img“><img src=„https://hackster.imgix.net/uploads/image/file/50450/photon-new-3706595d530dfb95d54f1e0e959e3386.jpg?auto=compress%2Cformat&amp;w=48&amp;h=48&amp;fit=fill&amp;bg=ffffff“ alt=„Photon new“/></td><td><table><tbody><tr><td><a href=„https://www.hackster.io/particle/products/photon“>Particle Photon</a></td></tr><tr><td/></tr></tbody></table></td><td>&#215;</td><td>1</td><td/></tr><tr class=„fields part-row“ id=„part-19589“><td class=„part-img“><img src=„https://hackster.imgix.net/uploads/image/file/126248/Compare-ParticleElectron.jpg?auto=compress%2Cformat&amp;w=48&amp;h=48&amp;fit=fill&amp;bg=ffffff“ alt=„Compare particleelectron“/></td><td><table><tbody><tr><td><a href=„https://www.hackster.io/particle/products/electron“>Particle Electron</a></td></tr><tr><td/></tr></tbody></table></td><td>&#215;</td><td>1</td><td/></tr><tr class=„title“><td colspan=„6“><strong>Software apps and online services:</strong></td></tr><tr class=„fields part-row“ id=„part-43559“><td class=„part-img“/><td><table><tbody><tr><td>Google The Google Maps Geolocation API</td></tr><tr><td/></tr></tbody></table></td><td colspan=„2“/><td><a target=„_blank“ rel=„nofollow“ class=„istooltip“ title=„More info“ href=„https://developers.google.com/maps/documentation/geolocation/intro“><i class=„fa fa-link“/></a></td></tr><tr class=„fields part-row“ id=„part-43560“><td class=„part-img“/><td><table><tbody><tr><td>particle-device-locator</td></tr><tr><td/></tr></tbody></table></td><td colspan=„2“/><td><a target=„_blank“ rel=„nofollow“ class=„istooltip“ title=„More info“ href=„https://github.com/kwnevarez/particle-device-locator“><i class=„fa fa-link“/></a></td></tr><tr class=„fields part-row“ id=„part-17031“><td class=„part-img“><img src=„https://hackster.imgix.net/uploads/image/file/108718/new-google-maps-logo.png?auto=compress%2Cformat&amp;w=48&amp;h=48&amp;fit=fill&amp;bg=ffffff“ alt=„New google maps logo“/></td><td><table><tbody><tr><td><a href=„https://www.hackster.io/google/products/google-maps“>Google Maps</a></td></tr><tr><td/></tr></tbody></table></td><td colspan=„2“/><td><a target=„_blank“ rel=„nofollow“ class=„istooltip“ title=„More info“ href=„https://developers.google.com/maps“><i class=„fa fa-link“/></a></td></tr><tr class=„fields part-row“ id=„part-13319“><td class=„part-img“><img src=„https://hackster.imgix.net/uploads/image/file/81107/ubidots.png?auto=compress%2Cformat&amp;w=48&amp;h=48&amp;fit=fill&amp;bg=ffffff“ alt=„Ubidots“/></td><td><table><tbody><tr><td><a href=„https://www.hackster.io/ubidots/products/ubidots“>Ubidots</a></td></tr><tr><td/></tr></tbody></table></td><td colspan=„2“/><td/></tr></tbody></table></div></section><section class=„section-container collapsed“ id=„about-project“><h2 class=„section-title“><a class=„title-anchor“ href=„https://www.hackster.io/gusgonnet/map-your-particles-e34878?ref=part&amp;ref_id=9500&amp;offset=1#about-project“><i class=„fa fa-link“/></a>Story </h2><div class=„section-content hljs-active hljs-monokai“><div class=„medium-editor“ itemprop=„text“><p>In this write-up I'll tell you everything I learned about the <a href=„https://docs.particle.io/tutorials/integrations/google-maps/“ rel=„nofollow“>Particle integration with Google Maps</a>.</p><h3 id=„toc-wait-a-minute–location-without-gps-0“><a class=„title-anchor“ href=„https://www.hackster.io/gusgonnet/map-your-particles-e34878?ref=part&amp;ref_id=9500&amp;offset=1#toc-wait-a-minute--location-without-gps-0“ rel=„nofollow“><i class=„fa fa-link“/></a>Wait a minute, location without GPS?</h3><p>Yes! We can now find the location of our Particles without needing extra hardware (eg: a GPS module). This is possible because <a href=„https://developers.google.com/maps/documentation/geolocation/intro“ rel=„nofollow“>the Google Maps Geolocation API</a> is able to return a location and an accuracy radius from visible Wi-Fi access points or cells towers. Pretty cool, huh?</p><h3 id=„toc-the-four-common-types-of-geolocation-1“><a class=„title-anchor“ href=„https://www.hackster.io/gusgonnet/map-your-particles-e34878?ref=part&amp;ref_id=9500&amp;offset=1#toc-the-four-common-types-of-geolocation-1“ rel=„nofollow“><i class=„fa fa-link“/></a>The four common types of geolocation</h3><p>Some theory, from the <a href=„https://docs.particle.io/tutorials/integrations/google-maps/#geolocation-basics“ rel=„nofollow“>Particle site</a>:</p><p><strong><em>GPS (GLOBAL POSITIONING SYSTEM):</em></strong><em> The Global Positioning System (GPS) is generally the most accurate and it can provide device location continuously. Under normal conditions, GPS can locate a device with an accuracy of ~4 meters.</em></p><p><strong><em>CELLULAR TOWER LOCATION: </em></strong><em>Every cell tower has an identifier, and this can be looked up using the Google Geolocation API to find its location. This process is fast and provides a general location, usually within 4000 meters or a couple miles.</em></p><p><strong><em>WI-FI LOCATION:</em></strong><em> The Google Maps integration also supports this method of geolocation. Particle Photon and P1 (Wi-Fi) devices can collect visible Wi-Fi access points, and send these to the geolocation API in exchange for its location. Often times, Wi-Fi geolocation is more precise than cellular geolocation, often with an accuracy radius of 50 meters or less.</em></p><p><strong><em>IP ADDRESS LOCATION: </em></strong><em>Particle Wi-Fi devices report their last IP address to the cloud, which could be used for this geolocation method. This is most often the least accurate of the 4 methods described in this section. This technique is not used by the Particle-Google Maps integration.</em></p><p><strong>Recap:</strong> this integration uses WI-FI and cellular tower location.</p><h3 id=„toc-how-to-do-this-2“><a class=„title-anchor“ href=„https://www.hackster.io/gusgonnet/map-your-particles-e34878?ref=part&amp;ref_id=9500&amp;offset=1#toc-how-to-do-this-2“ rel=„nofollow“><i class=„fa fa-link“/></a>How to do this</h3><p>Let's start setting things up.</p><p><strong>STEP 1:</strong> get an API key. Go to <a href=„https://developers.google.com/maps/documentation/geolocation/intro“ rel=„nofollow“>this Google Maps Geolocation API link</a> and hit on the <strong>GET A KEY</strong> button -&gt; create a new project -&gt; enter the name and hit <strong>CREATE AND ENABLE API</strong>.</p><div data-react-class=„ImageCarousel“ data-react-props=„{&quot;images&quot;:[{&quot;caption&quot;:&quot;Get a key, create a new project and hit CREATE AND ENABLE API&quot;,&quot;id&quot;:306928,&quot;image_urls&quot;:{&quot;headline_url&quot;:&quot;https://hackster.imgix.net/uploads/attachments/306928/screenshot_from_2017-05-22_213639_8WV8RfhnJ5.png?auto=compress%2Cformat\u0026w=680\u0026h=510\u0026fit=max&quot;,&quot;lightbox_url&quot;:&quot;https://hackster.imgix.net/uploads/attachments/306928/screenshot_from_2017-05-22_213639_8WV8RfhnJ5.png?auto=compress%2Cformat\u0026w=1280\u0026h=960\u0026fit=max&quot;},&quot;position&quot;:0},{&quot;caption&quot;:&quot;You'll need that key&quot;,&quot;id&quot;:306929,&quot;image_urls&quot;:{&quot;headline_url&quot;:&quot;https://hackster.imgix.net/uploads/attachments/306929/screenshot_from_2017-05-22_213704_BalWEM6sI0.png?auto=compress%2Cformat\u0026w=680\u0026h=510\u0026fit=max&quot;,&quot;lightbox_url&quot;:&quot;https://hackster.imgix.net/uploads/attachments/306929/screenshot_from_2017-05-22_213704_BalWEM6sI0.png?auto=compress%2Cformat\u0026w=1280\u0026h=960\u0026fit=max&quot;},&quot;position&quot;:1}],&quot;uid&quot;:&quot;00ae739aaa&quot;}“><div data-reactroot=„“ data-reactid=„1“ data-react-checksum=„327711553“><div class=„image_carouselcontainer_hMJxn“ data-reactid=„2“><div class=„image_carouselwrapper_102VA“ data-reactid=„3“><div class=„image_carouselscrollContainer_3mmPE “ data-reactid=„14“><div class=„image_carouselimageContainer_22WPm“ data-reactid=„18“><div class=„image_carouselimageWrapper_39AG2“ data-reactid=„19“><img class=„image_carouselimage_2-CjO “ src=„https://hackster.imgix.net/uploads/attachments/306928/screenshot_from_2017-05-22_213639_8WV8RfhnJ5.png?auto=compress%2Cformat&amp;w=680&amp;h=510&amp;fit=max“ data-reactid=„20“/></div></div></div></div><div class=„image_carouselcaption_2sZrD“ data-reactid=„24“>1 / 2 &#8226; You'll need that key</div></div></div></div><p>To check your API keys, hit the <a href=„https://console.developers.google.com/apis/credentials“ rel=„nofollow“>Google Developer Credentials Console</a> at any time.</p><p>If you get lost follow <a href=„https://docs.particle.io/tutorials/integrations/google-maps/#get-a-google-geolocation-api-key“ rel=„nofollow“>the Particle docs here</a>.</p><p><strong>Step 2:</strong> create the Particle-Google Maps integration <a href=„https://console.particle.io/integrations“ rel=„nofollow“>on this link</a>. You'll need the api key you got on step 1.</p><p>To ensure things are OK so far, hit the <strong>TEST</strong> button. You should get a <strong>Success</strong> popup at the bottom right.</p><div data-react-class=„ImageCarousel“ data-react-props=„{&quot;images&quot;:[{&quot;caption&quot;:&quot;&quot;,&quot;id&quot;:306930,&quot;image_urls&quot;:{&quot;headline_url&quot;:&quot;https://hackster.imgix.net/uploads/attachments/306930/screenshot_from_2017-05-19_175332b_EicyhJizR2.png?auto=compress%2Cformat\u0026w=680\u0026h=510\u0026fit=max&quot;,&quot;lightbox_url&quot;:&quot;https://hackster.imgix.net/uploads/attachments/306930/screenshot_from_2017-05-19_175332b_EicyhJizR2.png?auto=compress%2Cformat\u0026w=1280\u0026h=960\u0026fit=max&quot;},&quot;position&quot;:0}],&quot;uid&quot;:&quot;f911a3186e&quot;}“><div data-reactroot=„“ data-reactid=„1“ data-react-checksum=„-1164643601“><div class=„image_carouselcontainer_hMJxn“ data-reactid=„2“><div class=„image_carouselwrapper_102VA“ data-reactid=„3“><div class=„image_carouselscrollContainer_3mmPE “ data-reactid=„4“><div class=„image_carouselimageContainer_22WPm“ data-reactid=„5“><div class=„image_carouselimageWrapper_39AG2“ data-reactid=„6“><img class=„image_carouselimage_2-CjO “ src=„https://hackster.imgix.net/uploads/attachments/306930/screenshot_from_2017-05-19_175332b_EicyhJizR2.png?auto=compress%2Cformat&amp;w=680&amp;h=510&amp;fit=max“ data-reactid=„7“/></div></div></div></div><!– react-text: 8 –><!– /react-text –></div></div></div><p>Again, in case of trouble check <a href=„https://docs.particle.io/tutorials/integrations/google-maps/#particle-console“ rel=„nofollow“>the Particle docs</a>.</p><p><strong>Step 3:</strong> flash your particle with the code <a href=„https://github.com/gusgonnet/googleMapsUbidots“ rel=„nofollow“>on this repo</a>.</p><p>Now let's map it! There are many options to do this. In the following sections we'll explore a couple of them.</p><h3 id=„toc-map-it-on-particle-device-locator-3“><a class=„title-anchor“ href=„https://www.hackster.io/gusgonnet/map-your-particles-e34878?ref=part&amp;ref_id=9500&amp;offset=1#toc-map-it-on-particle-device-locator-3“ rel=„nofollow“><i class=„fa fa-link“/></a>Map it on particle device locator</h3><p>In this section we'll use <a href=„https://github.com/kwnevarez/particle-device-locator“ rel=„nofollow“>the particle device locator</a>.</p><p><strong>Step a:</strong> Install the <a href=„https://cloud.google.com/sdk/“ rel=„nofollow“>Google Cloud SDK</a>.</p><p><strong>Step b:</strong> once you installed the SDK, set it up by running in a console:</p><pre>gcloud init </pre><p><strong>Step c:</strong> authenticate your SDK with the Google Cloud Platform:</p><pre>gcloud beta auth application-default login </pre><p><strong>Step d:</strong> clone the repo:</p><pre>git clone https://github.com/kwnevarez/particle-device-locator </pre><p>Note: If the previous command fails, it may mean that you don't have git installed on your computer. Please use <a href=„https://git-scm.com/“ rel=„nofollow“>this link</a> to install it. Once finished, run the command again.</p><p><strong>Step e:</strong> install the dependencies:</p><pre>cd particle-device-locator npm install </pre><p>Note: If the previous command fails, it may mean that you don't have npm or nodeJS installed on your computer. Please use <a href=„https://nodejs.org/en/“ rel=„nofollow“>this link</a> and <a href=„https://www.npmjs.com/“ rel=„nofollow“>this link </a>to install them. Once finished, run the command again.</p><p><strong>Step f:</strong> configure it, by entering in <a href=„http://config.json/“ rel=„nofollow“>config.json</a> the api key you got in step 1:</p><pre>cd particle-device-locator vi config.json </pre><p>Note: <a href=„https://en.wikipedia.org/wiki/Vi“ rel=„nofollow“>vi</a> is a command line editor. If you don't have ti around you can use <a href=„https://en.wikipedia.org/wiki/Microsoft_Notepad“ rel=„nofollow“>notepad</a>, <a href=„https://www.nano-editor.org/dist/v2.2/nano.html“ rel=„nofollow“>nano</a>, or anything you like to edit the config.json file.</p><p>It should end up looking like this:</p><pre>{

 "map_api_key": "AIzaSyDcuB2m-y7XxvFpIcNeeLP2MJCGLpm4lxs",
 "event_name": "deviceLocator"

} </pre><p>HINT: use your api key, not mine (mine won't work - it's deactivated already…)</p><p><strong>Step g:</strong> on the <a href=„https://console.developers.google.com/apis/credentials“ rel=„nofollow“>Google Developer Credentials Console</a>, enable the google maps javascript API . It looks like this:</p><div data-react-class=„ImageCarousel“ data-react-props=„{&quot;images&quot;:[{&quot;caption&quot;:&quot;You want to enable that JavaScript API&quot;,&quot;id&quot;:306932,&quot;image_urls&quot;:{&quot;headline_url&quot;:&quot;https://hackster.imgix.net/uploads/attachments/306932/screenshot_from_2017-05-19_185258b_uzqAZgPDFL.png?auto=compress%2Cformat\u0026w=680\u0026h=510\u0026fit=max&quot;,&quot;lightbox_url&quot;:&quot;https://hackster.imgix.net/uploads/attachments/306932/screenshot_from_2017-05-19_185258b_uzqAZgPDFL.png?auto=compress%2Cformat\u0026w=1280\u0026h=960\u0026fit=max&quot;},&quot;position&quot;:0},{&quot;caption&quot;:&quot;Just hit that ENABLE button on top&quot;,&quot;id&quot;:306933,&quot;image_urls&quot;:{&quot;headline_url&quot;:&quot;https://hackster.imgix.net/uploads/attachments/306933/screenshot_from_2017-05-19_185305b_AgjyAGz9MN.png?auto=compress%2Cformat\u0026w=680\u0026h=510\u0026fit=max&quot;,&quot;lightbox_url&quot;:&quot;https://hackster.imgix.net/uploads/attachments/306933/screenshot_from_2017-05-19_185305b_AgjyAGz9MN.png?auto=compress%2Cformat\u0026w=1280\u0026h=960\u0026fit=max&quot;},&quot;position&quot;:1}],&quot;uid&quot;:&quot;1d051acad4&quot;}“><div data-reactroot=„“ data-reactid=„1“ data-react-checksum=„-218595482“><div class=„image_carouselcontainer_hMJxn“ data-reactid=„2“><div class=„image_carouselwrapper_102VA“ data-reactid=„3“><div class=„image_carouselscrollContainer_3mmPE “ data-reactid=„14“><div class=„image_carouselimageContainer_22WPm“ data-reactid=„18“><div class=„image_carouselimageWrapper_39AG2“ data-reactid=„19“><img class=„image_carouselimage_2-CjO “ src=„https://hackster.imgix.net/uploads/attachments/306932/screenshot_from_2017-05-19_185258b_uzqAZgPDFL.png?auto=compress%2Cformat&amp;w=680&amp;h=510&amp;fit=max“ data-reactid=„20“/></div></div></div></div><div class=„image_carouselcaption_2sZrD“ data-reactid=„24“>1 / 2 &#8226; Just hit that ENABLE button on top</div></div></div></div><p><strong>Step h:</strong> run it:</p><pre>npm install </pre><p><strong>Step i:</strong> open it at <a href=„http://localhost:8080/“ rel=„nofollow“>http://localhost:8080</a>. After logging it with your Particle credentials, you should be facing a map. Hitting <strong>All devices</strong> on the top right maps your particles with a red arrow like this:</p><div data-react-class=„ImageCarousel“ data-react-props=„{&quot;images&quot;:[{&quot;caption&quot;:&quot;Los Roques, Venezuela, oh how I wish I were writing this article from those beaches…&quot;,&quot;id&quot;:306935,&quot;image_urls&quot;:{&quot;headline_url&quot;:&quot;https://hackster.imgix.net/uploads/attachments/306935/losroques_i2G44HW3FP.png?auto=compress%2Cformat\u0026w=680\u0026h=510\u0026fit=max&quot;,&quot;lightbox_url&quot;:&quot;https://hackster.imgix.net/uploads/attachments/306935/losroques_i2G44HW3FP.png?auto=compress%2Cformat\u0026w=1280\u0026h=960\u0026fit=max&quot;},&quot;position&quot;:0},{&quot;caption&quot;:&quot;You should visit this place (yes my photon is in that green bag)&quot;,&quot;id&quot;:306937,&quot;image_urls&quot;:{&quot;headline_url&quot;:&quot;https://hackster.imgix.net/uploads/attachments/306937/los_roques_bajo_fabian_Ik35tj386k.jpg?auto=compress%2Cformat\u0026w=680\u0026h=510\u0026fit=max&quot;,&quot;lightbox_url&quot;:&quot;https://hackster.imgix.net/uploads/attachments/306937/los_roques_bajo_fabian_Ik35tj386k.jpg?auto=compress%2Cformat\u0026w=1280\u0026h=960\u0026fit=max&quot;},&quot;position&quot;:1}],&quot;uid&quot;:&quot;36dc3fa1f4&quot;}“><div data-reactroot=„“ data-reactid=„1“ data-react-checksum=„98140935“><div class=„image_carouselcontainer_hMJxn“ data-reactid=„2“><div class=„image_carouselwrapper_102VA“ data-reactid=„3“><div class=„image_carouselscrollContainer_3mmPE “ data-reactid=„14“><div class=„image_carouselimageContainer_22WPm“ data-reactid=„18“><div class=„image_carouselimageWrapper_39AG2“ data-reactid=„19“><img class=„image_carouselimage_2-CjO “ src=„https://hackster.imgix.net/uploads/attachments/306935/losroques_i2G44HW3FP.png?auto=compress%2Cformat&amp;w=680&amp;h=510&amp;fit=max“ data-reactid=„20“/></div></div></div></div><div class=„image_carouselcaption_2sZrD“ data-reactid=„24“>1 / 2 &#8226; You should visit this place (yes my photon is in that green bag)</div></div></div></div><h3 id=„toc-map-it-on-ubidots-4“><a class=„title-anchor“ href=„https://www.hackster.io/gusgonnet/map-your-particles-e34878?ref=part&amp;ref_id=9500&amp;offset=1#toc-map-it-on-ubidots-4“ rel=„nofollow“><i class=„fa fa-link“/></a>Map it on Ubidots</h3><p>In this section we'll use <a href=„https://ubidots.com/“ rel=„nofollow“>Ubidots</a>.</p><p><strong>Step a: </strong>flash the attached code (maps.ino) in your Particle or add a publish like this in your locationCallback() function:</p><pre> Particle.publish(„ubidotsLatLong“, „{\“ubi-dsl-vl\„:\“„ + Particle.deviceID() + “/„ + name + „\“, \“ubi-token\„:\“„ + ubidotsToken + „\“, \“ubi-value\„:\“„ + value + „\“ , \“google-lat\„:\“„ + lat + „\“ , \“google-lng\„:\“„ + lon + „\“}“, 60, PRIVATE);

</pre><p><strong>Step b:</strong> setup a webhook hitting the Ubidots HTTPS API. Go to <a href=„https://console.particle.io/integrations“ rel=„nofollow“>the particle integrations</a> and hit NEW INTEGRATION. This is the webhook information:</p><ul><li><strong>Event name:</strong> ubidotsLatLong</li></ul><ul><li><strong>url:</strong> <a href=„https://things.ubidots.com/api/v1.6/devices/%7B%7Bubi-dsl-vl%7D%7D/values/?token=ubi-token“ rel=„nofollow“>https://things.ubidots.com/api/v1.6/devices/ubi-dsl-vl/values/?token=ubi-token</a></li></ul><ul><li><strong>Request type:</strong> POST</li></ul><ul><li><strong>Device:</strong> Any</li></ul><ul><li><strong>Advanced settings:</strong></li></ul><ul><li><strong>Send custom data:</strong> JSON</li></ul><p>And then enter:</p><pre> {

    "value": "{{ubi-value}}",
    "context": {
      "lat": " {{google-lat}}",
      "lng": "{{google-lng}}"
    }
  }

</pre><ul><li><strong>include default data:</strong> no</li></ul><ul><li><strong>enforce ssl:</strong> yes</li></ul><p>This is what the webhook is doing for us:</p><div data-react-class=„ImageCarousel“ data-react-props=„{&quot;images&quot;:[{&quot;caption&quot;:&quot;The webhook is sending lat/long coordinates to Ubidots&quot;,&quot;id&quot;:307112,&quot;image_urls&quot;:{&quot;headline_url&quot;:&quot;https://hackster.imgix.net/uploads/attachments/307112/particlecloudubidots_a6r4tmczu5_fHm6aNcTqe.jpg?auto=compress%2Cformat\u0026w=680\u0026h=510\u0026fit=max&quot;,&quot;lightbox_url&quot;:&quot;https://hackster.imgix.net/uploads/attachments/307112/particlecloudubidots_a6r4tmczu5_fHm6aNcTqe.jpg?auto=compress%2Cformat\u0026w=1280\u0026h=960\u0026fit=max&quot;},&quot;position&quot;:0}],&quot;uid&quot;:&quot;e13bf5a143&quot;}“><div data-reactroot=„“ data-reactid=„1“ data-react-checksum=„638334327“><div class=„image_carouselcontainer_hMJxn“ data-reactid=„2“><div class=„image_carouselwrapper_102VA“ data-reactid=„3“><div class=„image_carouselscrollContainer_3mmPE “ data-reactid=„4“><div class=„image_carouselimageContainer_22WPm“ data-reactid=„5“><div class=„image_carouselimageWrapper_39AG2“ data-reactid=„6“><img class=„image_carouselimage_2-CjO “ src=„https://hackster.imgix.net/uploads/attachments/307112/particlecloudubidots_a6r4tmczu5_fHm6aNcTqe.jpg?auto=compress%2Cformat&amp;w=680&amp;h=510&amp;fit=max“ data-reactid=„7“/></div></div></div></div><div class=„image_carouselcaption_2sZrD“ data-reactid=„8“><!– react-text: 10 –><!– /react-text –>The webhook is sending lat/long coordinates to Ubidots</div></div></div></div><p><strong>Step c:</strong> Get an account on <a href=„https://ubidots.com/“ rel=„nofollow“>Ubidots</a>. You can start using <a href=„https://ubidots.com/pricing“ rel=„nofollow“>it for free</a>.</p><p><strong>Step d:</strong> Create a dashboard by hitting the Dashboard tab on top and then hitting the yellow + to add a dashboard.</p><p><strong>Step e:</strong> Add a new map widget (note the button on the top right corner):</p><div data-react-class=„ImageCarousel“ data-react-props=„{&quot;images&quot;:[{&quot;caption&quot;:&quot;Adding a map widget&quot;,&quot;id&quot;:307115,&quot;image_urls&quot;:{&quot;headline_url&quot;:&quot;https://hackster.imgix.net/uploads/attachments/307115/screenshot_from_2017-05-23_131258_z7Y5B043UR.png?auto=compress%2Cformat\u0026w=680\u0026h=510\u0026fit=max&quot;,&quot;lightbox_url&quot;:&quot;https://hackster.imgix.net/uploads/attachments/307115/screenshot_from_2017-05-23_131258_z7Y5B043UR.png?auto=compress%2Cformat\u0026w=1280\u0026h=960\u0026fit=max&quot;},&quot;position&quot;:0}],&quot;uid&quot;:&quot;f8278004f7&quot;}“><div data-reactroot=„“ data-reactid=„1“ data-react-checksum=„-1952504554“><div class=„image_carouselcontainer_hMJxn“ data-reactid=„2“><div class=„image_carouselwrapper_102VA“ data-reactid=„3“><div class=„image_carouselscrollContainer_3mmPE “ data-reactid=„4“><div class=„image_carouselimageContainer_22WPm“ data-reactid=„5“><div class=„image_carouselimageWrapper_39AG2“ data-reactid=„6“><img class=„image_carouselimage_2-CjO “ src=„https://hackster.imgix.net/uploads/attachments/307115/screenshot_from_2017-05-23_131258_z7Y5B043UR.png?auto=compress%2Cformat&amp;w=680&amp;h=510&amp;fit=max“ data-reactid=„7“/></div></div></div></div><div class=„image_carouselcaption_2sZrD“ data-reactid=„8“><!– react-text: 10 –><!– /react-text –>Adding a map widget</div></div></div></div><p><strong>Step f:</strong> select the <strong>geo</strong> variable on the device that is sending this data and hit on Add variable then Finish</p><div data-react-class=„ImageCarousel“ data-react-props=„{&quot;images&quot;:[{&quot;caption&quot;:&quot;Select the variable with lat/long coordinates info&quot;,&quot;id&quot;:307117,&quot;image_urls&quot;:{&quot;headline_url&quot;:&quot;https://hackster.imgix.net/uploads/attachments/307117/screenshot_from_2017-05-23_131239_Krq4LgAKAh.png?auto=compress%2Cformat\u0026w=680\u0026h=510\u0026fit=max&quot;,&quot;lightbox_url&quot;:&quot;https://hackster.imgix.net/uploads/attachments/307117/screenshot_from_2017-05-23_131239_Krq4LgAKAh.png?auto=compress%2Cformat\u0026w=1280\u0026h=960\u0026fit=max&quot;},&quot;position&quot;:0}],&quot;uid&quot;:&quot;470b71e983&quot;}“><div data-reactroot=„“ data-reactid=„1“ data-react-checksum=„64762274“><div class=„image_carouselcontainer_hMJxn“ data-reactid=„2“><div class=„image_carouselwrapper_102VA“ data-reactid=„3“><div class=„image_carouselscrollContainer_3mmPE “ data-reactid=„4“><div class=„image_carouselimageContainer_22WPm“ data-reactid=„5“><div class=„image_carouselimageWrapper_39AG2“ data-reactid=„6“><img class=„image_carouselimage_2-CjO “ src=„https://hackster.imgix.net/uploads/attachments/307117/screenshot_from_2017-05-23_131239_Krq4LgAKAh.png?auto=compress%2Cformat&amp;w=680&amp;h=510&amp;fit=max“ data-reactid=„7“/></div></div></div></div><div class=„image_carouselcaption_2sZrD“ data-reactid=„8“><!– react-text: 10 –><!– /react-text –>Select the variable with lat/long coordinates info</div></div></div></div><p><strong>Step g:</strong> Enjoy looking at the location of your Particle:</p><div data-react-class=„ImageCarousel“ data-react-props=„{&quot;images&quot;:[{&quot;caption&quot;:&quot;It's right there!&quot;,&quot;id&quot;:307118,&quot;image_urls&quot;:{&quot;headline_url&quot;:&quot;https://hackster.imgix.net/uploads/attachments/307118/screenshot_from_2017-05-23_131415_m1LI2v9nzk.png?auto=compress%2Cformat\u0026w=680\u0026h=510\u0026fit=max&quot;,&quot;lightbox_url&quot;:&quot;https://hackster.imgix.net/uploads/attachments/307118/screenshot_from_2017-05-23_131415_m1LI2v9nzk.png?auto=compress%2Cformat\u0026w=1280\u0026h=960\u0026fit=max&quot;},&quot;position&quot;:0}],&quot;uid&quot;:&quot;cec16dfcb2&quot;}“><div data-reactroot=„“ data-reactid=„1“ data-react-checksum=„-1335286242“><div class=„image_carouselcontainer_hMJxn“ data-reactid=„2“><div class=„image_carouselwrapper_102VA“ data-reactid=„3“><div class=„image_carouselscrollContainer_3mmPE “ data-reactid=„4“><div class=„image_carouselimageContainer_22WPm“ data-reactid=„5“><div class=„image_carouselimageWrapper_39AG2“ data-reactid=„6“><img class=„image_carouselimage_2-CjO “ src=„https://hackster.imgix.net/uploads/attachments/307118/screenshot_from_2017-05-23_131415_m1LI2v9nzk.png?auto=compress%2Cformat&amp;w=680&amp;h=510&amp;fit=max“ data-reactid=„7“/></div></div></div></div><div class=„image_carouselcaption_2sZrD“ data-reactid=„8“><!– react-text: 10 –><!– /react-text –>It's right there!</div></div></div></div><h3 id=„toc-references-5“><a class=„title-anchor“ href=„https://www.hackster.io/gusgonnet/map-your-particles-e34878?ref=part&amp;ref_id=9500&amp;offset=1#toc-references-5“ rel=„nofollow“><i class=„fa fa-link“/></a>References</h3><p>These links help me get started on Ubidots:</p><ul><li><a href=„https://ubidots.com/docs/es/get_started/quickstart/tutorial_geopoint.html“ rel=„nofollow“>Post a GPS coordinate using curl</a></li></ul><ul><li><a href=„https://ubidots.com/docs/api/index.html#send-values“ rel=„nofollow“>Ubidots API</a></li></ul><h3 id=„toc-conclusion-6“><a class=„title-anchor“ href=„https://www.hackster.io/gusgonnet/map-your-particles-e34878?ref=part&amp;ref_id=9500&amp;offset=1#toc-conclusion-6“ rel=„nofollow“><i class=„fa fa-link“/></a>Conclusion</h3><p>Particle, Google Maps and Ubidots made it really easy to put our projects on a map, without needing to add a GPS to our hardware. Impressive! </p><h3 id=„toc-need-help-7“><a class=„title-anchor“ href=„https://www.hackster.io/gusgonnet/map-your-particles-e34878?ref=part&amp;ref_id=9500&amp;offset=1#toc-need-help-7“ rel=„nofollow“><i class=„fa fa-link“/></a>Need help?</h3><p>If you require professional help with your projects, don't hesitate to write me a line about your needs at <a href=„http://gusgonnet@gmail.com/“ rel=„nofollow“>gusgonnet@gmail.com.</a> Thank you!</p></div></div><div class=„read-more“><a class=„btn btn-primary“ href=„javascript:void(0)“>Read more</a></div></section><section class=„section-container“ id=„code“><h2 class=„section-title“><a class=„title-anchor“ href=„https://www.hackster.io/gusgonnet/map-your-particles-e34878?ref=part&amp;ref_id=9500&amp;offset=1#code“><i class=„fa fa-link“/></a>Code </h2></section><section class=„section-container“ id=„team“><h2 class=„section-title“><a class=„title-anchor“ href=„https://www.hackster.io/gusgonnet/map-your-particles-e34878?ref=part&amp;ref_id=9500&amp;offset=1#team“><i class=„fa fa-link“/></a>Credits</h2><div class=„section-content“><div class=„member-thumb“>Thanks to Winston Ford.</div></div></section><section class=„section-container“ id=„replicas“><h2 class=„section-title“><a class=„title-anchor“ href=„https://www.hackster.io/gusgonnet/map-your-particles-e34878?ref=part&amp;ref_id=9500&amp;offset=1#replicas“><i class=„fa fa-link“/></a>Replications</h2><div class=„section-content“><p>Did you replicate this project? Share it!</p><a class=„btn btn-primary btn-sm reactPortal“ action=„SigninDialog“ data-container=„body“ data-redirect-to=„/gusgonnet/map-your-particles-e34878“ data-source=„replica“ data-react=„{&quot;currentPanel&quot;:&quot;signup&quot;,&quot;simplified&quot;:true}“ href=„https://www.hackster.io/users/sign_up?id=41438&amp;m=base_article&amp;reason=replica&amp;redirect_to=%2Fgusgonnet%2Fmap-your-particles-e34878“><i class=„fa fa-retweet“/>I made one</a></div></section><section class=„section-container project-feedback-form“/><section class=„section-container“ id=„comments“><h2 class=„section-title“><a class=„title-anchor“ href=„https://www.hackster.io/gusgonnet/map-your-particles-e34878?ref=part&amp;ref_id=9500&amp;offset=1#comments“><i class=„fa fa-link“/></a>Comments </h2></section> </html>