Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Turning over the plastic-shielded printed circuit board, and pulling out the battery pack gives us access to everything we need to proceed.

Step-by-step guide

Configuring the sensor to send its event:

...

  1. Enter the password for that network, and the pieces of the URL which the device will use to send its event. In this case, we were wanting the device to send a `sky/event` to a pico engine running on an EC2 host named "ec2-54-145-165-7.compute-1.amazonaws.com" but found that the device only retained the first 39 characters, so we set up a sub-domain to reach the same server using a shorter name as the hostname. The engine was listening on port 3000. The complete path for our experimental "sky/event" was set up as "/sky/event/ECI/EID/post/test", with "ECI" replaced with an actual event channel identifier of a pico running on that engine, and we used the digit "5" as an event identifier. Note that the leading slash is necessary in the path. With all the information provided, click the "save" button.
  2. The device responds with this acknowledgement page.
  3. Of course the pico identified by the ECI will need a ruleset to receive the event. This is the KRL code that we used initially. 

    Code Block
    linenumberstrue
    ruleset post_test {
      meta {
        shares __testing
      }
      global {
        __testing = { "queries": [ { "name": "__testing" } ],
                      "events": [ { "domain": "post", "type": "test",
                                  "attrs": [ "temp", "baro" ] } ] }
      }
    
      rule post_test {
        select when post test
        pre {
          never_used = event:attrs().klog("attrs")
        }
      }
    }
    
    

    The rule selected does nothing but log the event attributes. Notice that the ruleset shares a test harness which allows us to easily send a test event from the "Testing" tab of the "My Picos" page.

  4. We used the "Logging" tab to see what happens when the device sends an event. 
    Notice that several attributes are sent by the device. The first of these are "version", "eventDomain", "eventName", and "emitterGUID". The horizontal scrollbar indicates that there is much more. Capturing and re-formatting all of it, we see that the remaining attributes are named "genericThing", "specificThing", and "property". The following data structure is current as of 1/21/18.

    Code Block
    {
    	"emitterGUID":"5CCF7F2BD537",
    	"eventDomain":"wovyn.emitter",
    	"eventName":"sensorHeartbeat",
    	"genericThing":{
    		"typeId":"2.1.2",
    		"typeName":"generic.simple.temperature",
    		"healthPercent":56.89,
    		"heartbeatSeconds":10,
    		"data":{
    			"temperature":[
    				{
    					"name":"ambient temperature",
    					"transducerGUID":"28E3A5680900008D",
    					"units":"degrees",
    					"temperatureF":75.31,
    					"temperatureC":24.06
    				}
    			]
    		}
    	},
    	"property":{
    		"name":"Wovyn_2BD537",
    		"description":"Temp1000",
    		"location":{
    			"description":"Timbuktu",
    			"imageURL":"http://www.wovyn.com/assets/img/wovyn-logo-small.png",
    			"latitude":"16.77078",
    			"longitude":"-3.00819"
    		}
    	},
    	"specificThing":{
    		"make":"Wovyn ESProto",
    		"model":"Temp1000",
    		"typeId":"1.1.2.2.1000",
    		"typeName":"enterprise.wovyn.esproto.wtemp.1000",
    		"thingGUID":"5CCF7F2BD537.1",
    		"firmwareVersion":"Wovyn-WTEMP1000-1.14",
    		"transducer":[
    			{
    				"name":"Maxim DS18B20 Digital Thermometer",
    				"transducerGUID":"28E3A5680900008D",
    				"transducerType":"Maxim Integrated.DS18B20",
    				"units":"degrees",
    				"temperatureC":24.06
    			}
    		],
    		"battery":{
    			"maximumVoltage":3.6,
    			"minimumVoltage":2.7,
    			"currentVoltage":3.21
    		}
    	},
    	"version":2
    }
    
    


  5. We also tried out the "Reset" option, which apparently forgets only the WiFi hotspot the device uses to send its heartbeat events, but retains the endpoint information.

  6. Finally, the "Info" button presents some internal information.



Info

Filter by label (Content by label)
showLabelsfalse
max5
spacesdocs
showSpacefalse
sortmodified
reversetrue
typepage
cqllabel in ("esproto","iot") and type = "page" and space = "docs"
labelsESProto IoT

...