Skip to content

Instantly share code, notes, and snippets.

@chrismckelt
chrismckelt / DeployMaster.psm1
Last active May 25, 2022 00:53
Azure Powershell deployment commands
$ErrorActionPreference = "Stop"
$global:_subscriptionId = $null
$global:_workload = $null
$global:_workloadCore = $null
$global:_regionCode = $null
$global:_keyvault_name = $null
$global:_storageAccount = $null
$global:_storageContext = $null
$global:_storageAccountConnectionString = $null
$global:_logicAppJson = $null
@chrismckelt
chrismckelt / TimescaleDB.cs
Last active April 12, 2020 06:40
TimescaleDB.cs
var connString = "Server=timescaledb;Port=5432;Database=postgres;User Id=postgres;Password=PASSWORD;";
using (var conn = new NpgsqlConnection(connString))
{
string sql = $"insert into Table_001 VALUES ('{p.TimeStamp}',{p.IsAirConditionerOn},{p.Temperature},'{p.TagKey}')";
await conn.OpenAsync();
using (var cmd = new NpgsqlCommand(sql, conn))
{
await cmd.ExecuteNonQueryAsync();
}
}
@chrismckelt
chrismckelt / TimescaleDB.sql
Last active April 12, 2020 06:39
TimescaleDB.sql
CREATE TABLE IF NOT EXISTS table_001
(
"Timestamp" timestamp with time zone not null,
IsAirConditionerOn smallint not null,
Temperature decimal not null,
tagkey varchar not null
);
ALTER TABLE table_001 OWNER TO postgres;
@chrismckelt
chrismckelt / TimescaleDB.json
Last active April 12, 2020 06:41
TimescaleDB.json
{
"TimescaleDB": {
"version": "1.0",
"type": "docker",
"status": "running",
"restartPolicy": "always",
"settings": {
"image": "${MODULES.TimescaleDb.debug}",
"createOptions": {
"HostConfig": {
@chrismckelt
chrismckelt / TimescaleDB.docker
Created April 12, 2020 04:32
TimescaleDB docker
FROM timescale/timescaledb:latest-pg11
ENV POSTGRES_USER postgres
ENV POSTGRES_DB postgres
ENV POSTGRES_PASSWORD m5asuFHqBE
COPY init.sql /docker-entrypoint-initdb.d/
@chrismckelt
chrismckelt / PipeMessage.cs
Created March 10, 2020 02:19
Azure IoT Edge demo PipeMessage.cs
// This method is called whenever the module is sent a message from the EdgeHub. It just pipe the messages without any change.It prints all the incoming messages.
static async Task<MessageResponse> PipeMessage(Message message, object userContext) {
int counterValue=Interlocked.Increment(ref _counter);
var moduleClient=userContext as ModuleClient;
byte[] messageBytes=message.GetBytes();
string messageString=Encoding.UTF8.GetString(messageBytes);
if (!string.IsNullOrEmpty(messageString)) {
try {
@chrismckelt
chrismckelt / DataRecorder.cs
Created March 10, 2020 02:15
Azure IoT Edge Demo DataRecorder.cs
ModuleClient ioTHubModuleClient;
var connectionSettings = new MqttTransportSettings(TransportType.Mqtt_Tcp_Only);
ITransportSettings[] settings = { connectionSettings };
ioTHubModuleClient = await ModuleClient.CreateFromEnvironmentAsync();
await ioTHubModuleClient.OpenAsync(); // Open a connection to the Edge runtime
// Register callback to be called when a message is received by the module
await ioTHubModuleClient.SetInputMessageHandlerAsync("input1", PipeMessage, ioTHubModuleClient);
@chrismckelt
chrismckelt / DataGenerator.cs
Last active March 10, 2020 02:01
Azure IoT Edge Demo DataGenerator.cs
var connectionSettings = new MqttTransportSettings(TransportType.Mqtt_Tcp_Only); // setup connection to hubs MQTT broker
ITransportSettings[] settings = { connectionSettings };
ioTHubModuleClient = await ModuleClient.CreateFromEnvironmentAsync(); // inbuilt SDK magic to connect using environment variables
await ioTHubModuleClient.OpenAsync(); // connect
var chance = new Chance(42); // random data generator
var payload = chance.Object<Payload>();
var currentTemp = 20d;
@chrismckelt
chrismckelt / Payload.cs
Created March 10, 2020 01:40
Payload.cs
public class Payload
{
public DateTime TimeStamp { get; set; }
public bool IsAirConditionerOn { get; set; }
public double Temperature { get; set; }
public string TagKey { get; set; }
}
[Fact]
public async Task Will_create_sales_order_in_single_changeset()
{
string d365FoServiceUrl = Environment.GetEnvironmentVariable("D365FO.ServiceUrl", EnvironmentVariableTarget.User);
string clientId = Environment.GetEnvironmentVariable("D365FO.AppClientId", EnvironmentVariableTarget.User);
string username = Environment.GetEnvironmentVariable("D365FO.Username", EnvironmentVariableTarget.User);
string password = Environment.GetEnvironmentVariable("D365FO.Password", EnvironmentVariableTarget.User);
string tenantId = Environment.GetEnvironmentVariable("TenantId", EnvironmentVariableTarget.User);
var token = Authenticator.GetAuthTokenForAadNativeApp(username, password, tenantId, d365FoServiceUrl, clientId);