Last active
February 8, 2018 00:22
-
-
Save sng2c/8714f52f3284a77c3332a508248516f9 to your computer and use it in GitHub Desktop.
SmartThings 모드 커스터마이징
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#-*- coding: utf-8 -*- | |
import copy | |
# sensors = [('Day','Night'),('Home','Away'),('Somebody','Nobody')] | |
# https://www.planttext.com/plantuml/svg/ZPHD3e8m48NtSufUW0kuC9YuSCN60n0CH4s49bfZkBq537H-wwPf7lFWwvkXKBv2ympl_W4GTw5pnsQiJxxlwdDSBhuTWIckAFQkkbzlWUWxvuVbWMAQrCCdBjWoIOPZLYkVV6BUC-AVJ2s45hq8ioQ6bJGjnvoaMeXYZJ0XHSS77iX6AmIryNAJmZ19XeETaMURb02r45evMseGUuevfKxOsGhp2DAC6b55MRMeBPbdmdPbvfSL0RUfiH7cV5ieh_oJ_9CrdcGf8ADz6xSs_jeiswxCFBCYu3Rrro3C-Uk5yihTqR8kkw6D5_CN | |
sensors = [('Day','Night'),('Home','Away')] | |
# https://www.planttext.com/plantuml/svg/ut8eBaaiAYdDpU7Y0h9AKXLS4YlZFV9pKxbW30LTNJi5lypqZ188rqeXFm_2HrK2uZYM9rP2581Oo4Q2-N0b22CHEX16mfN0pGSh0BiAQYJ2FLn8JiFK0-IXAq2t5zcb23ak96MOldF1L80UGX3NEgJcfO025m00 | |
modes_len = 2**len(sensors) | |
form = '{0:0%db}' % len(sensors) | |
modes_buf='' | |
routines_buf = '' | |
buf = '@startuml\n' | |
cnt = 0 | |
for i in range(modes_len): | |
mat = [int(x) for x in list(form.format(i))] | |
mode_name = '_'.join([sensors[idx][val] for idx,val in enumerate(mat)]) | |
modes_buf += "Mode#%d %s\n" % (i+1,mode_name) | |
buf += "\nstate %s\n" % mode_name | |
for j,opt in enumerate(sensors): | |
cnt+=1 | |
cur = int(not bool(mat[j])) | |
mat2 = copy.deepcopy(mat) | |
mat2[j] = cur | |
target_mode_name = '_'.join([sensors[idx][val] for idx,val in enumerate(mat2)]) | |
buf += "%s --> %s : on %s\n" % (mode_name, target_mode_name, opt[cur]) | |
routines_buf += "Routine#%d\n- 이름 : \t%s > %s\n- 상태변경 : \t%s\n- 자동실행 : \t%s\n- 고급설정 :\t자동실행예외에서 %s빼고 전부 체크\n\n" % (cnt, mode_name, opt[cur], target_mode_name, opt[cur], mode_name) | |
buf += "\n@enduml\n" | |
print("아래 모드를 추가해주세요.") | |
print(modes_buf) | |
print("아래 루틴을 추가해주세요.") | |
print(routines_buf) | |
print("### 아래 내용은 https://www.planttext.com/ 에 붙여넣으면 그림으로 보입니다.\n") | |
print(buf) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
아래 모드를 추가해주세요. | |
Mode#1 Day_Home | |
Mode#2 Day_Away | |
Mode#3 Night_Home | |
Mode#4 Night_Away | |
아래 루틴을 추가해주세요. | |
Routine#1 | |
- 이름 : Day_Home > Night | |
- 상태변경 : Night_Home | |
- 자동실행 : Night | |
- 고급설정 : 자동실행예외에서 Day_Home빼고 전부 체크 | |
Routine#2 | |
- 이름 : Day_Home > Away | |
- 상태변경 : Day_Away | |
- 자동실행 : Away | |
- 고급설정 : 자동실행예외에서 Day_Home빼고 전부 체크 | |
Routine#3 | |
- 이름 : Day_Away > Night | |
- 상태변경 : Night_Away | |
- 자동실행 : Night | |
- 고급설정 : 자동실행예외에서 Day_Away빼고 전부 체크 | |
Routine#4 | |
- 이름 : Day_Away > Home | |
- 상태변경 : Day_Home | |
- 자동실행 : Home | |
- 고급설정 : 자동실행예외에서 Day_Away빼고 전부 체크 | |
Routine#5 | |
- 이름 : Night_Home > Day | |
- 상태변경 : Day_Home | |
- 자동실행 : Day | |
- 고급설정 : 자동실행예외에서 Night_Home빼고 전부 체크 | |
Routine#6 | |
- 이름 : Night_Home > Away | |
- 상태변경 : Night_Away | |
- 자동실행 : Away | |
- 고급설정 : 자동실행예외에서 Night_Home빼고 전부 체크 | |
Routine#7 | |
- 이름 : Night_Away > Day | |
- 상태변경 : Day_Away | |
- 자동실행 : Day | |
- 고급설정 : 자동실행예외에서 Night_Away빼고 전부 체크 | |
Routine#8 | |
- 이름 : Night_Away > Home | |
- 상태변경 : Night_Home | |
- 자동실행 : Home | |
- 고급설정 : 자동실행예외에서 Night_Away빼고 전부 체크 | |
### 아래 내용은 https://www.planttext.com/ 에 붙여넣으면 그림으로 보입니다. | |
@startuml | |
state Day_Home | |
Day_Home --> Night_Home : on Night | |
Day_Home --> Day_Away : on Away | |
state Day_Away | |
Day_Away --> Night_Away : on Night | |
Day_Away --> Day_Home : on Home | |
state Night_Home | |
Night_Home --> Day_Home : on Day | |
Night_Home --> Night_Away : on Away | |
state Night_Away | |
Night_Away --> Day_Away : on Day | |
Night_Away --> Night_Home : on Home | |
@enduml |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
아래 모드를 추가해주세요. | |
Mode#1 Day_Home_Somebody | |
Mode#2 Day_Home_Nobody | |
Mode#3 Day_Away_Somebody | |
Mode#4 Day_Away_Nobody | |
Mode#5 Night_Home_Somebody | |
Mode#6 Night_Home_Nobody | |
Mode#7 Night_Away_Somebody | |
Mode#8 Night_Away_Nobody | |
아래 루틴을 추가해주세요. | |
Routine#1 | |
- 이름 : Day_Home_Somebody > Night | |
- 상태변경 : Night_Home_Somebody | |
- 자동실행 : Night | |
- 고급설정 : 자동실행예외에서 Day_Home_Somebody빼고 전부 체크 | |
Routine#2 | |
- 이름 : Day_Home_Somebody > Away | |
- 상태변경 : Day_Away_Somebody | |
- 자동실행 : Away | |
- 고급설정 : 자동실행예외에서 Day_Home_Somebody빼고 전부 체크 | |
Routine#3 | |
- 이름 : Day_Home_Somebody > Nobody | |
- 상태변경 : Day_Home_Nobody | |
- 자동실행 : Nobody | |
- 고급설정 : 자동실행예외에서 Day_Home_Somebody빼고 전부 체크 | |
Routine#4 | |
- 이름 : Day_Home_Nobody > Night | |
- 상태변경 : Night_Home_Nobody | |
- 자동실행 : Night | |
- 고급설정 : 자동실행예외에서 Day_Home_Nobody빼고 전부 체크 | |
Routine#5 | |
- 이름 : Day_Home_Nobody > Away | |
- 상태변경 : Day_Away_Nobody | |
- 자동실행 : Away | |
- 고급설정 : 자동실행예외에서 Day_Home_Nobody빼고 전부 체크 | |
Routine#6 | |
- 이름 : Day_Home_Nobody > Somebody | |
- 상태변경 : Day_Home_Somebody | |
- 자동실행 : Somebody | |
- 고급설정 : 자동실행예외에서 Day_Home_Nobody빼고 전부 체크 | |
Routine#7 | |
- 이름 : Day_Away_Somebody > Night | |
- 상태변경 : Night_Away_Somebody | |
- 자동실행 : Night | |
- 고급설정 : 자동실행예외에서 Day_Away_Somebody빼고 전부 체크 | |
Routine#8 | |
- 이름 : Day_Away_Somebody > Home | |
- 상태변경 : Day_Home_Somebody | |
- 자동실행 : Home | |
- 고급설정 : 자동실행예외에서 Day_Away_Somebody빼고 전부 체크 | |
Routine#9 | |
- 이름 : Day_Away_Somebody > Nobody | |
- 상태변경 : Day_Away_Nobody | |
- 자동실행 : Nobody | |
- 고급설정 : 자동실행예외에서 Day_Away_Somebody빼고 전부 체크 | |
Routine#10 | |
- 이름 : Day_Away_Nobody > Night | |
- 상태변경 : Night_Away_Nobody | |
- 자동실행 : Night | |
- 고급설정 : 자동실행예외에서 Day_Away_Nobody빼고 전부 체크 | |
Routine#11 | |
- 이름 : Day_Away_Nobody > Home | |
- 상태변경 : Day_Home_Nobody | |
- 자동실행 : Home | |
- 고급설정 : 자동실행예외에서 Day_Away_Nobody빼고 전부 체크 | |
Routine#12 | |
- 이름 : Day_Away_Nobody > Somebody | |
- 상태변경 : Day_Away_Somebody | |
- 자동실행 : Somebody | |
- 고급설정 : 자동실행예외에서 Day_Away_Nobody빼고 전부 체크 | |
Routine#13 | |
- 이름 : Night_Home_Somebody > Day | |
- 상태변경 : Day_Home_Somebody | |
- 자동실행 : Day | |
- 고급설정 : 자동실행예외에서 Night_Home_Somebody빼고 전부 체크 | |
Routine#14 | |
- 이름 : Night_Home_Somebody > Away | |
- 상태변경 : Night_Away_Somebody | |
- 자동실행 : Away | |
- 고급설정 : 자동실행예외에서 Night_Home_Somebody빼고 전부 체크 | |
Routine#15 | |
- 이름 : Night_Home_Somebody > Nobody | |
- 상태변경 : Night_Home_Nobody | |
- 자동실행 : Nobody | |
- 고급설정 : 자동실행예외에서 Night_Home_Somebody빼고 전부 체크 | |
Routine#16 | |
- 이름 : Night_Home_Nobody > Day | |
- 상태변경 : Day_Home_Nobody | |
- 자동실행 : Day | |
- 고급설정 : 자동실행예외에서 Night_Home_Nobody빼고 전부 체크 | |
Routine#17 | |
- 이름 : Night_Home_Nobody > Away | |
- 상태변경 : Night_Away_Nobody | |
- 자동실행 : Away | |
- 고급설정 : 자동실행예외에서 Night_Home_Nobody빼고 전부 체크 | |
Routine#18 | |
- 이름 : Night_Home_Nobody > Somebody | |
- 상태변경 : Night_Home_Somebody | |
- 자동실행 : Somebody | |
- 고급설정 : 자동실행예외에서 Night_Home_Nobody빼고 전부 체크 | |
Routine#19 | |
- 이름 : Night_Away_Somebody > Day | |
- 상태변경 : Day_Away_Somebody | |
- 자동실행 : Day | |
- 고급설정 : 자동실행예외에서 Night_Away_Somebody빼고 전부 체크 | |
Routine#20 | |
- 이름 : Night_Away_Somebody > Home | |
- 상태변경 : Night_Home_Somebody | |
- 자동실행 : Home | |
- 고급설정 : 자동실행예외에서 Night_Away_Somebody빼고 전부 체크 | |
Routine#21 | |
- 이름 : Night_Away_Somebody > Nobody | |
- 상태변경 : Night_Away_Nobody | |
- 자동실행 : Nobody | |
- 고급설정 : 자동실행예외에서 Night_Away_Somebody빼고 전부 체크 | |
Routine#22 | |
- 이름 : Night_Away_Nobody > Day | |
- 상태변경 : Day_Away_Nobody | |
- 자동실행 : Day | |
- 고급설정 : 자동실행예외에서 Night_Away_Nobody빼고 전부 체크 | |
Routine#23 | |
- 이름 : Night_Away_Nobody > Home | |
- 상태변경 : Night_Home_Nobody | |
- 자동실행 : Home | |
- 고급설정 : 자동실행예외에서 Night_Away_Nobody빼고 전부 체크 | |
Routine#24 | |
- 이름 : Night_Away_Nobody > Somebody | |
- 상태변경 : Night_Away_Somebody | |
- 자동실행 : Somebody | |
- 고급설정 : 자동실행예외에서 Night_Away_Nobody빼고 전부 체크 | |
### 아래 내용은 https://www.planttext.com/ 에 붙여넣으면 그림으로 보입니다. | |
@startuml | |
state Day_Home_Somebody | |
Day_Home_Somebody --> Night_Home_Somebody : on Night | |
Day_Home_Somebody --> Day_Away_Somebody : on Away | |
Day_Home_Somebody --> Day_Home_Nobody : on Nobody | |
state Day_Home_Nobody | |
Day_Home_Nobody --> Night_Home_Nobody : on Night | |
Day_Home_Nobody --> Day_Away_Nobody : on Away | |
Day_Home_Nobody --> Day_Home_Somebody : on Somebody | |
state Day_Away_Somebody | |
Day_Away_Somebody --> Night_Away_Somebody : on Night | |
Day_Away_Somebody --> Day_Home_Somebody : on Home | |
Day_Away_Somebody --> Day_Away_Nobody : on Nobody | |
state Day_Away_Nobody | |
Day_Away_Nobody --> Night_Away_Nobody : on Night | |
Day_Away_Nobody --> Day_Home_Nobody : on Home | |
Day_Away_Nobody --> Day_Away_Somebody : on Somebody | |
state Night_Home_Somebody | |
Night_Home_Somebody --> Day_Home_Somebody : on Day | |
Night_Home_Somebody --> Night_Away_Somebody : on Away | |
Night_Home_Somebody --> Night_Home_Nobody : on Nobody | |
state Night_Home_Nobody | |
Night_Home_Nobody --> Day_Home_Nobody : on Day | |
Night_Home_Nobody --> Night_Away_Nobody : on Away | |
Night_Home_Nobody --> Night_Home_Somebody : on Somebody | |
state Night_Away_Somebody | |
Night_Away_Somebody --> Day_Away_Somebody : on Day | |
Night_Away_Somebody --> Night_Home_Somebody : on Home | |
Night_Away_Somebody --> Night_Away_Nobody : on Nobody | |
state Night_Away_Nobody | |
Night_Away_Nobody --> Day_Away_Nobody : on Day | |
Night_Away_Nobody --> Night_Home_Nobody : on Home | |
Night_Away_Nobody --> Night_Away_Somebody : on Somebody | |
@enduml |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment