90 lines
2.6 KiB
Swift
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()
|
|
}
|
|
|
|
|
|
}
|
|
|