nanoleafapi
Home Assistant
nanoleafapi | Home Assistant | |
---|---|---|
1 | 1,412 | |
58 | 69,435 | |
- | 1.1% | |
2.6 | 10.0 | |
4 months ago | about 19 hours ago | |
Python | Python | |
MIT License | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
nanoleafapi
-
EO2 -> Nanoleaf palette sync
#requires numpy, pillow #eoPython - https://github.com/tk421storm/eo-python #nanoleafapi - https://github.com/MylesMor/nanoleafapi # # tested in python 3.8 on Win 11 # from urllib.request import urlretrieve from tempfile import gettempdir from os.path import join, splitext, dirname, realpath from uuid import uuid4 from pprint import pprint from time import sleep from eopython import ElectricAccount import numpy as np from nanoleafapi import Nanoleaf, WHITE from PIL import Image nanoleafIP= REPLACE_ME nanoleafAuthToken= REPLACE_ME effect_data = { "command": "add", "version":"2.0", "animName": "EO2", "animType": "plugin", "colorType": "HSB", "pluginUuid": 'ba632d3e-9c2b-4413-a965-510c839b3f71', #https://forum.nanoleaf.me/docs/openapi#_rwyy54qdnrv6 "pluginType": "color", "animData": None, "palette": [ # { # "hue": 0, being a number between 0-360 # "saturation": 100, being a number between 0-100 # "brightness": 100, being a number between 0-100 # }, ], "pluginOptions": [ { "name": "transTime", "value": 100 }, # { useful for some plugins, but doesnt effect currently selected (random) # "name": "linDirection", # "value": "right" # }, { "name": "loop", "value": True }, { "name": "nColorsPerFrame", "value": 2 } ], "brightnessRange": {'minValue':100, 'maxValue':100}, "loop": True } # # thanks to unutbu at https://stackoverflow.com/questions/18801218/build-a-color-palette-from-image-url # def palette(img): """ Return palette in descending order of frequency """ arr = np.asarray(img) palette, index = np.unique(asvoid(arr).ravel(), return_inverse=True) palette = palette.view(arr.dtype).reshape(-1, arr.shape[-1]) count = np.bincount(index) order = np.argsort(count) return palette[order[::-1]] def asvoid(arr): """View the array as dtype np.void (bytes) This collapses ND-arrays to 1D-arrays, so you can perform 1D operations on them. http://stackoverflow.com/a/16216866/190597 (Jaime) http://stackoverflow.com/a/16840350/190597 (Jaime) Warning: >>> asvoid([-0.]) == asvoid([0.]) array([False], dtype=bool) """ arr = np.ascontiguousarray(arr) return arr.view(np.dtype((np.void, arr.dtype.itemsize * arr.shape[-1]))) #log in eoAccount=ElectricAccount(REPLACE_ME_USERNAME, REPLACE_ME_PASSWORD) #get device (from a list, assuming the first) eo2=eoAccount.devices[0] #get the current artwork id currentID=eo2.current_artwork_id() currentURL=eo2.current_artwork_preview() extension=splitext(currentURL.split("?")[0])[1] tempFile=join(gettempdir(), uuid4().hex+extension) print('downloading artwork to '+tempFile) urlretrieve(currentURL, tempFile) img = Image.open(tempFile, 'r').convert('HSV') palette=palette(img) print('found palette with '+str(len(palette))+' colors') #filter found colors based on saturation so we're only getting colors, not white/blacks colorsDesired=10 saturationThreshold=25 luminanceThreshold=50 hueMinDiff=40 filteredPalette=[] storedHues=[] for color in palette: hue=color[0] sat=color[1] val=color[2] if sat>saturationThreshold and val>luminanceThreshold: #also include minimum hue difference check (so we dont end up with a palette of all one color) diffEnough=True for value in storedHues: if hue<=(value+hueMinDiff) and hue>=(value-hueMinDiff): diffEnough=False break if diffEnough: filteredPalette.append(color) storedHues.append(color[0]) if len(filteredPalette)>=colorsDesired: break print('filtered palette to '+str(len(filteredPalette))+' colors') print(filteredPalette) #make effect for nanoleaf for color in filteredPalette: effect_data['palette'].append({'hue':int(color[0]/256)*360), 'saturation':int((color[1]/256)*100), 'brightness':int((color[2]/256)*100)}) effect_name="EO2"#_"+str(currentID) effect_data["animName"]=effect_name #connect to nanoleaf and display effect nano=Nanoleaf(nanoleafIP, nanoleafAuthToken) nano.set_color(WHITE) #response=requests.put(nano.url+"/effects", data = json.dumps({"command":"delete","animName":"EO2"})) #pprint(response.text) pprint(effect_data) nano.write_effect(effect_data) nano.set_effect(effect_name)
Home Assistant
-
Top 17 Fast-Growing Github Repo of 2024
Home Assistant
-
Do not buy a Hisense TV (or at least keep them offline)
Apparently the same issue has been reported with Philips TV [1] and Fritz!Box [2] as well.
[1] https://github.com/home-assistant/core/issues/73643#issuecom...
[2] https://forum.openwrt.org/t/minidlna-creates-new-media-serve...
-
Is it Dry Yet?
The plug would transmit power readings to my Home Assistant setup.
- Ask HN: Why is it so difficult to control IoT devices from your desktop?
-
Changes we're making to Google Assistant
Home Assistant can cast dashboard/media/etc to your display and has shopping lists. https://www.home-assistant.io/
-
Valetudo – Cloud replacement for vacuum robots enabling local-only operation
If you provided MQTT support like plenty of IoT companies do, then any open source home automation tool can integrate! Home Assistant (https://www.home-assistant.io/) have a grading system, so a local-first implementation would give you their highest score since they also really care about privacy. https://www.home-assistant.io/blog/2016/02/12/classifying-th...
-
Script Editor Automation Issue
It's hard not to raise a little smile at Google's automation scripts, which bare a not-entirely-passing resemblance to those of a certain other, more comprehensive home automation system...
-
Best way to make smart lamp safe?
You might consider looking into "Home Assistant".
- Vos expériences avec Hilo?
- Älytaloista kokemuksia?
What are some alternatives?
nanoleafMusic - Sync your Nanoleaf lights with Spotify!
Domoticz - Open source Home Automation System
microk8s - MicroK8s is a small, fast, single-package Kubernetes for developers, IoT and edge. [Moved to: https://github.com/canonical/microk8s]
Node RED - Low-code programming for event-driven applications
SaltStack - Software to automate the management and configuration of any infrastructure or application at scale. Get access to the Salt software package repository here:
homebridge - HomeKit support for the impatient.
eo-python - Electric Objects python library
CasaOS - CasaOS - A simple, easy-to-use, elegant open-source Personal Cloud system.
FHEM - Branch 'master' is an unofficial read-only-mirror of https://svn.fhem.de/fhem/trunk which is updated once a day. (branch sf_old a mirror of the old repo: svn://svn.code.sf.net/p/fhem/code/trunk)
Mycodo - An environmental monitoring and regulation system
openHAB - Add-ons for openHAB 1.x
CompreFace - Leading free and open-source face recognition system