diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..d8b4157aef93a9ac611766077b969c9f87628941
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,5 @@
+# Gitignore settings for ESPHome
+# This is an example and may include too much for your use-case.
+# You can modify this file to suit your needs.
+/.esphome/
+/secrets.yaml
diff --git a/common.yaml b/common.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..e02a7248992bf3b8069d3fdfcb5711be9736f4ef
--- /dev/null
+++ b/common.yaml
@@ -0,0 +1,37 @@
+esphome:
+  name: $devicename
+  comment: $comment
+  project:
+    name: $project_name
+    version: $project_version
+
+logger:
+#  level: INFO
+
+api:
+  password: !secret api_password
+  reboot_timeout: 0s
+
+ota:
+  password: !secret ota_password
+
+wifi:
+  ssid: !secret wifi_ssid
+  password: !secret wifi_password
+  fast_connect: on
+  ap:
+    ssid: "$devicename Fallback Hotspot"
+    password: !secret wifi_password
+
+captive_portal:
+
+web_server:
+  port: 80
+  local: true
+  # include_internal: true
+
+time:
+  - platform: sntp
+    id: sntp_time
+
+prometheus:
diff --git a/include/text_sensors.yaml b/include/text_sensors.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..44ec329464370f0ab15f5fddddea1e81415ee195
--- /dev/null
+++ b/include/text_sensors.yaml
@@ -0,0 +1,12 @@
+- platform: wifi_info
+  ip_address:
+    name: "IP Address"
+  ssid:
+    name: "Wifi SSID"
+  bssid:
+    name: "Wifi BSSID"
+
+- platform: version
+  name: "ESPHome Version"
+  hide_timestamp: true
+
diff --git a/propbox-light.yaml b/propbox-light.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..7a3c80da9c9e67b3b665c05b1ce4025ec44c6faf
--- /dev/null
+++ b/propbox-light.yaml
@@ -0,0 +1,101 @@
+substitutions:
+  devicename: "propbox-light"
+  comment: "Propagator Light Control"
+  project_name: "groovy.propbox-light"
+  project_version: "1.0"
+  
+  current_res: "0.00280" # Higher value gives lower watt readout
+  voltage_div: "775" # Lower value gives lower voltage readout
+
+<<: !include common.yaml
+
+esp8266:
+  board: esp8285
+
+light:
+  - platform: status_led
+    id: "led_status"
+    pin:
+      number: GPIO13
+      inverted: true
+
+binary_sensor:
+  # toggle relay on/off
+  - platform: gpio
+    id: "button_state"
+    pin:
+      number: GPIO00
+      mode: INPUT_PULLUP
+    on_press:
+      - switch.toggle: "button_switch"
+
+switch:
+  - platform: template
+    name: "Switch"
+    optimistic: true
+    id: "button_switch"
+    lambda: |-
+      if (id(relay).state) {
+        return true;
+      } else {
+        return false;
+      }
+    turn_on_action:
+      - switch.turn_on: "relay"
+      - light.turn_on: "led_status"
+    turn_off_action:
+      - switch.turn_off: "relay"
+      - light.turn_off: "led_status"
+  - platform: gpio
+    id: relay
+    pin: GPIO14
+
+sensor:
+  - platform: wifi_signal
+    name: "Wifi Signal"
+    update_interval: 60s
+
+  - platform: uptime
+    name: "Uptime"
+    update_interval: 60s
+
+  - platform: total_daily_energy
+    name: "Electric Consumption [kWh]"
+    power_id: "nous_a1t_watt"
+    filters:
+      # Multiplication factor from W to kW is 0.001
+      - multiply: 0.001
+    unit_of_measurement: kWh
+
+  - platform: adc
+    pin: VCC
+    name: "VCC Volt"
+
+  - platform: hlw8012
+    sel_pin:
+      number: GPIO12
+      inverted: True
+    cf_pin: GPIO04
+    cf1_pin: GPIO05
+    change_mode_every: 4
+    current_resistor: ${current_res}
+    voltage_divider: ${voltage_div}
+    update_interval: 3s
+
+    current:
+      name: "Ampere"
+      unit_of_measurement: A
+      accuracy_decimals: 3
+
+    voltage:
+      name: "Voltage"
+      unit_of_measurement: V
+      accuracy_decimals: 1
+
+    power:
+      name: "Power"
+      id: "nous_a1t_watt"
+      unit_of_measurement: W
+
+text_sensor: 
+  !include include/text_sensors.yaml
diff --git a/propbox.yaml b/propbox.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..aac58c03d34cff88b575788528061a91a47aea1b
--- /dev/null
+++ b/propbox.yaml
@@ -0,0 +1,44 @@
+substitutions:
+  devicename: "propbox"
+  comment: "Propagator Monitor"
+  project_name: "groovy.propbox"
+  project_version: "1.0"
+
+  sensor_mac: "A4:C1:38:47:14:50"
+
+<<: !include common.yaml
+
+esp32:
+  board: esp32dev
+
+esp32_ble_tracker:
+
+sensor: 
+  - platform: wifi_signal
+    name: "Wifi Signal"
+    update_interval: 60s
+
+  - platform: uptime
+    name: "Uptime"
+    update_interval: 60s
+
+  - platform: wifi_signal
+    name: "RSSI"
+    update_interval: 60s
+
+  - platform: uptime
+    name: "Uptime"
+    update_interval: 60s
+
+  - platform: pvvx_mithermometer
+    mac_address: $sensor_mac
+    temperature:
+      name: "Temperature"
+    humidity:
+      name: "Humidity"
+    battery_level:
+      name: "Battery Level"
+    battery_voltage:
+      name: "Battery Voltage"
+
+text_sensor: !include include/text_sensors.yaml
diff --git a/secrets.yaml.dist b/secrets.yaml.dist
new file mode 100644
index 0000000000000000000000000000000000000000..94d6535563b5a27ab3422f42165d9ff27a22cb05
--- /dev/null
+++ b/secrets.yaml.dist
@@ -0,0 +1,4 @@
+wifi_ssid: foo
+wifi_password: bar
+ota_password: baz
+api_password: qux
\ No newline at end of file