A Modern RFID App Using NativeScript

invengo

Mehfuz has finished a first pass at an RFID scanning app for the Invengo XC-1003 (see earlier progress reports: part I and part II) leveraging NativeScript.  You can see the code for the app at GitHub.

The app uses 4 plugins: SQLite, GeoLocation, Maps, and RFID.

The interaction goes through 3 screens.  In this short screencast the app:

  • Displays the location of the device, acquired via the GeoLocation Plugin
  • Presenting the lcoation as LAT/LONG and a Map, using the Maps Plugin
  • Scans an RFID Tag, using the RFID Plugin
  • Provides the history of previous reads, including their location, stored locally using the SQLite Plugin, and
  • Provides details of a read in the history, with a Map of the location where the read happened

This App architecture relies in the ability of NativeScript to extract meta-data from a library so it can be used at the JavaScript layer.  In the App, Mehfuz created a thin layer on top of that, a Plugin, to simplify accessing the (RFID) sensor.  As we see more industrial devices built on Android, this benefit of NativeScript will enable quickly creating powerful and pretty applications.

For more information on NativeScript, check NativeScript.org.  If you have an iOS or Android device, you may want to install the Samples App and play with it.

Hello Invengo XC-1003!

Mehfuz just published an initial NativeScript Plugin to call into the RFID libraries in the Invengo XC-1003 (see Part I for details of the device).  Mehfuz also published a simple NativeScript App that uses the Plugin to read a tag and display it.

hello_invengo

The plugin is written in JavaScript/TypeScript. The code (see invengo.android.ts) is platform and library specific but it is plain TypeScript calling into the RFID API via the meta-data automatically extracted by NativeScript from the .aar file.  The plugin builds on that “raw” interface and provides a nice abstraction to be used by applications.

The structure of the demo application using the Plugin is like any other NativeScript App: some Javascript (or more properlyTypeScript in this case), the CSS for the visual elements, and some Layouts (created manually or through a tool) for the screens.

In this particular case the app is not intended to be cross-platform but in general the platform-specific features are pushed down to the plugin and the app itself can be cross-platform.  All while using TypeScript/JavaScript and CSS.

Mehfuz is working on a nicer version of the app; stay tuned.

Addendumhere is a short video with the RFID plugin and a SQLite plugin.

Addendum 2 – A more capable solution,  using also the GeoLocation plugin and the Google Maps plugin, is now available.

HackMIT 2016

Progress was again a sponsor at HackMIT this year, and our main emphasis was on NativeScript as a cross-platform framework to create native mobile Applications using JavaScript (or TypeScript) and CSS.

29459423040_e79caa3108_k

Most of HackMIT was at the Johnson Ice Rink; it gathers over 1K hackers for a 24 hour Hackathon that starts Saturday morning and runs through Sunday morning; it is much more civilized than the usual 36 hour Hackathons – a single all-nighter is much easier than two!  The event had “the usual sponsors”, ranging from a16z to Microsoft, Google and Facebook.  Infrastructure, Financial, Medical, Services, Technology and more, they were all well represented.

The two keynotes were excellent.  Dina Katabi, the Director of MIT’s Center for Wireless Networks and Mobile Computing, presented on her recent work on seeing through walls using WiFi – with multiple applications, including Emerald, a fall detection device for caregivers. Sanjit Biswas talked about his previous startup, Meraki, on mesh-based WiFi, and his current one, Samsara, on industrial sensors.

Last year one of the most popular technology trends was Computer Vision, this year it was Machine Learning: our 3 winners use it.  There was also a fairly large number of projects that included some hardware, including one of our winners.  I love attending HackMIT and similar high-quality Hackathons and see how quickly new technology is adopted.

We had 3 API prizes for NativeScript Apps and multiple teams wrote apps. NativeScript supports very well Angular 2 but it also works well by itself; since the teams didn’t know neither NativeScript nor Angular 2, they went for the “bare-bones / native” NativeScript.

Our 3 winners were

Team PushEats

29209093334_ba15f5bf08_k

Their tag line is: “Pusheen + psychology research = healthier eating habits via mobile app”. Team members are: Katherine Tan, Stasiek Świdwiński, Cameron Yick and Wendy Sun, all from Yale (IIRC). The project site is here.

Team Picky Pusheen

29836426395_69ff274867_k

Yep, another Pusheen project!  This time the tag line is: “A mobile app that pairs friends together for everyday activities such as eating or jogging seamlessly”.  Team members are: Michael Hu, Matt Dang, Naoki Yokoyama, and Joanne Truong; I believe they are all from Northeastern University. The project site is here, and the github is here.

Team ClassSense

29765413446_44fc26f0e2_z

And the last winner… is not a Pusheen project!  The project’s goal is to help the professor in a lecture get a feel for whether the class is following the material being presented. Team members are: Josh Rees-Jones, Nate Graf,  Chris Turner and Halaa Menasi; they come from USC, Texas A&M, NCSU and Stony Brook. The project site is here but it’s very sparse; instead check the github project here, including the README file.

Additional Info

Peter Filipov, from our DevRel team, and myself were the mentors.  Peter just published a post on the event at the NativeScript blog.  And I have more photos at this Flickr album.

And looking forward to 2017!

Linux Inside … ThingMagic Sargas

img_8545

Our ThingMagic Sargas just arrived.  This is a small (87mm x 80 mm x ) fixed RFID reader that packs a nice punch.  It has 2 high performance UHF RFID antenna ports capable of reading 750 tags a second at distances over 9 meters and an ethernet port, but it also has a BLE, USB, 4 GPIOs, micro-SD, and HDMI.  Inside there is a 1GHz ARM Cortex 8 running Linux (Debian) where you can run your own code.

We will use the Sargas as a second reader so we can manage more RFID Antennas covering a larger space. Initially we will connect the Sargas to a Raspberry Pi 3 in the same arrangement we used previously  with the ThingMagic M6.  In that configuration the pi 3 runs the AMTech Gateway and it communicates with the reader using LLRP over ethernet.

The next step will be to move the gateway inside the Sargas, so we no longer need the pi 3.  This should be straight-forward; Debian running Node.js.

After that we want to run applications directly in the Sargas using the HDMI to connect an external monitor.  We have not yet decided on what to try out first.   The application could just report on the setup and simple statistics, or can be an actual application.  For example, a Sargas can be combined with a couple of short-range antennas and a large monitor, to provide a smart display for clothing that has RFID tags.

Ideally, we would like to write these applications using NativeScript, similar to how we want to use NativeScript to write RFID applications for the Invengo XC-1003, but more on that later…

NativeScript and the Invengo XC-1003 – Part I

The Invengo XC-1003 is an Android Smartphone (KitKat) with an UHF RFID reader/writer.   Ours just showed up yesterday from AtlasRFID.  Invengo positions it as a Mobile IoT device, advertising it as working on “the RAIN RFID Frequency 865-868MHz (ETSI) – 902-928MHz (FCC)”.

RAIN is a global alliance (part of AIM) recently created to encourage the adoption of UHF RFID (CS1 – 18000-63) across multiple vendors, with an emphasis on interacting with Cloud-based services and data.  The board includes companies with deep expertise in RFID technologies like NXP, Smartrac, Embisphere, Impinj and Acceptto.  There are currently 124 members in the directory, including names like Amazon and Google.

diagram-U-shape-New-800x554

We got the device to use it for hand-held applications that interact (read/writer) with RFID tags.  A typical use would be to support the registration and on-the-spot support for an event like our recent MeetUp or the ProgressNEXT event.  The Intengo XC-1003 comes with an SDK and some (Java) sample apps.  Initially we will use the apps as they come but our goal is to write a NativeScript plugin (see tutorial) so you can write your RFID applications using just JavaScript and CSS.

I believe RFID (wikipedia) is poised for significant adoption increase.  The technology has been around for quite a bit (history) and initial attempts at adoption suffered from technology shortcomings as well as high costs for tags and readers.  The new technology is much more reliable, flexible and cheaper.  Examples include FasTrak,  Transponder timing in Sports Events, Inventory (Zara is a big proponent, so is Walmart) and possibly my favorite: RFID tags at the bottom of paper cups to control soda refills at Walt Disney World (video).

Stay tuned for more details in this experiment.

Addendumhere is a short video with the RFID plugin and a SQLite plugin.

Addendum 2 – A more capable solution,  using also the GeoLocation plugin and the Google Maps plugin, is now available.

CSUMB Capstone Project Fall 2016 – A Connected Capstone Festival App

The CSUMB Capstone project for Fall 2016 is a Digitally Connected Capstone Festival App using RFID Tags and Antennas, iBeacons and Mobile Apps.

The basic architecture is sensors connected to an Activity Management platform to track the real-time activities interacting with a Mobile Application used by the public and presenters at the Festival.  The project will leverage lessons learned from the Capstone project in Spring 2016, Quantifying the BIT Building,  and two previous projects: the ProgressNEXT app and a NativeScript MeetUp in Palo Alto.

The bulk of the sensor data will be from RFID tags worn by the attendees to the Festival, but additional data may come via mobile apps, reading BLE beacon proximity data and/or Geolocation data.  The Activity information will be used by mobile applications that may also provide information on the different presentations and events.

CSUMB-Capstone-Fall2016-1.png

The Mobile Apps will be written using the NativeScript framework.  The backend will be based on Node.js on Modulus, though we may also use Sitefinity platform.  The Activity Monitoring Platform is that of AMTech Solutions.

CSUMB-Capstone-Fall2016-2.png

We currently have 4 fixed RFID Antennas, connected to one RFID Reader that interacts with an AMTech Gateway running on a Raspberry Pi 3.  We will soon get an Invengo XC-1003 Android phone that includes an RFID reader and we can use this for operating the event.  RFID tags are 20 cents each in a volume of 1000 so we can easily provide tags for all attendees.

We have several iBeacon/Eddystone beacons that can be used to map the Capstone space and interact with the Capstone Mobile App.

Sketch of a presentation is at Slideshare.

Activity Monitoring using IOT

I put together a quick presentation on Using IOT for Digital Activity Monitoring.  I’ll refine it when I have an opportunity of presenting it, but, for now, check the slides at Slideshare.  See this Umbrella Post for quick links to some other related posts.

IOT-based Activity Monitoring can be used in a very large number of applications, often relying on related services like geolocation, spatial operations (“close-to”, “within”) and notifications (sending mail).  A practical product needs strong security, performance, scalability, support for many protocols (sensors and server-side), administration and flexibility of deployment options.

DigitalActivityManagement-Image