import json, os, strutils import tradfri, deviceTypes let tradfriGateway = newTradfriGateway( host = "192.168.100.225", port = 5684, user = "ctucx", pass = "JrSGx6WkAVJUl53b" ) let devices = tradfriGateway.getDevices() if(paramCount() > 0): case paramStr(1): of "devices": echo "list of connected devices:" echo "=======================" var id = 0 for device in devices: if device.alive == false: stdout.write "\u001b[30;1m" echo $id & ": \tType:\t\t" & $device.`type` echo "\tName:\t\t" & $device.name echo "\tAlive:\t\t" & $device.alive if device.type == Lightbulb: stdout.write "\tLightSpectrum:\t" if device.state.lightSpectrum == RGB: echo "🎨 RGB" elif device.state.lightSpectrum == White: echo "⚪ White" elif device.state.lightSpectrum == None: echo "☐ None" if device.state.lightPowered: echo "\tPowered:\t💡 yes" else: echo "\tPowered:\tno" if device.info.power == Battery: echo "\tBattery:\t" & $device.info.battery & "%" echo "\u001b[0m" id = id+1 of "toggle": let deviceId = parseInt(paramStr(2)) if devices[deviceId].name == "": echo "This device doesn't exist." quit(0) discard devices[deviceId].togglePowerState() of "turn-off": let deviceId = parseInt(paramStr(2)) if devices[deviceId].name == "": echo "This device doesn't exist." quit(0) discard devices[deviceId].setPowerState(false) of "turn-on": let deviceId = parseInt(paramStr(2)) if devices[deviceId].name == "": echo "This device doesn't exist." quit(0) discard devices[deviceId].setPowerState(true) of "setColor": let deviceId = parseInt(paramStr(2)) if devices[deviceId].name == "": echo "This device doesn't exist." quit(0) discard devices[deviceId].setColorXYfromHex(paramStr(3)) of "devices-json": let devicesJson = %* devices echo devicesJson of "devices-json-pretty": let devicesJson = %* devices echo pretty devicesJson else: echo "tradfriCli\nUsage: ./trafriCli [params]\n\ndevices:\t\tLists devices. No additional options.\ntoggle:\t\t\tToggles device. Number from devices is needed as parameter\nsetColor:\t\tSets color for device. Number from devices is needed as parameter\nturn-on:\t\tTurns the light on. Number from devices is needed as parameter\nturn-off:\t\tTurns the light off. Number from devices is needed as parameter\ndevices-json:\t\tPrints out json of devices. No additional options\ndevices-json-pretty:\tSame as devices-json, but in pretty"