├── .deployment ├── .gitattributes ├── .gitignore ├── .gitmodules ├── Azure ├── ARMTemplate │ ├── CustomizeTemplate.md │ ├── Readme.md │ ├── azuredeploy.json │ └── images │ │ ├── AzureDeploy1.png │ │ ├── AzureDeploy2.png │ │ ├── AzureDeploy3.png │ │ ├── Resources.png │ │ └── snip_20160623095544.png ├── EHConsole │ ├── EHConsole.sln │ ├── EHConsole │ │ ├── App.config │ │ ├── Microsoft.ConnectTheDots.EHConsole.csproj │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ └── packages.config │ └── nuget.config ├── MachineLearning │ ├── MachineLearningCloudService.md │ ├── SQL │ │ ├── SQL.sqlproj │ │ ├── StoredProcedures │ │ │ └── InsertAlertsData.sql │ │ ├── TableType │ │ │ └── AlertsDataTableType.sql │ │ └── Tables │ │ │ └── AlertsData.sql │ ├── WorkerHost.sln │ ├── WorkerHost │ │ ├── Analyzer.cs │ │ ├── AnomalyRecord.cs │ │ ├── App.config │ │ ├── CircularBuffer.cs │ │ ├── Data.Outputs │ │ │ ├── BlobWriter.cs │ │ │ ├── SQLOutputRepository.cs │ │ │ └── Utils │ │ │ │ └── SqlDBReaderSafeParser.cs │ │ ├── EventHubReader.cs │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ ├── SensorDataContract.cs │ │ ├── WorkerHost.csproj │ │ └── packages.config │ └── WorkerRole │ │ ├── ServiceConfiguration.Cloud.cscfg │ │ ├── ServiceConfiguration.Local.cscfg │ │ ├── ServiceDefinition.csdef │ │ ├── WorkerHostContent │ │ └── diagnostics.wadcfgx │ │ └── WorkerRole.ccproj ├── PowerBI │ └── PBI_setup.md ├── StreamAnalyticsQueries │ ├── Aggregates.sql │ ├── Alert.sql │ ├── HumidityAlert.sql │ ├── LightSensor.sql │ ├── SA_setup.md │ └── cg4pbi.sql └── WebSite │ ├── ASAAlertsChart.jpg │ ├── AlertsTable.jpg │ ├── WebsiteDetails.md │ ├── WebsitePublish.md │ ├── WebsiteRunning.jpg │ ├── portalsettings.png │ ├── site │ ├── Default.aspx │ ├── Docs │ │ └── license.txt │ ├── Global.asax │ ├── Web.config │ ├── bin │ │ ├── ConnectTheDotsWebSite.dll │ │ ├── Microsoft.Azure.Amqp.dll │ │ ├── Microsoft.Azure.Devices.dll │ │ ├── Microsoft.Azure.KeyVault.Core.dll │ │ ├── Microsoft.Data.Edm.dll │ │ ├── Microsoft.Data.OData.dll │ │ ├── Microsoft.Data.Services.Client.dll │ │ ├── Microsoft.ServiceBus.Messaging.EventProcessorHost.dll │ │ ├── Microsoft.ServiceBus.dll │ │ ├── Microsoft.WebSockets.dll │ │ ├── Microsoft.WindowsAzure.Configuration.dll │ │ ├── Microsoft.WindowsAzure.Storage.dll │ │ ├── Mono.Security.dll │ │ ├── Newtonsoft.Json.dll │ │ ├── PCLCrypto.dll │ │ ├── PInvoke.BCrypt.dll │ │ ├── PInvoke.Kernel32.dll │ │ ├── PInvoke.NCrypt.dll │ │ ├── PInvoke.Windows.Core.dll │ │ ├── System.Net.Http.Formatting.dll │ │ ├── System.Spatial.dll │ │ ├── System.Web.Http.WebHost.dll │ │ ├── System.Web.Http.dll │ │ ├── Validation.dll │ │ ├── de │ │ │ ├── Microsoft.Data.Edm.resources.dll │ │ │ ├── Microsoft.Data.OData.resources.dll │ │ │ ├── Microsoft.Data.Services.Client.resources.dll │ │ │ └── System.Spatial.resources.dll │ │ ├── es │ │ │ ├── Microsoft.Data.Edm.resources.dll │ │ │ ├── Microsoft.Data.OData.resources.dll │ │ │ ├── Microsoft.Data.Services.Client.resources.dll │ │ │ └── System.Spatial.resources.dll │ │ ├── fr │ │ │ ├── Microsoft.Data.Edm.resources.dll │ │ │ ├── Microsoft.Data.OData.resources.dll │ │ │ ├── Microsoft.Data.Services.Client.resources.dll │ │ │ └── System.Spatial.resources.dll │ │ ├── it │ │ │ ├── Microsoft.Data.Edm.resources.dll │ │ │ ├── Microsoft.Data.OData.resources.dll │ │ │ ├── Microsoft.Data.Services.Client.resources.dll │ │ │ └── System.Spatial.resources.dll │ │ ├── ja │ │ │ ├── Microsoft.Data.Edm.resources.dll │ │ │ ├── Microsoft.Data.OData.resources.dll │ │ │ ├── Microsoft.Data.Services.Client.resources.dll │ │ │ └── System.Spatial.resources.dll │ │ ├── ko │ │ │ ├── Microsoft.Data.Edm.resources.dll │ │ │ ├── Microsoft.Data.OData.resources.dll │ │ │ ├── Microsoft.Data.Services.Client.resources.dll │ │ │ └── System.Spatial.resources.dll │ │ ├── ru │ │ │ ├── Microsoft.Data.Edm.resources.dll │ │ │ ├── Microsoft.Data.OData.resources.dll │ │ │ ├── Microsoft.Data.Services.Client.resources.dll │ │ │ └── System.Spatial.resources.dll │ │ ├── zh-Hans │ │ │ ├── Microsoft.Data.Edm.resources.dll │ │ │ ├── Microsoft.Data.OData.resources.dll │ │ │ ├── Microsoft.Data.Services.Client.resources.dll │ │ │ └── System.Spatial.resources.dll │ │ └── zh-Hant │ │ │ ├── Microsoft.Data.Edm.resources.dll │ │ │ ├── Microsoft.Data.OData.resources.dll │ │ │ ├── Microsoft.Data.Services.Client.resources.dll │ │ │ └── System.Spatial.resources.dll │ ├── css │ │ └── connectthedots.css │ ├── img │ │ ├── ConnectTheDotsLogo.png │ │ ├── ajax-loader.gif │ │ └── forkme_CTD.png │ ├── js │ │ ├── d3CTD.js │ │ ├── d3CTDDataSourceFilter.js │ │ ├── d3CTDDataSourceSocket.js │ │ ├── d3Chart.js │ │ ├── d3ChartControl.js │ │ ├── d3DataFlow.js │ │ ├── d3DataSourceSocket.js │ │ ├── d3utils.js │ │ ├── devicesList.js │ │ ├── jquery.ui-contextmenu.js │ │ └── qrcode.js │ └── packages.config │ └── source │ ├── ConnectTheDotsWebSite.sln │ └── ConnectTheDotsWebSite │ ├── ConnectTheDotsWebSite.csproj │ ├── Default.aspx │ ├── Default.aspx.cs │ ├── Default.aspx.designer.cs │ ├── Docs │ └── license.txt │ ├── Global.asax │ ├── Global.asax.cs │ ├── Helpers │ ├── BlobHelper.cs │ └── IoTHubHelper.cs │ ├── Properties │ ├── AssemblyInfo.cs │ └── PublishProfiles │ │ └── LocalDeploy.pubxml │ ├── SensorInventory.cs │ ├── Web.Debug.config │ ├── Web.PublishTemplate.config │ ├── Web.Release.config │ ├── Web.config │ ├── WebSocketEventProcessor.cs │ ├── WebSocketHandler.cs │ ├── css │ └── connectthedots.css │ ├── img │ ├── ConnectTheDotsLogo.png │ ├── ajax-loader.gif │ └── forkme_CTD.png │ ├── js │ ├── d3CTD.js │ ├── d3CTDDataSourceFilter.js │ ├── d3CTDDataSourceSocket.js │ ├── d3Chart.js │ ├── d3ChartControl.js │ ├── d3DataFlow.js │ ├── d3DataSourceSocket.js │ ├── d3utils.js │ ├── devicesList.js │ ├── jquery.ui-contextmenu.js │ └── qrcode.js │ └── packages.config ├── Contribute.md ├── Devices ├── DirectlyConnectedDevices │ ├── Common │ │ ├── csharp │ │ │ └── ConnectTheDotsHelper.cs │ │ └── javascript │ │ │ ├── connectthedots.js │ │ │ ├── package.json │ │ │ └── readme.md │ ├── ESP8266 │ │ ├── ESP8266_setup.md │ │ ├── connect_the_dots │ │ │ ├── connect_the_dots.cpp │ │ │ ├── connect_the_dots.h │ │ │ └── connect_the_dots.ino │ │ └── images │ │ │ └── huzzah_connect_the_dots.png │ ├── NodeJS │ │ ├── BeagleBoneBlack │ │ │ ├── BeagleBone_Black_setup.md │ │ │ ├── Hardware.md │ │ │ ├── beagleboneblackctd.js │ │ │ ├── package.json │ │ │ └── settings.json │ │ ├── Desktop │ │ │ ├── Desktop_setup.md │ │ │ ├── desktop.js │ │ │ ├── package.json │ │ │ └── settings.json │ │ ├── IntelEdisonGrove │ │ │ ├── Hardware.md │ │ │ ├── Intel_Edison_setup.md │ │ │ ├── inteledisonctd.js │ │ │ ├── package.json │ │ │ └── settings.json │ │ ├── IntelEdisonSensorTag │ │ │ ├── Hardware.md │ │ │ ├── Intel_Edison_setup.md │ │ │ ├── inteledisonsensortagctd.js │ │ │ ├── lib │ │ │ │ ├── cc2540.js │ │ │ │ ├── cc2650.js │ │ │ │ ├── common.js │ │ │ │ └── sensortag.js │ │ │ ├── package.json │ │ │ └── settings.json │ │ ├── IntelEdisonXadow │ │ │ ├── Hardware.md │ │ │ ├── Intel_Edison_setup.md │ │ │ ├── inteledisonctd.js │ │ │ ├── package.json │ │ │ └── settings.json │ │ ├── SensorTag │ │ │ ├── Setup.md │ │ │ ├── index.js │ │ │ ├── package.json │ │ │ ├── sensorWorker.js │ │ │ └── settings.json │ │ └── Tessel2 │ │ │ ├── Hardware.md │ │ │ ├── Tessel2_setup.md │ │ │ ├── package.json │ │ │ ├── settings.json │ │ │ └── tessel2ctd.js │ ├── UWPMSBand │ │ ├── UWPMSBand.sln │ │ └── UWPMSBand │ │ │ ├── App.xaml │ │ │ ├── App.xaml.cs │ │ │ ├── Assets │ │ │ ├── CTD-logo-300x300.png │ │ │ ├── CTD-logo-50x50.png │ │ │ ├── CTD-logo-620x300.png │ │ │ ├── CTD-logo-743x360.png │ │ │ ├── CTD-logo-88x88.png │ │ │ ├── LockScreenLogo.scale-200.png │ │ │ ├── SpalshScreen-1152x1920.png │ │ │ ├── SpalshScreen-1240x600.png │ │ │ ├── SplashScreen.scale-200.png │ │ │ ├── Square150x150Logo.scale-200.png │ │ │ ├── Square44x44Logo.scale-200.png │ │ │ ├── Square44x44Logo.targetsize-24_altform-unplated.png │ │ │ ├── StoreLogo.png │ │ │ └── Wide310x150Logo.scale-200.png │ │ │ ├── MainPage.xaml │ │ │ ├── MainPage.xaml.cs │ │ │ ├── Package.appxmanifest │ │ │ ├── Properties │ │ │ ├── AssemblyInfo.cs │ │ │ └── Default.rd.xml │ │ │ ├── UWPMSBand.csproj │ │ │ ├── UWPMSBand_TemporaryKey.pfx │ │ │ ├── project.json │ │ │ └── project.lock.json │ ├── UWPSimulatedSensors │ │ ├── UWPSimulatedSensors.sln │ │ └── UWPSimulatedSensors │ │ │ ├── App.xaml │ │ │ ├── App.xaml.cs │ │ │ ├── ApplicationInsights.config │ │ │ ├── Assets │ │ │ ├── CTD-logo-300x300.png │ │ │ ├── CTD-logo-50x50.png │ │ │ ├── CTD-logo-620x300.png │ │ │ ├── CTD-logo-743x360.png │ │ │ ├── CTD-logo-88x88.png │ │ │ ├── LockScreenLogo.scale-200.png │ │ │ ├── SpalshScreen-1152x1920.png │ │ │ ├── SpalshScreen-1240x600.png │ │ │ ├── SplashScreen.scale-200.png │ │ │ ├── Square150x150Logo.scale-200.png │ │ │ ├── Square44x44Logo.scale-200.png │ │ │ ├── Square44x44Logo.targetsize-24_altform-unplated.png │ │ │ ├── StoreLogo.png │ │ │ └── Wide310x150Logo.scale-200.png │ │ │ ├── MainPage.xaml │ │ │ ├── MainPage.xaml.cs │ │ │ ├── Package.appxmanifest │ │ │ ├── Properties │ │ │ ├── AssemblyInfo.cs │ │ │ └── Default.rd.xml │ │ │ ├── UWPSimulatedSensors.csproj │ │ │ ├── UWPSimulatedSensors_TemporaryKey.pfx │ │ │ ├── project.json │ │ │ └── project.lock.json │ └── XamarinSimulatedSensors │ │ ├── XamarinSimulatedSensors.sln │ │ └── XamarinSimulatedSensors │ │ ├── XamarinSimulatedSensors.Droid │ │ ├── Assets │ │ │ └── AboutAssets.txt │ │ ├── Helpers │ │ │ └── Settings.cs │ │ ├── MainActivity.cs │ │ ├── Properties │ │ │ ├── AndroidManifest.xml │ │ │ └── AssemblyInfo.cs │ │ ├── Resources │ │ │ ├── AboutResources.txt │ │ │ ├── Resource.designer.cs │ │ │ ├── drawable-hdpi │ │ │ │ └── Icon.png │ │ │ ├── drawable-mdpi │ │ │ │ └── Icon.png │ │ │ ├── drawable-xhdpi │ │ │ │ └── Icon.png │ │ │ ├── drawable-xxhdpi │ │ │ │ └── Icon.png │ │ │ ├── drawable-xxxhdpi │ │ │ │ └── Icon.png │ │ │ ├── drawable │ │ │ │ └── CTDLogoMedium.png │ │ │ ├── layout │ │ │ │ └── Main.axml │ │ │ └── values │ │ │ │ └── Strings.xml │ │ ├── XamarinSimulatedSensors.Droid.csproj │ │ ├── app.config │ │ └── packages.config │ │ ├── XamarinSimulatedSensors.Windows │ │ ├── App.config │ │ ├── Form1.Designer.cs │ │ ├── Form1.cs │ │ ├── Form1.resx │ │ ├── Helpers │ │ │ └── Settings.cs │ │ ├── Program.cs │ │ ├── Properties │ │ │ ├── AssemblyInfo.cs │ │ │ ├── Resources.Designer.cs │ │ │ ├── Resources.resx │ │ │ ├── Settings.Designer.cs │ │ │ └── Settings.settings │ │ ├── Resources │ │ │ └── CTDLogoMedium.png │ │ ├── XamarinSimulatedSensors.Windows.csproj │ │ └── packages.config │ │ ├── XamarinSimulatedSensors.iOS │ │ ├── AppDelegate.cs │ │ ├── CTDLogoMedium.png │ │ ├── Entitlements.plist │ │ ├── Helpers │ │ │ └── Settings.cs │ │ ├── Info.plist │ │ ├── Main.cs │ │ ├── Main.storyboard │ │ ├── Resources │ │ │ ├── ITunesArtwork │ │ │ ├── ITunesArtwork@2x │ │ │ ├── Images.xcassets │ │ │ │ ├── AppIcons.appiconset │ │ │ │ │ ├── Contents.json │ │ │ │ │ ├── Icon-60@2x.png │ │ │ │ │ ├── Icon-60@3x.png │ │ │ │ │ ├── Icon-76.png │ │ │ │ │ ├── Icon-76@2x.png │ │ │ │ │ ├── Icon-Small-40.png │ │ │ │ │ ├── Icon-Small-40@2x.png │ │ │ │ │ ├── Icon-Small-40@3x.png │ │ │ │ │ ├── Icon-Small.png │ │ │ │ │ ├── Icon-Small@2x.png │ │ │ │ │ └── Icon-Small@3x.png │ │ │ │ ├── Images.imageset │ │ │ │ │ ├── CTDLogoMedium.png │ │ │ │ │ └── Contents.json │ │ │ │ └── LaunchImage.launchimage │ │ │ │ │ ├── Contents.json │ │ │ │ │ ├── Default-568h@2x.png │ │ │ │ │ ├── Default-Portrait.png │ │ │ │ │ ├── Default-Portrait@2x.png │ │ │ │ │ ├── Default.png │ │ │ │ │ └── Default@2x.png │ │ │ └── LaunchScreen.storyboard │ │ ├── ViewController.cs │ │ ├── ViewController.designer.cs │ │ ├── XamarinSimulatedSensors.iOS.csproj │ │ ├── app.config │ │ └── packages.config │ │ └── XamarinSimulatedSensors │ │ ├── Helpers │ │ └── Settings.cs │ │ ├── MyClass.cs │ │ ├── Properties │ │ └── AssemblyInfo.cs │ │ ├── XamarinSimulatedSensors.csproj │ │ ├── app.config │ │ └── packages.config ├── GatewayConnectedDevices │ ├── Arduino DUE │ │ └── Temperature │ │ │ └── DS18B20 │ │ │ ├── DS18B20.ino │ │ │ └── Libraries.md │ ├── Arduino UNO │ │ ├── Accelerometer │ │ │ └── Memsic2125Json │ │ │ │ ├── Libraries.md │ │ │ │ └── Memsic2125Json.ino │ │ ├── AnalogReadSerial │ │ │ └── AnalogReadSerial.ino │ │ ├── Combo_accelerometer_and_temperature │ │ │ └── Memsic2125_plus_DS18B20 │ │ │ │ ├── Libraries.md │ │ │ │ └── Memsic2125_plus_DS18B20.ino │ │ ├── Sound │ │ │ └── SimpleSoundSensor │ │ │ │ └── SimpleSoundSensor.ino │ │ ├── Temperature │ │ │ └── DS18B20 │ │ │ │ ├── DS18B20.ino │ │ │ │ └── Libraries.md │ │ └── Weather │ │ │ └── WeatherShieldJson │ │ │ ├── Arduino-and-Weather-Shield-setup.md │ │ │ ├── ArduinoCOMCapture.jpg │ │ │ ├── ArduinoWeatherShield.jpg │ │ │ ├── Hardware.md │ │ │ ├── Libraries.md │ │ │ ├── PiAndArduinoPhoto.jpg │ │ │ ├── SCPRPI.cmd │ │ │ └── WeatherShieldJson.ino │ ├── Arduino Zero │ │ └── Weather │ │ │ └── SeeedGroveJson │ │ │ ├── ArduinoCOMCapture.jpg │ │ │ ├── ArduinoGroveShield.jpg │ │ │ ├── SeeedGroveJson.ino │ │ │ └── readme.md │ ├── BLEMoisture │ │ ├── BLEMoistureSensor.py │ │ ├── DeviceConfig.csv │ │ ├── RedBear_BLE_nano │ │ │ ├── Configure.md │ │ │ └── main.cpp │ │ ├── SensorAgent.py │ │ ├── SensorAgentConfig.csv │ │ ├── autorun2.sh │ │ ├── configuration.md │ │ └── deploy_next.cmd │ ├── BluetoothUARTExample │ │ ├── BluetoothUARTExample.py │ │ ├── SetupSerialBaudRate.py │ │ ├── UartSetup.pdf │ │ └── readme │ ├── BtUSB_2_BtUART_Example │ │ ├── ArduinoSensorMock │ │ │ └── ArduinoSensorMock.ino │ │ ├── BluetoothSetup.pdf │ │ ├── BtUSB_2_BtUART_Example.py │ │ ├── TestServer.py │ │ └── readme │ ├── Hydrology │ │ ├── DO2Sensor.py │ │ ├── Documentation │ │ │ ├── Breadboard.png │ │ │ ├── DeviceSetup.md │ │ │ └── Schematic.pdf │ │ ├── ECSensor.py │ │ ├── MoistureSensor.py │ │ ├── SensorAgent.py │ │ ├── autorun2.sh │ │ └── deploy_next.cmd │ └── WensnSoundLevelMeter │ │ └── WensnPiVS01 │ │ ├── WensnPiVS01.py │ │ ├── autorun2.sh │ │ └── deploy_next.cmd ├── Gateways │ └── GatewayService │ │ ├── AdafruitCableDriverInstall.png │ │ ├── AdafruitUSBSerialCable.png │ │ ├── Common │ │ ├── Adapter │ │ │ └── SensorEndpoint.cs │ │ ├── ILogger.cs │ │ ├── IPAddressHelper.cs │ │ ├── Logger │ │ │ ├── NLogEventLogger.cs │ │ │ ├── SafeLogger.cs │ │ │ └── TunableLogger.cs │ │ ├── Microsoft.ConnectTheDots.Common.csproj │ │ ├── Platform.cs │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ ├── SafeAction.cs │ │ ├── SafeFunction.cs │ │ ├── Threading │ │ │ └── TaskWrapper.cs │ │ ├── Utils │ │ │ └── Loader.cs │ │ └── packages.config │ │ ├── DeviceAdapters │ │ ├── Bluetooth │ │ │ ├── BluetoothUARTAdapter.cs │ │ │ ├── BluetoothUARTAdapter.csproj │ │ │ └── Properties │ │ │ │ └── AssemblyInfo.cs │ │ ├── SerialPort │ │ │ ├── Properties │ │ │ │ └── AssemblyInfo.cs │ │ │ ├── SerialPortAdapter.cs │ │ │ └── SerialPortAdapter.csproj │ │ └── Socket │ │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ │ ├── SocketAdapter.cs │ │ │ └── SocketAdapter.csproj │ │ ├── DeviceManagerUSBSerial.png │ │ ├── Gateway │ │ ├── Adapter │ │ │ ├── DeviceAdapter.cs │ │ │ └── IDeviceAdapter.cs │ │ ├── App.config │ │ ├── Constants.cs │ │ ├── DeviceAdapter │ │ │ ├── DeviceAdapter.cs │ │ │ ├── IDeviceAdapter.cs │ │ │ └── SensorEndpoint.cs │ │ ├── EventProcessor.cs │ │ ├── GatewayService.cs │ │ ├── GatewayService.csproj │ │ ├── IGatewayService.cs │ │ ├── Microsoft.ConnectTheDots.Gateway.csproj │ │ ├── Models │ │ │ ├── QueuedItem.cs │ │ │ └── SensorDataContract.cs │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ ├── ServiceInstantiation │ │ │ ├── IService.cs │ │ │ ├── ServiceBehavior.cs │ │ │ └── ServiceInstanceProvider.cs │ │ ├── Utils │ │ │ ├── Loader │ │ │ │ └── DataIntakeLoader.cs │ │ │ ├── MessageSender │ │ │ │ ├── IMessageSender.cs │ │ │ │ └── MessageSender.cs │ │ │ ├── OperationStatus │ │ │ │ ├── ErrorCode.cs │ │ │ │ ├── OperationStatus.cs │ │ │ │ └── OperationStatusFactory.cs │ │ │ └── Queue │ │ │ │ ├── BatchSenderThread.cs │ │ │ │ ├── GatewayQueue.cs │ │ │ │ └── IAsyncQueue.cs │ │ └── packages.config │ │ ├── GatewayService.sln │ │ ├── Hardware.md │ │ ├── NanoNetworkInterfaces.png │ │ ├── NanoWPAConfig.png │ │ ├── PISerialDebugConnection.png │ │ ├── PISerialPinout.png │ │ ├── PiBoard.png │ │ ├── RaspberryPi-Gateway-setup.md │ │ ├── Scripts │ │ ├── RaspberryPi │ │ │ ├── GetLogFile.cmd │ │ │ ├── Modified │ │ │ │ ├── autorun_install.sh │ │ │ │ ├── certificate_update.sh │ │ │ │ ├── deploy_and_start_ctd_on_boot.sh │ │ │ │ └── kill_all.sh │ │ │ ├── autorunUart2UsbBt.sh │ │ │ ├── autorunUartBT.sh │ │ │ ├── autorunWensnSoundSensor.sh │ │ │ ├── autorun_install.sh │ │ │ ├── certificate_update.sh │ │ │ ├── deploy.cmd │ │ │ ├── deploy_and_start_ctd_on_boot.sh │ │ │ ├── deploy_next.cmd │ │ │ ├── kill_all.sh │ │ │ ├── setupWifi.py │ │ │ └── setup_autostart.sh │ │ └── ScriptConverter │ │ │ ├── App.config │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ │ └── ScriptConverter.csproj │ │ ├── ServiceMonitor │ │ ├── App.config │ │ ├── IMonitor.cs │ │ ├── Microsoft.ConnectTheDots.ServiceMonitor.csproj │ │ ├── Monitor.cs │ │ ├── MonitorProgram.cs │ │ ├── NLog.config │ │ ├── NLog.xsd │ │ ├── ProcessMonitor.cs │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ ├── ServiceMonitor.cs │ │ ├── Utils │ │ │ └── Logger │ │ │ │ └── Logger.cs │ │ └── packages.config │ │ ├── Setup │ │ ├── WindowsExeSetup │ │ │ ├── Product.wxs │ │ │ └── WindowsExeSetup.wixproj │ │ └── WindowsServiceSetup │ │ │ ├── Product.wxs │ │ │ └── WindowsServiceSetup.wixproj │ │ ├── Tests │ │ ├── BatchSenderThreadTest │ │ │ ├── App.config │ │ │ ├── BatchSenderThreadTest.cs │ │ │ ├── BatchSenderThreadTest.csproj │ │ │ ├── Properties │ │ │ │ └── AssemblyInfo.cs │ │ │ ├── TestRunner.cs │ │ │ └── Utils │ │ │ │ └── MessageSender │ │ │ │ ├── MockSenderAsyncQueue.cs │ │ │ │ └── MockSenderMap.cs │ │ ├── CoreTest │ │ │ ├── App.config │ │ │ ├── CoreTest.cs │ │ │ ├── CoreTest.csproj │ │ │ ├── Devices │ │ │ │ ├── SocketClientTestDevice.cs │ │ │ │ └── SocketServiceTestDevice.cs │ │ │ ├── ITest.cs │ │ │ ├── Properties │ │ │ │ └── AssemblyInfo.cs │ │ │ ├── RealDataTest.cs │ │ │ ├── SocketTest.cs │ │ │ ├── TestRunner.cs │ │ │ ├── Utils │ │ │ │ ├── Generators │ │ │ │ │ └── RandomSensorDataGenerator.cs │ │ │ │ ├── Loader │ │ │ │ │ └── Loader.cs │ │ │ │ ├── Logger │ │ │ │ │ └── TestLogger.cs │ │ │ │ └── MessageSender │ │ │ │ │ └── MockSender.cs │ │ │ ├── WebServiceTest.cs │ │ │ └── packages.config │ │ ├── DeviceAdapterTestMock │ │ │ ├── DeviceAdapterTestMock.cs │ │ │ ├── DeviceAdapterTestMock.csproj │ │ │ ├── Properties │ │ │ │ └── AssemblyInfo.cs │ │ │ └── packages.config │ │ └── SocketServiceDeviceMock │ │ │ ├── App.config │ │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ │ ├── SocketServiceDeviceMock.cs │ │ │ ├── SocketServiceDeviceMock.csproj │ │ │ ├── Utils │ │ │ └── Logger │ │ │ │ └── ConsoleLogger.cs │ │ │ └── packages.config │ │ ├── UpgradeLog.htm │ │ ├── WiFi-Configuration.md │ │ ├── WindowsEXE │ │ ├── App.config │ │ ├── Microsoft.ConnectTheDots.GatewayExe.csproj │ │ ├── NLog.config │ │ ├── NLog.xsd │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ └── packages.config │ │ ├── WindowsService │ │ ├── App.config │ │ ├── Microsoft.ConnectTheDots.GatewayService.csproj │ │ ├── NLog.config │ │ ├── NLog.xsd │ │ ├── ProjectInstaller.cs │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ ├── Utils │ │ │ └── Logger │ │ │ │ └── EventLogger.cs │ │ ├── WindowsService.cs │ │ └── packages.config │ │ └── ifconfig.png └── readme.md ├── GettingStarted.md ├── SupportedDevices.md ├── images ├── Architecture.png ├── Arduino-Pi-IoT.jpg ├── CTD-logo-v5-02.png ├── ConnectTheDots-Temp-and-Hmdt-Architecture.png ├── ConnectTheDots-architecture.png └── WebsiteCapture.jpg ├── license.txt ├── notice.txt └── readme.md /.deployment: -------------------------------------------------------------------------------- 1 | [config] 2 | project = Azure/WebSite/site -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "Devices/DirectlyConnectedDevices/WindowsIoTCorePi2WeatherShield"] 2 | path = Devices/DirectlyConnectedDevices/WindowsIoTCorePi2WeatherShield 3 | url = https://github.com/ms-iot/iot-build-lab.git 4 | branch = ConnectTheDotsSample 5 | -------------------------------------------------------------------------------- /Azure/ARMTemplate/images/AzureDeploy1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Azure/ARMTemplate/images/AzureDeploy1.png -------------------------------------------------------------------------------- /Azure/ARMTemplate/images/AzureDeploy2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Azure/ARMTemplate/images/AzureDeploy2.png -------------------------------------------------------------------------------- /Azure/ARMTemplate/images/AzureDeploy3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Azure/ARMTemplate/images/AzureDeploy3.png -------------------------------------------------------------------------------- /Azure/ARMTemplate/images/Resources.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Azure/ARMTemplate/images/Resources.png -------------------------------------------------------------------------------- /Azure/ARMTemplate/images/snip_20160623095544.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Azure/ARMTemplate/images/snip_20160623095544.png -------------------------------------------------------------------------------- /Azure/EHConsole/EHConsole.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 2013 4 | VisualStudioVersion = 12.0.30723.0 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.ConnectTheDots.EHConsole", "EHConsole\Microsoft.ConnectTheDots.EHConsole.csproj", "{AAAAA552-F973-4683-8CF9-8B719A69E49C}" 7 | EndProject 8 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.ConnectTheDots.CloudDeploy.Common", "..\AzurePrep\Common\Microsoft.ConnectTheDots.CloudDeploy.Common.csproj", "{987E2AAB-AC91-4781-89B7-C1AD0AF01D8A}" 9 | EndProject 10 | Global 11 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 12 | Debug|Any CPU = Debug|Any CPU 13 | Release|Any CPU = Release|Any CPU 14 | EndGlobalSection 15 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 16 | {AAAAA552-F973-4683-8CF9-8B719A69E49C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 17 | {AAAAA552-F973-4683-8CF9-8B719A69E49C}.Debug|Any CPU.Build.0 = Debug|Any CPU 18 | {AAAAA552-F973-4683-8CF9-8B719A69E49C}.Release|Any CPU.ActiveCfg = Release|Any CPU 19 | {AAAAA552-F973-4683-8CF9-8B719A69E49C}.Release|Any CPU.Build.0 = Release|Any CPU 20 | {987E2AAB-AC91-4781-89B7-C1AD0AF01D8A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 21 | {987E2AAB-AC91-4781-89B7-C1AD0AF01D8A}.Debug|Any CPU.Build.0 = Debug|Any CPU 22 | {987E2AAB-AC91-4781-89B7-C1AD0AF01D8A}.Release|Any CPU.ActiveCfg = Release|Any CPU 23 | {987E2AAB-AC91-4781-89B7-C1AD0AF01D8A}.Release|Any CPU.Build.0 = Release|Any CPU 24 | EndGlobalSection 25 | GlobalSection(SolutionProperties) = preSolution 26 | HideSolutionNode = FALSE 27 | EndGlobalSection 28 | EndGlobal 29 | -------------------------------------------------------------------------------- /Azure/EHConsole/EHConsole/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("EHConsole")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("EHConsole")] 13 | [assembly: AssemblyCopyright("Copyright © 2015")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("54c0c07c-bea0-423c-b360-03c11e593049")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /Azure/EHConsole/nuget.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /Azure/MachineLearning/SQL/StoredProcedures/InsertAlertsData.sql: -------------------------------------------------------------------------------- 1 | CREATE PROCEDURE [dbo].[InsertAlertsData] 2 | @dataList [dbo].[AlertsDataTableType] READONLY 3 | AS 4 | insert into [dbo].[AlertsData] ([value], [guid], [displayname], [organization], [unitofmeasure], [measurename], [location], [timecreated]) 5 | select [value], [guid], [displayname], [organization], [unitofmeasure], [measurename], [location], [timecreated] from @dataList 6 | RETURN 0 7 | -------------------------------------------------------------------------------- /Azure/MachineLearning/SQL/TableType/AlertsDataTableType.sql: -------------------------------------------------------------------------------- 1 | CREATE TYPE [dbo].[AlertsDataTableType] AS TABLE( 2 | [value] FLOAT NULL, 3 | [guid] VARCHAR(40) NULL, 4 | [organization] VARCHAR(20) NULL, 5 | [displayname] VARCHAR(50) NULL, 6 | [unitofmeasure] VARCHAR(10) NULL, 7 | [measurename] VARCHAR(20) NULL, 8 | [location] VARCHAR(120) NULL, 9 | [timecreated] DATETIME NULL 10 | ) -------------------------------------------------------------------------------- /Azure/MachineLearning/SQL/Tables/AlertsData.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE [dbo].[AlertsData] 2 | ( 3 | [Id] INT NOT NULL PRIMARY KEY IDENTITY, 4 | [value] FLOAT NULL, 5 | [guid] VARCHAR(40) NULL, 6 | [organization] VARCHAR(20) NULL, 7 | [displayname] VARCHAR(50) NULL, 8 | [unitofmeasure] VARCHAR(10) NULL, 9 | [measurename] VARCHAR(20) NULL, 10 | [location] VARCHAR(120) NULL, 11 | [timecreated] DATETIME NULL 12 | ) -------------------------------------------------------------------------------- /Azure/MachineLearning/WorkerHost/AnomalyRecord.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace WorkerHost 4 | { 5 | public class AnomalyRecord 6 | { 7 | public DateTime Time { get; set; } 8 | public double Data { get; set; } 9 | public int Spike1 { get; set; } 10 | public int Spike2 { get; set; } 11 | public double LevelScore { get; set; } 12 | public int LevelAlert { get; set; } 13 | public double TrendScore { get; set; } 14 | public int TrendAlert { get; set; } 15 | 16 | public static AnomalyRecord Parse(string[] values) 17 | { 18 | if (values.Length < 8) 19 | throw new ArgumentException("Anomaly Record expects 8 values."); 20 | return new AnomalyRecord() 21 | { 22 | 23 | Time = DateTime.Parse(values[0]), 24 | Data = double.Parse(values[1]), 25 | Spike1 = int.Parse(values[2]), 26 | Spike2 = int.Parse(values[3]), 27 | LevelScore = double.Parse(values[4]), 28 | LevelAlert = int.Parse(values[5]), 29 | TrendScore = double.Parse(values[6]), 30 | TrendAlert = int.Parse(values[7]), 31 | }; 32 | } 33 | 34 | public override string ToString() 35 | { 36 | return Time.ToLocalTime() + ", " + Data + ", " + Spike1 + ", " + Spike2 + ", " + 37 | LevelScore + ", " + LevelAlert + ", " + TrendScore + ", " + TrendAlert; 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /Azure/MachineLearning/WorkerHost/CircularBuffer.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace WorkerHost 4 | { 5 | public class CircularBuffer 6 | { 7 | private readonly Queue _queue; 8 | private readonly int _size; 9 | 10 | public CircularBuffer(int size) 11 | { 12 | _queue = new Queue(size); 13 | _size = size; 14 | } 15 | 16 | public int Count 17 | { 18 | get { return _queue.Count; } 19 | } 20 | 21 | public void Add(T obj) 22 | { 23 | if (_queue.Count == _size) 24 | { 25 | _queue.Dequeue(); 26 | } 27 | 28 | _queue.Enqueue(obj); 29 | } 30 | 31 | public T[] GetAll() 32 | { 33 | return _queue.ToArray(); 34 | } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /Azure/MachineLearning/WorkerHost/Data.Outputs/Utils/SqlDBReaderSafeParser.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Data.SqlClient; 3 | using System.Reflection; 4 | 5 | namespace WorkerHost.Data.Outputs.Utils 6 | { 7 | public static class SqlDBReaderSafeParser 8 | { 9 | public static T SafeParse(this SqlDataReader reader, string columnName, T defaultValue = default(T)) 10 | { 11 | object dataValue = reader[columnName]; 12 | T convertedValue = dataValue.SafeParse(defaultValue); 13 | 14 | return convertedValue; 15 | } 16 | 17 | public static T SafeParse(this object dataValue, T defaultValue) 18 | { 19 | if (null == dataValue || DBNull.Value == dataValue) 20 | return defaultValue; 21 | 22 | Type t = typeof(T); 23 | 24 | if (t.IsInstanceOfType(dataValue)) 25 | { 26 | T convertedValue = (T)dataValue; 27 | return convertedValue; 28 | } 29 | 30 | MethodInfo method = t.GetMethod("op_Implicit", new[] { dataValue.GetType() }); 31 | 32 | T result; 33 | 34 | if (method != null) 35 | { 36 | result = (T)method.Invoke(null, new[] { dataValue }); 37 | } 38 | else 39 | { 40 | result = defaultValue; 41 | } 42 | 43 | return result; 44 | } 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /Azure/MachineLearning/WorkerHost/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("WorkerHost")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("WorkerHost")] 13 | [assembly: AssemblyCopyright("Copyright © 2014")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("76fab21f-d875-451d-abf7-e8c352fc7a9f")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /Azure/MachineLearning/WorkerHost/SensorDataContract.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Runtime.Serialization; 3 | 4 | namespace WorkerHost 5 | { 6 | public class SensorDataContract 7 | { 8 | [DataMember(Name = "value")] 9 | public double Value { get; set; } 10 | 11 | [DataMember(Name = "guid")] 12 | public string Guid { get; set; } 13 | 14 | [DataMember(Name = "organization")] 15 | public string Organization { get; set; } 16 | 17 | [DataMember(Name = "displayname")] 18 | public string DisplayName { get; set; } 19 | 20 | [DataMember(Name = "unitofmeasure")] 21 | public string UnitOfMeasure { get; set; } 22 | 23 | [DataMember(Name = "measurename")] 24 | public string MeasureName { get; set; } 25 | 26 | [DataMember(Name = "location")] 27 | public string Location { get; set; } 28 | 29 | [DataMember(Name = "timecreated")] 30 | public DateTime TimeCreated { get; set; } 31 | 32 | public string UniqueId() 33 | { 34 | //we could have devices with same DisplayName but different MeasureName etc.. 35 | return DisplayName + Guid + MeasureName; 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /Azure/MachineLearning/WorkerRole/ServiceConfiguration.Cloud.cscfg: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /Azure/MachineLearning/WorkerRole/ServiceConfiguration.Local.cscfg: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /Azure/MachineLearning/WorkerRole/ServiceDefinition.csdef: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /Azure/StreamAnalyticsQueries/cg4pbi.sql: -------------------------------------------------------------------------------- 1 | /* --------------------------------------------------------------------------------- 2 | // Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. 3 | // 4 | // The MIT License (MIT) 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | // ---------------------------------------------------------------------------------*/ 24 | 25 | Select 26 | measurename, 27 | displayname, 28 | timecreated, 29 | value 30 | from DevicesInput TIMESTAMP by timecreated 31 | 32 | -------------------------------------------------------------------------------- /Azure/WebSite/ASAAlertsChart.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Azure/WebSite/ASAAlertsChart.jpg -------------------------------------------------------------------------------- /Azure/WebSite/AlertsTable.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Azure/WebSite/AlertsTable.jpg -------------------------------------------------------------------------------- /Azure/WebSite/WebsiteDetails.md: -------------------------------------------------------------------------------- 1 | # Website details # 2 | 3 | Once you have your website running, you'll notice more is being displayed on the charts than just the raw data. Here you'll learn about the features of the website that weren't discussed during setup. 4 | 5 | ![](ASAAlertsChart.jpg) 6 | 7 | #### Dots on the graph #### 8 | You'll see dots showing up on the graph if you've set up alerts for that data stream. In the getting started project, this was done with the light sensor data to register an alert whenever the light is off, as well as when the temperature rises above 80 degrees. Hovering over that dot shows you the value during the alert, and what that alert is. 9 | 10 | #### Secondary line on chart #### 11 | If you have Stream Analytics set up, such as for temperature in our getting started project, you'll see a second line on your chart, along with an added entry in the legend of that chart. If you click on that data stream name on the left, it will toggle the display of that data on the chart. 12 | 13 | #### Hover over data streams #### 14 | If you hover over the data stream on the left, you'll be presented with the location of the device. In the case of the getting started project, you'll see both the public and local IP address of your gateway. 15 | 16 | #### Alert table #### 17 | Below the charts, you'll see a table listing all the real time alerts, including the message, time, which device, and what alert was fired. 18 | 19 | ![](AlertsTable.jpg) -------------------------------------------------------------------------------- /Azure/WebSite/WebsiteRunning.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Azure/WebSite/WebsiteRunning.jpg -------------------------------------------------------------------------------- /Azure/WebSite/portalsettings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Azure/WebSite/portalsettings.png -------------------------------------------------------------------------------- /Azure/WebSite/site/Docs/license.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. 2 | 3 | The MIT License (MIT) 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /Azure/WebSite/site/Global.asax: -------------------------------------------------------------------------------- 1 | <%@ Application Codebehind="Global.asax.cs" Inherits="ConnectTheDotsWebSite.Global" Language="C#" %> 2 | -------------------------------------------------------------------------------- /Azure/WebSite/site/bin/ConnectTheDotsWebSite.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Azure/WebSite/site/bin/ConnectTheDotsWebSite.dll -------------------------------------------------------------------------------- /Azure/WebSite/site/bin/Microsoft.Azure.Amqp.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Azure/WebSite/site/bin/Microsoft.Azure.Amqp.dll -------------------------------------------------------------------------------- /Azure/WebSite/site/bin/Microsoft.Azure.Devices.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Azure/WebSite/site/bin/Microsoft.Azure.Devices.dll -------------------------------------------------------------------------------- /Azure/WebSite/site/bin/Microsoft.Azure.KeyVault.Core.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Azure/WebSite/site/bin/Microsoft.Azure.KeyVault.Core.dll -------------------------------------------------------------------------------- /Azure/WebSite/site/bin/Microsoft.Data.Edm.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Azure/WebSite/site/bin/Microsoft.Data.Edm.dll -------------------------------------------------------------------------------- /Azure/WebSite/site/bin/Microsoft.Data.OData.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Azure/WebSite/site/bin/Microsoft.Data.OData.dll -------------------------------------------------------------------------------- /Azure/WebSite/site/bin/Microsoft.Data.Services.Client.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Azure/WebSite/site/bin/Microsoft.Data.Services.Client.dll -------------------------------------------------------------------------------- /Azure/WebSite/site/bin/Microsoft.ServiceBus.Messaging.EventProcessorHost.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Azure/WebSite/site/bin/Microsoft.ServiceBus.Messaging.EventProcessorHost.dll -------------------------------------------------------------------------------- /Azure/WebSite/site/bin/Microsoft.ServiceBus.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Azure/WebSite/site/bin/Microsoft.ServiceBus.dll -------------------------------------------------------------------------------- /Azure/WebSite/site/bin/Microsoft.WebSockets.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Azure/WebSite/site/bin/Microsoft.WebSockets.dll -------------------------------------------------------------------------------- /Azure/WebSite/site/bin/Microsoft.WindowsAzure.Configuration.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Azure/WebSite/site/bin/Microsoft.WindowsAzure.Configuration.dll -------------------------------------------------------------------------------- /Azure/WebSite/site/bin/Microsoft.WindowsAzure.Storage.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Azure/WebSite/site/bin/Microsoft.WindowsAzure.Storage.dll -------------------------------------------------------------------------------- /Azure/WebSite/site/bin/Mono.Security.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Azure/WebSite/site/bin/Mono.Security.dll -------------------------------------------------------------------------------- /Azure/WebSite/site/bin/Newtonsoft.Json.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Azure/WebSite/site/bin/Newtonsoft.Json.dll -------------------------------------------------------------------------------- /Azure/WebSite/site/bin/PCLCrypto.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Azure/WebSite/site/bin/PCLCrypto.dll -------------------------------------------------------------------------------- /Azure/WebSite/site/bin/PInvoke.BCrypt.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Azure/WebSite/site/bin/PInvoke.BCrypt.dll -------------------------------------------------------------------------------- /Azure/WebSite/site/bin/PInvoke.Kernel32.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Azure/WebSite/site/bin/PInvoke.Kernel32.dll -------------------------------------------------------------------------------- /Azure/WebSite/site/bin/PInvoke.NCrypt.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Azure/WebSite/site/bin/PInvoke.NCrypt.dll -------------------------------------------------------------------------------- /Azure/WebSite/site/bin/PInvoke.Windows.Core.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Azure/WebSite/site/bin/PInvoke.Windows.Core.dll -------------------------------------------------------------------------------- /Azure/WebSite/site/bin/System.Net.Http.Formatting.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Azure/WebSite/site/bin/System.Net.Http.Formatting.dll -------------------------------------------------------------------------------- /Azure/WebSite/site/bin/System.Spatial.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Azure/WebSite/site/bin/System.Spatial.dll -------------------------------------------------------------------------------- /Azure/WebSite/site/bin/System.Web.Http.WebHost.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Azure/WebSite/site/bin/System.Web.Http.WebHost.dll -------------------------------------------------------------------------------- /Azure/WebSite/site/bin/System.Web.Http.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Azure/WebSite/site/bin/System.Web.Http.dll -------------------------------------------------------------------------------- /Azure/WebSite/site/bin/Validation.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Azure/WebSite/site/bin/Validation.dll -------------------------------------------------------------------------------- /Azure/WebSite/site/bin/de/Microsoft.Data.Edm.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Azure/WebSite/site/bin/de/Microsoft.Data.Edm.resources.dll -------------------------------------------------------------------------------- /Azure/WebSite/site/bin/de/Microsoft.Data.OData.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Azure/WebSite/site/bin/de/Microsoft.Data.OData.resources.dll -------------------------------------------------------------------------------- /Azure/WebSite/site/bin/de/Microsoft.Data.Services.Client.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Azure/WebSite/site/bin/de/Microsoft.Data.Services.Client.resources.dll -------------------------------------------------------------------------------- /Azure/WebSite/site/bin/de/System.Spatial.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Azure/WebSite/site/bin/de/System.Spatial.resources.dll -------------------------------------------------------------------------------- /Azure/WebSite/site/bin/es/Microsoft.Data.Edm.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Azure/WebSite/site/bin/es/Microsoft.Data.Edm.resources.dll -------------------------------------------------------------------------------- /Azure/WebSite/site/bin/es/Microsoft.Data.OData.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Azure/WebSite/site/bin/es/Microsoft.Data.OData.resources.dll -------------------------------------------------------------------------------- /Azure/WebSite/site/bin/es/Microsoft.Data.Services.Client.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Azure/WebSite/site/bin/es/Microsoft.Data.Services.Client.resources.dll -------------------------------------------------------------------------------- /Azure/WebSite/site/bin/es/System.Spatial.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Azure/WebSite/site/bin/es/System.Spatial.resources.dll -------------------------------------------------------------------------------- /Azure/WebSite/site/bin/fr/Microsoft.Data.Edm.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Azure/WebSite/site/bin/fr/Microsoft.Data.Edm.resources.dll -------------------------------------------------------------------------------- /Azure/WebSite/site/bin/fr/Microsoft.Data.OData.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Azure/WebSite/site/bin/fr/Microsoft.Data.OData.resources.dll -------------------------------------------------------------------------------- /Azure/WebSite/site/bin/fr/Microsoft.Data.Services.Client.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Azure/WebSite/site/bin/fr/Microsoft.Data.Services.Client.resources.dll -------------------------------------------------------------------------------- /Azure/WebSite/site/bin/fr/System.Spatial.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Azure/WebSite/site/bin/fr/System.Spatial.resources.dll -------------------------------------------------------------------------------- /Azure/WebSite/site/bin/it/Microsoft.Data.Edm.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Azure/WebSite/site/bin/it/Microsoft.Data.Edm.resources.dll -------------------------------------------------------------------------------- /Azure/WebSite/site/bin/it/Microsoft.Data.OData.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Azure/WebSite/site/bin/it/Microsoft.Data.OData.resources.dll -------------------------------------------------------------------------------- /Azure/WebSite/site/bin/it/Microsoft.Data.Services.Client.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Azure/WebSite/site/bin/it/Microsoft.Data.Services.Client.resources.dll -------------------------------------------------------------------------------- /Azure/WebSite/site/bin/it/System.Spatial.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Azure/WebSite/site/bin/it/System.Spatial.resources.dll -------------------------------------------------------------------------------- /Azure/WebSite/site/bin/ja/Microsoft.Data.Edm.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Azure/WebSite/site/bin/ja/Microsoft.Data.Edm.resources.dll -------------------------------------------------------------------------------- /Azure/WebSite/site/bin/ja/Microsoft.Data.OData.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Azure/WebSite/site/bin/ja/Microsoft.Data.OData.resources.dll -------------------------------------------------------------------------------- /Azure/WebSite/site/bin/ja/Microsoft.Data.Services.Client.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Azure/WebSite/site/bin/ja/Microsoft.Data.Services.Client.resources.dll -------------------------------------------------------------------------------- /Azure/WebSite/site/bin/ja/System.Spatial.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Azure/WebSite/site/bin/ja/System.Spatial.resources.dll -------------------------------------------------------------------------------- /Azure/WebSite/site/bin/ko/Microsoft.Data.Edm.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Azure/WebSite/site/bin/ko/Microsoft.Data.Edm.resources.dll -------------------------------------------------------------------------------- /Azure/WebSite/site/bin/ko/Microsoft.Data.OData.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Azure/WebSite/site/bin/ko/Microsoft.Data.OData.resources.dll -------------------------------------------------------------------------------- /Azure/WebSite/site/bin/ko/Microsoft.Data.Services.Client.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Azure/WebSite/site/bin/ko/Microsoft.Data.Services.Client.resources.dll -------------------------------------------------------------------------------- /Azure/WebSite/site/bin/ko/System.Spatial.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Azure/WebSite/site/bin/ko/System.Spatial.resources.dll -------------------------------------------------------------------------------- /Azure/WebSite/site/bin/ru/Microsoft.Data.Edm.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Azure/WebSite/site/bin/ru/Microsoft.Data.Edm.resources.dll -------------------------------------------------------------------------------- /Azure/WebSite/site/bin/ru/Microsoft.Data.OData.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Azure/WebSite/site/bin/ru/Microsoft.Data.OData.resources.dll -------------------------------------------------------------------------------- /Azure/WebSite/site/bin/ru/Microsoft.Data.Services.Client.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Azure/WebSite/site/bin/ru/Microsoft.Data.Services.Client.resources.dll -------------------------------------------------------------------------------- /Azure/WebSite/site/bin/ru/System.Spatial.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Azure/WebSite/site/bin/ru/System.Spatial.resources.dll -------------------------------------------------------------------------------- /Azure/WebSite/site/bin/zh-Hans/Microsoft.Data.Edm.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Azure/WebSite/site/bin/zh-Hans/Microsoft.Data.Edm.resources.dll -------------------------------------------------------------------------------- /Azure/WebSite/site/bin/zh-Hans/Microsoft.Data.OData.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Azure/WebSite/site/bin/zh-Hans/Microsoft.Data.OData.resources.dll -------------------------------------------------------------------------------- /Azure/WebSite/site/bin/zh-Hans/Microsoft.Data.Services.Client.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Azure/WebSite/site/bin/zh-Hans/Microsoft.Data.Services.Client.resources.dll -------------------------------------------------------------------------------- /Azure/WebSite/site/bin/zh-Hans/System.Spatial.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Azure/WebSite/site/bin/zh-Hans/System.Spatial.resources.dll -------------------------------------------------------------------------------- /Azure/WebSite/site/bin/zh-Hant/Microsoft.Data.Edm.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Azure/WebSite/site/bin/zh-Hant/Microsoft.Data.Edm.resources.dll -------------------------------------------------------------------------------- /Azure/WebSite/site/bin/zh-Hant/Microsoft.Data.OData.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Azure/WebSite/site/bin/zh-Hant/Microsoft.Data.OData.resources.dll -------------------------------------------------------------------------------- /Azure/WebSite/site/bin/zh-Hant/Microsoft.Data.Services.Client.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Azure/WebSite/site/bin/zh-Hant/Microsoft.Data.Services.Client.resources.dll -------------------------------------------------------------------------------- /Azure/WebSite/site/bin/zh-Hant/System.Spatial.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Azure/WebSite/site/bin/zh-Hant/System.Spatial.resources.dll -------------------------------------------------------------------------------- /Azure/WebSite/site/img/ConnectTheDotsLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Azure/WebSite/site/img/ConnectTheDotsLogo.png -------------------------------------------------------------------------------- /Azure/WebSite/site/img/ajax-loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Azure/WebSite/site/img/ajax-loader.gif -------------------------------------------------------------------------------- /Azure/WebSite/site/img/forkme_CTD.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Azure/WebSite/site/img/forkme_CTD.png -------------------------------------------------------------------------------- /Azure/WebSite/source/ConnectTheDotsWebSite.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 14 4 | VisualStudioVersion = 14.0.25420.1 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConnectTheDotsWebSite", "ConnectTheDotsWebSite\ConnectTheDotsWebSite.csproj", "{2E3E7496-59D5-48BC-909E-207120886E3E}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Release|Any CPU = Release|Any CPU 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {2E3E7496-59D5-48BC-909E-207120886E3E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 15 | {2E3E7496-59D5-48BC-909E-207120886E3E}.Debug|Any CPU.Build.0 = Debug|Any CPU 16 | {2E3E7496-59D5-48BC-909E-207120886E3E}.Release|Any CPU.ActiveCfg = Release|Any CPU 17 | {2E3E7496-59D5-48BC-909E-207120886E3E}.Release|Any CPU.Build.0 = Release|Any CPU 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | EndGlobal 23 | -------------------------------------------------------------------------------- /Azure/WebSite/source/ConnectTheDotsWebSite/Default.aspx.designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // 5 | // Changes to this file may cause incorrect behavior and will be lost if 6 | // the code is regenerated. 7 | // 8 | //------------------------------------------------------------------------------ 9 | 10 | namespace ConnectTheDotsWebSite { 11 | 12 | 13 | public partial class Default { 14 | 15 | /// 16 | /// form2 control. 17 | /// 18 | /// 19 | /// Auto-generated field. 20 | /// To modify move field declaration from designer file to code-behind file. 21 | /// 22 | protected global::System.Web.UI.HtmlControls.HtmlForm form2; 23 | 24 | /// 25 | /// user control. 26 | /// 27 | /// 28 | /// Auto-generated field. 29 | /// To modify move field declaration from designer file to code-behind file. 30 | /// 31 | protected global::System.Web.UI.HtmlControls.HtmlGenericControl user; 32 | 33 | /// 34 | /// ScriptManager1 control. 35 | /// 36 | /// 37 | /// Auto-generated field. 38 | /// To modify move field declaration from designer file to code-behind file. 39 | /// 40 | protected global::System.Web.UI.ScriptManager ScriptManager1; 41 | 42 | /// 43 | /// cscolumn control. 44 | /// 45 | /// 46 | /// Auto-generated field. 47 | /// To modify move field declaration from designer file to code-behind file. 48 | /// 49 | protected global::System.Web.UI.HtmlControls.HtmlTableCell cscolumn; 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /Azure/WebSite/source/ConnectTheDotsWebSite/Docs/license.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. 2 | 3 | The MIT License (MIT) 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /Azure/WebSite/source/ConnectTheDotsWebSite/Global.asax: -------------------------------------------------------------------------------- 1 | <%@ Application Codebehind="Global.asax.cs" Inherits="ConnectTheDotsWebSite.Global" Language="C#" %> 2 | -------------------------------------------------------------------------------- /Azure/WebSite/source/ConnectTheDotsWebSite/Helpers/BlobHelper.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.WindowsAzure.Storage; 2 | using Microsoft.WindowsAzure.Storage.Blob; 3 | 4 | namespace ConnectTheDotsWebSite.Helpers 5 | { 6 | public static class BlobHelper 7 | { 8 | public static CloudBlobContainer SetUpContainer(string storageConnectionString, 9 | string containerName) 10 | { 11 | CloudStorageAccount cloudStorageAccount = CloudStorageAccount.Parse(storageConnectionString); 12 | CloudBlobClient cloudBlobClient = cloudStorageAccount.CreateCloudBlobClient(); 13 | CloudBlobContainer cloudBlobContainer = cloudBlobClient.GetContainerReference(containerName); 14 | return cloudBlobContainer; 15 | } 16 | } 17 | } -------------------------------------------------------------------------------- /Azure/WebSite/source/ConnectTheDotsWebSite/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("ConnectTheDotsWebSite")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("ConnectTheDotsWebSite")] 13 | [assembly: AssemblyCopyright("Copyright © 2015")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("3eb89f82-5fa6-4126-b0d9-f36d3389d9fb")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Revision and Build Numbers 33 | // by using the '*' as shown below: 34 | [assembly: AssemblyVersion("1.0.0.0")] 35 | [assembly: AssemblyFileVersion("1.0.0.0")] 36 | -------------------------------------------------------------------------------- /Azure/WebSite/source/ConnectTheDotsWebSite/Properties/PublishProfiles/LocalDeploy.pubxml: -------------------------------------------------------------------------------- 1 |  2 | 6 | 7 | 8 | FileSystem 9 | Release 10 | Any CPU 11 | 12 | True 13 | False 14 | C:\IoT\connectthedots\Azure\WebSite\site 15 | True 16 | 17 | -------------------------------------------------------------------------------- /Azure/WebSite/source/ConnectTheDotsWebSite/Web.Debug.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 17 | 18 | 29 | 30 | -------------------------------------------------------------------------------- /Azure/WebSite/source/ConnectTheDotsWebSite/Web.Release.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 17 | 18 | 19 | 30 | 31 | -------------------------------------------------------------------------------- /Azure/WebSite/source/ConnectTheDotsWebSite/img/ConnectTheDotsLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Azure/WebSite/source/ConnectTheDotsWebSite/img/ConnectTheDotsLogo.png -------------------------------------------------------------------------------- /Azure/WebSite/source/ConnectTheDotsWebSite/img/ajax-loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Azure/WebSite/source/ConnectTheDotsWebSite/img/ajax-loader.gif -------------------------------------------------------------------------------- /Azure/WebSite/source/ConnectTheDotsWebSite/img/forkme_CTD.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Azure/WebSite/source/ConnectTheDotsWebSite/img/forkme_CTD.png -------------------------------------------------------------------------------- /Contribute.md: -------------------------------------------------------------------------------- 1 | ## How to contribute 2 | There are many ways that you can contribute to the ConnectTheDots project: 3 | 4 | * Submit a bug 5 | * Submit a code fix for a bug 6 | * Submit code to add a new device or sensor to the project, or modify existing device code 7 | * Submit code to add a new device gateway to the project, or modify existing gateway code (e.g. in a different programming language) 8 | * Submit code or configuration for storing or analyzing the data in Azure 9 | * Submit a new website design 10 | * Submit additions or modifications to the documentation 11 | * Submit a feature request 12 | 13 | The key design principle is that the code makes it easy for people to get data from sensors into Azure and to utilize IoT services in Azure such as Azure Stream Analytics and Machine Learning. 14 | 15 | ## Contributing Code 16 | To contribute code you need to issue a Pull Request. All code submissions will be reviewed and tested by the team, and those that meet a high bar for both quality and design/roadmap appropriateness will be merged into the source. Be sure to follow the existing file/folder structure when adding new boards or sensors. 17 | 18 | You must sign a [Contribution License Agreement](https://cla.microsoft.com/) ([CLA](https://cla.microsoft.com/)) before submitting a Pull Request. To complete the CLA, you will need to submit the request via the form and then electronically sign the CLA when you receive the email containing the link to the document. 19 | 20 | This needs to only be done once, for your first contribution to the ConnectTheDots project. 21 | 22 | -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/Common/javascript/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "connectthedots", 3 | "version": "1.0.3", 4 | "description": "Simple library to connect a node app to Azure IoT Hub using ConnectTheDots.io", 5 | "main": "connectthedots.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "dependencies": { 10 | "azure-iot-device": "1.0.15", 11 | "azure-iot-device-amqp": "1.0.15", 12 | "azure-iot-device-http": "1.0.15", 13 | "azure-iot-device-mqtt": "1.0.15" 14 | }, 15 | "author": "Microsoft", 16 | "license": "MIT" 17 | } 18 | -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/Common/javascript/readme.md: -------------------------------------------------------------------------------- 1 | [ConnectTheDots.io](http://connectthedots.io) is an open source project created by Microsoft to help you get tiny devices connected to Microsoft Azure IoT and to implement great IoT solutions taking advantage of Microsoft Azure advanced analytic services such as Azure Stream Analytics and Azure Machine Learning. 2 | This library is a helper for node developers to make it easy to connect their apps to a ConnectTheDots solution. 3 | Learn more about the project on [http://connectthedots.io](http://connectthedots.io) -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/ESP8266/connect_the_dots/connect_the_dots.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft. All rights reserved. 2 | // Licensed under the MIT license. See LICENSE file in the project root for full license information. 3 | 4 | #ifndef CONNECT_THE_DOTS_H 5 | #define CONNECT_THE_DOTS_H 6 | 7 | #ifdef __cplusplus 8 | //extern "C" { 9 | #endif 10 | 11 | void connect_the_dots_run(void); 12 | 13 | #ifdef __cplusplus 14 | //} 15 | #endif 16 | 17 | #endif /* CONNECT_THE_DOTS_H */ 18 | -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/ESP8266/images/huzzah_connect_the_dots.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/DirectlyConnectedDevices/ESP8266/images/huzzah_connect_the_dots.png -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/NodeJS/BeagleBoneBlack/Hardware.md: -------------------------------------------------------------------------------- 1 | # Hardware requirements for BeagleBone Black & Grove sensors # 2 | 3 | - [BeagleBone Black][1] 4 | 5 | ##Supported Sensors 6 | 7 | - [Seeed Grove Cape for BeagleBone series ][2] 8 | - [Seeed Grove Light Sensor ][3] 9 | - [Seeed Grove temperature sensor ][4] 10 | 11 | [1]: http://beagleboard.org/black 12 | [2]: http://www.seeedstudio.com/depot/Grove-Cape-for-BeagleBone-Series-p-1718.html 13 | [3]: http://www.seeedstudio.com/depot/Grove-Light-Sensor-p-746.html 14 | [4]: http://www.seeedstudio.com/depot/Grove-Temperature-Sensor-p-774.html 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/NodeJS/BeagleBoneBlack/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ConnectTheDotsBeagleBoneBlack", 3 | "version": "1.0.1", 4 | "description": "Simple Node app sending data from BeagleBone Black + Grove sensors to Azure IoT services", 5 | "main": "beagleboneblackctd.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "author": "", 10 | "license": "MIT", 11 | "dependencies": { 12 | "johnny-five": "^0.8.91", 13 | "beaglebone-io": "^1.3.0", 14 | "connectthedots":"^1.0.2" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/NodeJS/BeagleBoneBlack/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "iothubconnectionstring": "", 3 | "deviceid": "", 4 | "displayname": "BeagleBoneBlack", 5 | "organization": "My Org", 6 | "location": "My location" 7 | } 8 | -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/NodeJS/Desktop/Desktop_setup.md: -------------------------------------------------------------------------------- 1 | This document explains how to run a simple node sample on a desktop machine (Windows, Linux, OSX) 2 | 3 | ##Prerequisites ## 4 | 5 | To run the application you will need to have [node.js](http://nodejs.org) installed on your system. 6 | The machine will also need to be connected to the internet 7 | 8 | To work on the code of the project, you can use your favorite code editor. 9 | 10 | ##Setup the app on the desktop## 11 | 12 | * Once you have cloned or downloaded the repository, open a command prompt, and navigate to the application folder (Devices\DirectlyConnectedDevices\NodeJS\Desktop) and type the following command: 13 | 14 | npm install 15 | 16 | * Before running the app, you need to update the settings.json file to input the device's connection string and a unique device id. 17 | Following the instructions [here](../../../readme.md), get the connection string for your device. 18 | 19 | * Open the file settings.json in your favorite text editor and edit the settings using the device id and connection string generated following the previous instructions. 20 | 21 | "iothubconnectionstring": "", 22 | "deviceid": "", 23 | "displayname": "BeagleBoneBlack", 24 | "organization": "My Org", 25 | "location": "My location" 26 | 27 | ##Run the app## 28 | * To run the app, type the folowing command in the application folder: 29 | 30 | node . 31 | 32 | 33 | -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/NodeJS/Desktop/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ConnectTheDotsDesktop", 3 | "version": "1.0.2", 4 | "description": "Simple Node app sending fake data from desktop to Azure IoT services", 5 | "main": "desktop.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "author": "", 10 | "license": "MIT", 11 | "dependencies": { 12 | "connectthedots":"^1.0.3" 13 | }, 14 | "files": { 15 | "settings":"./settings.json" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/NodeJS/Desktop/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "iothubconnectionstring": "", 3 | "deviceid": "", 4 | "displayname": "My PC", 5 | "organization": "My Org", 6 | "location": "My location" 7 | } 8 | -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/NodeJS/IntelEdisonGrove/Hardware.md: -------------------------------------------------------------------------------- 1 | # Hardware requirements for Intel Edison + Seeed Xadow wearable kit # 2 | 3 | - [Intel Edison kit for Arduino][1] 4 | 5 | ##Supported Sensors 6 | 7 | - [Seeed Grove starter kit for Intel IoT][2] 8 | - and [Seeed Grove Environment Kit for Intel Edison][3] 9 | 10 | [1]: http://www.intel.com/buy/us/en/product/emergingtechnologies/intel-edison-kit-462187 11 | [2]: http://www.seeedstudio.com/depot/Grove-starter-kit-plus-Intel-IoT-Edition-for-Intel-Galileo-Gen-2-and-Edison-p-1978.html?cPath=84_13 12 | [3]: http://www.seeedstudio.com/depot/Grove-Indoor-Environment-Kit-for-Intel-Edison-p-2427.html 13 | -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/NodeJS/IntelEdisonGrove/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ConnectTheDotsIntelEdison", 3 | "version": "1.0.1", 4 | "description": "Simple Node app sending data from sensors to Azure IoT services", 5 | "main": "inteledisonctd.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "author": "", 10 | "license": "MIT", 11 | "dependencies": { 12 | "johnny-five": "^0.8.91", 13 | "edison-io": "^0.8.18", 14 | "connectthedots":"^1.0.2", 15 | "th02js": "^0.0.2" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/NodeJS/IntelEdisonGrove/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "iothubconnectionstring": "", 3 | "deviceid": "", 4 | "displayname": "IntelEdison", 5 | "organization": "My Org", 6 | "location": "My location" 7 | } 8 | -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/NodeJS/IntelEdisonSensorTag/Hardware.md: -------------------------------------------------------------------------------- 1 | # Hardware requirements for Intel Edison + TI SensorTag project # 2 | 3 | - [Intel Edison with the board for Arduino][1] 4 | 5 | ##Supported Sensors 6 | 7 | - [TI SensorTag][2] (tested only with CC2541. Should work with newer version CC2650) 8 | 9 | [1]: http://www.intel.com/content/www/us/en/do-it-yourself/edison.html 10 | [2]: http://www.ti.com/sensortag 11 | 12 | -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/NodeJS/IntelEdisonSensorTag/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ConnectTheDotsIntelEdison", 3 | "version": "1.0.0", 4 | "description": "Simple Node app sending data from Arduino Weather Shield to Azure Event Hubs", 5 | "main": "inteledisonsensortagctd.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "author": "", 10 | "license": "MIT", 11 | "dependencies": { 12 | "cylon": "^0.22.1", 13 | "cylon-gpio": "^0.22.1", 14 | "cylon-intel-iot": "^0.5.2", 15 | "noble": "^0.3.11", 16 | "noble-device": "^1.0.0", 17 | "connectthedots":"^1.0.2" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/NodeJS/IntelEdisonSensorTag/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "iothubconnectionstring": "", 3 | "deviceid": "", 4 | "displayname": "EdisonSensorTag", 5 | "organization": "My Org", 6 | "location": "My location" 7 | } 8 | -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/NodeJS/IntelEdisonXadow/Hardware.md: -------------------------------------------------------------------------------- 1 | # Hardware requirements for Intel Edison + Seeed Xadow wearable kit # 2 | 3 | - [Intel Edison kit for Arduino][1] 4 | 5 | ##Supported Sensors 6 | 7 | - [Seeed Xadow wearable kit for Intel Edison][2] 8 | 9 | [1]: http://www.intel.com/buy/us/en/product/emergingtechnologies/intel-edison-kit-462187 10 | [2]: http://www.seeedstudio.com/depot/Xadow-Wearable-Kit-For-Intel-Edison-p-2428.html 11 | 12 | -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/NodeJS/IntelEdisonXadow/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ConnectTheDotsIntelEdison", 3 | "version": "1.0.1", 4 | "description": "Simple Node app sending data from sensors to Azure IoT services", 5 | "main": "inteledisonctd.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "author": "", 10 | "license": "MIT", 11 | "dependencies": { 12 | "johnny-five": "^0.8.91", 13 | "edison-io": "^0.8.18", 14 | "connectthedots":"^1.0.2" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/NodeJS/IntelEdisonXadow/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "iothubconnectionstring": "", 3 | "deviceid": "", 4 | "displayname": "IntelEdison", 5 | "organization": "My Org", 6 | "location": "My location" 7 | } 8 | -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/NodeJS/SensorTag/Setup.md: -------------------------------------------------------------------------------- 1 | ### Generic SensorTag connection using a Raspberry PI, Linux, Mac OS and other Unix/Linux. 2 | 3 | ### Raspberry Pi requirements 4 | You will need Bluez, you can follow [this](http://www.elinux.org/RPi_Bluetooth_LE) tutorial to achieve it. 5 | 6 | Set up settings.json as with any other and you are ready to go 7 | ``` 8 | sudo npm start 9 | ``` 10 | -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/NodeJS/SensorTag/index.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | 3 | // Common logic 4 | var connectthedots = require('connectthedots'); 5 | // Settings 6 | var devicesettings = require('./settings.json'); 7 | 8 | // Sensortag utility class 9 | var worker = require('./sensorWorker.js'); 10 | 11 | var initCallback = function (err) { 12 | // Once the connection to Azure IoT Hub is establish you can initialize your hardware and start sending data 13 | // This is where you would insert your sensors code 14 | // Start sensor worker with the send_message callback to the data reception 15 | worker.start(connectthedots.send_message); 16 | }; 17 | 18 | 19 | // Init connection to Azure IoT 20 | connectthedots.init_connection(devicesettings, initCallback); 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/NodeJS/SensorTag/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "SensorTag", 3 | "version": "1.0.0", 4 | "description": "SensorTag connection to Connect The Dots", 5 | "main": "index.js", 6 | "scripts": { 7 | "start": "node index", 8 | "test": "echo \"Error: no test specified\" && exit 1" 9 | }, 10 | "author": "Marian C Moldovan", 11 | "license": "ISC", 12 | "dependencies": { 13 | "async": "^1.4.2", 14 | "crypto": "0.0.3", 15 | "moment": "^2.10.6", 16 | "sensortag": "^1.1.1", 17 | "connectthedots":"^1.0.2" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/NodeJS/SensorTag/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "iothubconnectionstring": "", 3 | "deviceid": "", 4 | "displayname": "SensorTag", 5 | "organization": "My Org", 6 | "location": "My location" 7 | } -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/NodeJS/Tessel2/Hardware.md: -------------------------------------------------------------------------------- 1 | # Hardware requirements for Tessel 2 and modules # 2 | 3 | - [Tessel 2][1] 4 | 5 | ## Supported Sensors ## 6 | 7 | - [Tessel 2 Ambient Module][2] 8 | 9 | 10 | [1]: https://tessel.io/ 11 | [2]: https://tessel.io/modules#module-ambient 12 | -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/NodeJS/Tessel2/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ConnectTheDotsTessel2", 3 | "version": "1.0.0", 4 | "description": "Simple Node app sending data from a Tessel 2 + Ambient Module to Azure IoT services", 5 | "main": "tessel2ctd.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "author": "", 10 | "license": "MIT", 11 | "dependencies": { 12 | "ambient-attx4": "^0.2.11", 13 | "connectthedots": "^1.0.3", 14 | "tessel": "^0.3.25" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/NodeJS/Tessel2/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "iothubconnectionstring": "", 3 | "deviceid": "", 4 | "displayname": "My Tessel 2", 5 | "organization": "My Org", 6 | "location": "My location" 7 | } 8 | -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/UWPMSBand/UWPMSBand/App.xaml: -------------------------------------------------------------------------------- 1 |  7 | 8 | 9 | -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/UWPMSBand/UWPMSBand/Assets/CTD-logo-300x300.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/DirectlyConnectedDevices/UWPMSBand/UWPMSBand/Assets/CTD-logo-300x300.png -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/UWPMSBand/UWPMSBand/Assets/CTD-logo-50x50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/DirectlyConnectedDevices/UWPMSBand/UWPMSBand/Assets/CTD-logo-50x50.png -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/UWPMSBand/UWPMSBand/Assets/CTD-logo-620x300.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/DirectlyConnectedDevices/UWPMSBand/UWPMSBand/Assets/CTD-logo-620x300.png -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/UWPMSBand/UWPMSBand/Assets/CTD-logo-743x360.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/DirectlyConnectedDevices/UWPMSBand/UWPMSBand/Assets/CTD-logo-743x360.png -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/UWPMSBand/UWPMSBand/Assets/CTD-logo-88x88.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/DirectlyConnectedDevices/UWPMSBand/UWPMSBand/Assets/CTD-logo-88x88.png -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/UWPMSBand/UWPMSBand/Assets/LockScreenLogo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/DirectlyConnectedDevices/UWPMSBand/UWPMSBand/Assets/LockScreenLogo.scale-200.png -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/UWPMSBand/UWPMSBand/Assets/SpalshScreen-1152x1920.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/DirectlyConnectedDevices/UWPMSBand/UWPMSBand/Assets/SpalshScreen-1152x1920.png -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/UWPMSBand/UWPMSBand/Assets/SpalshScreen-1240x600.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/DirectlyConnectedDevices/UWPMSBand/UWPMSBand/Assets/SpalshScreen-1240x600.png -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/UWPMSBand/UWPMSBand/Assets/SplashScreen.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/DirectlyConnectedDevices/UWPMSBand/UWPMSBand/Assets/SplashScreen.scale-200.png -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/UWPMSBand/UWPMSBand/Assets/Square150x150Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/DirectlyConnectedDevices/UWPMSBand/UWPMSBand/Assets/Square150x150Logo.scale-200.png -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/UWPMSBand/UWPMSBand/Assets/Square44x44Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/DirectlyConnectedDevices/UWPMSBand/UWPMSBand/Assets/Square44x44Logo.scale-200.png -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/UWPMSBand/UWPMSBand/Assets/Square44x44Logo.targetsize-24_altform-unplated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/DirectlyConnectedDevices/UWPMSBand/UWPMSBand/Assets/Square44x44Logo.targetsize-24_altform-unplated.png -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/UWPMSBand/UWPMSBand/Assets/StoreLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/DirectlyConnectedDevices/UWPMSBand/UWPMSBand/Assets/StoreLogo.png -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/UWPMSBand/UWPMSBand/Assets/Wide310x150Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/DirectlyConnectedDevices/UWPMSBand/UWPMSBand/Assets/Wide310x150Logo.scale-200.png -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/UWPMSBand/UWPMSBand/Package.appxmanifest: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | UWPMSBand 7 | olivi 8 | Assets\StoreLogo.png 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/UWPMSBand/UWPMSBand/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("UWPMSBand")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("UWPMSBand")] 13 | [assembly: AssemblyCopyright("Copyright © 2016")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Version information for an assembly consists of the following four values: 18 | // 19 | // Major Version 20 | // Minor Version 21 | // Build Number 22 | // Revision 23 | // 24 | // You can specify all the values or you can default the Build and Revision Numbers 25 | // by using the '*' as shown below: 26 | // [assembly: AssemblyVersion("1.0.*")] 27 | [assembly: AssemblyVersion("1.0.0.0")] 28 | [assembly: AssemblyFileVersion("1.0.0.0")] 29 | [assembly: ComVisible(false)] -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/UWPMSBand/UWPMSBand/Properties/Default.rd.xml: -------------------------------------------------------------------------------- 1 | 17 | 18 | 19 | 20 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/UWPMSBand/UWPMSBand/UWPMSBand_TemporaryKey.pfx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/DirectlyConnectedDevices/UWPMSBand/UWPMSBand/UWPMSBand_TemporaryKey.pfx -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/UWPMSBand/UWPMSBand/project.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "Microsoft.Azure.Devices.Client": "1.1.1", 4 | "Microsoft.Azure.Devices.Shared": "1.0.2", 5 | "Microsoft.Band": "1.3.20628", 6 | "Microsoft.NETCore.UniversalWindowsPlatform": "5.2.2", 7 | "Newtonsoft.Json": "9.0.1" 8 | }, 9 | "frameworks": { 10 | "uap10.0": {} 11 | }, 12 | "runtimes": { 13 | "win10-arm": {}, 14 | "win10-arm-aot": {}, 15 | "win10-x86": {}, 16 | "win10-x86-aot": {}, 17 | "win10-x64": {}, 18 | "win10-x64-aot": {} 19 | } 20 | } -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/UWPSimulatedSensors/UWPSimulatedSensors/App.xaml: -------------------------------------------------------------------------------- 1 |  7 | 8 | 9 | -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/UWPSimulatedSensors/UWPSimulatedSensors/ApplicationInsights.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/UWPSimulatedSensors/UWPSimulatedSensors/Assets/CTD-logo-300x300.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/DirectlyConnectedDevices/UWPSimulatedSensors/UWPSimulatedSensors/Assets/CTD-logo-300x300.png -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/UWPSimulatedSensors/UWPSimulatedSensors/Assets/CTD-logo-50x50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/DirectlyConnectedDevices/UWPSimulatedSensors/UWPSimulatedSensors/Assets/CTD-logo-50x50.png -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/UWPSimulatedSensors/UWPSimulatedSensors/Assets/CTD-logo-620x300.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/DirectlyConnectedDevices/UWPSimulatedSensors/UWPSimulatedSensors/Assets/CTD-logo-620x300.png -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/UWPSimulatedSensors/UWPSimulatedSensors/Assets/CTD-logo-743x360.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/DirectlyConnectedDevices/UWPSimulatedSensors/UWPSimulatedSensors/Assets/CTD-logo-743x360.png -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/UWPSimulatedSensors/UWPSimulatedSensors/Assets/CTD-logo-88x88.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/DirectlyConnectedDevices/UWPSimulatedSensors/UWPSimulatedSensors/Assets/CTD-logo-88x88.png -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/UWPSimulatedSensors/UWPSimulatedSensors/Assets/LockScreenLogo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/DirectlyConnectedDevices/UWPSimulatedSensors/UWPSimulatedSensors/Assets/LockScreenLogo.scale-200.png -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/UWPSimulatedSensors/UWPSimulatedSensors/Assets/SpalshScreen-1152x1920.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/DirectlyConnectedDevices/UWPSimulatedSensors/UWPSimulatedSensors/Assets/SpalshScreen-1152x1920.png -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/UWPSimulatedSensors/UWPSimulatedSensors/Assets/SpalshScreen-1240x600.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/DirectlyConnectedDevices/UWPSimulatedSensors/UWPSimulatedSensors/Assets/SpalshScreen-1240x600.png -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/UWPSimulatedSensors/UWPSimulatedSensors/Assets/SplashScreen.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/DirectlyConnectedDevices/UWPSimulatedSensors/UWPSimulatedSensors/Assets/SplashScreen.scale-200.png -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/UWPSimulatedSensors/UWPSimulatedSensors/Assets/Square150x150Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/DirectlyConnectedDevices/UWPSimulatedSensors/UWPSimulatedSensors/Assets/Square150x150Logo.scale-200.png -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/UWPSimulatedSensors/UWPSimulatedSensors/Assets/Square44x44Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/DirectlyConnectedDevices/UWPSimulatedSensors/UWPSimulatedSensors/Assets/Square44x44Logo.scale-200.png -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/UWPSimulatedSensors/UWPSimulatedSensors/Assets/Square44x44Logo.targetsize-24_altform-unplated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/DirectlyConnectedDevices/UWPSimulatedSensors/UWPSimulatedSensors/Assets/Square44x44Logo.targetsize-24_altform-unplated.png -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/UWPSimulatedSensors/UWPSimulatedSensors/Assets/StoreLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/DirectlyConnectedDevices/UWPSimulatedSensors/UWPSimulatedSensors/Assets/StoreLogo.png -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/UWPSimulatedSensors/UWPSimulatedSensors/Assets/Wide310x150Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/DirectlyConnectedDevices/UWPSimulatedSensors/UWPSimulatedSensors/Assets/Wide310x150Logo.scale-200.png -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/UWPSimulatedSensors/UWPSimulatedSensors/Package.appxmanifest: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | UWPSimulatedSensors 7 | olivi 8 | Assets\StoreLogo.png 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/UWPSimulatedSensors/UWPSimulatedSensors/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("UWPSimulatedSensors")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("UWPSimulatedSensors")] 13 | [assembly: AssemblyCopyright("Copyright © 2016")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Version information for an assembly consists of the following four values: 18 | // 19 | // Major Version 20 | // Minor Version 21 | // Build Number 22 | // Revision 23 | // 24 | // You can specify all the values or you can default the Build and Revision Numbers 25 | // by using the '*' as shown below: 26 | // [assembly: AssemblyVersion("1.0.*")] 27 | [assembly: AssemblyVersion("1.0.0.0")] 28 | [assembly: AssemblyFileVersion("1.0.0.0")] 29 | [assembly: ComVisible(false)] -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/UWPSimulatedSensors/UWPSimulatedSensors/Properties/Default.rd.xml: -------------------------------------------------------------------------------- 1 | 17 | 18 | 19 | 20 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/UWPSimulatedSensors/UWPSimulatedSensors/UWPSimulatedSensors_TemporaryKey.pfx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/DirectlyConnectedDevices/UWPSimulatedSensors/UWPSimulatedSensors/UWPSimulatedSensors_TemporaryKey.pfx -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/UWPSimulatedSensors/UWPSimulatedSensors/project.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "Microsoft.ApplicationInsights": "2.1.0", 4 | "Microsoft.ApplicationInsights.PersistenceChannel": "1.2.3", 5 | "Microsoft.ApplicationInsights.WindowsApps": "1.1.1", 6 | "Microsoft.Azure.Devices.Client": "1.1.1", 7 | "Microsoft.Azure.Devices.Shared": "1.0.2", 8 | "Microsoft.NETCore.UniversalWindowsPlatform": "5.2.2", 9 | "Newtonsoft.Json": "9.0.1", 10 | "ZXing.Net.Mobile": "2.1.47" 11 | }, 12 | "frameworks": { 13 | "uap10.0": {} 14 | }, 15 | "runtimes": { 16 | "win10-arm": {}, 17 | "win10-arm-aot": {}, 18 | "win10-x86": {}, 19 | "win10-x86-aot": {}, 20 | "win10-x64": {}, 21 | "win10-x64-aot": {} 22 | } 23 | } -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.Droid/Assets/AboutAssets.txt: -------------------------------------------------------------------------------- 1 | Any raw assets you want to be deployed with your application can be placed in 2 | this directory (and child directories) and given a Build Action of "AndroidAsset". 3 | 4 | These files will be deployed with your package and will be accessible using Android's 5 | AssetManager, like this: 6 | 7 | public class ReadAsset : Activity 8 | { 9 | protected override void OnCreate (Bundle bundle) 10 | { 11 | base.OnCreate (bundle); 12 | 13 | InputStream input = Assets.Open ("my_asset.txt"); 14 | } 15 | } 16 | 17 | Additionally, some Android functions will automatically load asset files: 18 | 19 | Typeface tf = Typeface.CreateFromAsset (Context.Assets, "fonts/samplefont.ttf"); 20 | -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.Droid/Helpers/Settings.cs: -------------------------------------------------------------------------------- 1 | /* 2 | // Helpers/Settings.cs This file was automatically added when you installed the Settings Plugin. If you are not using a PCL then comment this file back in to use it. 3 | using Plugin.Settings; 4 | using Plugin.Settings.Abstractions; 5 | 6 | namespace XamarinSimulatedSensors.Droid.Helpers 7 | { 8 | /// 9 | /// This is the Settings static class that can be used in your Core solution or in any 10 | /// of your client applications. All settings are laid out the same exact way with getters 11 | /// and setters. 12 | /// 13 | public static class Settings 14 | { 15 | private static ISettings AppSettings 16 | { 17 | get 18 | { 19 | return CrossSettings.Current; 20 | } 21 | } 22 | 23 | #region Setting Constants 24 | 25 | private const string SettingsKey = "settings_key"; 26 | private static readonly string SettingsDefault = string.Empty; 27 | 28 | #endregion 29 | 30 | 31 | public static string GeneralSettings 32 | { 33 | get 34 | { 35 | return AppSettings.GetValueOrDefault(SettingsKey, SettingsDefault); 36 | } 37 | set 38 | { 39 | AppSettings.AddOrUpdateValue(SettingsKey, value); 40 | } 41 | } 42 | 43 | } 44 | }*/ -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.Droid/Properties/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.Droid/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using Android.App; 4 | 5 | // Information about this assembly is defined by the following attributes. 6 | // Change them to the values specific to your project. 7 | 8 | [assembly: AssemblyTitle ("XamarinSimulatedSensors.Droid")] 9 | [assembly: AssemblyDescription ("")] 10 | [assembly: AssemblyConfiguration ("")] 11 | [assembly: AssemblyCompany ("")] 12 | [assembly: AssemblyProduct ("")] 13 | [assembly: AssemblyCopyright ("joe")] 14 | [assembly: AssemblyTrademark ("")] 15 | [assembly: AssemblyCulture ("")] 16 | 17 | // The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". 18 | // The form "{Major}.{Minor}.*" will automatically update the build and revision, 19 | // and "{Major}.{Minor}.{Build}.*" will update just the revision. 20 | 21 | [assembly: AssemblyVersion ("1.0.0")] 22 | 23 | // The following attributes are used to specify the signing key for the assembly, 24 | // if desired. See the Mono documentation for more information about signing. 25 | 26 | //[assembly: AssemblyDelaySign(false)] 27 | //[assembly: AssemblyKeyFile("")] 28 | 29 | -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.Droid/Resources/drawable-hdpi/Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.Droid/Resources/drawable-hdpi/Icon.png -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.Droid/Resources/drawable-mdpi/Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.Droid/Resources/drawable-mdpi/Icon.png -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.Droid/Resources/drawable-xhdpi/Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.Droid/Resources/drawable-xhdpi/Icon.png -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.Droid/Resources/drawable-xxhdpi/Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.Droid/Resources/drawable-xxhdpi/Icon.png -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.Droid/Resources/drawable-xxxhdpi/Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.Droid/Resources/drawable-xxxhdpi/Icon.png -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.Droid/Resources/drawable/CTDLogoMedium.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.Droid/Resources/drawable/CTDLogoMedium.png -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.Droid/Resources/values/Strings.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | Hello World, Click Me! 4 | XamarinSimulatedSensors.Droid 5 | 6 | -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.Droid/app.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.Droid/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.Windows/Helpers/Settings.cs: -------------------------------------------------------------------------------- 1 | /* 2 | // Helpers/Settings.cs This file was automatically added when you installed the Settings Plugin. If you are not using a PCL then comment this file back in to use it. 3 | using Plugin.Settings; 4 | using Plugin.Settings.Abstractions; 5 | 6 | namespace XamarinSimulatedSensors.Windows.Helpers 7 | { 8 | /// 9 | /// This is the Settings static class that can be used in your Core solution or in any 10 | /// of your client applications. All settings are laid out the same exact way with getters 11 | /// and setters. 12 | /// 13 | public static class Settings 14 | { 15 | private static ISettings AppSettings 16 | { 17 | get 18 | { 19 | return CrossSettings.Current; 20 | } 21 | } 22 | 23 | #region Setting Constants 24 | 25 | private const string SettingsKey = "settings_key"; 26 | private static readonly string SettingsDefault = string.Empty; 27 | 28 | #endregion 29 | 30 | 31 | public static string GeneralSettings 32 | { 33 | get 34 | { 35 | return AppSettings.GetValueOrDefault(SettingsKey, SettingsDefault); 36 | } 37 | set 38 | { 39 | AppSettings.AddOrUpdateValue(SettingsKey, value); 40 | } 41 | } 42 | 43 | } 44 | }*/ -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.Windows/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using System.Windows.Forms; 6 | 7 | namespace XamarinSimulatedSensors.Windows 8 | { 9 | static class Program 10 | { 11 | /// 12 | /// The main entry point for the application. 13 | /// 14 | [STAThread] 15 | static void Main() 16 | { 17 | Application.EnableVisualStyles(); 18 | Application.SetCompatibleTextRenderingDefault(false); 19 | Application.Run(new Form1()); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.Windows/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("XamarinSimulatedSensors.Windows")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("XamarinSimulatedSensors.Windows")] 13 | [assembly: AssemblyCopyright("Copyright © 2016")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("ba9cf85b-1d51-46d8-b6c2-7763c16f66e7")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.Windows/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace XamarinSimulatedSensors.Windows.Properties 12 | { 13 | 14 | 15 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 16 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] 17 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase 18 | { 19 | 20 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 21 | 22 | public static Settings Default 23 | { 24 | get 25 | { 26 | return defaultInstance; 27 | } 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.Windows/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.Windows/Resources/CTDLogoMedium.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.Windows/Resources/CTDLogoMedium.png -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.iOS/CTDLogoMedium.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.iOS/CTDLogoMedium.png -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.iOS/Entitlements.plist: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.iOS/Helpers/Settings.cs: -------------------------------------------------------------------------------- 1 | /* 2 | // Helpers/Settings.cs This file was automatically added when you installed the Settings Plugin. If you are not using a PCL then comment this file back in to use it. 3 | using Plugin.Settings; 4 | using Plugin.Settings.Abstractions; 5 | 6 | namespace XamarinSimulatedSensors.iOS.Helpers 7 | { 8 | /// 9 | /// This is the Settings static class that can be used in your Core solution or in any 10 | /// of your client applications. All settings are laid out the same exact way with getters 11 | /// and setters. 12 | /// 13 | public static class Settings 14 | { 15 | private static ISettings AppSettings 16 | { 17 | get 18 | { 19 | return CrossSettings.Current; 20 | } 21 | } 22 | 23 | #region Setting Constants 24 | 25 | private const string SettingsKey = "settings_key"; 26 | private static readonly string SettingsDefault = string.Empty; 27 | 28 | #endregion 29 | 30 | 31 | public static string GeneralSettings 32 | { 33 | get 34 | { 35 | return AppSettings.GetValueOrDefault(SettingsKey, SettingsDefault); 36 | } 37 | set 38 | { 39 | AppSettings.AddOrUpdateValue(SettingsKey, value); 40 | } 41 | } 42 | 43 | } 44 | }*/ -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.iOS/Info.plist: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | CFBundleDisplayName 6 | XamarinSimulatedSensors.iOS 7 | CFBundleIdentifier 8 | com.your-company.XamarinSimulatedSensors.iOS 9 | CFBundleShortVersionString 10 | 1.0 11 | CFBundleVersion 12 | 1.0 13 | LSRequiresIPhoneOS 14 | 15 | MinimumOSVersion 16 | 8.1 17 | UIDeviceFamily 18 | 19 | 1 20 | 2 21 | 22 | UILaunchStoryboardName 23 | LaunchScreen 24 | UIMainStoryboardFile 25 | Main 26 | UIMainStoryboardFile~ipad 27 | Main 28 | UIRequiredDeviceCapabilities 29 | 30 | armv7 31 | 32 | UISupportedInterfaceOrientations 33 | 34 | UIInterfaceOrientationPortrait 35 | UIInterfaceOrientationLandscapeLeft 36 | UIInterfaceOrientationLandscapeRight 37 | 38 | UISupportedInterfaceOrientations~ipad 39 | 40 | UIInterfaceOrientationPortrait 41 | UIInterfaceOrientationPortraitUpsideDown 42 | UIInterfaceOrientationLandscapeLeft 43 | UIInterfaceOrientationLandscapeRight 44 | 45 | XSAppIconAssets 46 | Resources/Images.xcassets/AppIcons.appiconset 47 | XSLaunchImageAssets 48 | Resources/Images.xcassets/LaunchImage.launchimage 49 | 50 | 51 | -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.iOS/Main.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | 5 | using Foundation; 6 | using UIKit; 7 | 8 | namespace XamarinSimulatedSensors.iOS 9 | { 10 | public class Application 11 | { 12 | // This is the main entry point of the application. 13 | static void Main (string[] args) 14 | { 15 | // if you want to use a different Application Delegate class from "AppDelegate" 16 | // you can specify it here. 17 | UIApplication.Main (args, null, "AppDelegate"); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.iOS/Resources/ITunesArtwork: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.iOS/Resources/ITunesArtwork -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.iOS/Resources/ITunesArtwork@2x: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.iOS/Resources/ITunesArtwork@2x -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.iOS/Resources/Images.xcassets/AppIcons.appiconset/Icon-60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.iOS/Resources/Images.xcassets/AppIcons.appiconset/Icon-60@2x.png -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.iOS/Resources/Images.xcassets/AppIcons.appiconset/Icon-60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.iOS/Resources/Images.xcassets/AppIcons.appiconset/Icon-60@3x.png -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.iOS/Resources/Images.xcassets/AppIcons.appiconset/Icon-76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.iOS/Resources/Images.xcassets/AppIcons.appiconset/Icon-76.png -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.iOS/Resources/Images.xcassets/AppIcons.appiconset/Icon-76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.iOS/Resources/Images.xcassets/AppIcons.appiconset/Icon-76@2x.png -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.iOS/Resources/Images.xcassets/AppIcons.appiconset/Icon-Small-40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.iOS/Resources/Images.xcassets/AppIcons.appiconset/Icon-Small-40.png -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.iOS/Resources/Images.xcassets/AppIcons.appiconset/Icon-Small-40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.iOS/Resources/Images.xcassets/AppIcons.appiconset/Icon-Small-40@2x.png -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.iOS/Resources/Images.xcassets/AppIcons.appiconset/Icon-Small-40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.iOS/Resources/Images.xcassets/AppIcons.appiconset/Icon-Small-40@3x.png -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.iOS/Resources/Images.xcassets/AppIcons.appiconset/Icon-Small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.iOS/Resources/Images.xcassets/AppIcons.appiconset/Icon-Small.png -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.iOS/Resources/Images.xcassets/AppIcons.appiconset/Icon-Small@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.iOS/Resources/Images.xcassets/AppIcons.appiconset/Icon-Small@2x.png -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.iOS/Resources/Images.xcassets/AppIcons.appiconset/Icon-Small@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.iOS/Resources/Images.xcassets/AppIcons.appiconset/Icon-Small@3x.png -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.iOS/Resources/Images.xcassets/Images.imageset/CTDLogoMedium.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.iOS/Resources/Images.xcassets/Images.imageset/CTDLogoMedium.png -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.iOS/Resources/Images.xcassets/Images.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images": [ 3 | { 4 | "scale": "1x", 5 | "idiom": "universal", 6 | "filename": "CTDLogoMedium.png" 7 | }, 8 | { 9 | "scale": "2x", 10 | "idiom": "universal" 11 | }, 12 | { 13 | "scale": "3x", 14 | "idiom": "universal" 15 | } 16 | ], 17 | "properties": { 18 | "template-rendering-intent": "" 19 | }, 20 | "info": { 21 | "version": 1, 22 | "author": "" 23 | } 24 | } -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.iOS/Resources/Images.xcassets/LaunchImage.launchimage/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images": [ 3 | { 4 | "orientation": "portrait", 5 | "extent": "full-screen", 6 | "scale": "1x", 7 | "size": "320x480", 8 | "idiom": "iphone", 9 | "filename": "Default.png" 10 | }, 11 | { 12 | "orientation": "portrait", 13 | "extent": "full-screen", 14 | "scale": "2x", 15 | "size": "640x960", 16 | "idiom": "iphone", 17 | "filename": "Default@2x.png" 18 | }, 19 | { 20 | "orientation": "portrait", 21 | "extent": "full-screen", 22 | "subtype": "retina4", 23 | "scale": "2x", 24 | "size": "640x1136", 25 | "idiom": "iphone", 26 | "filename": "Default-568h@2x.png" 27 | }, 28 | { 29 | "orientation": "portrait", 30 | "extent": "full-screen", 31 | "scale": "1x", 32 | "size": "768x1024", 33 | "idiom": "ipad", 34 | "filename": "Default-Portrait.png" 35 | }, 36 | { 37 | "orientation": "portrait", 38 | "extent": "full-screen", 39 | "scale": "2x", 40 | "size": "1536x2048", 41 | "idiom": "ipad", 42 | "filename": "Default-Portrait@2x.png" 43 | } 44 | ], 45 | "properties": {}, 46 | "info": { 47 | "version": 1, 48 | "author": "xcode" 49 | } 50 | } -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.iOS/Resources/Images.xcassets/LaunchImage.launchimage/Default-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.iOS/Resources/Images.xcassets/LaunchImage.launchimage/Default-568h@2x.png -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.iOS/Resources/Images.xcassets/LaunchImage.launchimage/Default-Portrait.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.iOS/Resources/Images.xcassets/LaunchImage.launchimage/Default-Portrait.png -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.iOS/Resources/Images.xcassets/LaunchImage.launchimage/Default-Portrait@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.iOS/Resources/Images.xcassets/LaunchImage.launchimage/Default-Portrait@2x.png -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.iOS/Resources/Images.xcassets/LaunchImage.launchimage/Default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.iOS/Resources/Images.xcassets/LaunchImage.launchimage/Default.png -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.iOS/Resources/Images.xcassets/LaunchImage.launchimage/Default@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.iOS/Resources/Images.xcassets/LaunchImage.launchimage/Default@2x.png -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.iOS/app.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.iOS/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors/Helpers/Settings.cs: -------------------------------------------------------------------------------- 1 | // Helpers/Settings.cs 2 | using Plugin.Settings; 3 | using Plugin.Settings.Abstractions; 4 | 5 | namespace XamarinSimulatedSensors.Helpers 6 | { 7 | /// 8 | /// This is the Settings static class that can be used in your Core solution or in any 9 | /// of your client applications. All settings are laid out the same exact way with getters 10 | /// and setters. 11 | /// 12 | public static class Settings 13 | { 14 | private static ISettings AppSettings 15 | { 16 | get 17 | { 18 | return CrossSettings.Current; 19 | } 20 | } 21 | 22 | #region Setting Constants 23 | 24 | private const string DisplayNameKey = "DisplayName"; 25 | private static readonly string DisplayNameDefault = string.Empty; 26 | 27 | private const string ConnectionStringKey = "ConnectionString"; 28 | private static readonly string ConnectionStringDefault = string.Empty; 29 | 30 | #endregion 31 | 32 | public static string DisplayName 33 | { 34 | get { return AppSettings.GetValueOrDefault(DisplayNameKey, DisplayNameDefault); } 35 | set { AppSettings.AddOrUpdateValue(DisplayNameKey, value); } 36 | } 37 | 38 | public static string ConnectionString 39 | { 40 | get { return AppSettings.GetValueOrDefault(ConnectionStringKey, ConnectionStringDefault); } 41 | set { AppSettings.AddOrUpdateValue(ConnectionStringKey, value); } 42 | } 43 | 44 | } 45 | } -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors/MyClass.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Text; 3 | using System.Diagnostics; 4 | using ConnectTheDotsHelper; 5 | using XamarinSimulatedSensors.Helpers; 6 | 7 | namespace XamarinSimulatedSensors 8 | { 9 | public class MyClass:ConnectTheDots 10 | { 11 | public MyClass() 12 | { 13 | this.DisplayName = Settings.DisplayName; 14 | this.ConnectionString = Settings.ConnectionString; 15 | this.Organization = "Microsoft"; 16 | this.Location = "My Location"; 17 | 18 | this.AddSensor("Temperature", "C"); 19 | this.AddSensor("Humidity", "%"); 20 | } 21 | 22 | public bool checkConfig() 23 | { 24 | if (((this.DisplayName != null) && (this.ConnectionString != null) && 25 | (this.DisplayName != "") && (this.ConnectionString != ""))) 26 | { 27 | Settings.DisplayName = this.DisplayName; 28 | Settings.ConnectionString = this.ConnectionString; 29 | return true; 30 | } 31 | else 32 | { 33 | return false; 34 | } 35 | } 36 | 37 | public void UpdateSensorData(string SensorName, double value) 38 | { 39 | if (this.Sensors.ContainsKey(SensorName)) 40 | this.Sensors[SensorName].message.value = value; 41 | } 42 | } 43 | } 44 | 45 | -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | 4 | // Information about this assembly is defined by the following attributes. 5 | // Change them to the values specific to your project. 6 | 7 | [assembly: AssemblyTitle("XamarinSimulatedSensors")] 8 | [assembly: AssemblyDescription("")] 9 | [assembly: AssemblyConfiguration("")] 10 | [assembly: AssemblyCompany("")] 11 | [assembly: AssemblyProduct("")] 12 | [assembly: AssemblyCopyright("joe")] 13 | [assembly: AssemblyTrademark("")] 14 | [assembly: AssemblyCulture("")] 15 | 16 | // The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". 17 | // The form "{Major}.{Minor}.*" will automatically update the build and revision, 18 | // and "{Major}.{Minor}.{Build}.*" will update just the revision. 19 | 20 | [assembly: AssemblyVersion("1.0.*")] 21 | 22 | // The following attributes are used to specify the signing key for the assembly, 23 | // if desired. See the Mono documentation for more information about signing. 24 | 25 | //[assembly: AssemblyDelaySign(false)] 26 | //[assembly: AssemblyKeyFile("")] 27 | 28 | -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors/app.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /Devices/GatewayConnectedDevices/Arduino DUE/Temperature/DS18B20/Libraries.md: -------------------------------------------------------------------------------- 1 | This example relies on the OneWire library. This is included in the standard Arduino IDE, but updates can be downloaded from the link in the Arduino playground site [here](http://playground.arduino.cc/Learning/OneWire). Import the library into your Arduino sketch before compiling. -------------------------------------------------------------------------------- /Devices/GatewayConnectedDevices/Arduino UNO/Accelerometer/Memsic2125Json/Libraries.md: -------------------------------------------------------------------------------- 1 | This example relies on the OneWire library. This is included in the standard Arduino IDE, but updates can be downloaded from the link in the Arduino playground site [here](http://playground.arduino.cc/Learning/OneWire). Import the library into your Arduino sketch before compiling. -------------------------------------------------------------------------------- /Devices/GatewayConnectedDevices/Arduino UNO/AnalogReadSerial/AnalogReadSerial.ino: -------------------------------------------------------------------------------- 1 | /* 2 | Modifications by Microsoft Open Technologies, Inc 3 | 4 | AnalogReadSerial 5 | Reads an analog input on pin 0, prints the result to the serial monitor. 6 | Attach the center pin of a potentiometer to pin A0, and the outside pins to +5V and ground. 7 | 8 | This example code is in the public domain. 9 | */ 10 | 11 | // the setup routine runs once when you press reset: 12 | void setup() { 13 | // initialize serial communication at 9600 bits per second: 14 | Serial.begin(9600); 15 | SerialUSB.begin(9600); 16 | } 17 | 18 | char buffer[100]; 19 | 20 | // the loop routine runs over and over again forever: 21 | void loop() { 22 | // read the input on analog pin 0: 23 | int sensorValue = analogRead(A0); 24 | 25 | // Turn into JSON format 26 | sprintf(buffer, "{ \"%s\" : %f }", "temp", (float) sensorValue); 27 | 28 | // print out the value you read: 29 | SerialUSB.println(buffer); 30 | Serial.println(buffer); 31 | delay(500); // delay in between reads 32 | } 33 | -------------------------------------------------------------------------------- /Devices/GatewayConnectedDevices/Arduino UNO/Combo_accelerometer_and_temperature/Memsic2125_plus_DS18B20/Libraries.md: -------------------------------------------------------------------------------- 1 | This example relies on the OneWire library. This is included in the standard Arduino IDE, but updates can be downloaded from the link in the Arduino playground site [here](http://playground.arduino.cc/Learning/OneWire). Import the library into your Arduino sketch before compiling. -------------------------------------------------------------------------------- /Devices/GatewayConnectedDevices/Arduino UNO/Temperature/DS18B20/Libraries.md: -------------------------------------------------------------------------------- 1 | This example relies on the OneWire library. This is included in the standard Arduino IDE, but updates can be downloaded from the link in the Arduino playground site [here](http://playground.arduino.cc/Learning/OneWire). Import the library into your Arduino sketch before compiling. -------------------------------------------------------------------------------- /Devices/GatewayConnectedDevices/Arduino UNO/Weather/WeatherShieldJson/ArduinoCOMCapture.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/GatewayConnectedDevices/Arduino UNO/Weather/WeatherShieldJson/ArduinoCOMCapture.jpg -------------------------------------------------------------------------------- /Devices/GatewayConnectedDevices/Arduino UNO/Weather/WeatherShieldJson/ArduinoWeatherShield.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/GatewayConnectedDevices/Arduino UNO/Weather/WeatherShieldJson/ArduinoWeatherShield.jpg -------------------------------------------------------------------------------- /Devices/GatewayConnectedDevices/Arduino UNO/Weather/WeatherShieldJson/Hardware.md: -------------------------------------------------------------------------------- 1 | To set up an Arduino UNO with a weather shield to monitor temperature, humidity, and a host of other things you will need to procure: 2 | 3 | 1. [Arduino Uno R3](http://arduino.cc/en/Main/ArduinoBoardUno) 4 | 1. [Sparkfun Weather Shield](https://www.sparkfun.com/products/12081) for Arduino 5 | 1. 4 stackable headers for the Arduino UNO R3 (1 @ 10 pin, 2 @ 8 pin, 1 @ 6 pin), as specified on the Arduino or Sparkfun sites. 6 | 1. USB A to B cable to connect the Arduino to the Raspberry Pi. Make sure it is USB 2.0 not 3.0, as the 3.0 connector does not fit the Arduino. 7 | 8 | You will need to solder the headers to the Weather Shield (or have someone do that for you - 10 minute job, max.) 9 | 10 | Note: Only the models above have been tested. The Weather Shield sample code from Sparkfun, for example, may need to be modified before it will work reliably on Arduino Due or Arduino Uno R2. -------------------------------------------------------------------------------- /Devices/GatewayConnectedDevices/Arduino UNO/Weather/WeatherShieldJson/Libraries.md: -------------------------------------------------------------------------------- 1 | The Weather Shield example relies on the HTU21D and MPL3115A2 libraries. Download the libraries from the link in the Weather Shield Hookup Guide on Sparkfun.com [here](https://learn.sparkfun.com/tutorials/weather-shield-hookup-guide), and then install them into your Documents/Arduino folder. Import the libraries into your Arduino sketch before compiling. -------------------------------------------------------------------------------- /Devices/GatewayConnectedDevices/Arduino UNO/Weather/WeatherShieldJson/PiAndArduinoPhoto.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/GatewayConnectedDevices/Arduino UNO/Weather/WeatherShieldJson/PiAndArduinoPhoto.jpg -------------------------------------------------------------------------------- /Devices/GatewayConnectedDevices/Arduino UNO/Weather/WeatherShieldJson/SCPRPI.cmd: -------------------------------------------------------------------------------- 1 | @echo off 2 | set puttydir="C:\Software\PuTTY\" 3 | set prjdir=..\ 4 | rem set rpi_ip=raspberrypi 5 | set rpi_ip=10.121.204.248 6 | set rpi_usr=pi 7 | set rpi_pw=raspberry 8 | 9 | 10 | echo Copying Gateway and logging files 11 | rem %puttydir%pscp -pw %rpi_pw% %prjdir%WensnPiVS01\WensnPiVS01.py %rpi_usr%@%rpi_ip%:RaspberryPiGateway/ 12 | %puttydir%pscp -pw %rpi_pw% WeatherShieldJson.ino %rpi_usr%@%rpi_ip%:GatewayService/ 13 | -------------------------------------------------------------------------------- /Devices/GatewayConnectedDevices/Arduino Zero/Weather/SeeedGroveJson/ArduinoCOMCapture.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/GatewayConnectedDevices/Arduino Zero/Weather/SeeedGroveJson/ArduinoCOMCapture.jpg -------------------------------------------------------------------------------- /Devices/GatewayConnectedDevices/Arduino Zero/Weather/SeeedGroveJson/ArduinoGroveShield.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/GatewayConnectedDevices/Arduino Zero/Weather/SeeedGroveJson/ArduinoGroveShield.jpg -------------------------------------------------------------------------------- /Devices/GatewayConnectedDevices/BLEMoisture/DeviceConfig.csv: -------------------------------------------------------------------------------- 1 | MACAddress,DisplayName,Organization,Location,MeasureName,UnitsOfMeasure 2 | 1,test,now,here,unknown,improbable 3 | 2,foo,bar,what,that,impossible 4 | *,none,none,none,none,none -------------------------------------------------------------------------------- /Devices/GatewayConnectedDevices/BLEMoisture/RedBear_BLE_nano/Configure.md: -------------------------------------------------------------------------------- 1 | RedBear BLE Nano with Decagon 10HS Moisture Sensor 2 | =================================================== 3 | 4 | Hardware Configuration 5 | ---------------------- 6 | 7 | 1. 10HS sensor input connected to P0\_4 8 | 9 | 2. 10HS power tied to P0\_9, P0\_10 and P0\_11 (this will be switched on for 20ms every 5 seconds to extend battery life) 10 | 11 | 3. 3xAA lithium cells connected to VIN. Batteries should last 4+ years with continuous use. 12 | 13 | Code Compilation 14 | ---------------- 15 | 16 | 1. Create a project at 17 | 18 | 2. Import the code in main.cpp 19 | 20 | 3. Import the BLE\_API and nRF51822 libraries 21 | 22 | 4. Ensure device target is set to BLE nano 23 | 24 | 5. Compile and download the generated .hex file to the BLE nano device 25 | 26 | Device Usage 27 | ------------ 28 | 29 | Since the data is sent over the advertising packet, no device paring is required. Simply turn the device on. 30 | -------------------------------------------------------------------------------- /Devices/GatewayConnectedDevices/BLEMoisture/SensorAgentConfig.csv: -------------------------------------------------------------------------------- 1 | GUID,Host,Port 2 | xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx,127.0.0.1,5002 3 | -------------------------------------------------------------------------------- /Devices/GatewayConnectedDevices/BLEMoisture/autorun2.sh: -------------------------------------------------------------------------------- 1 | # --------------------------------------------------------------------------------- 2 | # Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. 3 | # 4 | # The MIT License (MIT) 5 | # 6 | # Permission is hereby granted, free of charge, to any person obtaining a copy 7 | # of this software and associated documentation files (the "Software"), to deal 8 | # in the Software without restriction, including without limitation the rights 9 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | # copies of the Software, and to permit persons to whom the Software is 11 | # furnished to do so, subject to the following conditions: 12 | # 13 | # The above copyright notice and this permission notice shall be included in 14 | # all copies or substantial portions of the Software. 15 | # 16 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | # THE SOFTWARE. 23 | # --------------------------------------------------------------------------------- 24 | #!/bin/bash 25 | # 26 | export GW_HOME=/home/pi/ctdgtwy 27 | echo "$(date) => autorun2.sh: started" >> $GW_HOME/boot_sequence.log 28 | echo "Starting secondary script" 29 | cd $GW_HOME 30 | sudo python $GW_HOME/SensorAgent.py & 31 | echo "$(date) => autorun2.sh: finished" >> $GW_HOME/boot_sequence.log 32 | 33 | -------------------------------------------------------------------------------- /Devices/GatewayConnectedDevices/BLEMoisture/configuration.md: -------------------------------------------------------------------------------- 1 | Get the Bluetooth stack on Raspbian: 2 | 3 | sudo apt-get install bluetooth bluez-utils blueman 4 | sudo apt-get install python-bluez 5 | 6 | Enable the Bluetooth device 7 | 8 | sudo hciconfig hci0 up 9 | 10 | If the device ever gets disconnected try: 11 | 12 | sudo hciconfig hci0 down 13 | 14 | followed by: 15 | 16 | sudo hciconfig hci0 up 17 | -------------------------------------------------------------------------------- /Devices/GatewayConnectedDevices/BluetoothUARTExample/UartSetup.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/GatewayConnectedDevices/BluetoothUARTExample/UartSetup.pdf -------------------------------------------------------------------------------- /Devices/GatewayConnectedDevices/BluetoothUARTExample/readme: -------------------------------------------------------------------------------- 1 | BT example UART setup instruction: 2 | 3 | 0) Install raspbian wheezy on you raspberry, just follow instructions on raspbian official site. 4 | 1) Call SetupSerialBaudRate.py with need baudrate as argument - it will set up uart. 5 | 2) Reboot RPI 6 | 3) Install prerequisites: 7 | a. sudo apt-get install python-pip 8 | b. sudo pip install pySerial 9 | 4) Disable Raspberry: sudo shutdown -h now, unplug micro-usb after 10-15 seconds 10 | 5) Do the wiring. Raspberry PI pinout depends on Raspberry version. You need to find RX and TX lines on your. 11 | a. Connect TX on bluetooth module to RX on raspberry 12 | b. Connect RX on bluetooth module to TX on raspberry 13 | c. Connect Ground on bluetooth module to Ground on RPI 14 | d. Checkout what voltage your BT module uses. RPI has 5V or 3.3V. 15 | HC-06 module uses 3.3V, so if you have HC-06 BT module connect it's VCC to 3.3V on RPI. 16 | e. Power up raspberry. 17 | 6) Pair your device (cellphone, sensor or etc) with bluetooth module. 18 | 7) To start reading UART and sending data to gateway: python BluetoothUARTExample.py on your Raspberry 19 | 20 | Notes: 21 | 22 | 1) To check UART and wiring without bluetooth you can build test device using arduino and RPI. 23 | You can find instructions in UartSetup.pdf (same folder) 24 | 2) Clearly this instruction should work for any bluetooth module that supports UART. 25 | User just need to know uart baudrate and set it via script. -------------------------------------------------------------------------------- /Devices/GatewayConnectedDevices/BtUSB_2_BtUART_Example/ArduinoSensorMock/ArduinoSensorMock.ino: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | SoftwareSerial bt(4,5); 4 | 5 | void setup() 6 | { 7 | Serial.begin(9600); 8 | bt.begin(9600); 9 | randomSeed(analogRead(A1)); 10 | } 11 | 12 | void loop() 13 | { 14 | // init array with random bytes from my head 15 | static uint8_t bytes[2] = { 0x02, 0x1A }; 16 | while (bt.available() > 0) 17 | { 18 | char incomingByte = bt.read(); 19 | Serial.println(incomingByte); 20 | } 21 | bytes[0] = random(0xFF); 22 | bytes[1] = random(0xFF); 23 | uint16_t number = bytes[0] << 8 + bytes[1]; 24 | Serial.print("Sending to BT:"); 25 | Serial.println(number, DEC); 26 | bt.write(bytes, 2); 27 | delay(500); 28 | } -------------------------------------------------------------------------------- /Devices/GatewayConnectedDevices/BtUSB_2_BtUART_Example/BluetoothSetup.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/GatewayConnectedDevices/BtUSB_2_BtUART_Example/BluetoothSetup.pdf -------------------------------------------------------------------------------- /Devices/GatewayConnectedDevices/BtUSB_2_BtUART_Example/readme: -------------------------------------------------------------------------------- 1 | USB BT + Raspberry example setup instruction: 2 | 3 | 0) Install raspbian wheezy on you raspberry, just follow instructions on raspbian official site. 4 | 1) Please follow instructions from BluetoothSetup.pdf(same folder as readme) 5 | 2) During executing instruction you will obtain other side Bluetooth module's MAC(sensor MAC, cellphone MAC) 6 | Open the script and set BT_DEV_ADDR equal to obtained MAC. 7 | Also you can set some meta information about your organization and etc 8 | 3) Do the wiring. Construct/power up your bluetooth device on the other side. 9 | We tested on Arduino + HC-06 UART module on other side and ACORP USB BT module + Raspberry. 10 | 11 | Notes: 12 | 13 | 1) This method should work with USB Bluetooth modules from here http://elinux.org/RPi_USB_Bluetooth_adapters. 14 | This list is not complete, code was tested on ACORP BT module, but if you use device from the list, 15 | you most probably will succeed. 16 | 2) Sensor mock is implemented on arduino, you can find it's sketch in ArduinoSensorMock folder. 17 | Upload it to arduino, connect uart bluetooth to arduino, set MAC in python script and you are ready to go. 18 | Sketch was tested on HC-06 UART bluetooth module, but should work on any UART BT module. Just set correct baudrate in the sketch. -------------------------------------------------------------------------------- /Devices/GatewayConnectedDevices/Hydrology/Documentation/Breadboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/GatewayConnectedDevices/Hydrology/Documentation/Breadboard.png -------------------------------------------------------------------------------- /Devices/GatewayConnectedDevices/Hydrology/Documentation/Schematic.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/GatewayConnectedDevices/Hydrology/Documentation/Schematic.pdf -------------------------------------------------------------------------------- /Devices/GatewayConnectedDevices/Hydrology/autorun2.sh: -------------------------------------------------------------------------------- 1 | # --------------------------------------------------------------------------------- 2 | # Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. 3 | # 4 | # The MIT License (MIT) 5 | # 6 | # Permission is hereby granted, free of charge, to any person obtaining a copy 7 | # of this software and associated documentation files (the "Software"), to deal 8 | # in the Software without restriction, including without limitation the rights 9 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | # copies of the Software, and to permit persons to whom the Software is 11 | # furnished to do so, subject to the following conditions: 12 | # 13 | # The above copyright notice and this permission notice shall be included in 14 | # all copies or substantial portions of the Software. 15 | # 16 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | # THE SOFTWARE. 23 | # --------------------------------------------------------------------------------- 24 | #!/bin/bash 25 | # 26 | export GW_HOME=/home/pi/ctdgtwy 27 | echo "$(date) => autorun2.sh: started" >> $GW_HOME/boot_sequence.log 28 | echo "Starting secondary script" 29 | cd $GW_HOME 30 | sudo python $GW_HOME/SensorAgent.py & 31 | echo "$(date) => autorun2.sh: finished" >> $GW_HOME/boot_sequence.log 32 | 33 | -------------------------------------------------------------------------------- /Devices/GatewayConnectedDevices/WensnSoundLevelMeter/WensnPiVS01/autorun2.sh: -------------------------------------------------------------------------------- 1 | # --------------------------------------------------------------------------------- 2 | # Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. 3 | # 4 | # The MIT License (MIT) 5 | # 6 | # Permission is hereby granted, free of charge, to any person obtaining a copy 7 | # of this software and associated documentation files (the "Software"), to deal 8 | # in the Software without restriction, including without limitation the rights 9 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | # copies of the Software, and to permit persons to whom the Software is 11 | # furnished to do so, subject to the following conditions: 12 | # 13 | # The above copyright notice and this permission notice shall be included in 14 | # all copies or substantial portions of the Software. 15 | # 16 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | # THE SOFTWARE. 23 | # --------------------------------------------------------------------------------- 24 | #!/bin/bash 25 | # 26 | export GW_HOME=/home/pi/ctdgtwy 27 | echo "$(date) => autorun2.sh: started" >> $GW_HOME/boot_sequence.log 28 | echo "Starting secondary script" 29 | cd $GW_HOME 30 | sudo python $GW_HOME/WensnPiVS01.py & 31 | echo "$(date) => autorun2.sh: finished" >> $GW_HOME/boot_sequence.log 32 | 33 | -------------------------------------------------------------------------------- /Devices/Gateways/GatewayService/AdafruitCableDriverInstall.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/Gateways/GatewayService/AdafruitCableDriverInstall.png -------------------------------------------------------------------------------- /Devices/Gateways/GatewayService/AdafruitUSBSerialCable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/Gateways/GatewayService/AdafruitUSBSerialCable.png -------------------------------------------------------------------------------- /Devices/Gateways/GatewayService/Common/Adapter/SensorEndpoint.cs: -------------------------------------------------------------------------------- 1 | // --------------------------------------------------------------------------------- 2 | // Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. 3 | // 4 | // The MIT License (MIT) 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | // --------------------------------------------------------------------------------- 24 | 25 | namespace Microsoft.ConnectTheDots.Common 26 | { 27 | //--// 28 | 29 | public class SensorEndpoint 30 | { 31 | public string Name { get; set; } 32 | 33 | public string Host { get; set; } 34 | 35 | public int Port { get; set; } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /Devices/Gateways/GatewayService/Common/ILogger.cs: -------------------------------------------------------------------------------- 1 | // --------------------------------------------------------------------------------- 2 | // Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. 3 | // 4 | // The MIT License (MIT) 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | // --------------------------------------------------------------------------------- 24 | 25 | namespace Microsoft.ConnectTheDots.Common 26 | { 27 | public interface ILogger 28 | { 29 | void Flush( ); 30 | 31 | void LogError( string logMessage ); 32 | 33 | void LogInfo( string logMessage ); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /Devices/Gateways/GatewayService/Common/Platform.cs: -------------------------------------------------------------------------------- 1 | // --------------------------------------------------------------------------------- 2 | // Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. 3 | // 4 | // The MIT License (MIT) 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | // --------------------------------------------------------------------------------- 24 | 25 | namespace Microsoft.ConnectTheDots.Common 26 | { 27 | using System; 28 | 29 | public static class Platform 30 | { 31 | public static bool IsMono 32 | { 33 | get 34 | { 35 | return Type.GetType( "Mono.Runtime" ) != null; 36 | } 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /Devices/Gateways/GatewayService/Common/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Devices/Gateways/GatewayService/DeviceManagerUSBSerial.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/Gateways/GatewayService/DeviceManagerUSBSerial.png -------------------------------------------------------------------------------- /Devices/Gateways/GatewayService/Gateway/Adapter/IDeviceAdapter.cs: -------------------------------------------------------------------------------- 1 | // --------------------------------------------------------------------------------- 2 | // Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. 3 | // 4 | // The MIT License (MIT) 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | // --------------------------------------------------------------------------------- 24 | 25 | namespace Microsoft.ConnectTheDots.Gateway 26 | { 27 | using System; 28 | using Microsoft.ConnectTheDots.Common; 29 | 30 | //--// 31 | 32 | public interface IDeviceAdapter 33 | { 34 | bool Start( Func enqueue ); 35 | 36 | bool Stop( ); 37 | 38 | //leave endpoint null for Data Intakes that don't expect any endpoints 39 | bool SetEndpoint( SensorEndpoint endpoint = null ); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /Devices/Gateways/GatewayService/Gateway/App.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /Devices/Gateways/GatewayService/Gateway/DeviceAdapter/IDeviceAdapter.cs: -------------------------------------------------------------------------------- 1 | // --------------------------------------------------------------------------------- 2 | // Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. 3 | // 4 | // The MIT License (MIT) 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | // --------------------------------------------------------------------------------- 24 | 25 | namespace Microsoft.ConnectTheDots.Gateway 26 | { 27 | using System; 28 | 29 | //--// 30 | 31 | public interface IDeviceAdapter 32 | { 33 | bool Start( Func enqueue ); 34 | 35 | bool Stop( ); 36 | 37 | //leave endpoint null for Data Intakes that don't expect any endpoints 38 | bool SetEndpoint( SensorEndpoint endpoint = null ); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /Devices/Gateways/GatewayService/Gateway/DeviceAdapter/SensorEndpoint.cs: -------------------------------------------------------------------------------- 1 | // --------------------------------------------------------------------------------- 2 | // Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. 3 | // 4 | // The MIT License (MIT) 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | // --------------------------------------------------------------------------------- 24 | 25 | namespace Microsoft.ConnectTheDots.Gateway 26 | { 27 | 28 | //--// 29 | 30 | public class SensorEndpoint 31 | { 32 | public string Name { get; set; } 33 | 34 | public string Host { get; set; } 35 | 36 | public int Port { get; set; } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /Devices/Gateways/GatewayService/Gateway/IGatewayService.cs: -------------------------------------------------------------------------------- 1 | // --------------------------------------------------------------------------------- 2 | // Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. 3 | // 4 | // The MIT License (MIT) 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | // --------------------------------------------------------------------------------- 24 | 25 | namespace Microsoft.ConnectTheDots.Gateway 26 | { 27 | using System.ServiceModel; 28 | using System.ServiceModel.Web; 29 | 30 | //--// 31 | 32 | [ServiceContract( Namespace = "GatewayService" )] 33 | public interface IGatewayService : IService 34 | { 35 | [WebGet( )] 36 | [OperationContract] 37 | int Enqueue( string jsonData ); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /Devices/Gateways/GatewayService/Gateway/ServiceInstantiation/IService.cs: -------------------------------------------------------------------------------- 1 | // --------------------------------------------------------------------------------- 2 | // Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. 3 | // 4 | // The MIT License (MIT) 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | // --------------------------------------------------------------------------------- 24 | 25 | namespace Microsoft.ConnectTheDots.Gateway 26 | { 27 | public interface IService 28 | { 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /Devices/Gateways/GatewayService/Gateway/Utils/MessageSender/IMessageSender.cs: -------------------------------------------------------------------------------- 1 | // --------------------------------------------------------------------------------- 2 | // Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. 3 | // 4 | // The MIT License (MIT) 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | // --------------------------------------------------------------------------------- 24 | 25 | namespace Microsoft.ConnectTheDots.Gateway 26 | { 27 | using Microsoft.ConnectTheDots.Common.Threading; 28 | 29 | //--// 30 | 31 | public interface IMessageSender 32 | { 33 | TaskWrapper SendMessage( T data ); 34 | TaskWrapper SendSerialized( string jsonData ); 35 | 36 | void Close( ); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /Devices/Gateways/GatewayService/Gateway/Utils/OperationStatus/ErrorCode.cs: -------------------------------------------------------------------------------- 1 | // --------------------------------------------------------------------------------- 2 | // Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. 3 | // 4 | // The MIT License (MIT) 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | // --------------------------------------------------------------------------------- 24 | 25 | namespace Microsoft.ConnectTheDots.Gateway 26 | { 27 | public enum ErrorCode 28 | { 29 | Success = 0, 30 | Fail = 1, 31 | InternalError = 2, 32 | NoDataReceived = 200, 33 | } 34 | } -------------------------------------------------------------------------------- /Devices/Gateways/GatewayService/Gateway/Utils/Queue/IAsyncQueue.cs: -------------------------------------------------------------------------------- 1 | // --------------------------------------------------------------------------------- 2 | // Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. 3 | // 4 | // The MIT License (MIT) 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | // --------------------------------------------------------------------------------- 24 | 25 | namespace Microsoft.ConnectTheDots.Gateway 26 | { 27 | using Microsoft.ConnectTheDots.Common.Threading; 28 | 29 | //--// 30 | 31 | public interface IAsyncQueue 32 | { 33 | void Push( T item ); 34 | 35 | TaskWrapper> TryPop( ); 36 | 37 | int Count { get; } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /Devices/Gateways/GatewayService/Gateway/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /Devices/Gateways/GatewayService/Hardware.md: -------------------------------------------------------------------------------- 1 | To set up a Raspberry Pi as a simple gateway for connecting Arduino or other sensors to Azure you will need to procure: 2 | 3 | 1. [Raspberry Pi B/B+](http://www.raspberrypi.org/products/model-b-plus/) 4 | 2. Power supply 5 | 3. Case (optional) 6 | 7 | **Note**: Only the model above has been tested. -------------------------------------------------------------------------------- /Devices/Gateways/GatewayService/NanoNetworkInterfaces.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/Gateways/GatewayService/NanoNetworkInterfaces.png -------------------------------------------------------------------------------- /Devices/Gateways/GatewayService/NanoWPAConfig.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/Gateways/GatewayService/NanoWPAConfig.png -------------------------------------------------------------------------------- /Devices/Gateways/GatewayService/PISerialDebugConnection.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/Gateways/GatewayService/PISerialDebugConnection.png -------------------------------------------------------------------------------- /Devices/Gateways/GatewayService/PISerialPinout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/Gateways/GatewayService/PISerialPinout.png -------------------------------------------------------------------------------- /Devices/Gateways/GatewayService/PiBoard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/Gateways/GatewayService/PiBoard.png -------------------------------------------------------------------------------- /Devices/Gateways/GatewayService/Scripts/RaspberryPi/GetLogFile.cmd: -------------------------------------------------------------------------------- 1 | @echo off 2 | REM // --------------------------------------------------------------------------------- 3 | REM // Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. 4 | REM // 5 | REM // The MIT License (MIT) 6 | REM // 7 | REM // Permission is hereby granted, free of charge, to any person obtaining a copy 8 | REM // of this software and associated documentation files (the "Software"), to deal 9 | REM // in the Software without restriction, including without limitation the rights 10 | REM // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | REM // copies of the Software, and to permit persons to whom the Software is 12 | REM // furnished to do so, subject to the following conditions: 13 | REM // 14 | REM // The above copyright notice and this permission notice shall be included in 15 | REM // all copies or substantial portions of the Software. 16 | REM // 17 | REM // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | REM // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | REM // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | REM // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | REM // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | REM // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 23 | REM // THE SOFTWARE. 24 | REM // --------------------------------------------------------------------------------- 25 | 26 | set puttydir="C:\software\PuTTY\" 27 | set prjdir=..\ 28 | set rpi_ip=10.121.204.204 29 | set rpi_usr=pi 30 | set rpi_pw=raspberry 31 | 32 | echo Copying log files 33 | %puttydir%pscp %rpi_usr%@%rpi_ip%:/var/lib/mono/eventlog/Application/*.log ..\bin\release\logs\ 34 | -------------------------------------------------------------------------------- /Devices/Gateways/GatewayService/Scripts/RaspberryPi/Modified/certificate_update.sh: -------------------------------------------------------------------------------- 1 | # --------------------------------------------------------------------------------- 2 | # Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. 3 | # 4 | # The MIT License (MIT) 5 | # 6 | # Permission is hereby granted, free of charge, to any person obtaining a copy 7 | # of this software and associated documentation files (the "Software"), to dea 8 | # in the Software without restriction, including without limitation the rights 9 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | # copies of the Software, and to permit persons to whom the Software is 11 | # furnished to do so, subject to the following conditions: 12 | # 13 | # The above copyright notice and this permission notice shall be included in 14 | # all copies or substantial portions of the Software. 15 | # 16 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | # THE SOFTWARE. 23 | # --------------------------------------------------------------------------------- 24 | #!/bin/bash 25 | 26 | # stuff that should be done once on a device 27 | 28 | # import root certificates into the mono trust store (IoT Hub connection will fail with a certificate trust error if this is not done) 29 | mozroots --import --ask-remove 30 | -------------------------------------------------------------------------------- /Devices/Gateways/GatewayService/Scripts/RaspberryPi/Modified/kill_all.sh: -------------------------------------------------------------------------------- 1 | # --------------------------------------------------------------------------------- 2 | # Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. 3 | # 4 | # The MIT License (MIT) 5 | # 6 | # Permission is hereby granted, free of charge, to any person obtaining a copy 7 | # of this software and associated documentation files (the "Software"), to deal 8 | # in the Software without restriction, including without limitation the rights 9 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | # copies of the Software, and to permit persons to whom the Software is 11 | # furnished to do so, subject to the following conditions: 12 | # 13 | # The above copyright notice and this permission notice shall be included in 14 | # all copies or substantial portions of the Software. 15 | # 16 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | # THE SOFTWARE. 23 | # --------------------------------------------------------------------------------- 24 | #!/bin/bash 25 | 26 | # 27 | # to kill the monitor we need to kill the proces that is sleeping, and python, mono as well 28 | # 29 | for KILLPID in `ps axo pid,ppid,cmd | grep -i 'sleep' | awk '{ print $2;}'`; do sudo kill -9 $KILLPID; done 30 | for KILLPID in `ps axo pid,ppid,cmd | grep -i 'mono' | awk '{ print $1;}'`; do sudo kill -9 $KILLPID; done 31 | for KILLPID in `ps axo pid,ppid,cmd | grep -i 'python' | awk '{ print $1;}'`; do sudo kill -9 $KILLPID; done -------------------------------------------------------------------------------- /Devices/Gateways/GatewayService/Scripts/RaspberryPi/autorunUart2UsbBt.sh: -------------------------------------------------------------------------------- 1 | # --------------------------------------------------------------------------------- 2 | # Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. 3 | # 4 | # The MIT License (MIT) 5 | # 6 | # Permission is hereby granted, free of charge, to any person obtaining a copy 7 | # of this software and associated documentation files (the "Software"), to deal 8 | # in the Software without restriction, including without limitation the rights 9 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | # copies of the Software, and to permit persons to whom the Software is 11 | # furnished to do so, subject to the following conditions: 12 | # 13 | # The above copyright notice and this permission notice shall be included in 14 | # all copies or substantial portions of the Software. 15 | # 16 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | # THE SOFTWARE. 23 | # --------------------------------------------------------------------------------- 24 | #!/bin/bash 25 | # 26 | export GW_HOME=/home/pi/ctdgtwy 27 | echo "$(date) => autorunUartBT.sh: started" >> $GW_HOME/boot_sequence.log 28 | echo "Starting secondary script" 29 | cd $GW_HOME 30 | sudo python $GW_HOME/BtUSB_2_BtUART_Example.py & 31 | echo "$(date) => autorunUartBT.sh: finished" >> $GW_HOME/boot_sequence.log 32 | 33 | -------------------------------------------------------------------------------- /Devices/Gateways/GatewayService/Scripts/RaspberryPi/autorunUartBT.sh: -------------------------------------------------------------------------------- 1 | # --------------------------------------------------------------------------------- 2 | # Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. 3 | # 4 | # The MIT License (MIT) 5 | # 6 | # Permission is hereby granted, free of charge, to any person obtaining a copy 7 | # of this software and associated documentation files (the "Software"), to deal 8 | # in the Software without restriction, including without limitation the rights 9 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | # copies of the Software, and to permit persons to whom the Software is 11 | # furnished to do so, subject to the following conditions: 12 | # 13 | # The above copyright notice and this permission notice shall be included in 14 | # all copies or substantial portions of the Software. 15 | # 16 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | # THE SOFTWARE. 23 | # --------------------------------------------------------------------------------- 24 | #!/bin/bash 25 | # 26 | export GW_HOME=/home/pi/ctdgtwy 27 | echo "$(date) => autorunUartBT.sh: started" >> $GW_HOME/boot_sequence.log 28 | echo "Starting secondary script" 29 | cd $GW_HOME 30 | sudo python $GW_HOME/BluetoothUARTExample.py & 31 | echo "$(date) => autorunUartBT.sh: finished" >> $GW_HOME/boot_sequence.log 32 | 33 | -------------------------------------------------------------------------------- /Devices/Gateways/GatewayService/Scripts/RaspberryPi/autorunWensnSoundSensor.sh: -------------------------------------------------------------------------------- 1 | # --------------------------------------------------------------------------------- 2 | # Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. 3 | # 4 | # The MIT License (MIT) 5 | # 6 | # Permission is hereby granted, free of charge, to any person obtaining a copy 7 | # of this software and associated documentation files (the "Software"), to deal 8 | # in the Software without restriction, including without limitation the rights 9 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | # copies of the Software, and to permit persons to whom the Software is 11 | # furnished to do so, subject to the following conditions: 12 | # 13 | # The above copyright notice and this permission notice shall be included in 14 | # all copies or substantial portions of the Software. 15 | # 16 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | # THE SOFTWARE. 23 | # --------------------------------------------------------------------------------- 24 | #!/bin/bash 25 | # 26 | export GW_HOME=/home/pi/ctdgtwy 27 | echo "$(date) => autorunWensnSoundSensor.sh: started" >> $GW_HOME/boot_sequence.log 28 | echo "Starting secondary script" 29 | cd $GW_HOME 30 | sudo python $GW_HOME/WensnPiVS01.py & 31 | echo "$(date) => autorunWensnSoundSensor.sh: finished" >> $GW_HOME/boot_sequence.log 32 | 33 | -------------------------------------------------------------------------------- /Devices/Gateways/GatewayService/Scripts/RaspberryPi/certificate_update.sh: -------------------------------------------------------------------------------- 1 | # --------------------------------------------------------------------------------- 2 | # Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. 3 | # 4 | # The MIT License (MIT) 5 | # 6 | # Permission is hereby granted, free of charge, to any person obtaining a copy 7 | # of this software and associated documentation files (the "Software"), to dea 8 | # in the Software without restriction, including without limitation the rights 9 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | # copies of the Software, and to permit persons to whom the Software is 11 | # furnished to do so, subject to the following conditions: 12 | # 13 | # The above copyright notice and this permission notice shall be included in 14 | # all copies or substantial portions of the Software. 15 | # 16 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | # THE SOFTWARE. 23 | # --------------------------------------------------------------------------------- 24 | #!/bin/bash 25 | 26 | # stuff that should be done once on a device 27 | 28 | # import root certificates into the mono trust store (IoT Hub connection will fail with a certificate trust error if this is not done) 29 | mozroots --import --ask-remove 30 | -------------------------------------------------------------------------------- /Devices/Gateways/GatewayService/Scripts/RaspberryPi/kill_all.sh: -------------------------------------------------------------------------------- 1 | # --------------------------------------------------------------------------------- 2 | # Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. 3 | # 4 | # The MIT License (MIT) 5 | # 6 | # Permission is hereby granted, free of charge, to any person obtaining a copy 7 | # of this software and associated documentation files (the "Software"), to deal 8 | # in the Software without restriction, including without limitation the rights 9 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | # copies of the Software, and to permit persons to whom the Software is 11 | # furnished to do so, subject to the following conditions: 12 | # 13 | # The above copyright notice and this permission notice shall be included in 14 | # all copies or substantial portions of the Software. 15 | # 16 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | # THE SOFTWARE. 23 | # --------------------------------------------------------------------------------- 24 | #!/bin/bash 25 | 26 | # 27 | # to kill the monitor we need to kill the proces that is sleeping, and python, mono as well 28 | # 29 | for KILLPID in `ps axo pid,ppid,cmd | grep -i 'sleep' | awk '{ print $2;}'`; do sudo kill -9 $KILLPID; done 30 | for KILLPID in `ps axo pid,ppid,cmd | grep -i 'mono' | awk '{ print $1;}'`; do sudo kill -9 $KILLPID; done 31 | for KILLPID in `ps axo pid,ppid,cmd | grep -i 'python' | awk '{ print $1;}'`; do sudo kill -9 $KILLPID; done -------------------------------------------------------------------------------- /Devices/Gateways/GatewayService/Scripts/RaspberryPi/setupWifi.py: -------------------------------------------------------------------------------- 1 | # https://learn.adafruit.com/adafruits-raspberry-pi-lesson-3-network-setup/setting-up-wifi-with-occidentalis 2 | import sys 3 | 4 | interfacesFile = '/etc/network/interfaces' 5 | allowHotPlug = 'allow-hotplug wlan0\n' 6 | autoWlan = 'auto wlan0\n' 7 | wlanDhcp = 'iface wlan0 inet dhcp\n' 8 | 9 | def main(argv): 10 | print 'Please run this script with sudo!' 11 | if (len(argv) < 3): 12 | print 'Not enough args, please provide ssid and password for wifi' 13 | return 14 | 15 | ssid = argv[1] 16 | psk = argv[2] 17 | wpaSsidStr = '\twpa-ssid ' + '\"' + ssid + '\"' + '\n' 18 | wpaPskStr = '\twpa-psk ' + '\"' + psk + '\"' + '\n' 19 | 20 | interfacesFd = open(interfacesFile, "a") 21 | interfacesFd.write(allowHotPlug) 22 | interfacesFd.write(autoWlan) 23 | interfacesFd.write('\n') 24 | interfacesFd.write(wlanDhcp) 25 | interfacesFd.write(wpaSsidStr) 26 | interfacesFd.write(wpaPskStr) 27 | interfacesFd.close() 28 | 29 | print 'Done!' 30 | 31 | if __name__ == "__main__": 32 | main(sys.argv) -------------------------------------------------------------------------------- /Devices/Gateways/GatewayService/Scripts/RaspberryPi/setup_autostart.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh -e 2 | 3 | sudo cp $HOME/ctdgtwy/deploy_and_start_ctd_on_boot.sh /etc/init.d/ 4 | sudo update-rc.d deploy_and_start_ctd_on_boot.sh defaults 5 | -------------------------------------------------------------------------------- /Devices/Gateways/GatewayService/Scripts/ScriptConverter/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /Devices/Gateways/GatewayService/Scripts/ScriptConverter/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("ScriptConverter")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("ScriptConverter")] 13 | [assembly: AssemblyCopyright("Copyright © 2015")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("ddb7bb09-4837-4bcd-ae92-076956981031")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /Devices/Gateways/GatewayService/ServiceMonitor/App.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /Devices/Gateways/GatewayService/ServiceMonitor/IMonitor.cs: -------------------------------------------------------------------------------- 1 | // --------------------------------------------------------------------------------- 2 | // Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. 3 | // 4 | // The MIT License (MIT) 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | // --------------------------------------------------------------------------------- 24 | 25 | namespace Microsoft.ConnectTheDots.GatewayServiceMonitor 26 | { 27 | 28 | //--// 29 | 30 | interface IMonitor 31 | { 32 | bool Lock( string monitoringTarget ); 33 | 34 | void Monitor( ); 35 | 36 | void QuitMonitor( ); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /Devices/Gateways/GatewayService/ServiceMonitor/NLog.config: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 9 | 10 | 11 | 12 | 16 | 17 | 18 | 19 | 20 | 21 | 24 | 25 | -------------------------------------------------------------------------------- /Devices/Gateways/GatewayService/ServiceMonitor/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Devices/Gateways/GatewayService/Tests/BatchSenderThreadTest/App.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /Devices/Gateways/GatewayService/Tests/CoreTest/ITest.cs: -------------------------------------------------------------------------------- 1 | // --------------------------------------------------------------------------------- 2 | // Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. 3 | // 4 | // The MIT License (MIT) 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | // --------------------------------------------------------------------------------- 24 | 25 | namespace Microsoft.ConnectTheDots.Test 26 | { 27 | interface ITest 28 | { 29 | void Run( ); 30 | void Completed( ); 31 | int TotalMessagesSent { get; } 32 | int TotalMessagesToSend { get; } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /Devices/Gateways/GatewayService/Tests/CoreTest/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /Devices/Gateways/GatewayService/Tests/DeviceAdapterTestMock/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /Devices/Gateways/GatewayService/Tests/SocketServiceDeviceMock/App.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /Devices/Gateways/GatewayService/Tests/SocketServiceDeviceMock/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /Devices/Gateways/GatewayService/UpgradeLog.htm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/Gateways/GatewayService/UpgradeLog.htm -------------------------------------------------------------------------------- /Devices/Gateways/GatewayService/WindowsEXE/NLog.config: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 9 | 10 | 11 | 12 | 16 | 17 | 18 | 19 | 20 | 21 | 24 | 25 | -------------------------------------------------------------------------------- /Devices/Gateways/GatewayService/WindowsEXE/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Devices/Gateways/GatewayService/WindowsService/NLog.config: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 9 | 10 | 11 | 12 | 16 | 17 | 18 | 19 | 20 | 21 | 24 | 25 | -------------------------------------------------------------------------------- /Devices/Gateways/GatewayService/WindowsService/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Devices/Gateways/GatewayService/ifconfig.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/Devices/Gateways/GatewayService/ifconfig.png -------------------------------------------------------------------------------- /images/Architecture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/images/Architecture.png -------------------------------------------------------------------------------- /images/Arduino-Pi-IoT.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/images/Arduino-Pi-IoT.jpg -------------------------------------------------------------------------------- /images/CTD-logo-v5-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/images/CTD-logo-v5-02.png -------------------------------------------------------------------------------- /images/ConnectTheDots-Temp-and-Hmdt-Architecture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/images/ConnectTheDots-Temp-and-Hmdt-Architecture.png -------------------------------------------------------------------------------- /images/ConnectTheDots-architecture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/images/ConnectTheDots-architecture.png -------------------------------------------------------------------------------- /images/WebsiteCapture.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/connectthedots/fd72e90a29620661e0c6b7521bc1818e909a9fc3/images/WebsiteCapture.jpg -------------------------------------------------------------------------------- /license.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. 2 | 3 | The MIT License (MIT) 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | --------------------------------------------------------------------------------