-
Notifications
You must be signed in to change notification settings - Fork 277
/
BinarySensorComponent.swift
62 lines (54 loc) · 1.97 KB
/
BinarySensorComponent.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
//
// BinarySensorComponent.swift
// HomeAssistant
//
// Created by Robbie Trencheny on 4/5/16.
// Copyright © 2016 Robbie Trencheny. All rights reserved.
//
import Foundation
import ObjectMapper
class BinarySensor: SwitchableEntity {
dynamic var SensorClass: String? = nil
override func mapping(map: Map) {
super.mapping(map: map)
SensorClass <- map["attributes.sensor_class"]
}
override var ComponentIcon: String {
return "mdi:radiobox-blank"
}
override func StateIcon() -> String {
if self.MobileIcon != nil { return self.MobileIcon! }
if self.Icon != nil { return self.Icon! }
let activated = (self.IsOn == false)
if let sensorClass = self.SensorClass {
switch (sensorClass) {
case "connectivity":
return activated ? "mdi:server-network-off" : "mdi:server-network"
case "light":
return activated ? "mdi:brightness-5" : "mdi:brightness-7"
case "moisture":
return activated ? "mdi:water-off" : "mdi:water"
case "motion":
return activated ? "mdi:walk" : "mdi:run"
case "occupancy":
return activated ? "mdi:home" : "mdi:home-outline"
case "opening":
return activated ? "mdi:crop-square" : "mdi:exit-to-app"
case "sound":
return activated ? "mdi:music-note-off" : "mdi:music-note"
case "vibration":
return activated ? "mdi:crop-portrait" : "mdi:vibrate"
case "gas", "power", "safety", "smoke":
return activated ? "mdi:verified" : "mdi:alert"
default:
return activated ? "mdi:radiobox-blank" : "mdi:checkbox-marked-circle"
}
} else {
if activated {
return "mdi:radiobox-blank"
} else {
return "mdi:checkbox-marked-circle"
}
}
}
}