Skip to content

Instantly share code, notes, and snippets.

View alistairjevans's full-sized avatar

Alistair Evans alistairjevans

View GitHub Profile
@alistairjevans
alistairjevans / app.ino
Created May 26, 2019 09:23
Simple WiFi connection
#include <WiFiNINA.h>
#define NETSSID "MYNETWORK"
#define NETPASS "SECRETPASSWORD"
WiFiClient client;
void setup()
{
Serial.begin(9600);
@alistairjevans
alistairjevans / app.ino
Created May 26, 2019 09:33
Complete WiFi connection example
#include <WiFiNINA.h>
#define NETSSID "MYNETWORK"
#define NETPASS "SECRETPASSWORD"
#define TOTAL_WAIT_TIME 60000 // 1 minute
#define ATTEMPT_TIME 5000 // 5 seconds between attempts
WiFiClient client;
@alistairjevans
alistairjevans / DataController.cs
Created May 26, 2019 09:52
Simple data controller for taking incoming sensor data.
public class DataController : Controller
{
private readonly SampleWriter sampleWriter;
public DataController(SampleWriter sampleWriter)
{
this.sampleWriter = sampleWriter;
}
[HttpPost]
@alistairjevans
alistairjevans / app.ino
Last active May 27, 2019 10:37
Sending Data over HTTP
#define SERVER "MYSERVER"
#define SERVERPORT 5000
WiFiClient client;
void sendData(unsigned long timestamp, double speed)
{
// Host and port
if(client.connect(SERVER, SERVERPORT))
{
@alistairjevans
alistairjevans / app.ino
Last active May 27, 2019 10:01
Formatting a float into a string in arduino
// Arduino sprintf does not support floats or doubles.
sprintf(body, "milliseconds=%lu&speed=", timestamp);
// Use the dtostrf to append the speed.
dtostrf(speed, 2, 3, &body[strlen(body)]);
@alistairjevans
alistairjevans / app.ino
Created May 27, 2019 10:41
Sensor data keep-alives
void sendData(unsigned long timestamp, double speed)
{
char body[64];
int success = 1;
// If we're not connected, open the connection.
if(!client.connected())
{
success = client.connect(SERVER, SERVERPORT);
@alistairjevans
alistairjevans / app.ino
Created May 27, 2019 10:41
Sensor data keep-alives
void sendData(unsigned long timestamp, double speed)
{
char body[64];
int success = 1;
// If we're not connected, open the connection.
if(!client.connected())
{
success = client.connect(SERVER, SERVERPORT);
}
@alistairjevans
alistairjevans / app.ino
Created May 27, 2019 12:09
Sensor data buffered request
void sendData(unsigned long timestamp, double speed)
{
int success = 1;
char request[256];
char body[64];
if(!client.connected())
{
success = client.connect(server, 5000);
}
@alistairjevans
alistairjevans / BufferedMiddleware.cs
Created June 8, 2019 09:28
Buffered Middleware - allows responses to be read by the out-of-the-box arduino HTTP libraries
public class BufferMiddleware : IMiddleware
{
public async Task InvokeAsync(HttpContext context, RequestDelegate next)
{
var newContent = string.Empty;
var originalBody = context.Response.Body;
using (var newBody = new MemoryStream())
{
@alistairjevans
alistairjevans / Startup.cs
Created June 8, 2019 11:20
ConfigureServices.cs
public void ConfigureServices(IServiceCollection services)
{
// Define a writer that saves my data to disk
var folderPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),
"rower");
services.AddSingleton<ISampleWriter>(svc => new SampleWriter(folderPath, "samples"));
// Keep my machine state as a singleton
services.AddSingleton<IMachineState, MachineState>();