Tasmota: CCT ์กฐ๋ช…์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ตฌ์„ฑํ•  ์ˆ˜ ์—†์Œ

์— ๋งŒ๋“  2020๋…„ 06์›” 03์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: arendst/Tasmota

์ด ํ”„๋กœ์ ํŠธ์˜ ๋ฌธ์ œ๋ฅผ ๋ณด๊ณ ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋จผ์ € ์ฝ์–ด๋ณด์‹ญ์‹œ์˜ค: ์ด ๋ฌธ์ œ ํ…œํ”Œ๋ฆฟ์€ Tasmota ์†Œํ”„ํŠธ์›จ์–ด ๋ฌธ์ œ๋งŒ ๋ณด๊ณ ํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฌธ์ œ๋ฅผ ์—ด์ง€ ๋งˆ์‹ญ์‹œ์˜ค. - Tasmota ๋ฒ„์ „์ด ๊ฐœ๋ฐœ ๋ถ„๊ธฐ์˜ ์ตœ์‹  ๋ฒ„์ „์ด ์•„๋‹Œ ๊ฒฝ์šฐ ๋ฌธ์ œ๋ฅผ ์ œ์ถœํ•˜๊ธฐ ์ „์— ์žฅ์น˜๋ฅผ ์—…๋ฐ์ดํŠธํ•˜์‹ญ์‹œ์˜ค. ๋ฌธ์ œ๊ฐ€ ์ด๋ฏธ ํ•ด๊ฒฐ๋˜์—ˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Tasmota์˜ ์ตœ์‹  ์‚ฌ์ „ ์ปดํŒŒ์ผ๋œ ๋ฐ”์ด๋„ˆ๋ฆฌ๋Š” http://thehackbox.org/tasmota/์—์„œ ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. - Tuya Convert๋ฅผ ํ†ตํ•ด ํ”Œ๋ž˜์‹ฑ์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ Tuya ๋ณ€ํ™˜ ํŒ€์— ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์„ธ์š”. - ๋ฌธ์ œ๊ฐ€ ํ”Œ๋ž˜์‹ฑ ๋ฌธ์ œ์ธ ๊ฒฝ์šฐ, [Tasmota ์ง€์› ์ฑ„ํŒ…](https://discord.gg/Ks2Kzd4) - ์ปดํŒŒ์ผ ๋ฌธ์ œ์ธ ๊ฒฝ์šฐ [Tasmota ์ง€์› ์ฑ„ํŒ…](https://discord.gg/Ks2Kzd4)์œผ๋กœ ๋ฌธ์˜ํ•ด์ฃผ์„ธ์š”. - ์ด์ „์— ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋œ ๊ฒฝ์šฐ(์˜ˆ: ์ค‘๋ณต ๋ฌธ์ œ) ์›๋ž˜ ๋ฌธ์ œ์—์„œ ์งˆ๋ฌธํ•˜์‹ญ์‹œ์˜ค. - ๋ฌธ์ œ๊ฐ€ Wi-Fi ๋ฌธ์ œ ๋˜๋Š” MQTT ๋ฌธ์ œ์ธ ๊ฒฝ์šฐ [FAQ](https:// tasmota.github.io/docs/FAQ) ๋ฐ [Troubleshooting](https://tasmota.github.io/docs/Troubleshooting) ์ž ์‹œ ์‹œ๊ฐ„์„ ๋‚ด์–ด ์•„๋ž˜ ์š”์ฒญ๋œ ์ •๋ณด๋ฅผ ์ž‘์„ฑํ•ด ์ฃผ์‹ญ์‹œ์˜ค. ๋„์›€์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋Š” ์šฐ๋ฆฌ์˜ ๋Šฅ๋ ฅ์€ ๋„์›€ ์—†์ด๋Š” ํฌ๊ฒŒ ์ œํ•œ๋ฉ๋‹ˆ๋‹ค. ์š”์ฒญ๋œ ์„ธ๋ถ€ ์ •๋ณด๋Š” ์ถ”๊ตฌํ•  ์˜ต์…˜์— ์ž ์žฌ์ ์œผ๋กœ ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค. ํ…œํ”Œ๋ฆฟ์„ ์ž‘์„ฑํ•˜๋Š” ๋ฐ ๋ณด๋‚ด๋Š” ์ ์€ ์‹œ๊ฐ„์€ ์ž์› ๋ด‰์‚ฌ์ž๊ฐ€ ๊ท€ํ•˜๋ฅผ ๋•๋Š” ๋ฐ ํ•„์š”ํ•œ ์‹œ๊ฐ„์„ ์ค„์ด๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ์ด ํ…œํ”Œ๋ฆฟ์—์„œ ์–ด๋–ค ํ…์ŠคํŠธ๋„ ์‚ญ์ œํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค! ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋ฌธ์ œ๊ฐ€ ์ž๋™์œผ๋กœ ๋‹ซํž™๋‹ˆ๋‹ค.

๋ฌธ์ œ ์„ค๋ช…

_๋ฌธ์ œ๊ฐ€ ๋ฌด์—‡์ธ์ง€์— ๋Œ€ํ•œ ๋ช…ํ™•ํ•˜๊ณ  ๊ฐ„๊ฒฐํ•œ ์„ค๋ช…._
๋ฐฉ๊ธˆ Deltaco CCT ์ „๊ตฌ, ํŠนํžˆ SH-LE14W ๋ฐ SH-LE27W๋ฅผ ๊ตฌ์ž…ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‘˜ ๋‹ค templates.blakadder.com์—์„œ ํ…œํ”Œ๋ฆฟ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
tuya-convert๋กœ E14 ์ „๊ตฌ ์ค‘ ํ•˜๋‚˜๋ฅผ ๊นœ๋ฐ•์ด๊ณ  ์ตœ์‹  ํŽŒ์›จ์–ด๋กœ ์—…๋ฐ์ดํŠธํ•˜๊ณ  ์˜ฌ๋ฐ”๋ฅธ ํ…œํ”Œ๋ฆฟ์„ ์ ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

{"์ด๋ฆ„":"SH-LE14W","GPIO":[0,0,0,0,0,140,0,0,38,0,37,142,141],"FLAG":0,"BASE":18}

๋ฌธ์ œ๋Š” ๋‘ ๊ฐœ์˜ ์Šฌ๋ผ์ด๋”(์ƒ‰์˜จ๋„์šฉ ํ•˜๋‚˜์™€ ์กฐ๊ด‘๊ธฐ์šฉ)๊ฐ€ ์žˆ๋Š” ์ „๊ตฌ๋ฅผ ๋งŒ๋“œ๋Š” ๋Œ€์‹  4๊ฐœ์˜ ์Šฌ๋ผ์ด๋”๊ฐ€ ์žˆ๋Š” ์ „๊ตฌ๋ฅผ ๋งŒ๋“ ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

lamp

๋‚ด๊ฐ€ ์˜ˆ์ƒํ•œ ๋‘ ๊ฐœ์˜ ์Šฌ๋ผ์ด๋”๋Š” ์ „๊ตฌ๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค. ์กฐ๊ด‘๊ธฐ ์Šฌ๋ผ์ด๋”๋Š” ์กฐ๋ช… ๊ฐ•๋„๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ  ์ƒ‰ ์˜จ๋„ ์Šฌ๋ผ์ด๋”๋Š” ์ƒ‰์˜จ๋„๋ฅผ ์ฐจ๊ฐ€์šด ๊ฒƒ์—์„œ ๋”ฐ๋œปํ•œ ๊ฒƒ์œผ๋กœ ์กฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ์ง€์ •๋œ PWM ์ฑ„๋„์€ 2๊ฐœ๋ฟ์ด๋ฏ€๋กœ ๋ฌธ์„œ์— ๋”ฐ๋ฅด๋ฉด 4์ฑ„๋„ ์žฅ์น˜๊ฐ€ ์•„๋‹Œ 2์ฑ„๋„ ์žฅ์น˜๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ํ…œํ”Œ๋ฆฟ์„ ์‚ฌ์šฉํ•˜๊ณ  ๋ชจ๋“ˆ์„ ๋ณ€๊ฒฝํ•˜๋ ค๊ณ  ์‹œ๋„ํ–ˆ์ง€๋งŒ ๋Œ€์ฒด ๊ตฌ์„ฑ ์ค‘ ์ „๊ตฌ๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ œ์–ดํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.

์š”์ฒญ๋œ ์ •๋ณด

_๋ฌธ์ œ๋ฅผ ์ œ์ถœํ•˜๊ธฐ ์ „์— ๋ชจ๋“  ๋‹จ๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ  ํ•ด๋‹น ํ™•์ธ๋ž€์„ ์„ ํƒํ–ˆ๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!_

  • [x] ๊ธฐ์—ฌ ๊ฐ€์ด๋“œ ๋ฐ ์ •์ฑ… ๋ฐ ํ–‰๋™ ๊ฐ•๋ น ์ฝ๊ธฐ
  • [x] ๋ฌธ์ œ์—์„œ ๋ฌธ์ œ๋ฅผ ๊ฒ€์ƒ‰ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • [x] ๋ฌธ์„œ ์—์„œ ๋ฌธ์ œ๋ฅผ ๊ฒ€์ƒ‰ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • [x] ํฌ๋Ÿผ ์—์„œ ๋ฌธ์ œ๋ฅผ ๊ฒ€์ƒ‰ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • [x] ์ฑ„ํŒ… ์—์„œ ๋ฌธ์ œ๋ฅผ ๊ฒ€์ƒ‰ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • [x] ์‚ฌ์šฉ๋œ ์žฅ์น˜(์˜ˆ: Sonoff Basic): Sonoff Basic
  • [x] ์‚ฌ์šฉ๋œ Tasmota ๋ฐ”์ด๋„ˆ๋ฆฌ ํŽŒ์›จ์–ด ๋ฒ„์ „ ๋ฒˆํ˜ธ: 8.3.1

    • [x] ์‚ฌ์ „ ์ปดํŒŒ์ผ๋จ

    • [ ] ์ž์ฒด ์ปดํŒŒ์ผ

    • [ ] IDE / ์‚ฌ์šฉ๋œ ์ปดํŒŒ์ผ๋Ÿฌ: _____

  • [x] ์‚ฌ์šฉ๋œ ๊นœ๋ฐ•์ž„ ๋„๊ตฌ: tuya-convert
  • [x] ๋‹ค์Œ ๋ช…๋ น์˜ ์ถœ๋ ฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Backlog Template; Module; GPIO 255 :
  Configuration output here:
07:30:10 CMD: Backlog Template; Module; GPIO 255
07:30:10 RSL: stat/tasmota_DE0A11/RESULT = {"NAME":"SH-LE14W","GPIO":[0,0,0,0,0,140,0,0,38,0,37,142,141],"FLAG":0,"BASE":18}
07:30:10 RSL: stat/tasmota_DE0A11/RESULT = {"Module":{"0":"SH-LE14W"}}
07:30:11 RSL: stat/tasmota_DE0A11/RESULT = {"GPIO0":{"0":"None"},"GPIO1":{"0":"None"},"GPIO2":{"0":"None"},"GPIO3":{"0":"None"},"GPIO4":{"0":"None"},"GPIO5":{"140":"SM16716 CLK"},"GPIO9":{"0":"None"},"GPIO10":{"0":"None"},"GPIO12":{"38":"PWM2"},"GPIO13":{"0":"None"},"GPIO14":{"37":"PWM1"},"GPIO15":{"142":"SM16716 PWR"},"GPIO16":{"141":"SM16716 DAT"}}

  • [ ] ๊ทœ์น™์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋‹ค์Œ ๋ช…๋ น์˜ ์ถœ๋ ฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Backlog Rule1; Rule2; Rule3 :
  Rules output here:


  • [x] ๋‹ค์Œ ๋ช…๋ น์˜ ์ถœ๋ ฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Status 0 :
  STATUS 0 output here:
07:30:46 CMD: status 0
07:30:46 RSL: stat/tasmota_DE0A11/STATUS = {"Status":{"Module":0,"DeviceName":"bedsidelamp","FriendlyName":["Bedside Lamp"],"Topic":"tasmota_DE0A11","ButtonTopic":"0","Power":0,"PowerOnState":3,"LedState":1,"LedMask":"FFFF","SaveData":1,"SaveState":1,"SwitchTopic":"0","SwitchMode":[0,0,0,0,0,0,0,0],"ButtonRetain":0,"SwitchRetain":0,"SensorRetain":0,"PowerRetain":0}}
07:30:46 RSL: stat/tasmota_DE0A11/STATUS1 = {"StatusPRM":{"Baudrate":115200,"SerialConfig":"8N1","GroupTopic":"tasmotas","OtaUrl":"http://thehackbox.org/tasmota/release/tasmota.bin","RestartReason":"Software/System restart","Uptime":"0T00:05:14","StartupUTC":"2020-06-03T06:25:32","Sleep":50,"CfgHolder":4617,"BootCount":7,"BCResetTime":"2020-06-02T23:25:00","SaveCount":35,"SaveAddress":"F9000"}}
07:30:46 RSL: stat/tasmota_DE0A11/STATUS2 = {"StatusFWR":{"Version":"8.3.1(tasmota)","BuildDateTime":"2020-05-18T15:39:35","Boot":31,"Core":"2_7_1","SDK":"2.2.2-dev(38a443e)","Hardware":"ESP8285","CR":"375/699"}}
07:30:46 RSL: stat/tasmota_DE0A11/STATUS3 = {"StatusLOG":{"SerialLog":2,"WebLog":2,"MqttLog":0,"SysLog":0,"LogHost":"","LogPort":514,"SSId":["Cam24",""],"TelePeriod":300,"Resolution":"558180C0","SetOption":["00008009","2805C8000100060000005A00000000000000","00000000","00000000"]}}
07:30:46 RSL: stat/tasmota_DE0A11/STATUS4 = {"StatusMEM":{"ProgramSize":587,"Free":416,"Heap":26,"ProgramFlashSize":1024,"FlashSize":1024,"FlashChipId":"144051","FlashMode":3,"Features":["00000809","8FDAE797","043683A0","000000CD","010013C0","C000F981","00000024"],"Drivers":"1,2,3,4,5,6,7,8,9,10,12,16,18,19,20,21,22,24,26,27,29,30,35,37","Sensors":"1,2,3,4,5,6"}}
07:30:46 RSL: stat/tasmota_DE0A11/STATUS5 = {"StatusNET":{"Hostname":"tasmota_DE0A11-2577","IPAddress":"192.168.1.97","Gateway":"192.168.1.1","Subnetmask":"255.255.255.0","DNSServer":"192.168.1.1","Mac":"2C:F4:32:DE:0A:11","Webserver":2,"WifiConfig":4,"WifiPower":17.0}}
07:30:46 RSL: stat/tasmota_DE0A11/STATUS6 = {"StatusMQT":{"MqttHost":"","MqttPort":1883,"MqttClientMask":"DVES_%06X","MqttClient":"DVES_DE0A11","MqttUser":"DVES_USER","MqttCount":0,"MAX_PACKET_SIZE":1200,"KEEPALIVE":30}}
07:30:46 RSL: stat/tasmota_DE0A11/STATUS7 = {"StatusTIM":{"UTC":"2020-06-03T06:30:46","Local":"2020-06-03T07:30:46","StartDST":"2020-03-29T02:00:00","EndDST":"2020-10-25T03:00:00","Timezone":"+01:00","Sunrise":"04:49","Sunset":"20:46"}}
07:30:46 RSL: stat/tasmota_DE0A11/STATUS10 = {"StatusSNS":{"Time":"2020-06-03T07:30:46"}}
07:30:46 RSL: stat/tasmota_DE0A11/STATUS11 = {"StatusSTS":{"Time":"2020-06-03T07:30:46","Uptime":"0T00:05:14","UptimeSec":314,"Heap":26,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":0,"POWER":"OFF","Dimmer":15,"Color":"0000002303","HSBColor":"0,0,0","White":15,"CT":177,"Channel":[0,0,0,14,1],"Scheme":0,"Fade":"OFF","Speed":1,"LedTable":"ON","Wifi":{"AP":1,"SSId":"Cam24","BSSId":"3C:37:86:FD:9D:94","Channel":13,"RSSI":72,"Signal":-64,"LinkCount":1,"Downtime":"0T00:00:03"}}}


  • [ ] ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ฝ˜์†” ๋กœ๊ทธ ์ถœ๋ ฅ์˜ ์ถœ๋ ฅ์„ ์ œ๊ณตํ•˜์‹ญ์‹œ์˜ค. ์ ์šฉ๋œ๋‹ค๋ฉด:
    _(์ž์„ธํ•œ ๋””๋ฒ„๊ทธ ์ •๋ณด๋ฅผ ๋ณด๋ ค๋ฉด_ weblog 4 ํ•˜์‹ญ์‹œ์˜ค.)_
  Console output here:


๋ฒˆ์‹ํ•˜๋‹ค

_ํ–‰๋™์„ ์žฌํ˜„ํ•˜๋Š” ๋‹จ๊ณ„:_
ํ…œํ”Œ๋ฆฟ์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์ƒ๋˜๋Š” ํ–‰๋™

_ ์˜ˆ์ƒํ–ˆ๋˜ ์ผ์— ๋Œ€ํ•œ ๋ช…ํ™•ํ•˜๊ณ  ๊ฐ„๊ฒฐํ•œ ์„ค๋ช…._
์ ์šฉ ๊ฐ€๋Šฅํ•œ ์ปจํŠธ๋กค๋งŒ ์žˆ๋Š” ์กฐ๋ช…์„ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์Šคํฌ๋ฆฐ์ƒท

_ํ•ด๋‹น๋˜๋Š” ๊ฒฝ์šฐ ๋ฌธ์ œ๋ฅผ ์„ค๋ช…ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋„๋ก ์Šคํฌ๋ฆฐ์ƒท์„ ์ถ”๊ฐ€ํ•˜์„ธ์š”._

์ถ”๊ฐ€ ์ปจํ…์ŠคํŠธ

_์—ฌ๊ธฐ์— ๋ฌธ์ œ์— ๋Œ€ํ•œ ๋‹ค๋ฅธ ์ปจํ…์ŠคํŠธ๋ฅผ ์ถ”๊ฐ€ํ•˜์‹ญ์‹œ์˜ค._

(๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜๋ฉด ๋ฌธ์ œ๋ฅผ ์ข…๋ฃŒํ•˜๋Š” ๊ฒƒ์„ ์žŠ์ง€ ๋งˆ์‹ญ์‹œ์˜ค)

troubleshooting

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์กฐ๋ช… ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ๋‘ ๊ฐœ์˜ PWM ์ฑ„๋„๋งŒ ๋‚จ๊ฒจ๋‘๋ฉด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

ํ…œํ”Œ๋ฆฟ์„ ์ˆ˜์ •ํ•˜๊ธฐ ์œ„ํ•ด blakadder ์ €์žฅ์†Œ์— ๋Œ€ํ•œ pull ์š”์ฒญ์„ ์ƒ์„ฑํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  3 ๋Œ“๊ธ€

2๊ฐœ์˜ PWM๊ณผ 1๊ฐœ์˜ ์กฐ๋ช… ์ปจํŠธ๋กค๋Ÿฌ SM16716์„ ์ •์˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์Šฌ๋ผ์ด๋”๊ฐ€ 2๊ฐœ ์ด์ƒ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๋”ฐ๋ผ์„œ ํ…œํ”Œ๋ฆฟ์€ ์ „๊ตฌ์— ๋งž๋Š” ํ…œํ”Œ๋ฆฟ์ด ์•„๋‹™๋‹ˆ๋‹ค.

ํ…œํ”Œ๋ฆฟ์—์„œ ๋น„ pwm ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•˜์‹ญ์‹œ์˜ค.

์กฐ๋ช… ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ๋‘ ๊ฐœ์˜ PWM ์ฑ„๋„๋งŒ ๋‚จ๊ฒจ๋‘๋ฉด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

ํ…œํ”Œ๋ฆฟ์„ ์ˆ˜์ •ํ•˜๊ธฐ ์œ„ํ•ด blakadder ์ €์žฅ์†Œ์— ๋Œ€ํ•œ pull ์š”์ฒญ์„ ์ƒ์„ฑํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰