IO-Connect-Example/IO Connect Example/ViewController.swift
TrevKnows 482870e3bb A-OK
2017-07-27 10:49:01 -04:00

90 lines
2.6 KiB
Swift

//
// ViewController.swift
// IO Connect Example
//
// Created by Trevor Beaton on 7/24/17.
// Copyright © 2017 Vanguard Logic LLC. All rights reserved.
//
import UIKit
import CoreMotion
class ViewController: UIViewController {
var motionManager = CMMotionManager()
override func viewDidLoad() {
super.viewDidLoad()
startAccelerometerX()
}
@IBOutlet weak var accelTagX: UILabel!
@IBOutlet weak var accelSwitch: UISwitch!
@IBAction func stateChange(_ sender: UISwitch) {
if (sender.isOn == true){
startAccelerometerX()
}else {
stopAccelerometerX()
}
}
func startAccelerometerX () {
print("Start Acceleromter Updates")
motionManager.accelerometerUpdateInterval = 2.5
motionManager.startAccelerometerUpdates(to: OperationQueue.current!, withHandler: {
(accelerData:CMAccelerometerData?, error: Error?) in
if (error != nil ) {
print("Error")
} else {
let accelX = accelerData?.acceleration.x
self.accelTagX.text = String(format: "%.02f", accelX!)
self.postAccelerometerDataX()
print("Accelerometer X: \(accelX!)")
}
})
}
func stopAccelerometerX () {
self.motionManager.stopAccelerometerUpdates()
self.accelTagX.text = "--"
print("Accelerometer X Stopped")
}
func postAccelerometerDataX() {
let parameters = ["value": "\(String(format: "%.02f", (motionManager.accelerometerData?.acceleration.x)!))"]
guard let url = URL(string: "https://io.adafruit.com/api/feeds/Your-Feed-Key-Here/data.json?X-AIO-Key=Your-AIO-Key-Here") else { return }
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
guard let httpBody = try? JSONSerialization.data(withJSONObject: parameters, options: []) else { return }
request.httpBody = httpBody
let session = URLSession.shared
session.dataTask(with: request) { (data, response, error) in
if let response = response {
print(response)
}
if let data = data {
do {
let json = try JSONSerialization.jsonObject(with: data, options: [])
print(json)
} catch {
print(error)
}
}
}.resume()
}
}