X
FEATURED POST

Farewell to Oracle

I'm heading out for a new job at a different company, but just wanted to thank all my blog readers who have read this blog over the many years. I appreciate you...

Recent Posts

Internet of Things (IoT)

Adding Deep Learning AI to Internet of Things (IoT) - Part 4

Unsupervised versus Supervised LearningWe'll take a moment to understand the difference between Unsupervised AI Learning versus Supervised AI Learning. Supervised neural networks must be told of correct answers to a question at some point beforehand, so that this type of AI is "taught" (ahead of time) what an object is for example, just like a baby learns objects from flash cards. This approach of Supervised Learning is typically used for object recognition in Deep Learning AI, such as to tell the difference between a cat from a terrorist bomber. This is great if you have 10,000 images of cats that you can show to your Deep Learning AI system, but if you have 10,000 images of cats, you probably have other problems we won't go into here.Unsupervised Learning on the other hand, involves exposing all types of information to your AI system and relying on it to learn something you haven’t programmed it to recognize, since an Unsupervised Learning system would be able to cluster data into logical patterns. For object recognition, Unsupervised Learning groups certain related shapes together and assumes that they are similar. It is often also used in AI for game playing, such as chess, using experience from playing opponents to group successful techniques for certain circumstances, to use in the future against others in similar circumstances.For more information, see TechWorld's Big Data Article:TechWorld's Big Data ArticleSo for Multilayer Perceptron (MLP) Deep Learning AI, we'll use Supervised Learning, since MLP was designed to work well with the ahead-of-time teaching approach of Supervised Learning. Get those flash cards ready...Hinkmond

Unsupervised versus Supervised Learning We'll take a moment to understand the difference between Unsupervised AI Learning versus Supervised AI Learning. Supervised neural networks must be told of...

Internet of Things (IoT)

Adding Deep Learning AI to Internet of Things (IoT) - Part 3

Now we see how the Perceptron equation is written out in mathematical format, we want to turn this into some computer code for adding Deep Learning AI to IoT. We'll start out by converting just this "output" equation into Java code.The output is a binary function that returns 1 for yes (Ex. the IoT sensors indicate that yes, this guy that just walked passed my sensors, is indeed a terrorist) or returns 0 for no (Ex. the IoT sensors indicate that no, this guy is not a terrorist, but he might be a Trump supporter). The cool part that makes it a Perceptron is that this equation is influenced by "weights" or "memorized patterns" in the Deep Learning AI brain of the computer that learned what is considered a terrorist or a Trump support, and what is or isn't that object as far as the connected IoT sensors are concerned, over many, many examples learned during Structured Learning (more on that later). So, here's the Java code given all that: static int processOuput(int theta, double xWeight, double yWeight, double nodeWeight) { double sum = (x * xWeight) + (y * yWeight) + nodeWeight; return sum >= theta ? 1 : 0; }That's all there is to it. That's a Perceptron in Java code, and that's how machines can learn and have a functioning brain of its own. Pretty simple at first, but it gets much more complicated when we start to layer these Perceptrons for Deep Learning AI, not just a simple Java method executing a few lines of code.For more information, see Dr Noureddin Sadawi's great set of tutorials on Machine Learning and AI:Dr Noureddin Sadawi's AI TutorialsSo far, this is the basic building block Java code for Deep Learning AI in IoT, so take time to let it soak in. From here, we next will talk about Structured Learning vs. Unstructured Learning, which is actually pretty cool since it can apply to computers, puppies, children, and in the future streetlights, traffic cameras, refrigerators, and TVs... And, hopefully, all those devices won't learn too fast... Or, we'll be in trouble whether you're a terrorist, a Trump supporter, or anything in between...Hinkmond

Now we see how the Perceptron equation is written out in mathematical format, we want to turn this into some computer code for adding Deep Learning AI to IoT. We'll start out by converting just this...

Internet of Things (IoT)

Adding Deep Learning AI to Internet of Things (IoT) - Part 2

The first step in adding Deep Learning AI to the Internet of Things, is to understand what a perceptron is. A perceptron is an artificial neuron, the same that you find in most people's brains (most people...), but written in software like in the Java programming language.In the diagram you can see how the perceptron takes inputs (like sensor inputs from a motion sensor or light sensor on an IoT network) represented by x1, x2, x3, etc. then runs them through some software and to get an output, such as "dog", "cat", "terrorist", "policman", etc. You can see how powerful it would be to hook up all the IoT sensors there are out there and have Deep Learning AI be able to identify objects and targets quickly using Java algorithms or programs.This article (linked below) tells more about what perceptrons are and why they are important to Deep Learning. Above you see the perceptron written out algebraically which gives us insight on how it should be programmed in Java.See:Neural Network PerceptronsHere's a quote: So how do perceptrons work? A perceptron takes several binary inputs, x1, x2, … and produces a single binary output: In the example shown the perceptron has three inputs, x1, x2, x3. In general it could have more or fewer inputs. This is the first step in adding AI to our IoT devices. In the next part we will look at how to represent a perceptron in Java. That's the easiest way, unless you want to do that in Python or JavaScript... Blech... Hinkmond

The first step in adding Deep Learning AI to the Internet of Things, is to understand what a perceptron is. A perceptron is an artificial neuron, the same that you find in most people's brains (most...

Internet of Things (IoT)

Adding Deep Learning AI to Internet of Things (IoT) - Part 1

IoT Will Need Artificial Intelligence (AI) to Work Correctly To start our task of adding Deep Learning AI to the Internet of Things, we have to start with an quick tutorial on Deep Learning and how it made the AI from the 1970s something better that matched the real neurons in our brain.See:A Primer on Deep LearningHere's a quote: ...[I]n 2006 three separate groups developed ways of overcoming the difficulties that many in the machine learning world encountered while trying to train deep neural networks. The leaders of these three groups are the fathers of the age of deep learning... What was it that they did to their deep neural networks to make it work? ...Before their work, the earliest layers in a deep network simply weren’t learning useful representations of the data... Instead they were staying close to their random initialization... Using different techniques, each of these three groups was able to get these early layers to learn useful representations, which led to much more powerful neural networks.So, there you have it. We now know the secret to adding proper AI to our smart watches, refrigerators, and toasters. Next, we'll explore how to take the theory (above) and put it into practice using Java SE Embedded inside the small processors of IoT devices. Stay tuned for more fun stuff! Hinkmond

IoT Will Need Artificial Intelligence (AI) to Work CorrectlyTo start our task of adding Deep Learning AI to the Internet of Things, we have to start with an quick tutorial on Deep Learning and how it...

Internet of Things (IoT)

IoT Will Need Artificial Intelligence (AI) to Work Correctly

As many of us start developing with Internet of Things (IoT), it is becoming apparent (very quickly) that writing our own pattern matching rule sets and using simple filters for event processing in IoT is just not going to cut it.To do IoT Big Data Analysis (in a cloud service or on-premises) "we're going to need a bigger boat". One way to ensure we have big enough processing power to analyze the petabytes of data coming from IoT devices and sensors, is to realize now that IoT will need Artificial Intelligence (AI) to utilize Machine Learning for pattern matching and event processing.See:IoT Won’t Work Without Artificial IntelligenceHere's a quote: We need to improve the speed and accuracy of big data analysis in order for IoT to live up to its promise. If we don’t, the consequences could be disastrous and could range from the annoying – like home appliances that don’t work together as advertised – to the life-threatening – pacemakers malfunctioning or hundred car pileups. The only way to keep up with this IoT-generated data and gain the hidden insight it holds is with machine learning.And, once we realize that... it's time to roll-up our sleeves and get to designing a proper AI Deep Learning layer into IoT systems today. Stay tuned to this blog for a quick-start guide to IoT AI Deep Learning and how to use the latest Machine Learning technology to architect a IoT system that will be able to handle dynamic pattern matching and event processing without having to wait for a (slow) human to come up with the IoT event rules and filters... Hinkmond

As many of us start developing with Internet of Things (IoT), it is becoming apparent (very quickly) that writing our own pattern matching rule sets and using simple filters for event processing...

Internet of Things (IoT)

Architect Your Own IoT Industrial PLC - Programmable Logic Controller (Part 2)

Before we start, we should first go over the difference between a Solid State Relay (SSR) versus an Electromechanical Relay (EMR). A SSR is able to turn on or off a switch (such as the power switch) for a piece of machinery or equipment using a control signal from a digital circuit, microcontroller or computer (such as a Raspberry Pi) through use of non-moving electronics, typically a silicon controlled rectifier.An EMR does the same function, but uses movable contacts that are mechanically operated by magnetic force. EMRs are most common and you can hear them "click" on and off as they operate when control signal causes the magnetic force inside them to physically move a set of contacts to complete the electric circuit or to open the circuit.EMRs are most common in electronics since they are cheaper to manufacture and can be used in harsh environments. SSRs are more common in industrial use, such as in Programmable Logic Controllers (PLCs) on a factory floor, as we are simulating in this blog series, since they are have no moving parts, are faster for frequent switching, and can be easily controlled by digital circuits and computers (such as the Raspberry Pi). See:Difference Between SSR and EMRIt's important to start out with the right parts to meet the requirements of the use-case, such as the IoT Industrial Use-Case we will address in this blog series. Next, we'll look at having multiple SSRs in the 8-channel SSR we'll use in our prototype, and how they can all be controlled with one embedded computer (like the Raspberry Pi).Hinkmond

Before we start, we should first go over the difference between a Solid State Relay (SSR) versus an Electromechanical Relay (EMR). A SSR is able to turn on or off a switch (such as the power...

Internet of Things (IoT)

Map of Internet of Things Smart Devices

In this VentureBeat article which embeds the Goldman Sachs "Map of IoT Smart Things", you can skip the first 5 over-hyped Internet of Things markets and go right to the real market potential: #6 Industrial.See:IoT mapped: smart things landscapeHere's a quote: [A] big potential market covering everything from crops and livestock (farming and ranching in the Agriculture sub-category) to oil and gas production and transportation. In between, there are many opportunities to add to existing telemetry to power continuous analytics at the individual component or system level and to aggregate data for trend analysis, demand management, and capacity planning.The first 5 markets that the article lists (People, Vehicle, Homes, Towns, & Commerce) are just gimicky, over-hyped IoT areas that might wind up saving a few dollars here and there for some set of ill-defined segments, but it is the Industrial market (#6) where IoT technology will enable companies to _make_ more money, not just save money. And, that's an important distinction.That's the key for IoT, is to apply IoT technology and continuous analysis to areas that will produce more products, increase efficiency, and drive more revenue, which will generate more profits. Saving money is finite. Making money is infinite. What better place than the factory floor or in the warehouse to make money off of IoT devices and data analysis. That's where the IoT money will be. Cha-ching. Hinkmond

In this VentureBeat article which embeds the Goldman Sachs "Map of IoT Smart Things", you can skip the first 5 over-hyped Internet of Things markets and go right to the real market potential:...

Internet of Things (IoT)

Internet of Things Bubble Hype Comes from Media, not Data

Here's a Web article at The Motley Fool talking about how the "Woz" (and I feel I can call Steve Wozniak, the "Woz", not because I know him personally, but because I saw that he was once on DWTS) feels like IoT is a bit bubblicious.But, later the Motley Fool article goes on to redeem itself by pointing out that technically a "bubble hasn't formed yet" (around IoT), since mainstream investors haven't sunk their entire 401(k) accounts into wearable sensors that detect each of your bodily functions.See:Steve Wozniak Believes IoT Bubble Could BurstHere's a quote: A bubble hasn't formed yet... For a bubble to truly form, mainstream investors must actively prop up the market -- like the way they invested in tech companies during the dot-com bubble. Yet that hasn't really happened yet. Most of the "hype" comes from the media, crowdfunding sites, and VCs. Publicly traded pure-play IoT and wearable companies aren't trading at huge premiums yet...Well, that's good news, even if the media loves to be all hype-y right now about IoT. It will soon become apparent (after the hype is over) that the IoT data analytics tool vendors will make out to be the real winners in this new market. Hmmm... who could that be? Hinkmond

Here's a Web article at The Motley Fool talking about how the "Woz" (and I feel I can call Steve Wozniak, the "Woz", not because I know him personally, but because I saw that he was once on DWTS)...

Internet of Things (IoT)

Amazon's Hidden New IoT Service for the Home - (Sneaky)

Forget the Amazon Dash Button! Amazon has a different sneaky IoT service for the smarthome planned. Instead of the superfluous plastic button you stick next to your appliances to order more supplies from Amazon (like you would easily do from a smartphone, tablet or PC), they hid a very important announcement of the automated Dash Replenishment Service (DRS).Amazon DRS allows appliances to reorder their supplies automatically! (No humans, just robots ordering stuff for you from Amazon). It's like having R2-D2 watching your coffee bean supply in your coffee maker, and automatically ordering more before you run out! Artoo!!! You're awesome! Bloop-bloop-beeeep!!See:Amazon's Brilliant New ServiceHere's a quote: Hidden inside the recent announcement of Amazon.com's new Dash button -- which lets your order specific products with a single plastic button -- was a much more important move for Amazon, and one that has the possibility to truly change how we order consumable goods from Amazon. It's called the Dash Replenishment Service (or DRS), and its ability to automatically reorder home goods straight from the devices that use them...Now, that's thinking! And, it's IoT as it's meant to be... with lots of cool robots automatically doing stuff without human intervention. Within reason of course. Hinkmond

Forget the Amazon Dash Button! Amazon has a different sneaky IoT service for the smarthome planned. Instead of the superfluous plastic button you stick next to your appliances to order more supplies...

Internet of Things (IoT)

RadioShack Store Closure List: Many Silicon Valley Stores Safe

Some people may wonder what the big deal is that RadioShack is closing many of its stores. Just recently for an Internet of Things (IoT) prototyping project I'm working on here at Oracle, I needed to connect an IoT-enabled Wi-Fi smart thermostat to our Oracle IoT Cloud Service. The Ecobee3 SmartThermostat is a great little device that can easily connect to our Oracle IoT CS, but it typically needs to be hooked into a home heating/cooling circuit to power it up.Instead of doing that, I drove over to the local RadioShack and picked up a RadioShack Item #273-331, Enercell 24 VAC power adapter and connected it to run on my table top. Just being able to do that without waiting for an Internet shipment to arrive in 2-3 days, is one of the coolest things. Going from my poor little Ecobee3 SmartThermostat just sitting there, dead in its box, to connecting it up with a couple simple wires from the correct type of low-voltage AC adapter (not found in most stores)...and having it power up fine for testing and development with Java SE Embedded on my IoT Gateway and talking to my Oracle IoT Cloud Service, all in the same day without having to hunt around the Web searching for the right part, then waiting for it to ship...is one of the greatest things about the few RadioShack stores that will remain open locally as Sprint stores. I hope the downsized company is able to stick around, at least a little while longer. IoT needs RadioShack, or at least the ones around here in the Silicon Valley.See:RadioShack Store Closure MapHinkmond

Some people may wonder what the big deal is that RadioShack is closing many of its stores. Just recently for an Internet of Things (IoT) prototyping project I'm working on here at Oracle, I needed to...

Internet of Things (IoT)

A Sad Day for Internet of Things: RadioShack Files for Bankruptcy

It's a sad day for IoT. RadioShack, the 94-year-old U.S. based electronics chain, filed for Chapter 11 bankruptcy protection on Thursday Feb. 5, 2015 after a deal to sell some of its stores to Sprint. For those of us who learned BASIC programming on the TRS-80 and bought and used Tandy electronics parts and hobby kits from the quirky little store, RadioShack will be missed.See:How RadioShack Helped Build Silicon ValleyHere's a quote:In its heyday, RadioShack was so much more than a store — it wasan art gallery, a museum, a school."You didn’t really have really good electronics magazines full of what's available," Wozniak remembers. "You had a few catalogues that were full of things like walkie-talkies, but if you went down to RadioShack you could actually see something." As a teenager he would walk into stores and soak up information, spending hours reading labels, and memorizing prices and feature lists. It was inside those walls where so many watched the technological revolution unfold — and where they first jumped in.Back in the 1980s, I was that teenager who walked into the local RadioShack just to soak in electronics and technology... And where I first jumped in to join the high tech revolution. Long live RadioShack! May it Rest in Peace...Hinkmond

It's a sad day for IoT. RadioShack, the 94-year-old U.S. based electronics chain, filed for Chapter 11 bankruptcy protection on Thursday Feb. 5, 2015 after a deal to sell some of its stores to Sprint....

Internet of Things (IoT)

Xmas Day 2014: IoT Devices Go Online

Watch out next week, when possibly millions, tens of millions, or even hundreds of millions of IoT devices get unwrapped, turned on, and registered online, sharing their data... all. at. once. on Christmas morning as the day moves from time zone to time zone. It could be the start of the IoT-maggedon. Or not--if all goes right and those Christmas gifts register themselves correctly then send their wireless data without any hiccups. And, everyone remembers to change their default passwords to something non-hackable before connecting them to the Internet. Sh-yeah. Right. :-)See this FastCompany article:December 25: The Day IoT Devices Go OnlineHere's a quote: Experts say this is going to be the biggest Christmas for Internet of Things devices—which wirelessly sense or send information—ever. (Until next year.) As the relatively new ritual of unwrapping a present and then logging it on plays out on December 25, the day increasingly becomes notable for the sheer number of items that start sharing data. So, watch for a big surge of FitBit/Nest/Baby Monitor/etc. traffic on Christmas Day, followed by stories on the news how it was the day that a record number of IoT devices went online for the first time in one day, and either caused the biggest spike in IoT data traffic or the largest number of crashes and subsequent customer support phone calls to IoT companies in one day.Stay tuned... Hinkmond

Watch out next week, when possibly millions, tens of millions, or even hundreds of millions of IoT devices get unwrapped, turned on, and registered online, sharing their data... all. at. once....

Java Embedded

Easy IoT Sensor On-Boarding Using Jini Auto-Discovery and Java SE Embedded (Part 4)

Now that we know that we'll be using a Parallax USB RFID Reader as an IoT sensor for our Jini Auto-Discovery, we can do a quick refresher of how Jini Auto-Discovery works.In the diagram to the right we see that, multiple IoT devices on the right side connect the Jini network (such as via Wi-Fi, Bluetooth, or in this case USB), where a Java VM is listening. Once that IoT device shows up on the Jini network, it will need a Jini proxy running in a Jini client application to "proxy" the IoT device as a Jini "service provider" (in other words, an IoT sensor, actuator, or device will perform an action for a Jini client, such as take a measurement/reading, move a servo motor, etc.) via a Jini "proxy". This is how an IoT network of devices becomes more automated and easier to integrate, with everything talking the Java programming language to each other using Java objects.And, this gives us the key to how the RFID reader will be auto-discovered by our Jini network, so that we just plug it in, and it works (with any other IoT app, network or device)!So, Jini technology allows for disparate IoT devices and networks (such as a Fitbit wearable, Apple HealthKit heart monitor, Google Nest thermostat, WeMo light switch, or any other IoT device) interact with each other, with apps, and with the cloud.Next, we'll take a closer look at the how the Jini Look-Up Service running on the Java VM is the integral part of this picture...Full series of steps:Easy IoT Sensor On-Boarding Using Jini Auto-Discovery and Java SE Embedded (Part 1)Easy IoT Sensor On-Boarding Using Jini Auto-Discovery and Java SE Embedded (Part 2)Easy IoT Sensor On-Boarding Using Jini Auto-Discovery and Java SE Embedded (Part 3)Easy IoT Sensor On-Boarding Using Jini Auto-Discovery and Java SE Embedded (Part 4)<<< Previous  | Next >>>Hinkmond

Now that we know that we'll be using a Parallax USB RFID Reader as an IoT sensor for our Jini Auto-Discovery, we can do a quick refresher of how Jini Auto-Discovery works. In the diagram to the right...

Java Embedded

Easy IoT Sensor On-Boarding Using Jini Auto-Discovery and Java SE Embedded (Part 3)

For the Discovery part of the Jini Auto-Discovery of an IoT sensor, we'll need the specification of the device we are trying to on-board. In this case, we are integrating the Parallax USB RFID Reader using the Jini technology techniques for device discovery.After a quick Web search, we see there is information about how to manually connect the Parallax USB RFID Reader at Stephen James Mason's blog post:See: https://stephenjam.es/wp/raspberry-pi-rfid-reader-with-java-and-pi4j-part-1/That gives us the key to integrating that specific sensor into a Jini network that we are creating. Just take the part that is manually being done (in the blog post) and write a Jini discovery adapter to watch for it when that particular Parallax USB RFID Reader gets connected to the Raspberry Pi....int result = serial.open( "/dev/ttyUSB0", 2400 );...In the RFID reader manual, the key transmitted is described as a sequence of bytes, such as “ 0x0A, 0×30, 0×46, 0×30, 0×31, 0×38, 0×34, 0×46, 0×30, 0×37, 0×41, 0x0D”, where 0x0a is the start byte, and 0x0d is the stop byte, leaving the remaining 10 bytes as the tag’s unique key. So, the sequence (above string of bytes from the USB device) is what we use to "discover" that specifically the Parallax USB RFID Reader was just connected to the USB port of the Raspberry Pi. At that point of discovery, we "Look-Up" the correct Jini proxy to use to communicate with that RFID Reader from inside a Java application (using the manufacturer's RFID Reader manual as our guidance).Next, we'll take a closer look at the Jini code that is used to "discover" that RFID reader sequence of bytes (or its "fingerprint") so that the Jini auto-discovery phase happens each time a new connection is made, instead of doing that "manually" like it is described in Stephen James Mason's blog post. Automatically done is the way to go, and it's the Jini way!Full series of steps:Easy IoT Sensor On-Boarding Using Jini Auto-Discovery and Java SE Embedded (Part 1)Easy IoT Sensor On-Boarding Using Jini Auto-Discovery and Java SE Embedded (Part 2)Easy IoT Sensor On-Boarding Using Jini Auto-Discovery and Java SE Embedded (Part 3)Easy IoT Sensor On-Boarding Using Jini Auto-Discovery and Java SE Embedded (Part 4)<<< Previous  | Next >>>Hinkmond

For the Discovery part of the Jini Auto-Discovery of an IoT sensor, we'll need the specification of the device we are trying to on-board. In this case, we are integrating the Parallax USB RFID Reader...

Java Embedded

How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 9)

This is the final part of "How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Technology". You've followed along and now have your Raspberry Pi connected to your home thermostat to control your heating, cooling, and fan controls of your furnace and A/C. You also ran through a Java diagnostic app that cycled through the heating, cooling, and fan relays to make sure you are able to turn on and off the controls programmatically. Very nice.Now, it's up to you to create your user interface and control software. Remember to utilize the Web since you are connected via Wi-Fi to your home wireless network. Just make sure to use the proper HTTPS connection to any server and check for proper authorization for every connection. Using certificate based authentication is best, but that's a topic that's outside the scope of this series.For the UI, just make sure Jetty is installed on your RPi. Jetty is a Java SE Embedded based Web server to run your UI on your local LCD touchscreen. sudo apt-get install jetty (cd /usr/share/jetty; sudo java -jar start.jar)Now, when you boot up your Raspberry Pi, just configure your boot-up to bring up the Midori Web browser on the Ada Fruit TFT LCD screen pointing to your local Jetty Web server and your UI page to your software.See: http://www.ediy.com.my/index.php/blog/item/102-raspberry-pi-running-midori-browser-without-a-desktopThat should get you started on your way to building your own home thermostat control based on Java SE Embedded technology. Not too shabby!Good luck on finishing out your project! Hope this was useful in getting you on your way to creating your own Nest startup.Full series of steps:How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 1)How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 2)How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 3)How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 4)How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 5)How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 6) How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 7) How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 8) How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 9) <<< Previous  | Next >>>Hinkmond

This is the final part of "How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Technology". You've followed along and now have your Raspberry Pi connected to your home thermostat...

Java Embedded

New Raspberry Pi Model B+ Runs Java SE Embedded Apps Just Like Model B

What's the difference between the new Raspberry Pi Model B+ and the old Model B? Well, it's more than just the plus sign (+) in the name. There are more USB ports, better sound, and lots and lots more GPIO Pins.Now that's what I'm talking about! I like having more GPIO pins when connecting my Java SE Embedded apps to all types of tasty devices like sensors and actuators!See Raspberry Pi video blogger, Carrie Anne Philbin's run-down of the list of new features of the new RPi Model B+ on YouTube:Geek Gurl Reviews RPi Model B+And to add to the Geek Gurl's video (above), you should know that of course, all your old Java SE apps will run on the new RPi Model B+ without any problem, because... duh... "Write Once, Run Anywhere" Ya know? Java? Hello? Good stuff!Just remember to update your version of the Java SE Embedded platform to the latest release on your Raspbian operating system: sudo apt-get install oracle-java8-jdkThat's it! You will now have the most recent Java SE Embedded platform, the most awesome embedded platform for your Raspberry Pi Model B, B+, and any other letter and arithmetic symbol you can think of. Port your Model B Java apps to the Model B+ by just copying over the JAR files. What's easier than that? :-)Hinkmond

What's the difference between the new Raspberry Pi Model B+ and the old Model B? Well, it's more than just the plus sign (+) in the name. There are more USB ports, better sound, and lots and lots more...

General Java

How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 8)

Now, your Parallax Single Relay Board from your Raspberry Pi is connected to your furnace, fan, and A/C control wires. Let's just stop right there and soak that in.Your Raspberry Pi is now the hardware equivalent to a Nest Thermostat. Nice work so far! You just need intelligent software to run the Raspberry Pi to control your home heating and A/C. And, of course, you don't want to use just any programming language to do that. You want your Raspberry Pi to be a smart Internet of Things (IoT) device, not a dumb device. So, you're going to need Java SE Embedded Technology.Here's the simple Java code that will drive your relays to turn on your furnace, fan, and A/C. It's a test app that cycles your heat on for 5 minutes, then your fan on for 5 minutes, then your A/C on for 5 minutes with a rest period of 2 minutes in between. static String[] GpioChannels = { "0", "1", "4" }; /* ... */ /** * @param args the command line arguments */ public static void main(String[] args) { FileWriter[] commandChannels; try { /*** Init GPIO port for output ***/ // Open file handles to GPIO port unexport and export controls FileWriter unexportFile = new FileWriter("/sys/class/gpio/unexport"); FileWriter exportFile = new FileWriter("/sys/class/gpio/export"); for (String gpioChannel : GpioChannels) { System.out.println(gpioChannel); // Reset the port File exportFileCheck = new File("/sys/class/gpio/gpio"+ gpioChannel); if (exportFileCheck.exists()) { unexportFile.write(gpioChannel); unexportFile.flush(); } // Set the port for use exportFile.write(gpioChannel); exportFile.flush(); // Open file handle to port input/output control FileWriter directionFile = new FileWriter("/sys/class/gpio/gpio" + gpioChannel + "/direction"); // Set port for output directionFile.write(GPIO_OUT); directionFile.flush(); }/* ... */ // Set up a GPIO ports as a command channels FileWriter heatChannel = new FileWriter("/sys/class/gpio/gpio" + GpioChannels[0] + "/value"); FileWriter fanChannel = new FileWriter("/sys/class/gpio/gpio" + GpioChannels[1] + "/value"); FileWriter acChannel = new FileWriter("/sys/class/gpio/gpio" + GpioChannels[2] + "/value"); // TEST Cycle all 5 min. on, 2 min. off // HIGH: Set GPIO port ON heatChannel.write(GPIO_ON); heatChannel.flush(); java.lang.Thread.sleep(300000); // LOW: Set GPIO port OFF heatChannel.write(GPIO_OFF); heatChannel.flush(); java.lang.Thread.sleep(120000); // HIGH: Set GPIO port ON fanChannel.write(GPIO_ON); fanChannel.flush(); java.lang.Thread.sleep(300000); // LOW: Set GPIO port OFF fanChannel.write(GPIO_OFF); fanChannel.flush(); java.lang.Thread.sleep(120000); // HIGH: Set GPIO port ON acChannel.write(GPIO_ON); acChannel.flush(); java.lang.Thread.sleep(300000); // LOW: Set GPIO port OFF acChannel.write(GPIO_OFF); acChannel.flush(); java.lang.Thread.sleep(120000); } } catch (Exception exception) { exception.printStackTrace(); } } Pretty straight-forward stuff. It's easy when you use Java SE Embedded technology and a Raspberry Pi. Hey, someone should trademark that... ;-)Full series of steps:How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 1)How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 2)How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 3)How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 4)How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 5)How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 6) How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 7) How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 8) How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 9) <<< Previous  | Next >>>Hinkmond

Now, your Parallax Single Relay Board from your Raspberry Pi is connected to your furnace, fan, and A/C control wires. Let's just stop right there and soak that in. Your Raspberry Pi is now the...

Java Embedded

Jini IoT Edition: Connecting the Emerging Internet of Things Silos

For those who were around in the days of Sun Microsystems, Inc., you might remember Jini technology which was a cool network architecture for distributed systems, devices and services. Hmmm... where have we recently heard that before? Does it sound similar to... the Internet of Things (IoT)???See:Jini IoT EditionHere's a quote: In fact, in the late 90s, Sun Microsystems defined a Java-based standard called Jini - which was a network architecture comprised of distributed systems, devices and services. Jini talked about connected devices, both in the consumer space and the enterprise. In a manner of speaking, Jini was a precursor of the IOT, but none of the above mentioned supporting technologies existed at that time and due to this and few other reasons. Jini never made it to mainstream.Well, yes. Jini was the precursor to IoT. And, there's no reason why it can't come back now that today's available technology has finally caught up with the concept. A Jini IoT Edition could be the driver to connect all those disparate silos forming for the Internet of Things, everything from Google's Nest API's, to Apple's HomeKit, to AllJoyn, Belkin's WeMo, MQTT, Tesla cars, you name it! Jini IoT Edition has the chance to tie all those scattered silos together with Java API's.It's nothing new. It's just been sitting in there on the back shelf in a bottle, waiting for the right time to come back out and show its inherent quality: bringing together devices, services, and distributed systems. It's time to let it back out of that bottle. This time, there's no going back...Hinkmond

For those who were around in the days of Sun Microsystems, Inc., you might remember Jini technology which was a cool network architecture for distributed systems, devices and services. Hmmm... where...

Java Embedded

How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 7)

So, you've got your Parallax Single Relay Board. Next you need to connect this to your furnace, fan, and A/C control wires... and, not burn down your house in the process. Got that? Good.Refer back to your thermostat wires. We need to connect a Relay Board to each of the control wires for the Fan, Heat call, and Cool call. Here's a reminder which wire is which. Red - R - 24VAC or Red - Rh - 24VAC (dedicated to heat call) Red - Rc - 24VAC (dedicated to cooling call) Green - G - Fan on White - W - Heat call Yellow - Y - Cool call Blue or Black - C - CommonYou will need 3 Relay Boards connecting to the Raspberry Pi to control the 3 house thermostat control wires (Green for Fan, White for Heat, and Yellow for Cool). First, make sure on your Adafruit PiTFT has the 2x13 male header properly soldered on to it to daisy chain your RPi header pins (to allow your Relay Boards to connect down to the RPi). This way your Adafruit PiTFT can use the SPI pins (SCK, MOSI, MISO, CE0, CE1) plus GPIO #24 and #25 for its use, while we use GPIO #00, #01, and #04 for the Relay Boards. It's nice to share.On each Relay Board, connect the + to the +5 VDC pin on your Adafruit PiTFT (male header pin #2). Make use of continuous jumper wires to share the one +5 VDC pin with all 3 of the Relay Boards. Then, connect the - to the GND pin (male header pin #6) using a continuous jumper wire to share this pin also. And, finally connect the S pin of one of your Relay Boards to GPIO #00 (pin #3), one S pin to GPIO #01 (pin #5), and the final S pin to GPIO #04 (pin #7).Then connect all 3 Relay Boards Common screw down connector to the C - Common wire of your thermostat. Connect one Relay Board Normal Open (NO) screw down connector to the Green Fan wire, one NO screw down connector to the White Heat wire, and the final NO screw down connector to the Yellow Cool wire. Cool? Cool!You are good to go for the next step!See, not so bad still, right? ;-)Full series of steps:How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 1)How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 2)How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 3)How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 4)How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 5)How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 6) How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 7) How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 8) How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 9) <<< Previous  | Next >>>Hinkmond

So, you've got your Parallax Single Relay Board. Next you need to connect this to your furnace, fan, and A/C control wires... and, not burn down your house in the process. Got that? Good. Refer back...

Java Embedded

Maker Faire Report - Teaching Kids Java SE Embedded for Internet of Things (IoT)

I had a great time at this year's Maker Faire 2014 in San Mateo, Calif. where Jake Kuramoto and the AppsLab crew including Noel Portugal, Anthony Lai, Raymond, and Tony set up a super demo at the DiY table. It was a simple way to learn how Java SE Embedded technology could be used to code the Internet of Things (IoT) devices on the table.The best part of our set-up was seeing the kids sit down and do some coding without all the complexity of a Computer Science course. It was very encouraging to see how interested the kids were when walking them through the programming steps, then seeing their eyes light up when telling them, "You just coded a Java enabled Internet of Things device!" as the Raspberry Pi-connected devices turned on or started to move from their Java Embedded program.See:The AppsLab at Maker FaireIt will be interesting to see how this next generation of kids grow up with all these Internet of Things devices around them and watch how they will program them. Hopefully, they will be using Java SE Embedded technology to do so. From the looks of it at this year's Maker Faire, we might have a bunch of motivated young Java SE Embedded coders coming up the ranks soon. Well, they have to get through middle school first, but they're on their way! ;-)Hinkmond

I had a great time at this year's Maker Faire 2014 in San Mateo, Calif. where Jake Kuramoto and the AppsLab crew including Noel Portugal, Anthony Lai, Raymond, and Tony set up a super demo at the DiY...

Java Embedded

How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 6)

After showing how to connect the LCD Touchscreen from adafruit in Part 5 for this Java SE Embedded thermostat project, I figured out a simpler solution for the relays needed to turn on and off the furnace, fan, and A/C of a home heating and cooling system (just like the Nest thermostat).So, it's time to show how to do a time-honored tradition in high tech start-up prototyping: Refactoring.I found this cool Single Relay Board from Parallax. It can control up to 120VAC at 10 amps, but we only need to control 24VAC 1 amp relays for the home furnace, fan, and A/C. And most importantly, this Single Relay Board can take a 3.3 VDC signal from a microcontroller or Raspberry Pi running the Java SE Embedded platform (like we are doing in the project). No need for SPI or i2c, just a straight GPIO high value (3.3VDC) from the Raspberry Pi header pins from a Java SE Embedded app will control the relays. Cool!So, I've got a bit of refactoring to do of my previous blog posts to swap in 3 of these Single Relay Boards (go ahead and order 3 if you are playing along at home). But, it's all good. Refactoring is part of the process of high tech start-up prototyping, right? :-)Full series of steps:How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 1)How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 2)How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 3)How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 4)How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 5)How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 6) How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 7)How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 8) How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 9) <<< Previous  | Next >>>Hinkmond

After showing how to connect the LCD Touchscreen from adafruit in Part 5 for this Java SE Embedded thermostat project, I figured out a simpler solution for the relays needed to turn on and off...

Java Embedded

Oracle IoT Device to Translate Cat Meows: Java SE Embedded on Raspberry Pi

Here's a new Oracle Internet of Things (IoT) Device that translates cat meows into readable text. You just need a Raspberry Pi device, a USB connected mic, and Java SE Embedded technology to program the meow-to-text recognition software using cloud-based, kitty-crowd-sourced, big data to do the translations.The inventor here at Oracle was quoted as saying: "I was watching my cat the other day, and I thought, 'I wonder what my cat is thinking... If there were only a way to use an IoT device to translate my cat's thoughts and meows into human readable text.'". "A couple days later, I had a prototype with parts from old stereo equipment and a Raspberry Pi, and now, nine months later, I have a $350 billion startup company."Thus was born the Oracle IoT Cat Meowerator, a next-generation automated cat translation device that taps into millions of cat meows stored over the web on an Oracle cloud database to deliver carefully translated meow-to-text conversions to your device.The device, now available on Amazon.com for $299.99, includes a mic, a stuffed bird toy with catnip, meaty treats, and a Raspberry Pi controller board. It uses a Realtek 802.11b/g/n controller to link to the Internet over a home WiFi net like another access point and Java SE Embedded technology to let you know, "April Fools!".Hinkmond

Here's a new Oracle Internet of Things (IoT) Device that translates cat meows into readable text. You just need a Raspberry Pi device, a USB connected mic, and Java SE Embedded technology to program...

Java Embedded

How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 5)

We now have power to your Raspberry Pi. Next, we need to hook up the cool LCD Touchscreen from adafruit.com so that your Java SE Embedded thermostat app will have a UI. Lady Ada has some rockin' cool gear for your Raspberry Pi at her Web site!See the cool video demo of the TFT touchscreen below:To hook up her LCD Touchscreen to your RPi so that your Java SE Embedded app can use it, just follow these two sets of instructions from adafruit.com.First do the assembly: TFT touchscreen assemblyNext do the software installation: TFT touchscreen softwareThat's it for this part. You can also check out the other steps at the adafruit.com Web site for screen calibration and other optional set-up steps. But, with the above minimal steps you now have a working touchscreen.Next up, we will connect the PiFace for the relays needed to turn on and off your furnace and A/C via a Java SE Embedded app. That's when the stuff gets real... Or, sparks fly... One, or the other. :-)Full series of steps:How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 1)How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 2)How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 3)How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 4)How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 5)How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 6) How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 7)How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 8) How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 9) <<< Previous  | Next >>>Hinkmond

We now have power to your Raspberry Pi. Next, we need to hook up the cool LCD Touchscreen from adafruit.com so that your Java SE Embedded thermostat app will have a UI. Lady Ada has some rockin' cool...

Java Embedded

The Path to a $16 Billion Acquisition? Build a Java ME App

As everyone saw in the press already, Facebook bought WhatsApp (maker of the startup mobile messaging app and service) for a hefty $16 billion. There was a lot of armchair analysis done just after the announcement, on how WhatsApp could be worth $16 billion. Here's a blog post (not mine) from the TextIt Blog, written by makers of the TextIt tool for SMS apps, that concludes the answer is Java ME technology (J2ME), and that Facebook bought WhatsApp for $16 billion because the WhatsApp Java ME port is available for feature phones, which if you look worldwide, still outnumber smartphones by a lot (a fact many developers and entrepreneurs overlook to their detriment).See:Java ME tech is the AnswerHere's a quote: So it finally happened, Facebook snatched up WhatsApp for the not so bargain price of $16B to the simultaneous head explosion of every entrepreneur in Silicon Valley. A common cry echoed around the world "But, but, how is WhatsApp any different than iMessage / Facebook Messenger / Hangouts?" To that, I have one answer: J2MESo, even though it might not happen the same way for your mobile startup, you might want to consider the analysis by the TextIt blog post, that if you want to think big for mobile, you should consider a Java ME port of your mobile app to make sure you cover the whole market, not just the smaller smartphone (iOS and Android) market. Apparently, Mark Zuckerberg and Facebook did... :-)Hinkmond

As everyone saw in the press already, Facebook bought WhatsApp (maker of the startup mobile messaging app and service) for a hefty $16 billion. There was a lot of armchair analysis done just after the...

Java Embedded

How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 4)

So, you've now added your Bridge Rectifier and Transformer to your $3.2bln Nest Startup prototype. You just need to connect to power up your Raspberry Pi.This next step is pretty straight-forward. To make life easy, you should buy a USB A Jack to Wire Lead connector at element14 or Newark Electronics: here. This jack will allow you to plug in a typical micro USB cable to power up your RPi. After you purchase the USB A Jack to Wire Lead connector (above), see the spec sheet for details on how to hook it up to your Transformer: here.Then, connect the black wire of your USB A Jack to your Transformer GROUND OUT (-) pad by soldering it together, and connect the red wire to your Transformer POWER OUT (+) pad by soldering those together. That's it!Plug in one end of a standard micro USB cable to your USB A Jack, and the other end to your Raspberry Pi. Then connect your 24VAC power from your house thermostat wiring to your breadboard Bridge Rectifier as mentioned in Part 3/Step 4 and turn your circuit breaker back on, or use a temporary power source on your workbench as described in the later section of Part 3/Step 4 to test it.If you reach this point and you haven't fried your Raspberry Pi, then that's a very good thing. If you accidentally see white smoke coming out of your Raspberry Pi board, shout out your favorite expletive and quickly unplug everything. But don't worry, just go back to Part 1 and buy another one. Heck, they're just $35 each! Buy, 2 or 3 more, just in case... ;-) Wouldn't hurt.When you reach this point, and your RPi powers up correctly with very little or no swearing, do a little dance and get ready for the next step in building your own $3.2bln Nest Startup, which is where you connect up the LCD touchscreen.Full series of steps:How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 1)How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 2)How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 3)How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 4)How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 5)How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 6)How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 7)How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 8) How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 9) <<< Previous  | Next >>>Hinkmond

So, you've now added your Bridge Rectifier and Transformer to your $3.2bln Nest Startup prototype. You just need to connect to power up your Raspberry Pi. This next step is pretty straight-forward....

Java Embedded

How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 3)

If you are this far along, it means you do have a "C" wire at your thermostat. Yay! That means you can connect the Bridge Rectifier GBU608 and the DC to DC step-down transformer from your thermostat wires to power your Raspberry Pi from the 24VAC of your thermostat wiring. We are using the C wire and either the (Rh or Rc wire) or the R wire to power the RPi, since one of the "R" wires is considered in AC terms "hot" and the "C" wire is considered "neutral". NOTE: You need a "hot" wire and a "neutral" wire in AC household electrical circuits to complete or close an AC circuit. With most U.S. household thermostats, we are working with a lower 24VAC standard, and not your typical 110VAC found in U.S. homes. If your thermostat happens to be a higher voltage 110VAC thermostat, stop here and do not proceed. Your wiring for a 110VAC thermostat is not the same as the 24VAC we need for this project. If you are unsure whether your thermostat is 24VAC or 110VAC, ask an electrician friend or electrical contractor to check for you.As a review, the Bridge Rectifier turns the 24VAC of your furnace relay from 24 volts of AC power to 33 volts DC power, and the step-down transformer turns the 33 volts DC down to 5 volts DC for the Raspberry Pi (and all its peripherals).As with any $3.2 billion startup, you begin with a prototype, and that prototype is typically built using a breadboard, so that you can easily put it together and change it if necessary.So find a hobby electronic breadboard, and add your GBU608 Bridge Rectifier. In this part of the project you will run the inner two wires to connect from the breadboard to your "C" and one of your "R" wires of your thermostat (refer to the pinout diagram above)Use a wire connected to the notched edge pin of your GBU608 which represents the positive terminal to solder to the positive "IN" pad on your DC to DC Voltage Step-Down Transformer, and do the same with your unnotched edge pin of your GBU608 which is the negative connector and solder that to the negative "IN" pad on your DC to DC Voltage Step-Down Transformer.Solder two separate wires to the positive and negative "OUT" pads of your DC to DC Voltage Step-Down transformerConnect the two inner pins (marked with the "~" symbol) of your GBU608 Bridge Rectifier to your thermostat wires as described in Step #1: one inner pin connects to the "C" wire of your thermostat and the other inner pin connects to one of the "R" wires (or better yet for workbench development purposes, connect them to a temporary 24VAC power supply like this one to represent the thermostat power as you develop on your bench first).Use a voltmeter to measure the OUT pads of your DC to DC Voltage Step-Down transformer and adjust the screw of the transformer until your voltmeter reads 5 volts. Once you have the screw set on your transformer, then your are ready to connect your Raspberry Pi in the next step... Fun!Full series of steps:How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 1)How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 2)How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 3)How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 4)How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 5)How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 6) How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 7)How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 8) How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 9) <<< Previous  | Next >>>Hinkmond

If you are this far along, it means you do have a "C" wire at your thermostat. Yay! That means you can connect the Bridge Rectifier GBU608 and the DC to DC step-down transformer from your...

Java Embedded

How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 2)

So, let's get started in building your own $3.2 billion (with a "b") Nest Startup using a Raspberry Pi, some hobby electronic parts, and Java SE Embedded Technology. The journey of a $3.2 billion startup begins with a single step-down transformer... er, or something like that.First, we'll need a crash course in home thermostat technology. Here in the U.S., if you first flip off the circuit breaker to your home heating furnace and A/C, then take off the thermostat panel in your house, you should see these standardized labeled wires (with various colors of wires that are not standardized): Red - R - 24VAC or Red - Rh - 24VAC (dedicated to heat call) Red - Rc - 24VAC (dedicated to cooling call) Green - G - Fan on White - W - Heat call Yellow - Y - Cool call Blue or Black - C - CommonIf you see a wire labeled "C" (Common) and the rest of the labeled wires (above), then you are OK. If you do not see the "C" label on a wire, you must ask an electrician friend or hire an electrical contractor to run the common "C" wire from a furnace relay to your thermostat. Otherwise, if you do not have the "C" wire at your thermostat, stop here since the "C" wire is needed to power the Raspberry Pi and especially for the Wi-Fi adapter to have enough power to allow your new SmartThermostat to be networked.If after one way or another you do have a "C" wire at your thermostat, then you are ready for the first step which is to connect the Bridge Rectifier GBU608 and the DC to DC step-down transformer from your Raspberry Pi to your thermostat wires to power it from the 24VAC of your thermostat wiring (C and either Rh or Rc or R). The Bridge Rectifier turns the 24VAC of your furnace relay from 24 volts of AC power to 33 volts DC power, and the step-down transformer turns the 33 volts DC down to 5 volts DC for the Raspberry Pi (and all its peripherals).Come back to the next blog post to see how that's done... It's a fun step since it's your first one! ;-)Full series of steps:How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 1)How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 2)How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 3)How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 4)How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 5)How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 6) How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 7)How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 8) How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 9) <<< Previous  | Next >>>Hinkmond

So, let's get started in building your own $3.2 billion (with a "b") Nest Startup using a Raspberry Pi, some hobby electronic parts, and Java SE Embedded Technology. The journey of a $3.2 billion...

Java Embedded

How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 1)

As we all saw recently, the company that starts with the letter "G" up Highway 101 in Mountain View bought Nest Labs for $3.2 billion (with a "b"), maker of the Internet of Things (IoT) Nest thermostat. Well, here's your chance in this new Java SE Embedded IoT blog series, to learn how to build your own $3.2 billion Nest Startup using a Raspberry Pi, some hobby electronic parts, and Java SE Embedded Technology.This blog series was inspired by Spark Team's Arduino Based blog post at the spark.io. But, we'll use a more powerful but still inexpensive Raspberry Pi, and we'll base the software on Java SE Embedded which is a much more powerful programming language and platform than you can ever find on the Arduino.This project will need the following parts: 1 Raspberry Pi $39.95 1 TFT 2.8" LCD touchscreen $34.95 1 USB mini Wi-Fi adapter $11.95 1 DC to DC Voltage Step Down Transformer $2.99 1 Bridge Rectifier GBU608 $1.47 3 Single Relay Board $29.97 1 DS18B20 Digital temperature sensor $4.00So, for the low total cost of about $125.28 (plus tax and shipping) you can build your own $3.2 billion IoT startup company. Well... maybe, the start of a $3.2 billion IoT startup company, but you'll have a nifty IoT Java SE Embedded enabled home thermostat in the end, regardless. And, that's just as good as a $3.2 billion IoT startup, right? ;-)Come back for the next steps in this series, to get you on your way... Full series of steps:How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 1)How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 2)How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 3)How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 4)How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 5)How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 6) How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 7)How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 8) How to Build Your Own $3.2bln Nest Startup Using Java SE Embedded Tech (Part 9) <<< Previous  | Next >>>Hinkmond

As we all saw recently, the company that starts with the letter "G" up Highway 101 in Mountain View bought Nest Labs for $3.2 billion (with a "b"), maker of the Internet of Things (IoT)...

Java Embedded

Happy Java SE Embedded Enabled Internet of Things (IoT) New Year!

Whew! That's a mouthful to say. How about if I just say, "Happy Java-Is-the-Best-for-IoT New Year!" That's better. In 2014, for this blog I hope to explore new and interesting ways to make your Internet of Things smarter by using Java SE Embedded.As a look back at 2013, you can see by my blog statistics (in the picture) that it seems like there were a lot of embedded developers out there who were interested in the blossoming IoT topics that my blog covered over the past 12 months.You can also see my blog's Page Views, Unique Visits, and Returning Visits for all of 2013 vs. all of 2012 (for comparison).See:My Blog 2013 vs. 2012 SummaryThe overall numbers for 2013 look great, with 152,262 unique visitors who stopped to read my blog last year (2013) compared to 108,162 of you who stopped by in the previous year (2012). And, the 2013 visitors read 202,818 pages of my blog for all of last year. Whew! That's a lot of pages read!Thanks to all who follow my blog! As you can also see in the chart, last year there were 16,183 returning visitors to my blog compared to 7,738 returning visitors in 2012. So, hopefully, I will keep posting technical updates, DIY IoT projects, and interesting news and articles about Java SE Embedded in 2014 to match what you all wanted in 2013 when there was such a big uptick in my return visitors.Leave me a comment if there are any specific topics you'd like me to cover related to Java SE Embedded, Internet of Things, and how to make embedded devices smarter for 2014.In the meantime, I hope everyone has a Happy New Year! :-DHinkmond

Whew! That's a mouthful to say. How about if I just say, "Happy Java-Is-the-Best-for-IoT New Year!" That's better. In 2014, for this blog I hope to explore new and interesting ways to make...

Java Embedded

Internet of Things (IoT) Christmas Special: Santa Detector (Part 5)

Well, this wraps up the Internet of Things (IoT) Christmas Special! Hope you enjoyed seeing the steps for creating the Java SE Embedded enabled Santa Detector!The last step is to place the Raspberry Pi device connected to your Parallax PIR motion sensor nearby a plate of cookies and a glass of milk tonight. Then, start your Java SE Embedded SantaDetector.java app on the RPi before you go to bed, and tomorrow morning you and your child should see a tweet around midnight that shows that Santa came by.(NOTE to parents [VERY IMPORTANT]: Remember to, you know, do the "thing" with the "thing" at around *mumble-mumble*. Got it? Nudge-nudge, wink-wink...) ;-)Here's the full compilable Java source code again for reference: https://java.net/projects/orbit/downloads/download/SantaDetector.javaThat's a wrap!Have a very Merry Christmas and a Happy Internet of Things (IoT) New Year! ;-)See the full series of steps:Internet of Things (IoT) Christmas Special: Santa Detector (Part 1)Internet of Things (IoT) Christmas Special: Santa Detector (Part 2)Internet of Things (IoT) Christmas Special: Santa Detector (Part 3)Internet of Things (IoT) Christmas Special: Santa Detector (Part 4)Internet of Things (IoT) Christmas Special: Santa Detector (Part 5) <<< Previous  | Next >>>Hinkmond

Well, this wraps up the Internet of Things (IoT) Christmas Special! Hope you enjoyed seeing the steps for creating the Java SE Embedded enabled Santa Detector! The last step is to place the Raspberry...

Java Embedded

Internet of Things (IoT) Christmas Special: Santa Detector (Part 4)

So, let's take a closer look at the Java SE Embedded code snippet that will send out a tweet when the Santa Detector Raspberry Pi motion sensor is triggered, which will let the Oracle cloud and the Twitterverse know when Santa has arrived at your house. And, if you are doing this project with your child, it will prove once and for all that yes, there is a Santa Claus. Yay!Here's the full compilable Java source code again for reference: https://java.net/projects/orbit/downloads/download/SantaDetector.java0. First, you need to have a Twitter account and you need to create your own Santa Detector Twitter app to make this work. Just follow the steps here:Create Santa Detector Twitter AppAnd, make sure to do the following extra steps to make your Twitter app "Read and Write" enabled: 1. Go to your Twitter app account by signing in with our Twitter login info: https://dev.twitter.com/ 2. Select your account icon -> My Applications 3. Select the Santa Detector app (To create the app: see above) 4. Click on the Settings tab 5. In the section "Application Type Access:", select "Read and Write" 6. Check the box for "Allow this application to be used to Sign in with Twitter" 7. Click "Update this Twitter's app settings" 8. Click on the Details tab 9. Refresh your Web browser10. Make sure the Access level says: "Read and write"11. Copy the Twitter app information from the page into the SantaDetector.java code (Java variables near the top of the file): OAuth setting: Consumer Key OAuth setting: Consumer Secret Access token: Access token Access token: Access token secretNext, take a look at the code snippet in the SantaDetector.java file that will send the tweet by calling the Java method tweetStatus(): static void tweetStatus(String statusStr) { boolean verboseFlag = true; String requestURIEnc = null; try { requestURIEnc = URLEncoder.encode(requestURI, "UTF-8"); } catch (UnsupportedEncodingException uee) { uee.printStackTrace(); } try { if (statusStr == null) { statusStr = "Tweet, tweet. Hello world!"; } // Construct encoded string, parameter encoded string, & data String statusEncStr = URLEncoder.encode(statusStr, "UTF-8"); // Param encode status string twice: once for unsafe characters // String, once for escaping % for Signature base string String statusUnsafeEncStr = unsafeEncode(unsafeEncode(statusStr)); String postData = "status=" + statusEncStr; // First set the default cookie manager CookieHandler.setDefault(new CookieManager(null, CookiePolicy.ACCEPT_ALL)); // Send postData URL url = new URL(requestURI); HttpsURLConnection conn = (HttpsURLConnection) url.openConnection(); conn.setDoOutput(true); conn.setRequestMethod("POST"); // Get current date time with Calendar() Calendar cal = Calendar.getInstance(); String timeStr = String. valueOf(cal.getTimeInMillis()).substring(0, 10); String basestring = "POST&" + requestURIEnc + "&oauth_consumer_key%3D" + consumerKey + "%26oauth_nonce%3D5bffa3b2711bbcdaa4f301" + timeStr + "%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D" + timeStr + "%26oauth_token%3D" + accessToken + "%26oauth_version%3D1.0" + "%26status%3D" + statusUnsafeEncStr; String secretsStr = consumerSecret + "&" + accessTokenSecret; SecretKeySpec keySpec = new SecretKeySpec(secretsStr.getBytes(), "HmacSHA1"); Mac mac = Mac.getInstance("HmacSHA1"); mac.init(keySpec); byte[] result = mac.doFinal(basestring.getBytes()); String signature = URLEncoder.encode(base64Encode(result), "UTF-8"); String credentials = "oauth_consumer_key=\"" + consumerKey + "\"," + "oauth_nonce=\"5bffa3b2711bbcdaa4f301" + timeStr + "\"," + "oauth_signature=\"" + signature + "\"," + "oauth_signature_method=\"HMAC-SHA1\"," + "oauth_timestamp=\"" + timeStr + "\"," + "oauth_token=\"" + accessToken + "\"," + "oauth_version=\"1.0\""; conn.addRequestProperty("Authorization", "OAuth " + credentials); String lenStr = String.valueOf(postData.length()); conn.setRequestProperty("Content-Length", lenStr); conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); // Do as if you're using Firefox 3.6.3 conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; " + "en-US; rv:1.9.2.3) Gecko/20100401"); if (tweetFlag) { conn.connect(); OutputStream output = conn.getOutputStream(); output.write(postData.getBytes("UTF-8")); // Get the response InputStream response = conn.getInputStream(); BufferedReader rd = new BufferedReader(new InputStreamReader(response)); String line; while ((line = rd.readLine()) != null) { if (verboseFlag) { System.out.println(line); } } rd.close(); } System.out.println("Tweet status = " + statusStr + "\n basestring = " + basestring); } catch (IOException | NoSuchAlgorithmException | InvalidKeyException | IllegalStateException e) { e.printStackTrace(); } }You see that you can take the above code snippet and just make a tweetStatus library out of it. It is self contained as long as you add the following utilities that need to go along with it. public static String unsafeEncode(String input) { StringBuilder resultStr = new StringBuilder(); for (char ch : input.toCharArray()) { if (isUnsafe(ch)) { resultStr.append('%'); resultStr.append(toHex(ch / 16)); resultStr.append(toHex(ch % 16)); } else { resultStr.append(ch); } } return resultStr.toString(); } private static char toHex(int ch) { return (char) (ch < 10 ? '0' + ch : 'A' + ch - 10); } private static boolean isUnsafe(char ch) { if (ch > 128 || ch < 0) { return true; } return "$&+,/:;=?@ \"#%{}|\\^~[]`'!_*".indexOf(ch) >= 0; } private final static char[] BASE64CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" .toCharArray(); private static final int[] intChars = new int[128]; /** * Translates the specified byte array into Base64 string. * * @param inputBuffer byte array (not null) * @return the translated Base64 string (not null) */ public static String base64Encode(byte[] inputBuffer) { // Check if intChars array needs to be init'd if (intChars.length == 0) { for (int index = 0; index < BASE64CHARS.length; index++) { intChars[BASE64CHARS[index]] = index; } } int bufferSize = inputBuffer.length; char[] charArray = new char[((bufferSize + 2) / 3) * 4]; int charIndex = 0; int inputIndex = 0; while (inputIndex < bufferSize) { byte byte0 = inputBuffer[inputIndex++]; byte byte1 = (inputIndex < bufferSize) ? inputBuffer[inputIndex++] : 0; byte byte2 = (inputIndex < bufferSize) ? inputBuffer[inputIndex++] : 0; int mask = 0x3F; charArray[charIndex++] = BASE64CHARS[(byte0 >> 2) & mask]; charArray[charIndex++] = BASE64CHARS[((byte0 > 4)) & mask]; charArray[charIndex++] = BASE64CHARS[((byte1 > 6)) & mask]; charArray[charIndex++] = BASE64CHARS[byte2 & mask]; } switch (bufferSize % 3) { case 1: charArray[--charIndex] = '='; case 2: charArray[--charIndex] = '='; } return new String(charArray); }So, that's all there is to it to enable your Santa Detector to tweet when Santa has arrived. In the next blog post, we'll wrap it all up and figure out where to place the Raspberry Pi with the sensor for best coverage...It's almost Christmas Eve, so get ready! ;-)See the full series of steps:Internet of Things (IoT) Christmas Special: Santa Detector (Part 1)Internet of Things (IoT) Christmas Special: Santa Detector (Part 2)Internet of Things (IoT) Christmas Special: Santa Detector (Part 3)Internet of Things (IoT) Christmas Special: Santa Detector (Part 4)Internet of Things (IoT) Christmas Special: Santa Detector (Part 5) <<< Previous  | Next >>>Hinkmond

So, let's take a closer look at the Java SE Embedded code snippet that will send out a tweet when the Santa Detector Raspberry Pi motion sensor is triggered, which will let the Oracle cloud and...

Java Embedded

Internet of Things (IoT) Christmas Special: Santa Detector (Part 3)

Admiral Ackbar Santa thinks our Santa Detector is a trap. Well, he's right! We are setting up our Internet of Things (IoT) Santa Detector to catch Santa in the act on Christmas Eve to tell the world whether Santa Claus exists. (I have a sneaky suspicion that we will detect Santa Claus on Christmas Eve and prove his existence. But, that's just a hunch... ;-) ) Admiral Ackbar Santa really shouldn't worry. We're not really going to try to trap Santa, just tweet when he's detected by our Java SE Embedded application.So, you've followed the directions, so far, now you just need the Java source code for the Java SE Embedded app to run on your Raspberry Pi connected with a Parallax PIR sensor.Here's the full Java source code that you'll need: https://java.net/projects/orbit/downloads/download/SantaDetector.javaHere's a code excerpt from the full file above of Java SE Embedded code that uses the GPIO port on your Raspberry Pi connected to the Parallax PIR sensor to read in a value to detect if Santa is standing in front of the strategically located bait, er, um... I mean, plate of cookies and glass of milk://// Init GPIO port(s) for input//// Open file handles to GPIO port unexport and export controlsFileWriter unexportFile = new FileWriter("/sys/class/gpio/unexport");FileWriter exportFile = new FileWriter("/sys/class/gpio/export");for (String gpioChannel : GpioChannels) { System.out.println("Activating GPIO port: " + gpioChannel); // Reset the port File exportFileCheck = new File("/sys/class/gpio/gpio" + gpioChannel); if (exportFileCheck.exists()) {unexportFile.write(gpioChannel);unexportFile.flush(); } // Set the port for use exportFile.write(gpioChannel); exportFile.flush(); // Open file handle to input/output dir control of port FileWriter directionFile= new FileWriter("/sys/class/gpio/gpio" + gpioChannel + "/direction"); // Set port for input directionFile.write(GPIO_IN);}// Open RandomAccessFile handle for each GPIO portfor (int channum=0; channum < raf.length; channum++) { raf[channum] = new RandomAccessFile("/sys/class/gpio/gpio"+ GpioChannels[channum] + "/value", "r");}//...// Loop to keep reading sensor valuewhile (true) { int available;// Use RandomAccessFile handle to read in GPIO port valuefor (int channum=0; channum < raf.length; channum++) { try {// Reset file seek pointer to read latest value // of GPIO portraf[channum].seek(0);raf[channum].read(inBytes); } catch (IOException ioe) {ioe.printStackTrace(); } inLine = new String(inBytes); // Check if "on" value was read if (inLine.equals("1")) {// Specially mark value non-zero valuegpioPortVal = 1; } else {// Else, no "on" value readgpioPortVal = 0; } System.out.println("Reading GPIO Port: " + GpioChannels[channum] + " Time: "+ timedateString + " GPIO value = " + gpioPortVal);} }So, as you can see in the code snippet above, the Java source code just keeps reading from the GPIO port where the PIR sensor is connected, whether it has a value of "0" (no motion detected) or "1" (motion detected), and that will tell us if Santa is there in front of the plate of cookies and glass of milk. In the next blog post, we'll look at the Java code that will send out a Tweet when that happens, letting the cloud know when Santa has arrived at our location.So, don't worry Admiral Ackbar Santa, it's all good! ;-)See the full series of steps:Internet of Things (IoT) Christmas Special: Santa Detector (Part 1)Internet of Things (IoT) Christmas Special: Santa Detector (Part 2)Internet of Things (IoT) Christmas Special: Santa Detector (Part 3)Internet of Things (IoT) Christmas Special: Santa Detector (Part 4)Internet of Things (IoT) Christmas Special: Santa Detector (Part 5) <<< Previous  | Next >>>Hinkmond

Admiral Ackbar Santa thinks our Santa Detector is a trap. Well, he's right! We are setting up our Internet of Things (IoT) Santa Detector to catch Santa in the act on Christmas Eve to tell the world...

Java Embedded

Internet of Things (IoT) Christmas Special: Santa Detector (Part 2)

Now, that you have all your parts, you should have this important part which is the motion sensor itself. It detects infrared motion and will light an internal LED and send a signal to the Java SE Embedded app when something (or someone like Santa Claus) passes in front of it.The Raspberry Pi has enough power to also power this sensor, so you will next need to connect this part to your Raspberry Pi.Just look at the next photo how it's done.Flip the sensor over so that you can see the bottom of the circuit board where the labels are.See: GPIO pin layout Connect the left connector (OUT) to Pin #26 (GPIO07) on your Raspberry Pi GPIO bus. Connect the middle connector (VCC) to Pin #2 (+5 volts). And, connect the right connector (GND) to Pin #6 (GND) on your RPi.And, that's it for the hardware part. Not too bad. Next up we'll write a Java SE Embedded app to test the motion sensor. Santa won't have a chance this year... :-)See the full series of steps:Internet of Things (IoT) Christmas Special: Santa Detector (Part 1)Internet of Things (IoT) Christmas Special: Santa Detector (Part 2)Internet of Things (IoT) Christmas Special: Santa Detector (Part 3)Internet of Things (IoT) Christmas Special: Santa Detector (Part 4)Internet of Things (IoT) Christmas Special: Santa Detector (Part 5) <<< Previous  | Next >>>Hinkmond

Now, that you have all your parts, you should have this important part which is the motion sensor itself. It detects infrared motion and will light an internal LED and send a signal to the Java...

Java Embedded

Internet of Things (IoT) Christmas Special: Santa Detector (Part 1)

Ho ho ho! It's time for an Internet of Things (IoT) Christmas Special project for Java SE Embedded on your Raspberry Pi. This one you can do with your kid. It's a Santa Detector, which was inspired by John Murphy's Arduino project.This project will take a Parallax Passive Infra-Red sensor connected to your Raspberry Pi and a Java SE Embedded application code to send a Tweet when Santa has arrived at your house.With this IoT Christmas Special project, there's going to be no way for Santa to sneak past your child this year. Heh, heh, heh... (or, should I say, "Ho, ho, ho"?) ;-)Here is the parts list: 1 Parallax PIR Sensor (Fry's #6726705) 1 Raspberry Pi 1 Milk and Cookies (for concealment)So, go out and buy the parts above and come back here for the rest of the steps... "You better watch out, la-la-lala-laaa..."See the full series of steps:Internet of Things (IoT) Christmas Special: Santa Detector (Part 1)Internet of Things (IoT) Christmas Special: Santa Detector (Part 2)Internet of Things (IoT) Christmas Special: Santa Detector (Part 3)Internet of Things (IoT) Christmas Special: Santa Detector (Part 4)Internet of Things (IoT) Christmas Special: Santa Detector (Part 5) <<< Previous  | Next >>>Hinkmond

Ho ho ho! It's time for an Internet of Things (IoT) Christmas Special project for Java SE Embedded on your Raspberry Pi. This one you can do with your kid. It's a Santa Detector, which was inspired by...

Java Embedded

Happy Internet of Things (IoT) Hanukkah from Java SE Embedded!

Hope everyone has a happy Internet of Things (IoT) Hanukkah from Java SE Embedded and this Rasberry Pi running a Java SE Embedded app to light up the 8th night menorah light.Here's the holiday Java code for your Internet of Things (IoT) menorah:/* * Java Embedded Raspberry Pi GPIO app */import java.io.FileWriter;import java.io.File;/** * * @author hinkmond */public class JavaEmbMenorah { static final String GPIO_OUT = "out"; static final String GPIO_ON = "1"; static final String GPIO_OFF = "0"; static String[] GpioChannels = { "0", "1", "4", "17", "21", "22", "10", "9", "11" }; /** * @param args the command line arguments */ public static void main(String[] args) { FileWriter[] commandChannels; try { /*** Init GPIO port for output ***/ // Open file handles to GPIO port unexport and export controls FileWriter unexportFile = new FileWriter("/sys/class/gpio/unexport"); FileWriter exportFile = new FileWriter("/sys/class/gpio/export"); for (String gpioChannel : GpioChannels) { System.out.println(gpioChannel); // Reset the port File exportFileCheck = new File("/sys/class/gpio/gpio"+gpioChannel); if (exportFileCheck.exists()) { unexportFile.write(gpioChannel); unexportFile.flush(); } // Set the port for use exportFile.write(gpioChannel); exportFile.flush(); // Open file handle to port input/output control FileWriter directionFile = new FileWriter("/sys/class/gpio/gpio" + gpioChannel + "/direction"); // Set port for output directionFile.write(GPIO_OUT); directionFile.flush(); } /*** Send commands to GPIO port ***/ commandChannels = new FileWriter[GpioChannels.length]; for (int channum=0; channum < GpioChannels.length; channum++) { // Open file handle to issue commands to GPIO port commandChannels[channum] = new FileWriter("/sys/class/gpio/gpio" + GpioChannels[channum] + "/value"); } int channum = 0; int sleepPeriod = 1000; // (1 sec. in milliseconds) // Loop forever while (true) { if (++channum >= GpioChannels.length) { channum = 0; } // Refresh Menorah Lights commandChannels[channum].write(GPIO_ON); commandChannels[channum].flush(); // Wait for a while java.lang.Thread.sleep(sleepPeriod); } } catch (Exception exception) { exception.printStackTrace(); } }}Hinkmond

Hope everyone has a happy Internet of Things (IoT) Hanukkah from Java SE Embedded and this Rasberry Pi running a Java SE Embedded app to light up the 8th night menorah light. Here's the holiday Java...

Java Embedded

Internet of Things (IoT) Thanksgiving Special: Turkey Tweeter (Part 6)

So, that's a wrap everyone. Hope you enjoyed the Internet of Things (IoT) Thanksgiving Special: Turkey Tweeter!Leave me feedback on this project in the blog comments (open for 1 week), if you used it for your holiday bird, or if you just followed along and had fun reading. It's good to hear if you ran into any problems or have any questions about using Java SE Embedded for your own Internet of Things project. (Tech support [me] will be open for a few hours tomorrow if you have issues, but response time will vary according to which football game is on) :-)So remember: Java technology is a great way to rapidly develop your own IoT applications.Also, send links to your Twitter accounts if you get them working from your Raspberry Pi. I'll be sure to follow your Twitter feed of your own Java SE Embedded IoT device, and be sure to follow mine at: https://twitter.com/iottweetA very Happy Thanksgiving (and Happy Hanukkah) to all!Here are the full steps to this project:Internet of Things (IoT) Thanksgiving Special: Turkey Tweeter (Part 1)Internet of Things (IoT) Thanksgiving Special: Turkey Tweeter (Part 2)Internet of Things (IoT) Thanksgiving Special: Turkey Tweeter (Part 3)Internet of Things (IoT) Thanksgiving Special: Turkey Tweeter (Part 4)Internet of Things (IoT) Thanksgiving Special: Turkey Tweeter (Part 5)Happy Turkey Tweeting!Hinkmond

So, that's a wrap everyone. Hope you enjoyed the Internet of Things (IoT) Thanksgiving Special: Turkey Tweeter! Leave me feedback on this project in the blog comments (open for 1 week), if you used...

General Java

Internet of Things (IoT) Thanksgiving Special: Turkey Tweeter (Part 5)

It's time to pull this all together and wrap it up. Now, that you have your Twitter developer app ready from Part 4, you just need to make your Twitter app "Read and Write" enabled and then copy over the secret app information to the TurkeyTwitter.java source code (fill in variables near the top of the file) which I included a pointer to the entire compilable source file. See: fileTo make your Twitter app "Read and Write enabled: 1. Go to your Twitter app account by signing in with our Twitter login info: https://dev.twitter.com/ 2. Select your account icon -> My Applications 3. Click on your Twitter Turkey Tweeter app from Part 4. 4. Click on the Settings tab 5. In the section "Application Type Access:", select "Read and Write" 6. Check the box for "Allow this application to be used to Sign in with Twitter" 7. Click "Update this Twitter's app settings" 8. Click on the Details tab 9. Refresh your Web browser10. Make sure the Access level says: "Read and write"11. Copy the Twitter app information from this page into the TurkeyTweeter.java app (Java variables near the top of the file): OAuth setting: Consumer Key OAuth setting: Consumer Secret Access token: Access token Access token: Access token secretDownload the TurkeyTweeter.java app from: https://java.net/projects/orbit/downloads/download/TurkeyTweeter.javaAfter you entered your Twitter app secret information, adjust the source code timePeriod for how often you want your TurkeyTweeter to send update message (default is every 120 seconds), then compile the Java source file with javac and test this way: javac TurkeyTweeter.java java -cp . TurkeyTweeter testYou should see a test "Hello World!" tweet get posted to your Turkey Tweeter account from Part 4. Here is my Turkey Tweeter account that I'll be using which you can follow along as my turkey tweets: https://twitter.com/iottweetHere's the code from the TurkeyTweeter.java app that sends the Tweet:// Check if mod every period to send tweet of current tempif ((loopIndex % timePeriod) == 0) { String tweetMessage = null; // Check if done, then send special Tweet if (f > maxTemp) {tweetMessage = "TurkeyTweeter "+timedateString+ ": Time to eat! Turkey is done: "+ f+" degrees";System.out.println("Tweeting message: "+ tweetMessage);tweetStatus(tweetMessage); } else { // Else, send regular temp update TweettweetMessage = "TurkeyTweeter "+timedateString+ ": Turkey is not done yet: "+ f+" degrees";System.out.println("Tweeting message: "+ tweetMessage);tweetStatus(tweetMessage); }}*** IMPORTANT ***Using your heat reflective tape from Part 1, make sure to tape all sides of the black plastic handle of the Vernier Go!Temp temperature probe and keep wrapping up the length of the black USB cable. Make sure none of black plastic or black cable is exposed especially on the handle. The only part that will be in the oven will be the Go!Temp probe itself in the turkey and part of its USB cable that runs out the oven door, so make sure all the black plastic and black cable is properly taped up with heat reflective tape to ensure it will not melt or catch on fire. The metal probe tip should remain exposed and will be mostly inserted into the turkey.IMPORTANT: The Raspberry Pi must remain outside the oven on a cool counter top or table nearby your oven door. The Go!Temp probe metal portion of the probe must be inserted into the meatiest part of the turkey thigh without hitting any bone. Use a sharp knife to start a pilot hole for the Go!Temp probe if needed. Make sure the Go!Temp metal probe is securely in place in the thigh meat (not touching bone), then run the taped up USB cable that has been wrapped with heat reflective tape out the oven door to the outside counter top or table where the RPi is plugged into a power outlet and is properly networked to the Internet.You are now ready to start your app.Start the app with the following command: java -cp . TurkeyTweeterYou should see it report to the RPi shell terminal the current temperature every second and also it should tweet to the Twitter account every timePeriod (default 120 seconds).That's it! You are now using the TurkeyTweeter to tweet your delicious Thanksgiving turkey as it roasts.Hope you had fun ready this IoT Thanksgiving Special as much as I had fun blogging about it! And, Happy Thanksgiving!See the full series on the steps to this cool demo:Internet of Things (IoT) Thanksgiving Special: Turkey Tweeter (Part 1)Internet of Things (IoT) Thanksgiving Special: Turkey Tweeter (Part 2)Internet of Things (IoT) Thanksgiving Special: Turkey Tweeter (Part 3)Internet of Things (IoT) Thanksgiving Special: Turkey Tweeter (Part 4)Internet of Things (IoT) Thanksgiving Special: Turkey Tweeter (Part 5)Hinkmond

It's time to pull this all together and wrap it up. Now, that you have your Twitter developer app ready from Part 4, you just need to make your Twitter app "Read and Write" enabled and then copy...

Java Embedded

Internet of Things (IoT) Thanksgiving Special: Turkey Tweeter (Part 4)

Now, on to the next step which is to write the Java SE Embedded code to automatically send an Internet of Things (IoT) tweet from your Raspberry Pi attached to your cooking turkey to a Twitter account. For this part you'll need to create your own Twitter app for your IoT Turkey, which is easy to do. Just follow the steps: hereAfter you are done with the above steps to create your own Twitter app, make note of the following settings from your Twitter app: 1. OAuth setting: Consumer Key 2. OAuth setting: Consumer Secret 3. Access token: Access token 4. Access token: Access token secretYou will use your Twitter app values from above in your Java Embedded program. Just replace the above values into the following Java Embedded code: // Application Defined Settings static String consumerKey = "XXXXXXXXXXXXXXXXXXXXXX"; static String consumerSecret = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; static String accessToken = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; static String accessTokenSecret = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; static String requestURI = "https://api.twitter.com/1.1/statuses/update.json";Next, here is the code to send the tweet: void tweetStatus(String statusStr) { boolean verboseFlag = true; String requestURIEnc = null; try { requestURIEnc = URLEncoder.encode(requestURI, "UTF-8"); } catch (UnsupportedEncodingException uee) { uee.printStackTrace(); } try { if (statusStr == null) { statusStr = "Tweet, tweet. Hello world!"; } // Construct encoded string, parameter encoded string, & data String statusEncStr = URLEncoder.encode(statusStr, "UTF-8"); // Param encode status string twice: once for unsafe characters // String, once for escaping % for Signature base string String statusUnsafeEncStr = unsafeEncode(unsafeEncode(statusStr)); String postData = "status="+statusEncStr; // First set the default cookie manager CookieHandler.setDefault(new CookieManager(null, CookiePolicy.ACCEPT_ALL)); // Send postData URL url = new URL("https://api.twitter.com/1.1/statuses/update.json"); HttpsURLConnection conn = (HttpsURLConnection) url.openConnection(); conn.setDoOutput(true); conn.setRequestMethod("POST"); // Get current date time with Calendar() Calendar cal = Calendar.getInstance(); String timeStr = String. valueOf(cal.getTimeInMillis()).substring(0, 10); String basestring = "POST&" + requestURIEnc + "&oauth_consumer_key%3D" + consumerKey + "%26oauth_nonce%3D5bffa3b2711bbcdaa4f301" + timeStr + "%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D" + timeStr + "%26oauth_token%3D" + accessToken + "%26oauth_version%3D1.0" + "%26status%3D" + statusUnsafeEncStr; String secretsStr = consumerSecret+"&"+accessTokenSecret; SecretKeySpec keySpec = new SecretKeySpec(secretsStr.getBytes(), "HmacSHA1"); Mac mac = Mac.getInstance("HmacSHA1"); mac.init(keySpec); byte[] result = mac.doFinal(basestring.getBytes()); String signature = URLEncoder.encode(base64Encode(result), "UTF-8"); String credentials = "oauth_consumer_key=\"" + consumerKey + "\"," + "oauth_nonce=\"5bffa3b2711bbcdaa4f301" + timeStr + "\"," + "oauth_signature=\"" + signature + "\"," + "oauth_signature_method=\"HMAC-SHA1\"," + "oauth_timestamp=\"" + timeStr + "\"," + "oauth_token=\"" + accessToken + "\"," + "oauth_version=\"1.0\""; conn.addRequestProperty("Authorization", "OAuth " + credentials); String lenStr = String.valueOf(postData.length()); conn.setRequestProperty("Content-Length", lenStr); conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); // Do as if you're using Firefox 3.6.3 conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; "+ "en-US; rv:1.9.2.3) Gecko/20100401"); conn.connect(); OutputStream output = conn.getOutputStream(); output.write(postData.getBytes("UTF-8")); // Get the response InputStream response = conn.getInputStream(); BufferedReader rd = new BufferedReader(new InputStreamReader(response)); String line; while ((line = rd.readLine()) != null) { if (verboseFlag) { System.out.println(line); } } rd.close(); } catch (Exception e) { e.printStackTrace(); } }And, here's some code for the supporting utility methods: public static String unsafeEncode(String input) { StringBuilder resultStr = new StringBuilder(); for (char ch : input.toCharArray()) { if (isUnsafe(ch)) { resultStr.append('%'); resultStr.append(toHex(ch / 16)); resultStr.append(toHex(ch % 16)); } else { resultStr.append(ch); } } return resultStr.toString(); } private static char toHex(int ch) { return (char) (ch < 10 ? '0' + ch : 'A' + ch - 10); } private static boolean isUnsafe(char ch) { if (ch > 128 || ch < 0) { return true; } return "$&+,/:;=?@ \"#%{}|\\^~[]`'!_*".indexOf(ch) >= 0; } private final static char[] BASE64CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" .toCharArray(); private static int[] intChars = new int[128]; /** * Translates the specified byte array into Base64 string. * * @param inputBuffer byte array (not null) * @return the translated Base64 string (not null) */ public static String base64Encode(byte[] inputBuffer){ // Check if intChars array needs to be init'd if (intChars.length == 0) { for(int index=0; index < BASE64CHARS.length; index++){ intChars[BASE64CHARS[index]]= index; } } int bufferSize = inputBuffer.length; char[] charArray = new char[((bufferSize + 2) / 3) * 4]; int charIndex = 0; int inputIndex = 0; while(inputIndex < bufferSize){ byte byte0 = inputBuffer[inputIndex++]; byte byte1 = (inputIndex < bufferSize) ? inputBuffer[inputIndex++] : 0; byte byte2 = (inputIndex < bufferSize) ? inputBuffer[inputIndex++] : 0; int mask = 0x3F; charArray[charIndex++] = BASE64CHARS[(byte0 >> 2) & mask]; charArray[charIndex++] = BASE64CHARS[((byte0 > 4)) & mask]; charArray[charIndex++] = BASE64CHARS[((byte1 > 6)) & mask]; charArray[charIndex++] = BASE64CHARS[byte2 & mask]; } switch(bufferSize % 3){ case 1: charArray[--charIndex] = '='; case 2: charArray[--charIndex] = '='; } return new String(charArray); }That's all you need to send tweets to your Twitter app using Java SE Embedded. Easy-peazy! Next, we'll put it all together, so that your Raspberry Pi takes the Vernier Go!Temp temperature readings from your roasting bird, and sends out tweet updates, plus a tweet to tell the Twitterverse when your turkey is done. That's something delicious! :-)See the full series on the steps to this cool demo:Internet of Things (IoT) Thanksgiving Special: Turkey Tweeter (Part 1)Internet of Things (IoT) Thanksgiving Special: Turkey Tweeter (Part 2)Internet of Things (IoT) Thanksgiving Special: Turkey Tweeter (Part 3)Internet of Things (IoT) Thanksgiving Special: Turkey Tweeter (Part 4)Internet of Things (IoT) Thanksgiving Special: Turkey Tweeter (Part 5)Hinkmond

Now, on to the next step which is to write the Java SE Embedded code to automatically send an Internet of Things (IoT) tweet from your Raspberry Pi attached to your cooking turkey to a...

Java Embedded

Internet of Things (IoT) Thanksgiving Special: Turkey Tweeter (Part 3)

OK, sports fans. You've got your Vernier Go!Temp USB probe connected. It looks good with lsusb and you can see the /dev/ldusb0 device in your Raspberry Pi Linux shell.So, how do you write a Java SE Embedded app to read in the turkey temp values. Well, as with most things, you search the Web and you can find how it was done previously in other non-Java inferior programming languages. ;-) Here's a great example in Python on the finninday.net site.See:finniday.net Go!Teamp example in PythonIt shows the reverse engineered byte format of the data coming over USB from the Vernier Go!Temp probe. Booyah! That's what we need to write a Java SE Embedded app. And, here it is.../** * * @author hinkmond * Copyright © 2013 Oracle and/or its affiliates. All rights reserved. */public class TurkeyTweeter { /** * @param args the command line arguments */ public static void main(String args[]) { Date date; FileInputStream fis = null; DataInputStream dis = null; byte b[]; double tempavg, c, f; int samplecount=0, sequence=0, temp1=0, temp2=0, temp3=0; final double VERNIER_SCALING_FACTOR=126.74; final double VERNIER_CALIBRATION_OFFSET=5.4; b = new byte[8]; // Loop to keep reading temperature while (true) { int available; try { fis = new FileInputStream("/dev/ldusb0"); dis = new DataInputStream(fis); } catch (FileNotFoundException fnfe) { System.out.println("Cannot find temp sensor"); fnfe.printStackTrace(); System.exit(-1); } // Read 8 bytes from Vernier Go!Temp USB probe // Format: // Byte 0: Sample Count // Byte 1: Sequence Index // Byte 2-3: First temp sample // Byte 4-5: Second temp sample // Byte 6-7: Third temp sample try { if (dis != null) { available = dis.read(b, 0, 8); samplecount = b[0]; sequence = b[1]; temp1 = b[2] + b[3] * 256; temp2 = b[4] + b[5] * 256; temp3 = b[6] + b[7] * 256; } } catch (IOException ioe1) { System.out.println("Unable to get data from temp sensor"); ioe1.printStackTrace(); } tempavg = (temp1 + temp2 + temp3) / 3.0; c = tempavg / VERNIER_SCALING_FACTOR - VERNIER_CALIBRATION_OFFSET; // Convert from Fahrenheit to Celcius f = ((9.0/5.0) * c) + 32.0; double temperature = roundDouble(f); date = Calendar.getInstance().getTime(); Format formatter = new SimpleDateFormat("E MMM d kk:mm:ss"); String timedateString = formatter.format(date); System.out.println(timedateString+" "+temperature); try { if (dis != null) dis.close(); if (fis != null) fis.close(); } catch (IOException e) { e.printStackTrace(); } try { Thread.sleep(1000); } catch (InterruptedException ie) { ie.printStackTrace(); } } } public static double roundDouble(double value) { double result = value * 100; result = Math.round(result); result = result / 100; return(result); }}Compile using javac, lather, rinse, repeat. And, here's the output running on the RPi (NOTE: Remember, you must run as root to access the /dev/ldusb0 device):pi@raspberrypi ~ $ sudo java -jar TurkeyTweeter.jarThu Nov 21 16:42:59 71.59Thu Nov 21 16:43:00 72.39Thu Nov 21 16:43:01 72.39Thu Nov 21 16:43:02 72.39Thu Nov 21 16:43:03 72.39Thu Nov 21 16:43:04 72.39Thu Nov 21 16:43:05 72.39Thu Nov 21 16:43:06 72.39Thu Nov 21 16:43:07 72.39Thu Nov 21 16:43:08 72.39Thu Nov 21 16:43:09 72.39...As you can see, it's 72 degrees Fahrenheit in my office. The turkey won't be that temperature roasting in the oven on Thanksgiving, but we have now confirmed this part of the Turkey Tweeter works. Exciting, isn't it? :-) Next up, we will write the Java code to tweet out the values of our poor turkey as it cooks... (Yeah, poor turkey until it's inside my tummy. Then, it's yummy turkey!)See the full series on the steps to this cool demo:Internet of Things (IoT) Thanksgiving Special: Turkey Tweeter (Part 1)Internet of Things (IoT) Thanksgiving Special: Turkey Tweeter (Part 2)Internet of Things (IoT) Thanksgiving Special: Turkey Tweeter (Part 3)Internet of Things (IoT) Thanksgiving Special: Turkey Tweeter (Part 4)Internet of Things (IoT) Thanksgiving Special: Turkey Tweeter (Part 5)Hinkmond

OK, sports fans. You've got your Vernier Go!Temp USB probe connected. It looks good with lsusb and you can see the /dev/ldusb0 device in your Raspberry Pi Linux shell. So, how do you write a Java SE...

Java Embedded

Internet of Things (IoT) Thanksgiving Special: Turkey Tweeter (Part 2)

By now you should have received your Vernier Go!Temp USB Temperature Probe and it is getting really close now to Turkey Day, so you want kick your Internet of Things (IoT) Turkey Tweeter project into high gear now.First, we need to test the temperature probe before sticking it into unknown places, namely our delicious IoT bird on Thanksgiving. So, take your Go!Temp USB temperature probe and plug it into your Raspberry Pi device, just like in this photo.See:Connect Go!Temp ProbeIf all went well on your Raspberry Pi, you should be able to bring up a terminal shell connected to your RPi and type "lsusb" to verify that the Go!Temp probe is now connected.pi@raspberrypi ~ $ lsusbBus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hubBus 001 Device 002: ID 0424:9512 Standard Microsystems Corp.Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.Bus 001 Device 005: ID 08f7:0002 Vernier EasyTemp/Go!TempIf your output looks like above, especially the last line where it says the Vernier Go!Temp was recognized and is connected as Device 005, you are golden.One last check before we start to program using a Java SE Embedded app to grab the temperature readings is to make sure the /dev/ldusb0 device is present. So, type this command and make sure your output matches:pi@raspberrypi ~ $ ls -l /dev/ldusb0crw------T 1 root root 180, 176 Nov 18 17:25 /dev/ldusb0If all that looks good, you're ready for the next step which is to write a Java SE Embedded app to read the temperature values, and eventually write code with IoT intelligence to tweet out the status of your turkey while it's cooking so that it becomes an Internet of Things connected bird on Twitter. Look for that in the next part of this series... Mmmmm... I can almost smell that turkey roasting... :-)See the full series on the steps to this cool demo:Internet of Things (IoT) Thanksgiving Special: Turkey Tweeter (Part 1)Internet of Things (IoT) Thanksgiving Special: Turkey Tweeter (Part 2)Internet of Things (IoT) Thanksgiving Special: Turkey Tweeter (Part 3)Internet of Things (IoT) Thanksgiving Special: Turkey Tweeter (Part 4)Internet of Things (IoT) Thanksgiving Special: Turkey Tweeter (Part 5)Hinkmond

By now you should have received your Vernier Go!Temp USB Temperature Probe and it is getting really close now to Turkey Day, so you want kick your Internet of Things (IoT) Turkey Tweeter project into...

Java Embedded

Internet of Things (IoT) Thanksgiving Special: Turkey Tweeter (Part 1)

It's time for the Internet of Things (ioT) Thanksgiving Special. This time we are going to work on a special Do-It-Yourself project to create an Internet of Things temperature probe to connect your Turkey Day turkey to the Internet by writing a Thanksgiving Day Java Embedded app for your Raspberry Pi which will send out tweets as it cooks in your oven.If you're vegetarian, don't worry, you can follow along and just run the simulation of the Turkey Tweeter, or better yet, try a tofu version of the Turkey Tweeter.Here is the parts list: 1 Vernier Go!Temp USB Temperature Probe 1 Uncooked Turkey 1 Raspberry Pi (not Pumpkin Pie) 1 Roll thermal reflective tapeYou can buy the Vernier Go!Temp USB Temperature Probe for $39 from here: http://www.vernier.com/products/sensors/temperature-sensors/go-temp/. And, you can get the thermal reflective tape from any auto parts store. (Don't tell them what you need it for. Say it's for rebuilding your V-8 engine in your Dodge Hemi. Avoids the need for a long explanation and sounds cooler...) ;-)The uncooked turkey can be found in your neighborhood grocery store. But, if you're making a vegetarian Tofurkey, you're on your own... The Java Embedded app will be the same, though (Java is vegan). :-)So, grab all your parts and come back here for the next part of this project...See the full series on the steps to this cool demo:Internet of Things (IoT) Thanksgiving Special: Turkey Tweeter (Part 1)Internet of Things (IoT) Thanksgiving Special: Turkey Tweeter (Part 2)Internet of Things (IoT) Thanksgiving Special: Turkey Tweeter (Part 3)Internet of Things (IoT) Thanksgiving Special: Turkey Tweeter (Part 4)Internet of Things (IoT) Thanksgiving Special: Turkey Tweeter (Part 5)Hinkmond

It's time for the Internet of Things (ioT) Thanksgiving Special. This time we are going to work on a special Do-It-Yourself project to create an Internet of Things temperature probe to connect...

Java Embedded

Halloween: Season for Java Embedded Internet of Spooky Things (IoST) (Part 5)

So, here's the finished product. I have 8 networked Raspberry Pi devices strategically placed around our Oracle Santa Clara Building 21 office. I attached a JFET transistor based EMF sensor on each device to capture any strange fluctuations in the electromagnetic field (which supposedly, paranormal spirits can change as they pass by).And, I have have a Web app (embedded in this page) which can take the readings and show a graphical display in real-time. As you can see, all the Raspberry Pi devices are blinking away green, indicating they are all operational and all sensors are working correctly. But, I don't see anything... Darn...Maybe, I have to stare at the Web app for a while. I don't know when the "alleged" ghosts in our Oracle Santa Clara office are supposed to be active, but let me know if you see anything...Oh, and by the way, Happy Halloween from the Internet of Spooky Things! See the previous posts for the full series on the steps to this cool demo:Halloween: Season for Java Embedded Internet of Spooky Things (IoST) (Part 1)Halloween: Season for Java Embedded Internet of Spooky Things (IoST) (Part 2)Halloween: Season for Java Embedded Internet of Spooky Things (IoST) (Part 3)Halloween: Season for Java Embedded Internet of Spooky Things (IoST) (Part 4)Halloween: Season for Java Embedded Internet of Spooky Things (IoST) (Part 5)Hinkmond

So, here's the finished product. I have 8 networked Raspberry Pi devices strategically placed around our Oracle Santa Clara Building 21 office. I attached a JFET transistor based EMF sensor on...

Oracle

Integrated Cloud Applications & Platform Services