Created
June 28, 2013 07:17
-
-
Save industrialinternet/5883019 to your computer and use it in GitHub Desktop.
Offline/Online
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// AGENT | |
server.log("Monitor MK2 Agent - release 3 v1.1 - Boot"); | |
// Holds imp config & status data | |
impObj <-{ | |
"sid": 42, | |
"lid": 50, | |
"t": "", | |
"tEng": "C", | |
"rh": "", | |
"rhEng": "%", | |
"rssi": "", | |
"vdd": "", | |
"bssid": "", | |
"mac": "", | |
"timestamp": "" | |
} | |
// Message obj to SS v2 service | |
msgOjb <- { | |
"msgType": "", | |
"dPID": "", | |
"value": 0, | |
"timestamp": "", | |
"msg": "", | |
"dType": "", | |
"rssi": 0, | |
"vdd": 0, | |
"t": 0.0, | |
"rh": 0.0, | |
"errors": null | |
}; | |
// Monitor events | |
device.on("monitorEvent",function(ms){ | |
// .52|6|"+getDateTime()+"|Activity|Msg|"+imp.rssi()+"|"+hardware.voltage(); | |
server.log("agent: monitor:"+ms.type+"|"+ms.ts+"|"+ms.rssi+"|"+ms.vdd); | |
if (ms.type==1){ | |
msgOjb.msgType="s"; | |
msgOjb.dPID = impObj.sid+"."+(impObj.lid+1)+"."+1; | |
msgOjb.value = 4; | |
msgOjb.msg="Movement"; | |
msgOjb.dType="Msg"; | |
} else { | |
msgOjb.msgType="s"; | |
msgOjb.dPID = impObj.sid+"."+(impObj.lid+2)+"."+1; | |
msgOjb.value = 4; | |
msgOjb.msg="Activity"; | |
msgOjb.dType="Msg"; | |
} | |
msgOjb.timestamp = ms.ts; | |
msgOjb.rssi= ms.rssi; | |
msgOjb.vdd= ms.vdd; | |
local body = http.jsonencode(msgOjb); | |
local req = http.post("http://requestb.in/ofxbelof", {"Content-Type": "application/json"}, body); | |
local res = req.sendsync(); | |
server.log("post responce: "+res.statuscode+":"+res.body); | |
}); | |
//IMP | |
//Monitor Mk2 Release 3 - disconect testing | |
const ON=1; | |
dlT <-1; | |
function getDateTime(){ | |
local _iTime = date(time()).year + "-" + (date(time()).month+1) + "-" + date(time()).day + "T" + (date(time()).hour+dlT) + ":" + date(time()).min+ ":" + date(time()).sec; | |
return _iTime; | |
} | |
// Array that holds the state of each pin | |
pinState <- [ 0, 0, 0, 0, 0, 0]; | |
// Pins array channel 1 is channelPin[0] in array | |
local Pins = [ hardware.pin1, hardware.pin2, hardware.pin5, hardware.pin7, hardware.pin8, hardware.pin9 ]; | |
// Register imp | |
imp.configure("Monitor MK2 imp release 3 v1.0",[],[]); | |
server.log("Monitor MK2 imp - release 3 v1.0 - Boot"); | |
// Event handler for state changes | |
function pinEvent() | |
{ | |
// Idle for 50ms to allow switch to settle | |
imp.sleep(0.250); | |
// Read each switch | |
for(local _pin=0; _pin<2; _pin++) | |
{ | |
// Get switch state | |
local state = Pins[_pin].read(); | |
// State changed? | |
if(state != pinState[_pin]) | |
{ | |
// Update pin sate | |
pinState[_pin] = state; | |
} | |
if(state == 1) { //2 //6 | |
agent.send("monitorEvent",{type=1,ts=getDateTime(),rssi=imp.rssi(),vdd=hardware.voltage()}); | |
} | |
} | |
} | |
// Configure input pins with internal pull-up | |
Pins[0].configure(DIGITAL_IN, pinEvent); | |
Pins[1].configure(DIGITAL_IN, pinEvent); | |
server.log(imp.getsoftwareversion()); | |
server.log("rssi"+imp.rssi()); | |
server.setsendtimeoutpolicy(RETURN_ON_ERROR, WAIT_FOR_ACK, 30); | |
disconnectReason <- ""; | |
constate <- ""; | |
function getDisconnectReason(reason) | |
{ | |
if (reason == NO_WIFI) { | |
Pins[0].write(ON); | |
return "Wifi went away - rssi: "+imp.rssi(); | |
} | |
if (reason == NO_IP_ADDRESS) { | |
return "Failed to get IP address - rssi: "+imp.rssi(); | |
Pins[1].write(ON); | |
} | |
if (reason == NO_SERVER) { | |
return "Failed to connect to server - rssi: "+imp.rssi(); | |
Pins[2].write(ON); | |
} | |
if (reason == NOT_RESOLVED) { | |
return "Failed to resolve server - rssi: "+imp.rssi(); | |
Pins[3].write(ON); | |
} | |
return ""; | |
} | |
function onConnected(status){ | |
if (status == SERVER_CONNECTED) { | |
server.log("Reconnected after unexpected disconnect " + disconnectReason); | |
} | |
} | |
function tryToConnect(){ | |
if (!server.isconnected()) { | |
server.connect(onConnected, 30); | |
imp.wakeup(120, tryToConnect); | |
} | |
} | |
function onUnexpectedDisconnect(status){ | |
disconnectReason = getDisconnectReason(status); | |
imp.wakeup(120, tryToConnect); | |
} | |
server.onunexpecteddisconnect(onUnexpectedDisconnect); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment