CyBear-Jinni / cbj_integrations_controller

GNU Affero General Public License v3.0
2 stars 1 forks source link

Add Nanoleaf Lights support #56

Open guyluz11 opened 1 year ago

guyluz11 commented 1 year ago

Let's add support for Nanoleaf Lights

Currntly 1.3% of home assistant users are using it.

nanoleaf_icon2

guyluz11 commented 1 year ago

Example code for chect chatGPT, it looks like nanoleaf is doing direct calls to the device using rust

import 'dart:convert';
import 'package:http/http.dart' as http;

const String baseUrl = 'http://192.168.1.100';
const String authToken = 'YourAuthToken';

class NanoleafAPI {
  // Function to retrieve the current state of the lights
  Future<Map<String, dynamic>> getState() async {
    var url = '$baseUrl/state';
    var headers = {
      'Authorization': 'Bearer $authToken',
      'Content-Type': 'application/json',
    };

    var response = await http.get(url, headers: headers);
    if (response.statusCode != 200) {
      throw Exception('Failed to retrieve state');
    }
    return jsonDecode(response.body);
  }

  // Function to turn the lights on
  Future<void> turnOn() async {
    var url = '$baseUrl/state';
    var headers = {
      'Authorization': 'Bearer $authToken',
      'Content-Type': 'application/json',
    };
    var body = jsonEncode({'on': {'value': true}});

    var response = await http.put(url, headers: headers, body: body);
    if (response.statusCode != 200) {
      throw Exception('Failed to turn on lights');
    }
  }

  // Function to turn the lights off
  Future<void> turnOff() async {
    var url = '$baseUrl/state';
    var headers = {
      'Authorization': 'Bearer $authToken',
      'Content-Type': 'application/json',
    };
    var body = jsonEncode({'on': {'value': false}});

    var response = await http.put(url, headers: headers, body: body);
    if (response.statusCode != 200) {
      throw Exception('Failed to turn off lights');
    }
  }
}
guyluz11 commented 6 months ago

Api documentation https://documenter.getpostman.com/view/1559645/RW1gEcCH#cbbfadae-fa4a-4cdf-933e-1e9d8fbf40d0