Code Monkey home page Code Monkey logo

smartthingspublic's People

Contributors

alamchas avatar bflorian avatar bydengs avatar davidsulpy avatar dczarneckas avatar dkirker avatar fenmei007s avatar greens avatar jackchi avatar juano2310 avatar kklimczuks avatar kwarodom avatar larsfinander avatar marstorp avatar mckeed avatar mgoralczyks avatar mmateusiaks avatar mwierzbinskas avatar parijatdas avatar pchomal avatar pkacprowiczs avatar rohandesai avatar shinasys avatar skt123 avatar sky-nie avatar surfous avatar tpmanley avatar varzac avatar workingmonk avatar zwozniaks avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

smartthingspublic's Issues

Ecobee Connect Smartapp

I am receiving an error when adding my ecobee 3 thermostat from Marketplace=>things=>climate control=>thermostats=>ecobee+>ecobee 3
The error is as follows

error groovy.lang.GroovyRuntimeException: Ambiguous method overloading for method physicalgraph.event.EventService#create.
Cannot resolve which method to invoke for [null, class java.util.LinkedHashMap] due to overlapping prototypes between:
[class physicalgraph.app.InstalledSmartApp, interface java.util.Map]
[class physicalgraph.device.cache.HubDTO, interface java.util.Map]
[class physicalgraph.device.cache.InstalledSmartAppDTO, interface java.util.Map]
[class physicalgraph.device.cache.LocationDTO, interface java.util.Map]
[class physicalgraph.location.Location, interface java.util.Map] @ line 318

Is this an error in the smartapp or my hub?

SmartApp dynamicPage - Function Calls Grow Exponentially

I also opened a topic on the community forums here:

https://community.smartthings.com/t/bug-issue-with-dynamic-page/89625

Using the code below, the function is being called twice every interval causing the logging to spiral out of control.

definition(
    name: "TestApp",
    namespace: "randuhmm",
    author: "Jonny Morrill",
    description: "testing",
    category: "",
    iconUrl: "https://s3.amazonaws.com/smartapp-icons/Convenience/Cat-Convenience.png",
    iconX2Url: "https://s3.amazonaws.com/smartapp-icons/Convenience/[email protected]",
    iconX3Url: "https://s3.amazonaws.com/smartapp-icons/Convenience/[email protected]")

preferences {
    page(name: "testFunc", title: "Test Func", content: "testFunc")
}

def testFunc() {
    log.debug 'testFunc()'
    dynamicPage(name: "testFunc", title: "Test Func", nextPage: "", refreshInterval: 5, install: true, uninstall: true) {
        section("Example...") {
        }
    }
}

The logs for this SmartApp look like this:

9779fd5c-b67e-4916-8b60-8873bef14562 9:46:38 PM: debug testFunc()
9779fd5c-b67e-4916-8b60-8873bef14562 9:46:38 PM: debug testFunc()
9779fd5c-b67e-4916-8b60-8873bef14562 9:46:38 PM: debug testFunc()
9779fd5c-b67e-4916-8b60-8873bef14562 9:46:38 PM: debug testFunc()
9779fd5c-b67e-4916-8b60-8873bef14562 9:46:38 PM: debug testFunc()
9779fd5c-b67e-4916-8b60-8873bef14562 9:46:38 PM: debug testFunc()
9779fd5c-b67e-4916-8b60-8873bef14562 9:46:38 PM: debug testFunc()
9779fd5c-b67e-4916-8b60-8873bef14562 9:46:38 PM: debug testFunc()
9779fd5c-b67e-4916-8b60-8873bef14562 9:46:38 PM: debug testFunc()
9779fd5c-b67e-4916-8b60-8873bef14562 9:46:38 PM: debug testFunc()
9779fd5c-b67e-4916-8b60-8873bef14562 9:46:38 PM: debug testFunc()
9779fd5c-b67e-4916-8b60-8873bef14562 9:46:38 PM: debug testFunc()
9779fd5c-b67e-4916-8b60-8873bef14562 9:46:38 PM: debug testFunc()
9779fd5c-b67e-4916-8b60-8873bef14562 9:46:38 PM: debug testFunc()
9779fd5c-b67e-4916-8b60-8873bef14562 9:46:38 PM: debug testFunc()
9779fd5c-b67e-4916-8b60-8873bef14562 9:46:37 PM: debug testFunc()
9779fd5c-b67e-4916-8b60-8873bef14562 9:46:37 PM: debug testFunc()
9779fd5c-b67e-4916-8b60-8873bef14562 9:46:37 PM: debug testFunc()
9779fd5c-b67e-4916-8b60-8873bef14562 9:46:37 PM: debug testFunc()
9779fd5c-b67e-4916-8b60-8873bef14562 9:46:37 PM: debug testFunc()
9779fd5c-b67e-4916-8b60-8873bef14562 9:46:37 PM: debug testFunc()
9779fd5c-b67e-4916-8b60-8873bef14562 9:46:37 PM: debug testFunc()
9779fd5c-b67e-4916-8b60-8873bef14562 9:46:37 PM: debug testFunc()
9779fd5c-b67e-4916-8b60-8873bef14562 9:46:37 PM: debug testFunc()
9779fd5c-b67e-4916-8b60-8873bef14562 9:46:37 PM: debug testFunc()
9779fd5c-b67e-4916-8b60-8873bef14562 9:46:37 PM: debug testFunc()
9779fd5c-b67e-4916-8b60-8873bef14562 9:46:37 PM: debug testFunc()
9779fd5c-b67e-4916-8b60-8873bef14562 9:46:37 PM: debug testFunc()
9779fd5c-b67e-4916-8b60-8873bef14562 9:46:37 PM: debug testFunc()
9779fd5c-b67e-4916-8b60-8873bef14562 9:46:37 PM: debug testFunc()
9779fd5c-b67e-4916-8b60-8873bef14562 9:46:37 PM: debug testFunc()
9779fd5c-b67e-4916-8b60-8873bef14562 9:46:37 PM: debug testFunc()
9779fd5c-b67e-4916-8b60-8873bef14562 9:46:33 PM: debug testFunc()
9779fd5c-b67e-4916-8b60-8873bef14562 9:46:33 PM: debug testFunc()
9779fd5c-b67e-4916-8b60-8873bef14562 9:46:32 PM: debug testFunc()
9779fd5c-b67e-4916-8b60-8873bef14562 9:46:32 PM: debug testFunc()
9779fd5c-b67e-4916-8b60-8873bef14562 9:46:32 PM: debug testFunc()
9779fd5c-b67e-4916-8b60-8873bef14562 9:46:32 PM: debug testFunc()
9779fd5c-b67e-4916-8b60-8873bef14562 9:46:32 PM: debug testFunc()
9779fd5c-b67e-4916-8b60-8873bef14562 9:46:32 PM: debug testFunc()
9779fd5c-b67e-4916-8b60-8873bef14562 9:46:32 PM: debug testFunc()
9779fd5c-b67e-4916-8b60-8873bef14562 9:46:32 PM: debug testFunc()
9779fd5c-b67e-4916-8b60-8873bef14562 9:46:32 PM: debug testFunc()
9779fd5c-b67e-4916-8b60-8873bef14562 9:46:32 PM: debug testFunc()
9779fd5c-b67e-4916-8b60-8873bef14562 9:46:32 PM: debug testFunc()
9779fd5c-b67e-4916-8b60-8873bef14562 9:46:32 PM: debug testFunc()
9779fd5c-b67e-4916-8b60-8873bef14562 9:46:27 PM: debug testFunc()
9779fd5c-b67e-4916-8b60-8873bef14562 9:46:27 PM: debug testFunc()
9779fd5c-b67e-4916-8b60-8873bef14562 9:46:27 PM: debug testFunc()
9779fd5c-b67e-4916-8b60-8873bef14562 9:46:27 PM: debug testFunc()
9779fd5c-b67e-4916-8b60-8873bef14562 9:46:27 PM: debug testFunc()
9779fd5c-b67e-4916-8b60-8873bef14562 9:46:27 PM: debug testFunc()
9779fd5c-b67e-4916-8b60-8873bef14562 9:46:26 PM: debug testFunc()
9779fd5c-b67e-4916-8b60-8873bef14562 9:46:26 PM: debug testFunc()
9779fd5c-b67e-4916-8b60-8873bef14562 9:46:21 PM: debug testFunc()
9779fd5c-b67e-4916-8b60-8873bef14562 9:46:21 PM: debug testFunc()
9779fd5c-b67e-4916-8b60-8873bef14562 9:46:21 PM: debug testFunc()
9779fd5c-b67e-4916-8b60-8873bef14562 9:46:21 PM: debug testFunc()
9779fd5c-b67e-4916-8b60-8873bef14562 9:46:16 PM: debug testFunc()
9779fd5c-b67e-4916-8b60-8873bef14562 9:46:16 PM: debug testFunc()
9779fd5c-b67e-4916-8b60-8873bef14562 9:46:11 PM: debug testFunc()

As you can see the number of concurrent function calls is increasing exponentially every cycle. It would be a great help if anyone could confirm this behavior on their end. Thanks!

Issue with adding lights

Hi,

Re: https://github.com/SmartThingsCommunity/SmartThingsPublic/blob/8d920ea072a829e1ead55c8161595dce75ebd05d/smartapps/smartthings/hue-connect.src/hue-connect.groovy

I have a Hue emulator that I am trying to add to smartthings. I am able to discover the bridge and proceed to the light discovery page. However it just gets stuck there.

I have debug the issue down to the below code, it is returning [:]. I am not sure where to go to continue to debug it.

Map getHueBulbs() {
state.bulbs = state.bulbs ?: [:]
}

Also where in the code does it generate a string like this:
[ab6ef852-bb9c-1b54-5e00-852761f84bfc/3:Bedside Lamp, ab6ef852-bb9c-1b54-5e00-852761f84bfc/2:Bedroom Ceiling, ab6ef852-bb9c-1b54-5e00-852761f84bfc/1:Living Room Ceiling]

Thank you.

Ecobee connect smartapp not opening

I can't seem to open the smart app. I've tried simulating it on the IDE and it just thinks. And on my phone when I try to add the smart app it thinks, and then stops. The app ends up being added, but the same thing happens when I try to open the installed smart app. (It thinks and doesn't open)

Any ideas what I'm doing wrong?

Can't stop the music

I implemented this using SmartThings and even after deleting the rule from SmartThings and rebooting the network I still can't stop the Bose from playing. Tried everything.

ruby with SmartThings

I use the computer language "ruby" , is there any resources about ruby of SmartThings and how can i use "SmartThings API" by ruby , I don't know if it can work?

energy alert with z wave relay

Hi I am trying to get the energy alert app to work with my z wave relay it doesn't allow me to input anything in the section 'when this power meter...'

Please advise

Unable to add device during configuration

Application installs correctly and discovers my TV however I then receive an "unknown error" in my app. When looking at my "live log" I see the following error.

physicalgraph.app.exception.UnknownDeviceTypeException: Device type 'Samsung Smart TV' in namespace 'smartthings' not found. @ line 125

Typos in logErrors function

In the lifx-connect.groovy SmartApp, in the logErrors function (line 298), there are two return points inside the exception handlers (lines 307 and 310).

Each of these return points is currently:

return options.errerReturn

Whereas they should be:

return options.errorReturn

Mode Misfires

Since their last platform upgrade, ST has been having a lot of issues with mode based triggers. The SmartAlarm app for example would trigger alarm even though the mode is set to Home - Within the app the state would show as Alarm. Also noticed this on the drop cam app that would take pics only in away mode.

(iOS 2.0.4) Correct mode is not reflected in iOS app after a mode change.

Mode change happens but correct mode is not reflected in the app. It shows the stale mode unless the app is killed and restarted.

How to reproduce:

GoodMorning! routine triggers when things start happening in the morning, Mode changes from Night to Home. The iOS app still shows the stale mode.

SmartSense Open/Closed Sensor, SmartSense Moisture, Simulated Switch (and other many other DTHs) is missing standard Capability "sensor" and/or "actuator"

All DTHs should claim capability "sensor" and/or capability "actuator".

For reference, the SmartSense Motion Sensor correctly claims capability "sensor" here:

But the SmartSense Open/Closed Sensor does not:


This is critical to SmartTiles V6 because we encourage the users to select all their devices with two general filter input statements (sensor and actuator). As such, Devices of this DTH are currently not selectable in our SmartApp: SmartTiles V6 Beta (Connect).

[BUG] HubAction HTTP Response Header Parsing

After some experimentation I discovered an issue in the way the HubAction parses HTTP response headers.

The issue is that the hubaction response parser requires a space ' ' after the colon ':' that separates the field-name from the field-value.
The HTTP Spec does not require a space, (but does prefer it).

The field value MAY be preceded by any amount of LWS, though a single SP is preferred.

Unfortunately some Hikvision IP camera's send the content length without preceding the value with a space. This makes it impossible to implement the Image.take() capability for these devices.

It would be nice if the hubaction parser could be made to accept response headers with and without space between the colon and the field-value.

Working Response Note the space Content-Length:<SP><length>

HTTP/1.1 200 OK
Content-Type: image/jpeg; charset="UTF-8"
Content-Length: 223556

<data>

Not Working Note the absence of a space Content-Length:<length>

HTTP/1.1 200 OK
Content-Type: image/jpeg; charset="UTF-8"
Content-Length:223556

<data>

Mimolite-garage-door-controller not updating

Using the mimolite-garage-door-controller device handler but if the mimolite is triggered from outside the ST iOS app the status does not update. For example if I open it from smarttiles, homeremote, or manually it shows open in smarttiles/homeremote but if I go into the ST iOS app it still shows closed. If I tap the refresh tile in ST then it gets stuck on "closing" and nothing happens. Then it shows "closing" on smarttiles/homeremote as well.

Updates fine if controlled from ST app. Any ideas?

Ecobee Connect - Java unexpected error

When trying to log into the Ecobee Connect app it gives me the following error right after "Click to enter Ecobee Credentials"

It's just a white screen with the following text:
{"error":True, "Type"; "java.lang.reflect.UndeclaredThrowableException", "Message": ""An unexpected error occurred."}

Any help?

(I'm on an iPhone if that matters)

Integration with 2Gig CT100 humidity

@bflorian

Greetings.
I have installed the app and was able to choose the "monitor the humidity of" the thermostat

I do not have a smart outlet yet but have Aeon microcontroller light switch.
I was able to choose it as the "control humidity"

I have set the "when the humidity rises above" to 0
I have set the "when the humidity drops below" to 50

The light switch is not triggered.
Thanks for directing me in the right direction.

zigbee-rgbw-bulb hues are off

scaledHueValue is calculated by taking a byte dividing by 255 and multiplying by 100. A hue should be between 0 and 360 though. Initial tests with lightify bulbs show that changing the multiplier to 360 produces the correct hues.

Error viewing camera

First off, HUGE thank you for creating this! I'm a new Smartthings user, and very excited to learn how to use the custom development and from such an incredibly well built/documented program! Can't wait to start integrating this all together!

So I'm having an issue under cameras where I can turn streaming on/off, but can't see the video. I'm getting the message attached.

img_5778

Thank you!
Justin

Change your device's icons isn't working right.

From Support Sept 14th

Roger (SmartThings)
Sep 14, 3:31 AM

Hey Dawn,

At the moment, the ability to change your device's icons isn't working quite right. We are aware of this and are working hard on getting this fixed.

Aeon Multisensor (Gen 6) throwing.

java.lang.SecurityException: Getting properties on class physicalgraph.device.Device_$$_javassist_11 is not allowed @ line 246

This happens when attempting a secure inclusion on battery or wired.

CT100 java.lang.NullPointerException

The latest commit for CT100 device handler completely broke the functionality of the device. Changing fan mode or temperature mode is broken:

java.lang.NullPointerException: Cannot invoke method leftShift() on null object @ line 619
java.lang.NullPointerException: Cannot invoke method leftShift() on null object @ line 606

https://github.com/SmartThingsCommunity/SmartThingsPublic/blob/master/devicetypes/smartthings/ct100-thermostat.src/ct100-thermostat.groovy#L604-L609

https://github.com/SmartThingsCommunity/SmartThingsPublic/blob/master/devicetypes/smartthings/ct100-thermostat.src/ct100-thermostat.groovy#L604-L609

Issues with zen-thermostat.groovy

When the thermostat is in Fahrenheit mode the temperatures show decimals such as 72.7.

I have errors in my error log that show up as
read attr - raw: 93670102010A2900190D00, dni: 9367, endpoint: 01, cluster: 0201, size: 0A, attrId: 0029, encoding: 19, value: 000d

Pretty sure that the alpha characters are lowercase when coming from the thermostat.

Also the below method is missing 000c which is heating

I believe 000c and 000d to be stage 2 heat, but no one has the API for this thermostat. I contacted Smartthings, ZEN, and openhome.io and this was not helpful. I am coming from a Radio Thermostat and they distinguish when your thermostat is in aux mode.

def getOperatingStateMap() { [
"0000":"idle",
"0001":"heating",
"0002":"cooling",
"0004":"fan only",
"0005":"heating",
"0006":"cooling",
"0008":"heating",
"0009":"heating",
"000A":"heating",
"000D":"heating",
"0010":"cooling",
"0012":"cooling",
"0014":"cooling",
"0015":"cooling"
]}

HTTP API?

hi! new SmartThings user here. I'm investigating the integration options, and it seems like the way to do that is to write code that runs in SmartThings' cloud.

I would like if I could write simple desktop tools to query my hub directly. If not that, I would like to have a desktop app send requests to a SmartThings API on the internet. I see that some people worked around the hosted apps by writing a SmartApp that exposes an API, but it would be much nicer to write against an official API, especially if it is exposed by the hub directly on the local network.

Is my preference currently possible? If not, is there any plan to support it?

Missing Lock Codes in Zigbee Lock!

Cannot do remote programming of zigbee lock (yale deadbolt). The z-wave lock has the group "Lock Codes" and the zigbee lock is missing the coding for it.

Invalid colors

I've found several invalid colors:

  1. Alice Blue
  2. Indian Red
  3. Navajo White
  4. Peru

Also, the color "Snow" is actually "Red" rather than "White?"

SmartThings MultiSensor 6

The published device handler for the Aeon Labs Multisensor 6 has a serious error which prevents proper installation of the Multisensor 6. Specifically, the device handler fingerprint is incorrect.

As published, the fingerprint lists an outClusters "0x5A", but the "0x5A" needs to be part of the inclusters, and there should be no outClusters for this device.

Fingerprint should read:

fingerprint deviceId: "0x2101", inClusters: "0x5E,0x86,0x72,0x59,0x85,0x73,0x71,0x84,0x80,0x30,0x31,0x70,0x7A,0x5A"

Mismatch in Netatmo/Weather Underground units.

Netatmo Units are returned in Metric (Celsius) as described in the Netatmo API contracts, but Weather Underground requires US (see tempf field description in API contract).

This causes issues on Weather Underground, as the site applies it's own conversion again (receives a Celsius value in Fahrenheit field, converts that to Celsius, so temp is incorrect.

Routines execute partially

Some routines don't fully execute. Example, Good Night routine didn't set heating/cooling points on Honeywell thermostat nor turned off Wemo switches.

Ecobee Device - Celsius

I've installed the Ecobee device for my Ecobee3. I live in Canada and my Ecobee is set to Celsius.

The ecobee device reads this correctly and displays the correct temperature (20 Celsius). However when I adjust the temperatures it pushes the new set points in Fahrenheit:
So for example, the house is 20, the app says 20 it's all good. The up arrow moves it to 21, but now the thermostat is set to 21 fahrenheit! Which is way too cold!

Also, the remote sensors are all translating everything to fahrenheit, so it knows my sensors are about 67, 68 etc. It would be nice to display this in Celsius for us that use the metric system.

Any developers know how to fix this?

smartsense-motion-sensor.groovy Celcius rounding

The following Commit (SSVD-2897 to round Celsius and fix rounding on Fahrenheit) removed Celsius decimal places. Currently all motion sensors are displaying high by .5 or lower by .5. This is causing a 1 degree variance from what the actual temperature is:

Furthermore, lines 258 to 263 force the Offset to rounding to Integer (whole) values. Users using Celsius require more accurate temperature displays at least to .5 but preferably to .1 degree increments.

Mode Toggle in Z-Wave Thermostat Fails with GoControl Thermostat

Mode Toggle in Z-Wave Thermostat Fails with the GoControl Thermostat when switching from Auto to the next state. It will toggle from Off to Heat, Heat to Cool, and Cool to Auto, but trying toggle from Auto back to the next state (which I assume is OFF, since I don't have Emergency Heat) the toggle gets stuck on "Updating," the thermostat remains in Auto, and no further activity appears in the logs.

CA3570 - Status reports but cannot control

I installed the device handler from LunkwillAndFook without any problems. I see the handler is associated with the switch. The switch is set up in Single Switch mode to control a pool pump. The Primary switch behavior is set to Switch All. My hub is about 15 feet away from the switch with only a wood frame wall between. My Smartthings app see the device and reports the status fine. I just can't control the switch. I did not install any smartapps for the device, it didn't seem like I would need to. I am new to this world so I don't know what I could be missing.

smartpower-dimming-outlet.groovy not showing on/off state

Since commit 65d4a81 the smartpower-dimming-outlet.groovy DTH no longer shows on/off states when using "set level" commands. Using C0re (for example) to set the level to 60% results in the light turning on to 60% but the device shows the device is still off. Only On/Off commands result in the DTH properly reflecting the device state.

Looks like this was fixed in other DTH's but not applied to this one: be2e19e

Following code needs to be changed?

def setLevel(value) {
zigbee.setLevel(value)

Needs to be changed to:

def setLevel(value) {
zigbee.setLevel(value) + zigbee.onOffRefresh() + zigbee.levelRefresh() //adding refresh because of ZLL bulb not conforming to send-me-a-report

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.