awair 0.0.1 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/exe/awair_mqtt_bridge +66 -26
- metadata +23 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a089d2d6c1df949920d32fa5bf6d04517fd3ad261c368e0bf870c524f309eb67
|
4
|
+
data.tar.gz: 46b2aa268d56222020511e9573845731054c613866b28e58b4ca60383ea99812
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2da6d1edd85c6b7d6d8d9ae20c7c4be8aae6b43b8243fdb52dc90401c8813deb9ea302381e42815ad71e24e8e4efa68ee46b42b2e334d605917638ebbd540a01
|
7
|
+
data.tar.gz: 2dbfd1b9e4e9fdbf3f0df12dc96be67b820069b5fb8ee1d8543bef1ace8963ebe9777bab71c3e4c0bd772936438b7968d2d8c6b74627f77d4a8090211a38e247
|
data/exe/awair_mqtt_bridge
CHANGED
@@ -2,17 +2,15 @@
|
|
2
2
|
# frozen_string_literal: true
|
3
3
|
|
4
4
|
require "faraday_middleware"
|
5
|
-
require "
|
5
|
+
require "mqtt-homeassistant"
|
6
6
|
require "optparse"
|
7
7
|
|
8
8
|
refresh = 30.0
|
9
|
-
fahrenheit = false
|
10
9
|
|
11
10
|
options = OptionParser.new do |opts|
|
12
11
|
opts.banner = "Usage: awair_mqtt_bridge SENSOR_IP MQTT_URI [options]"
|
13
12
|
|
14
13
|
opts.on("--refresh-interval=INTERVAL", "Refresh interval (default 30s)") { |v| refresh = v.to_f }
|
15
|
-
opts.on("-f", "--fahrenheit", "Convert to fahrenheit before publishing") { fahrenheit = true }
|
16
14
|
opts.on("-h", "--help", "Prints this help") do
|
17
15
|
puts opts
|
18
16
|
exit
|
@@ -36,34 +34,76 @@ end
|
|
36
34
|
config = awair.get("/settings/config/data").body
|
37
35
|
data = awair.get.body
|
38
36
|
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
device.property("
|
54
|
-
|
37
|
+
homie = MQTT::Homie::Device.new(MQTT::Homie.escape_id(config["device_uuid"]), "Awair Air Quality Sensor", mqtt: ARGV[1])
|
38
|
+
homie.home_assistant_device = {
|
39
|
+
manufacturer: "Awair Inc.",
|
40
|
+
sw_version: config["fw_version"]
|
41
|
+
}
|
42
|
+
device = homie.node("device", "Awair Air Quality Sensor", "Device")
|
43
|
+
device.property("score",
|
44
|
+
"Air Quality Score",
|
45
|
+
:integer,
|
46
|
+
data["score"],
|
47
|
+
format: 0..100,
|
48
|
+
unit: "%",
|
49
|
+
hass: { sensor: { icon: "mdi:counter",
|
50
|
+
state_class: :measurement } })
|
51
|
+
device.property("dewpoint",
|
52
|
+
"Dew Point",
|
53
|
+
:float,
|
54
|
+
data["dew_point"],
|
55
|
+
unit: "°C",
|
56
|
+
hass: { sensor: { device_class: :temperature,
|
57
|
+
icon: "mdi:water-opacity",
|
58
|
+
state_class: :measurement } })
|
59
|
+
device.property("temperature",
|
60
|
+
"Current Temperature",
|
61
|
+
:float,
|
62
|
+
data["temp"],
|
63
|
+
unit: "°C",
|
64
|
+
hass: { sensor: { device_class: :temperature,
|
65
|
+
state_class: :measurement } })
|
66
|
+
device.property("relative-humidity",
|
67
|
+
"Current Relative Humidity",
|
68
|
+
:float, data["humid"],
|
69
|
+
format: 0..100,
|
70
|
+
unit: "%",
|
71
|
+
hass: { sensor: { device_class: :humidity,
|
72
|
+
state_class: :measurement } })
|
73
|
+
device.property("co2",
|
74
|
+
"CO₂ Concentration",
|
75
|
+
:integer, data["co2"],
|
76
|
+
unit: "ppm",
|
77
|
+
hass: { sensor: { device_class: :carbon_dioxide,
|
78
|
+
state_class: :measurement } })
|
79
|
+
device.property("tvocs",
|
80
|
+
"TVOCs Concentration",
|
81
|
+
:integer,
|
82
|
+
data["voc"],
|
83
|
+
unit: "ppb",
|
84
|
+
hass: { sensor: { device_class: :volatile_organic_compounds,
|
85
|
+
state_class: :measurement } })
|
86
|
+
device.property("pm2-5",
|
87
|
+
"Fine particle concentration",
|
88
|
+
:integer,
|
89
|
+
data["pm25"],
|
90
|
+
unit: "µg/m³",
|
91
|
+
hass: { sensor: { device_class: :pm25,
|
92
|
+
state_class: :measurement } })
|
55
93
|
|
56
94
|
homie.publish
|
57
95
|
|
58
96
|
loop do
|
59
97
|
data = awair.get.body
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
98
|
+
homie.mqtt.batch_publish do
|
99
|
+
device["score"].value = data["score"]
|
100
|
+
device["dewpoint"].value = data["dew_point"]
|
101
|
+
device["temperature"].value = data["temp"]
|
102
|
+
device["relative-humidity"].value = data["humid"]
|
103
|
+
device["co2"].value = data["co2"]
|
104
|
+
device["tvocs"].value = data["voc"]
|
105
|
+
device["pm2-5"].value = data["pm25"]
|
106
|
+
end
|
67
107
|
|
68
108
|
sleep refresh
|
69
109
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: awair
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Cody Cutrer
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-02-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday_middleware
|
@@ -25,19 +25,19 @@ dependencies:
|
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.1'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: mqtt-homeassistant
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '1
|
33
|
+
version: '0.1'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '1
|
40
|
+
version: '0.1'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: net-http-persistent
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -86,14 +86,28 @@ dependencies:
|
|
86
86
|
requirements:
|
87
87
|
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: '1.
|
89
|
+
version: '1.23'
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: '1.
|
96
|
+
version: '1.23'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: rubocop-performance
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '1.12'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '1.12'
|
97
111
|
- !ruby/object:Gem::Dependency
|
98
112
|
name: rubocop-rake
|
99
113
|
requirement: !ruby/object:Gem::Requirement
|
@@ -119,7 +133,8 @@ files:
|
|
119
133
|
homepage: https://github.com/ccutrer/ruby-awair
|
120
134
|
licenses:
|
121
135
|
- MIT
|
122
|
-
metadata:
|
136
|
+
metadata:
|
137
|
+
rubygems_mfa_required: 'true'
|
123
138
|
post_install_message:
|
124
139
|
rdoc_options: []
|
125
140
|
require_paths:
|