awair 0.0.1 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- 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:
|