GithubHelp home page GithubHelp logo

jeedom-zigate / jeedom-plugin-zigate Goto Github PK

View Code? Open in Web Editor NEW
29.0 10.0 12.0 3.93 MB

Plugin Jeedom for ZiGate key.

License: MIT License

PHP 73.35% JavaScript 16.73% Shell 0.81% Python 9.11%
jeedom jeedom-plugin php home-automation zigate

jeedom-plugin-zigate's People

Contributors

deepcore93 avatar doudz avatar fairecasoimeme avatar ioull avatar karreg avatar llaumgui 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

jeedom-plugin-zigate's Issues

Certificate Validation Error

Hi,

I found a bug in your Jeedom Plugin ZiGate.
My Jeedom is configured to use only HTTPS (internal and external).
The debian that host this Jeedom doesn't know the CA.
So, your zigated.py do a requests.post at line 52.

To correct the problem, I added verify=False like this :
r = requests.post(self.url + '?apikey={}'.format(self.apikey),
data=json.dumps(m, cls=zigate.core.DeviceEncoder),verify=False)

Now, I'm getting some warning in the log about the certificate is not secure, but that's working fine.

Dépendance pip3

Dans la documentation troubleshoot, rajouter la dépendance à pip3 ou alors la rajouter en dépendance.

Rajouter un champ pluginVersion

Dans plugin_info/info.json il faudrait rajouter un champ pluginVersion pour mieux versionner le plugin et pouvoir suivre une Roadmap.

Nouveau logo

Le logo actuel ne respecte pas complètement les guidelines Jeedom. Il faudrait le modifier (fond, police, etc...).

Create asciidoc documentation

D'après la documentation du dev de plugin:

doc : doit contenir la doc du plugin au format asciidoc, la racine et le fichier index.asciidoc. Toutes les images sont dans doc/images. La doc elle-même est dans un dossier en fonction de la langue (ex en francais : doc/fr_FR)

Mais vu que jeedom lui même ne pousse pas vraiment cette procédure, je ne mettrait pas ça en priorité très très haute...

Ajouter la gestion des groupes

Ajouter la gestion des groupes afin de pouvoir configurer des interrupteurs et des ampoules pour une utilisation autonome sans zigate

Mauvaise valeur de Dernière communication

Dans la page santé, Dernière communication prends la valeur de la derrnière date de redemarrage du démon ...
J'ai un fix mais je ne mesure pas bien l'impact ... si quelqu'un connait bien les entrailles de Jeedom et de ces plugins pour valider ce serait top

Dans le fichier core/class/zigate.class.php dans la methode syncDevice, j'ai remonté la ligne
$eqLogic->createCommands($device);
avant
$eqLogic->setStatus('lastCommunication', $device['info']['last_seen']);
car j'imagine lastCommunication est mis à jour avec createCommand ...

Je vous laisse regarder ca, c'est en test chez moi ;-)

Date de dernier message pas à jour ?

Bonjour,

on y verra plus clair avec la page santé (#33), mais des fois j'ai l'impression que la date de dernière communication n'est pas à jour par rapport à la dernière valeur dans l'historique des commandes.
Je veux bien un peu de feedback.

Calcul du % de batterie...

Aller, je lance le troll, il y a 3 méthodes actuellement:

  • Abeille.
  • Xiaomi Gateway
  • Zigate.

On pourrait voir lequelle est la mieux et l'adopter.

Jeedom - Menu "Protocole domotique"

Bonjour,

Depuis la dernière mise à jour "ZiGate" n'apparait plus dans mon menu "Protocole domotique" mais dans un menu nommé "home automation protocol", je ne sais pas si ce "bug" a déjà été remonté.

image

Cordialement.

Problème lors de l'ajout d'un contact de porte.

Bonjour,

Voici mon problème : lorsque j'ajoute un contact de porte lumi.sensor_magnet.aq2 , je n'ai pas l'action onoff qui est présente.

Avez-vous déjà rencontré ce problème et si oui comment le résoudre

Merci

Sébastien

Pb affichage batterie sur widget

si je coche afficher batterie (sonde Xaomi) ça l'affiche bien dans le widget sur dashboard fonctionne, sauf qu'il la perd ensuite au bout d'un moment

Plus d'information sur des capteurs d'ouverture Xiaomi

Bonjour,

Après 11 jours d'utilisation avec :

  • 6 capteurs d'ouverture Xiaomi
  • 4 capteurs de mouvement Xiaomi
  • 7 capteurs de température Xiaomi
  • 2 boutons carrés Xiaomi (non fonctionnels mais associés)
  • 4 capteur d'inondation Xiaomi (non fonctionnels mais associés)

Ça a bien tourné pour tous pendant 6 jours, mais depuis 5 jours je n'ai plus d'informations de deux capteurs d'ouverture...
Est-ce normal? Est-ce déjà arrivé?
Que puis-je faire pour qu'il donne de nouveau les informations d'ouverture?

Merci d'avance.
Cordialement.

Prise OSRAM SMART+

Bonjour,

Je viens de faire l'acquisition de prises OSRAM SMART+.
Pour le détection, il suffit de passer la ZIGATE en mode inclusion puis d'appuyer environ 5sec sur le bouton de la prise (jusqu'a ce que l'on entende le relais coller).
La prise est bien reconnu, le retour d'état fonctionne bien mais il n'y a pas d'action On et Off.
J'ai peut être raté quelque chose,

Merci

Sébastien

Documentation contributeurs

Faire une documentation développeurs / contributeurs.

  • Générer le site web de la documentation en local.
  • Tester la validité de la syntaxe markdown.
  • Tester votre code PHP.

Manque des actions onoff pour lumi.sensor_86sw2\u0000Un

{
"addr": "e7a5",
"endpoints": [
{
"clusters": [
{
"attributes": [
{
"attribute": 1,
"data": 4
},
{
"attribute": 4,
"data": "LUMI",
"name": "manufacturer",
"value": "LUMI"
},
{
"attribute": 5,
"data": "lumi.sensor_86sw2\u0000Un",
"name": "type",
"value": "lumi.sensor_86sw2\u0000Un"
},
{
"attribute": 6,
"data": "20160517",
"name": "datecode",
"value": "20160517"
},
{
"attribute": 65281,
"data": "0121db0b03281c0421a81305212500062401000000000a21000021",
"name": "battery",
"unit": "V",
"value": 3.035
},
{
"attribute": 7,
"data": 3,
"name": "power_source",
"value": 3
}
],
"cluster": 0
},
{
"attributes": [
{
"attribute": 0,
"data": false,
"name": "onoff",
"value": false
}
],
"cluster": 6
}
],
"device": 24321,
"endpoint": 1,
"in_clusters": [
0,
3,
25,
65535,
18
],
"out_clusters": [
0,
4,
3,
5,
25,
65535,
18
],
"profile": 260
},
{
"clusters": [
{
"attributes": [
{
"attribute": 0,
"data": false,
"name": "onoff",
"value": false
}
],
"cluster": 6
}
],
"device": 0,
"endpoint": 2,
"in_clusters": [],
"out_clusters": [],
"profile": 0
},
{
"clusters": [
{
"attributes": [
{
"attribute": 0,
"data": false,
"name": "onoff",
"value": false
}
],
"cluster": 6
}
],
"device": 0,
"endpoint": 3,
"in_clusters": [],
"out_clusters": [],
"profile": 0
}
],
"info": {
"addr": "e7a5",
"bit_field": "0100000000000010",
"descriptor_capability": "00000000",
"ieee": "00158d0001831b5e",
"last_seen": "2018-03-21 12:09:13",
"mac_capability": "10000000",
"manufacturer": "1037",
"max_buffer": 127,
"max_rx": 100,
"max_tx": 100,
"rssi": 105,
"server_mask": 0
}
},

Problème de changement d'état ampoule IKEA

l'état et le niveau ne sont pas rafraichi apres les commandes ...
Si elle est eteinte et que je clique sur on le statut onoff reste sur off.
De même pour le level, il n'est rafraichi que quand je clique sur rafraichir.

Pour le widget, current_level doit avoir une echelle de 1à100 car des 99 jusque 255, la jauge est pleine.

Page Santé

Pour faciliter la maintenance, une page de santé remontant les dernières dates de communication, la qualité de réception, les piles, etc... le tout par équipement serait appréciable.
De même certaines infos pourraient figurer directement dans la page équipement, à la manière des plugins ZWave et RFX.

Bouton poussoir carré Xiaomi non fonctionnel

Bonjour,

Après 11 jours d'utilisation avec :

6 capteurs d'ouverture Xiaomi
4 capteurs de mouvement Xiaomi
7 capteurs de température Xiaomi
2 boutons carrés Xiaomi (non fonctionnels mais associés)
4 capteur d'inondation Xiaomi (non fonctionnels mais associés)

Mes deux boutons poussoirs Xiaomi (comme présentés ici : https://faire-ca-soi-meme.fr/test/2017/05/29/nouvelle-gamme-xiaomi-aqara/) se sont bien associés dés le début mais lorsque je clique il ne change pas d'état et reste en on.
J'ai bien les commandes "application_version", "onoff", "battery" et "type".

Est-ce normal? Comment faire pour avoir deux états dessus?

Merci d'avance.
Cordialement.

Problème avec le Magic cube xiaomi

https://www.jeedom.com/forum/viewtopic.php?p=627133#p627133

Bonjour !

Je viens de recevoir le magic cube Aqara et je me suis empressé à l'inclure a travers la ZiGate dans Jeedom. Il ne semble pas y avoir d'icône de disponible dans le plugin pour ce "bouton", ce n'est rien, mais c'est quand même utile lorsque l'on recherche un objet particulier.

De plus, je n'ai testé que quelques gestes, mais il semble qu'une fois un geste effectué on ne peut le ré-effectuer si le dernier geste était le même (pour le shake, le mouvement = 0, lorsque je "re-shake" le scénario n'est pas déclenché)
La rotation me semble compliquée à définir je l'avoue... Si quelqu'un a réussi à le systématiser, un peu d'aide serait la bienvenue :)

Merci !

Daemon redémarre et erreur lors de l'inclusion

Je suis sur un raspberry (Linux raspberrypi 4.9.35-v7+), jeedom 3.2.11, Zigate 2018-08-30 22:27:54.

L'installation s'est bien passée. Le démon a démarré, mais il redémarre très régulièrement (genre là à 22h25 puis 22h31 puis 22h34...) ou parfois s'arrête tout seul.

Je ne sais pas si c'est lié mais lorsque je veux me mettre en mode inclusion, j'ai direct une erreur et en regardant dans les logs, j'ai ça :

[2018-09-07 22:26:25][DEBUG] : callZiGate get_version_text
[2018-09-07 22:26:25][DEBUG] : result callZiGate
[2018-09-07 22:26:26][DEBUG] : callZiGate permit_join
[2018-09-07 22:26:26][DEBUG] : result callZiGate 

Les résultats semblent vides (probablement normal si je fais la requête lorsque le démon est down.

Sinon j'ai aussi ce log :

Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 516, in urlopen
body=body, headers=headers)
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 304, in _make_request
self._validate_conn(conn)
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 724, in _validate_conn
conn.connect()
File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 203, in connect
conn = self._new_conn()
File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 133, in _new_conn
(self.host, self.port), self.timeout, **extra_kw)
File "/usr/lib/python3/dist-packages/urllib3/util/connection.py", line 87, in create_connection
raise err
File "/usr/lib/python3/dist-packages/urllib3/util/connection.py", line 78, in create_connection
sock.connect(sa)
TimeoutError: [Errno 110] Connection timed out
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/requests/adapters.py", line 362, in send
timeout=timeout
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 559, in urlopen
_pool=self, _stacktrace=stacktrace)
File "/usr/lib/python3/dist-packages/urllib3/util/retry.py", line 245, in increment
raise six.reraise(type(error), error, _stacktrace)
File "/usr/lib/python3/dist-packages/six.py", line 624, in reraise
raise value.with_traceback(tb)
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 516, in urlopen
body=body, headers=headers)
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 304, in _make_request
self._validate_conn(conn)
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 724, in _validate_conn
conn.connect()
File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 203, in connect
conn = self._new_conn()
File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 133, in _new_conn
(self.host, self.port), self.timeout, **extra_kw)
File "/usr/lib/python3/dist-packages/urllib3/util/connection.py", line 87, in create_connection
raise err
File "/usr/lib/python3/dist-packages/urllib3/util/connection.py", line 78, in create_connection
sock.connect(sa)
urllib3.exceptions.ProtocolError: ('Connection aborted.', TimeoutError(110, 'Connection timed out'))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/var/www/html/plugins/zigate/core/class/../../resources/zigated/zigated.py", line 255, in <module>
if not jc.test():
File "/var/www/html/plugins/zigate/core/class/../../resources/zigated/zigated.py", line 71, in test
r = self.send_now({'action': 'test'})
File "/var/www/html/plugins/zigate/core/class/../../resources/zigated/zigated.py", line 67, in send_now
return self._request(message)
File "/var/www/html/plugins/zigate/core/class/../../resources/zigated/zigated.py", line 54, in _request
verify=False)
File "/usr/lib/python3/dist-packages/requests/api.py", line 94, in post
return request('post', url, data=data, json=json, **kwargs)
File "/usr/lib/python3/dist-packages/requests/api.py", line 49, in request
return session.request(method=method, url=url, **kwargs)
File "/usr/lib/python3/dist-packages/requests/sessions.py", line 457, in request
resp = self.send(prep, **send_kwargs)
File "/usr/lib/python3/dist-packages/requests/sessions.py", line 595, in send
history = [resp for resp in gen] if allow_redirects else []
File "/usr/lib/python3/dist-packages/requests/sessions.py", line 595, in <listcomp>
history = [resp for resp in gen] if allow_redirects else []
File "/usr/lib/python3/dist-packages/requests/sessions.py", line 189, in resolve_redirects
allow_redirects=False,
File "/usr/lib/python3/dist-packages/requests/sessions.py", line 569, in send
r = adapter.send(request, **kwargs)
File "/usr/lib/python3/dist-packages/requests/adapters.py", line 407, in send
raise ConnectionError(err, request=request)
requests.exceptions.ConnectionError: ('Connection aborted.', TimeoutError(110, 'Connection timed out'))
[2018-09-07 22:30:58][INFO] : Lancement démon zigate : /usr/bin/python3 /var/www/html/plugins/zigate/core/class/../../resources/zigated/zigated.py  --device /dev/ttyUSB0 --loglevel debug --apikey ********************** --pid /tmp/jeedom/zigate/daemon.pid --socket /tmp/jeedom/zigate/daemon.sock --callback http://127.0.0.1:80/plugins/zigate/core/php/jeeZiGate.php --sharedata 1
[2018-09-07 22:30:59][INFO][root] : Start zigated
[2018-09-07 22:30:59][INFO][root] : Log level : debug
[2018-09-07 22:30:59][INFO][root] : Socket : /tmp/jeedom/zigate/daemon.sock
[2018-09-07 22:30:59][INFO][root] : PID file : /tmp/jeedom/zigate/daemon.pid
[2018-09-07 22:30:59][INFO][root] : Apikey : ***********************
[2018-09-07 22:30:59][INFO][root] : Device : /dev/ttyUSB0
[2018-09-07 22:30:59][INFO][root] : Callback : http://127.0.0.1:80/plugins/zigate/core/php/jeeZiGate.php
[2018-09-07 22:30:59][INFO][root] : Python version : 3.4.2 (default, Oct 19 2014, 13:31:11)
[GCC 4.9.1]
[2018-09-07 22:30:59][INFO][root] : zigate version : 0.19.1
[2018-09-07 22:30:59][DEBUG][root] : Writing PID 13484 to /tmp/jeedom/zigate/daemon.pid
[2018-09-07 22:30:59][DEBUG][root] : Send to test to jeedom
[2018-09-07 22:30:59][DEBUG][root] : Send to jeedom :  {'action': 'test'}
[2018-09-07 22:31:00][INFO] : Démon zigate lancé

Du coup, je ne peux pas faire grand chose... Une idée pour investiguer et avancer ?

Merci

Equipements considérés comme secteur alors que non

Dans ma config, j'ai deux équipements qui sont considérés comme sur secteur alors que non
- xiaomi lumi.sensor_switch première génération
- Telecommande Philips RWL021

Rien de grave, c'est juste pour le signaler ;-)

Questions pour faire la documentation

Hello doudz,

Je travaille sur la doc du plugin à merger dans le projet, et j'ai quelques questions sur certaines fonctions, car je n'ai pas trouvé par l'expérience. Peux-tu clarifier ces questions ? Merci !

Boutons du plugin

  • TouchLink : kesako ?
  • Network scan : kesako ?
  • Synchroniser : Qu'est-ce que ça fait ?
  • Reset ZiGate : Quelle est la portée du reset ? (suppression de conf ? suppression des équipements ? corruption des scénarios avec équipements supprimés ?)

Bouton de l'équipement

  • Identifier : Qu'est-ce qui est identifié exactement ? les commandes ? comment sont-elles trouvées ? Depuis l'équipement ou depuis une base de données ? locale ou distante ? combien de temps pour la reconnaissance ? comment voir les modifications ? j'ai constaté que je devais attendre un certain temps, et rafraîchir plein de fois le navigateur, et le résultat était aussi très aléatoire...
  • Rafraîchir l'équipement : Qu'est-ce que ça fait exactement ? Dans quel cas c'est demandé par le plugin (via les notifs ?)

Paramètres de l'équipement

  • ADDR : Adresse de l'équipement dans le réseau ZigBee ?
  • IEEE : identifiant de l'équipement, ou du modèle ?
  • Link quality : quelles sont les valeurs "normales" d'un link de bonne qualité ?
  • Power source : la valeur n'est pas forcément bonne, mon ampoule Ikea est de valeur 0, donc théoriquement sur batterie alors que c'est sur secteur

Xiaomi prévoit la remontée de présence comme une info numérique et non binaire

le capteur de présence Xiaomi prévoit la remontée de présence comme une info numérique et non binaire. Et si je fais manuellement la modification sur la commande de l'équipement, elle revient à numérique à chaque démarrage du démon... C'est un problème, car un widget de présence ne peut pas s'appliquer sur une info numérique...

Serait-il possible de regarder ce point pour une future maj? Merci! Laurent

Volet Profalux

Salut j'ai testé ton pulgin ce jour.
L'inclusion fonctionne bien. Cependant j'ai plusieurs device qui ce sont crée, 4 de mémoire.
Après un reset zigate il m'en reste plus que 2.
Sur les 2 il y en a un qui marche plutôt bien:
monté
descente
set level
current level
Par contre le set level et current level ne sont pas calibré
N'hésite pas si tu as besoin de plus d'information
Damien

Pertes de communication / Instabilités

Bonjour,

J'utilise votre plugin depuis quelques jours et je rencontre pas mal de difficultés entre la zigate et mes modules (j'ai 5 modules Xiaomi Aqara : 1 détecteur de mouvement, 1 bouton, 1 capteur d'ouverture et 2 capteurs de température).

Aujourd'hui je constate que ca fait deux jours que mes modules ne communiquent plus avec Jeedom.
Impossible d'inclure le module "détecteur de mouvement" même après avoir fait un "Reset Zigate" et plusieurs "Synchroniser".

Une idée ? Est-ce que ca peut venir directement de ma Zigate ?
Mon plugin Zigate est à jour (ainsi que le firmware de la Zigate) et les dépendances ont été relancées ce matin.

A toutes fins utiles, les logs :

Exception in thread Thread-2:
Traceback (most recent call last):
File "/usr/lib/python3.4/threading.py", line 920, in _bootstrap_inner
self.run()
File "/usr/lib/python3.4/threading.py", line 868, in run
self._target(*self._args, **self._kwargs)
File "/usr/local/lib/python3.4/dist-packages/zigate/transport.py", line 53, in listen
data = self.serial.read(self.serial.in_waiting)
File "/usr/local/lib/python3.4/dist-packages/serial/serialposix.py", line 467, in in_waiting
s = fcntl.ioctl(self.fd, TIOCINQ, TIOCM_zero_str)
OSError: [Errno 5] Input/output error
[2018-03-14 11:58:22][ERROR][zigate] : No response after command 0x0042
[2018-03-14 11:58:25][ERROR][zigate] : No response after command 0x0045
[2018-03-14 13:03:54][ERROR][zigate] : No response after command 0x0042
[2018-03-14 13:03:57][ERROR][zigate] : No response after command 0x0045
[2018-03-16 07:52:06][ERROR][zigate] : Command 0x0026 failed Failed (ZigBee event codes) 169 : b''
[2018-03-16 07:57:53][ERROR][zigate] : Bad length 5 != 42 : b'\x00\x00\x00\x11\x00\xff\x01\x80\x03\x00\x1e\x9b\x01\x01\x04\x00\x00\x00\x01\x00\x03\x00\x04\x00\x05\x00\x06\x00\x08\x00\x19\x01\x01\x10\x00\x03\x00\x02\x01\x02\x04'
[2018-03-16 07:57:55][ERROR][zigate] : No response after command 0x0011
[2018-03-16 08:03:05][ERROR][zigate] : Command 0x0026 failed Failed (ZigBee event codes) 169 : b''
Exception in thread Thread-2:
Traceback (most recent call last):
File "/usr/lib/python3.4/threading.py", line 920, in _bootstrap_inner
self.run()
File "/usr/lib/python3.4/threading.py", line 868, in run
self._target(*self._args, **self._kwargs)
File "/usr/local/lib/python3.4/dist-packages/zigate/transport.py", line 53, in listen
data = self.serial.read(self.serial.in_waiting)
File "/usr/local/lib/python3.4/dist-packages/serial/serialposix.py", line 467, in in_waiting
s = fcntl.ioctl(self.fd, TIOCINQ, TIOCM_zero_str)
OSError: [Errno 5] Input/output error
[2018-03-16 08:19:51][ERROR][zigate] : No response after command 0x0049

Cordialement.

Problème lors de l'ajout d'un capteur inondation Xiaomi

Bonjour,

Voici mon problème : sur les détecteurs d'inondation Xiaomi (Ils sont de type "lumi.sensor_wleak.aq1"). Je les ai synchronisés mais je n'ai que 3 commandes :

  • application_version
  • battery
  • type

Mais du coup je pense qu'il me manque une commande on/off comme sur les capteurs d'ouverture... je me trompe?
Mais on ne peut pas en ajouter.

Comme expliqué dans cet Issues : #17 j'ai essayé de mettre le capteur dans l'eau, de synchronisé manuellement depuis le capteur, rien n'y fait je n'ai pas de commande onoff qui me remonte l'info... je vais ouvrir une nouvelle Issue.

Avez-vous déjà rencontré ce problème et si oui comment le résoudre?

Merci.

Romain.

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.