Skip to content

Instantly share code, notes, and snippets.

View doit-mattporter's full-sized avatar

Matthew Porter doit-mattporter

  • DoiT International
  • Eugene, OR
View GitHub Profile
@doit-mattporter
doit-mattporter / window_opened_closed_utc.sh
Created February 5, 2021 23:25
Create a table of open & closed window timeframe datetimes in UTC
# Convert table of open and closed window timeframes to UTC
bq query --nouse_legacy_sql \
"CREATE OR REPLACE TABLE ${PROJECT_ID}.sensordata.window_opened_closed_utc AS (
SELECT
DATETIME(TIMESTAMP(CONCAT(DayPST, \"T\", FORMAT_TIMESTAMP(\"%H:%M:%S\", PARSE_TIMESTAMP(\"%r\", StartTimePST))), \"America/Los_Angeles\"), \"UTC\") AS StartTime,
DATETIME(TIMESTAMP(CONCAT(DayPST, \"T\", FORMAT_TIMESTAMP(\"%H:%M:%S\", PARSE_TIMESTAMP(\"%r\", EndTimePST))), \"America/Los_Angeles\"), \"UTC\") AS EndTime,
ObjectCode
FROM ${PROJECT_ID}.sensordata.window_opened_closed
)
"
@doit-mattporter
doit-mattporter / publish_temps.py
Created December 15, 2020 00:58
Stream real-time RaspberryPi-derived (or simulated) temperature values to GCP IoT Core
#!/usr/bin/env python3
import argparse
import configparser
import datetime
import json
import jwt
import paho.mqtt.client as mqtt
import random
import ssl
import time
# Using n2-standard-4
# Using Windows Server version 1809 Datacenter Core for Containers, built on 20200813
powershell
# Create local SSD file system and mount
Get-Disk
Get-Disk | Where-Object PartitionStyle –Eq 'RAW' | Initialize-Disk
# For NVMe:
#New-Partition –DiskNumber 0 -AssignDriveLetter –UseMaximumSize
# Using Debian GNU/Linux 10 (buster)
# Create local SSD file system and mount
sudo mkfs.ext4 -F /dev/nvme0n1
sudo mkdir -p /mnt/disks/nvme0n1
sudo mount /dev/nvme0n1 /mnt/disks/nvme0n1
sudo chmod a+w /mnt/disks/nvme0n1
cd /mnt/disks/nvme0n1
# Update
@doit-mattporter
doit-mattporter / publish_temps.py
Created June 16, 2020 15:25
Example of how to publish DS18B20 temperature sensor values from a Raspberry Pi to AWS IoT
#!/usr/bin/env python3
import argparse
import configparser
import datetime
import json
import time
from glob import glob
from os.path import join
from awscrt import io, mqtt
@doit-mattporter
doit-mattporter / pubsub_simulated_temps.py
Created June 16, 2020 15:18
Example of how to publish messages to an AWS IoT topic and print those messages back via a subscription to that topic
#!/usr/bin/env python3
import argparse
import configparser
import json
import random
import sys
from os.path import join
from time import sleep
from awscrt import io, mqtt
@doit-mattporter
doit-mattporter / connect_rpi_to_iot_core.py
Created June 16, 2020 14:19
Example showing how to connect a Raspberry Pi to IoT Core via a fleet provisioning template and a bootstrap certificate
#!/usr/bin/env python3
import argparse
import configparser
import json
import shutil
import sys
from os import makedirs
from os.path import join
from time import sleep