private void ShowAlarms(string args)
        {
            IReadOnlyList <Alarm> alarms = SomneoApiClient.GetAlarms();

            if (alarms.Count == 0)
            {
                Console.WriteLine("0/16 alarms set.");
                return;
            }

            StringBuilder consoleMessageBuilder = new StringBuilder();

            consoleMessageBuilder.Append($@"{alarms.Count}/16 alarm(s) set:");

            foreach (Alarm alarm in alarms)
            {
                consoleMessageBuilder.AppendFormat(@"
  #{0} {1} {2:00}:{3:00}{4} (PowerWake: {5})",
                                                   alarm.Position,
                                                   alarm.Enabled ? "ON: " : "OFF:",
                                                   alarm.Hour,
                                                   alarm.Minute,
                                                   alarm.RepeatDays.Count > 0 ? " " + string.Join(",", alarm.RepeatDays.Select(d => string.Concat(d.ToString().Take(3)))) : string.Empty,
                                                   alarm.PowerWakeEnabled ? $"{alarm.PowerWakeHour.Value:00}:{alarm.PowerWakeMinute.Value:00}" : "off");
            }

            Console.WriteLine(consoleMessageBuilder);
        }
        private void ToggleAlarm(string args)
        {
            if (!string.IsNullOrEmpty(args))
            {
                string[] argsArray = args.Split(new[] { ' ' }, 2);

                if (argsArray.Length == 2 &&
                    int.TryParse(argsArray[0], out int position) &&
                    position >= 1 && position <= 16)
                {
                    switch (argsArray[1].ToLower())
                    {
                    case "on":
                        SomneoApiClient.ToggleAlarm(position, true);
                        Console.WriteLine($"Alarm #{position} enabled.");
                        return;

                    case "off":
                        SomneoApiClient.ToggleAlarm(position, true);
                        Console.WriteLine($"Alarm #{position} disabled.");
                        return;
                    }
                }
            }

            Console.WriteLine("Specify a position between 1 and 16, followed by \"on\" or \"off\".");
        }
Example #3
0
        private void SetPlayerVolume(string args)
        {
            if (!string.IsNullOrEmpty(args) && int.TryParse(args, out int volume) && volume >= 1 && volume <= 25)
            {
                SomneoApiClient.SetPlayerVolume(volume);
                Console.WriteLine($"Audio player volume set to {volume}/25.");
                return;
            }

            Console.WriteLine("Specify a volume between 1 and 25.");
        }
Example #4
0
        private void SetDisplayLevel(string args)
        {
            if (!string.IsNullOrEmpty(args) && int.TryParse(args, out int level) && level >= 1 && level <= 6)
            {
                SomneoApiClient.SetDisplayLevel(level);
                Console.WriteLine($"Display brightness level set to {level}/6.");
                return;
            }

            Console.WriteLine("Specify a light level between 1 and 6.");
        }
        private void RemoveAlarm(string args)
        {
            if (!string.IsNullOrEmpty(args) && int.TryParse(args, out int position) && position >= 1 && position <= 16)
            {
                SomneoApiClient.RemoveAlarm(position);
                Console.WriteLine($"Alarm #{position} removed.");
                return;
            }

            Console.WriteLine("Specify a position between 1 and 16.");
        }
        private void PlayWakeUpSound(string args)
        {
            if (!string.IsNullOrEmpty(args) && Enum.TryParse(args, out WakeUpSound wakeUpSound))
            {
                SomneoApiClient.PlayWakeUpSound(wakeUpSound);
                Console.WriteLine($"Playing wake-up sound \"{EnumHelper.GetDescription(wakeUpSound)}\".");
                return;
            }

            Console.WriteLine("The wake-up sound number should be between 1 and 8.");
        }
        private void SetSnoozeTime(string args)
        {
            if (!string.IsNullOrEmpty(args) && int.TryParse(args, out int minutes) && minutes >= 1 && minutes <= 20)
            {
                SomneoApiClient.SetSnoozeTime(minutes);
                Console.WriteLine($"Snooze set to {minutes} minute(s).");
                return;
            }

            Console.WriteLine("Specify snooze minutes between 1 and 20.");
        }
Example #8
0
        private void SetLightLevel(string args)
        {
            if (!string.IsNullOrEmpty(args) && int.TryParse(args, out int level) && level >= 1 && level <= 25)
            {
                SomneoApiClient.SetLightLevel(level);
                Console.WriteLine($"Light level set to {level}/25.");
                return;
            }

            Console.WriteLine("Specify a light level between 1 and 25.");
        }
        private void EnableFMRadioPreset(string args)
        {
            if (!string.IsNullOrEmpty(args) && int.TryParse(args, out int preset) && preset >= 1 && preset <= 5)
            {
                SomneoApiClient.EnableFMRadioPreset(preset);
                Console.WriteLine($"FM radio enabled for preset {preset}/5.");
                return;
            }

            Console.WriteLine("The preset should be between 1 and 5.");
        }
Example #10
0
        static void Main()
        {
            IConfiguration config = new ConfigurationBuilder()
                                    .AddJsonFile($"appsettings.json", true, true)
                                    .AddEnvironmentVariables()
                                    .Build();

            string somneoHost = config.GetValue <string>("SomneoHost");

            ISomneoApiClient somneoApiClient = new SomneoApiClient(somneoHost);
            TestService      testService     = new TestService(somneoApiClient);

            testService.Run();
        }
        private void ShowFMRadioState(string args)
        {
            FMRadioState fmRadioState = SomneoApiClient.GetFMRadioState();

            if (fmRadioState == null)
            {
                Console.WriteLine("Unable to retrieve the FM radio state.");
                return;
            }

            Console.WriteLine(
                $@"FM radio state:
  Frequency: {fmRadioState.Frequency:0.00} FM
  Preset: {fmRadioState.Preset}/5");
        }
Example #12
0
        private void ShowDisplayState(string args)
        {
            DisplayState displayState = SomneoApiClient.GetDisplayState();

            if (displayState == null)
            {
                Console.WriteLine("Unable to retrieve the display state.");
                return;
            }

            Console.WriteLine(
                $@"Display state:
  Permanent display enabled: {(displayState.Permanent ? "Yes" : "No")}
  Brightness level: {displayState.Brightness}/6");
        }
        public void ShowLocale(string args)
        {
            Locale locale = SomneoApiClient.GetLocale();

            if (locale == null)
            {
                Console.WriteLine("Unable to retrieve the locale.");
                return;
            }

            Console.WriteLine(
                $@"Locale:
  Country: {locale.Country}
  Timezone: {locale.Timezone}");
        }
        public void ShowTime(string args)
        {
            Time time = SomneoApiClient.GetTime();

            if (time == null)
            {
                Console.WriteLine("Unable to retrieve the time.");
                return;
            }

            Console.WriteLine(
                $@"Time:
  Date/time: {time.DateTime}
  Timezone offset: {time.TimezoneOffset}
  DST: {(time.IsDSTApplied ? "Yes" : "No")} (offset = {time.DSTOffset})
  Next DST change: {time.DSTChangeOver}");
        }
Example #15
0
        private void ShowLightState(string args)
        {
            LightState lightState = SomneoApiClient.GetLightState();

            if (lightState == null)
            {
                Console.WriteLine("Unable to retrieve the light state.");
                return;
            }

            Console.WriteLine(
                $@"Light state:
  Normal light enabled: {(lightState.LightEnabled ? "Yes" : "No")}
  Light level: {lightState.LightLevel}/25
  Night light enabled: {(lightState.NightLightEnabled ? "Yes" : "No")}
  Sunrise preview enabled: {(lightState.SunrisePreviewEnabled ? "Yes" : "No")}");
        }
Example #16
0
        private void ShowSensorData(string args)
        {
            SensorData sensorData = SomneoApiClient.GetSensorData();

            if (sensorData == null)
            {
                Console.WriteLine("Unable to retrieve the sensor data.");
                return;
            }

            Console.WriteLine(
                $@"Sensor data:
  Temperature: {sensorData.CurrentTemperature} °C (avg: {sensorData.AverageTemperature} °C)
  Light: {sensorData.CurrentLight} lux (avg: {sensorData.AverageLight} lux)
  Sound: {sensorData.CurrentSound} dB (avg: {sensorData.AverageSound} dB)
  Humidity: {sensorData.CurrentHumidity} % (avg: {sensorData.AverageHumidity} %)");
        }
        private void ShowFMRadioPresets(string args)
        {
            FMRadioPresets fmRadioPresets = SomneoApiClient.GetFMRadioPresets();

            if (fmRadioPresets == null)
            {
                Console.WriteLine("Unable to retrieve the FM radio presets.");
                return;
            }

            Console.WriteLine(
                $@"FM radio presets:
  1: {fmRadioPresets.Preset1:0.00} FM
  2: {fmRadioPresets.Preset2:0.00} FM
  3: {fmRadioPresets.Preset3:0.00} FM
  4: {fmRadioPresets.Preset4:0.00} FM
  5: {fmRadioPresets.Preset5:0.00} FM");
        }
Example #18
0
        private void ToggleNightLight(string args)
        {
            switch (args?.ToLower())
            {
            case "on":
                SomneoApiClient.ToggleNightLight(true);
                Console.WriteLine("Night light enabled.");
                break;

            case "off":
                SomneoApiClient.ToggleNightLight(false);
                Console.WriteLine("Night light disabled.");
                break;

            default:
                Console.WriteLine("Specify \"on\" or \"off\".");
                break;
            }
        }
Example #19
0
        private void ToggleSunrisePreview(string args)
        {
            switch (args?.ToLower())
            {
            case "on":
                SomneoApiClient.ToggleSunrisePreview(true);
                Console.WriteLine("Sunrise preview enabled.");
                break;

            case "off":
                SomneoApiClient.ToggleSunrisePreview(true);
                Console.WriteLine("Sunrise preview disabled.");
                break;

            default:
                Console.WriteLine("Specify \"on\" or \"off\".");
                break;
            }
        }
        public void ShowDeviceDetails(string args)
        {
            DeviceDetails deviceDetails = SomneoApiClient.GetDeviceDetails();

            if (deviceDetails == null)
            {
                Console.WriteLine("Unable to retrieve the device details.");
                return;
            }

            Console.WriteLine(
                $@"Device details:
  Name: {deviceDetails.Name}
  Model: {deviceDetails.Model}
  Series: {deviceDetails.Series}
  Product range: {deviceDetails.ProductRange}
  Serial number: {deviceDetails.Serial}
  Product ID: {deviceDetails.ProductId}");
        }
        public void ShowWifiDetails(string args)
        {
            WifiDetails wifiDetails = SomneoApiClient.GetWifiDetails();

            if (wifiDetails == null)
            {
                Console.WriteLine("Unable to retrieve the wifi details.");
                return;
            }

            Console.WriteLine(
                $@"Wifi details:
  SSID: {wifiDetails.SSID}
  Protection: {wifiDetails.Protection}
  IP address: {wifiDetails.IPAddress}
  Netmask: {wifiDetails.Netmask}
  Gateway IP: {wifiDetails.Gateway}
  MAC address: {wifiDetails.MACAddress}");
        }
Example #22
0
        private void TogglePermanentDisplay(string args)
        {
            switch (args?.ToLower())
            {
            case "on":
                SomneoApiClient.TogglePermanentDisplay(true);
                Console.WriteLine("Permanent display enabled.");
                break;

            case "off":
                SomneoApiClient.TogglePermanentDisplay(false);
                Console.WriteLine("Permanent display disabled.");
                break;

            default:
                Console.WriteLine("Specify \"on\" or \"off\".");
                break;
            }
        }
        private void SeekFMRadioStation(string args)
        {
            switch (args?.ToLower())
            {
            case "up":
                SomneoApiClient.SeekFMRadioStation(RadioSeekDirection.Up);
                Console.WriteLine("Seeking for a new FM radio station in forward direction.");
                break;

            case "down":
                SomneoApiClient.SeekFMRadioStation(RadioSeekDirection.Down);
                Console.WriteLine("Seeking for a new FM radio station in backward direction.");
                break;

            default:
                Console.WriteLine("Specify \"up\" or \"down\".");
                break;
            }
        }
        private void SetFMRadioPreset(string args)
        {
            if (!string.IsNullOrEmpty(args))
            {
                string[] argsArray = args.Split(new[] { ' ' }, 2);

                if (argsArray.Length == 2 &&
                    int.TryParse(argsArray[0], out int position) &&
                    position >= 1 && position <= 5 &&
                    float.TryParse(argsArray[1], out float frequency) &&
                    frequency >= 87.50 && frequency <= 177.99)
                {
                    SomneoApiClient.SetFMRadioPreset(position, frequency);
                    Console.WriteLine($"Preset {position} set to {frequency:0.00} FM.");
                    return;
                }
            }

            Console.WriteLine("Specify a position between 1 and 5, followed by a frequency between 87.50 and 107.99.");
        }
Example #25
0
        private void ShowPlayerState(string args)
        {
            PlayerState playerState = SomneoApiClient.GetPlayerState();

            if (playerState == null)
            {
                Console.WriteLine("Unable to retrieve the audio player state.");
                return;
            }

            string channelOrPresetState = null;

            switch (playerState.Device)
            {
            case SoundDeviceType.FMRadio:
                int?fmRadioPreset = playerState.GetFMRadioPreset();
                if (fmRadioPreset.HasValue)
                {
                    channelOrPresetState = $"{Environment.NewLine}  FM-radio preset: {fmRadioPreset.Value}";
                }
                break;

            case SoundDeviceType.WakeUpSound:
                WakeUpSound?wakeUpSound = playerState.GetWakeUpSound();
                if (wakeUpSound.HasValue)
                {
                    channelOrPresetState = $"{Environment.NewLine}  Wake-up sound: {EnumHelper.GetDescription(wakeUpSound.Value)}";
                }
                break;
            }

            Console.WriteLine(
                $@"Audio player state:
  Enabled: {(playerState.Enabled ? "Yes" : "No")}
  Volume: {playerState.Volume}/25
  Device: {EnumHelper.GetDescription(playerState.Device)}{channelOrPresetState}");
        }
        public void ShowFirmwareDetails(string args)
        {
            FirmwareDetails firmwareDetails = SomneoApiClient.GetFirmwareDetails();

            if (firmwareDetails == null)
            {
                Console.WriteLine("Unable to retrieve the firmware details.");
                return;
            }

            StringBuilder consoleMessageBuilder = new StringBuilder();

            consoleMessageBuilder.Append(
                $@"Firmware details:
  Name: {firmwareDetails.Name}
  Version: {firmwareDetails.Version}
  State: {firmwareDetails.State}");

            if (!firmwareDetails.IsIdle)
            {
                consoleMessageBuilder.Append(
                    $@"
  Update progress: {firmwareDetails.Progress}
  Status message: {firmwareDetails.StatusMessage}");
            }

            if (firmwareDetails.CanUpgrade)
            {
                consoleMessageBuilder.Append(
                    $@"
  Available upgrade: {firmwareDetails.Upgrade}
  Mandatory: {(firmwareDetails.Mandatory ? "Yes" : "No")}");
            }

            Console.WriteLine(consoleMessageBuilder);
        }
        private void ShowAlarmSettings(string args)
        {
            if (!string.IsNullOrEmpty(args) && int.TryParse(args, out int position) && position >= 1 && position <= 16)
            {
                AlarmSettings alarmSettings = SomneoApiClient.GetAlarmSettings(position);

                if (alarmSettings == null)
                {
                    Console.WriteLine($"No alarm set for position #{position}.");
                    return;
                }

                string daysState = null;
                if (alarmSettings.RepeatDays.Count > 0)
                {
                    daysState = $"{Environment.NewLine}  Days: {string.Join(",", alarmSettings.RepeatDays.Select(d => string.Concat(d.ToString().Take(3))))}";
                }

                string channelOrPresetState = null;
                switch (alarmSettings.Device)
                {
                case SoundDeviceType.FMRadio:
                    int?fmRadioPreset = alarmSettings.GetFMRadioPreset();
                    if (fmRadioPreset.HasValue)
                    {
                        channelOrPresetState = $"{Environment.NewLine}  FM-radio preset: {fmRadioPreset.Value}";
                    }
                    break;

                case SoundDeviceType.WakeUpSound:
                    WakeUpSound?wakeUpSound = alarmSettings.GetWakeUpSound();
                    if (wakeUpSound.HasValue)
                    {
                        channelOrPresetState = $"{Environment.NewLine}  Wake-up sound: {EnumHelper.GetDescription(wakeUpSound.Value)}";
                    }
                    break;
                }

                string sunriseState = null;
                if (alarmSettings.SunriseType != SunriseType.NoLight)
                {
                    sunriseState = $" (intensity: {alarmSettings.SunriseIntensity}/25, duration: {alarmSettings.SunriseDuration}/40 minutes)";
                }

                string soundVolumeState = null;
                if (alarmSettings.Device != SoundDeviceType.None)
                {
                    soundVolumeState = $" (volume: {alarmSettings.Volume}/25)";
                }

                Console.WriteLine(
                    $@"Alarm #{alarmSettings.Position} settings:
  Enabled: {(alarmSettings.Enabled ? "Yes" : "No")}
  Time: {alarmSettings.Hour:00}:{alarmSettings.Minute:00}{daysState}
  PowerWake: {(alarmSettings.PowerWakeEnabled ? $"{alarmSettings.PowerWakeHour.Value:00}:{alarmSettings.PowerWakeMinute.Value:00}" : "off")}
  Sunrise: {EnumHelper.GetDescription(alarmSettings.SunriseType)}{sunriseState}
  Sound device: {EnumHelper.GetDescription(alarmSettings.Device)}{soundVolumeState}{channelOrPresetState}");

                return;
            }

            Console.WriteLine("Specify a position between 1 and 16.");
        }
Example #28
0
 private void EnableAUX(string args)
 {
     SomneoApiClient.EnableAUX();
     Console.WriteLine("Enabled the auxiliary input device.");
 }
Example #29
0
 private void DisablePlayer(string args)
 {
     SomneoApiClient.DisablePlayer();
     Console.WriteLine("Audio player disabled.");
 }
 private void EnableFMRadio(string args)
 {
     SomneoApiClient.EnableFMRadio();
     Console.WriteLine("FM radio enabled for the current preset.");
 }