bart1909 / iobroker.netatmo-crawler Goto Github PK
View Code? Open in Web Editor NEWioBroker Adapter that crawls information from public netatmo stations
License: MIT License
ioBroker Adapter that crawls information from public netatmo stations
License: MIT License
Version: stable=0.5.1 (50 days old) => latest=0.6.0 (15 days old)
Installs: stable=345 (48.12%), latest=128 (17.85%), total=717
Click to edit
Mal ein kurzes Feedback von mir. Der Adapter läuft ja jetzt schon einige Wochen bei mir absolut fehlerfrei, problemlos und unauffällig. Ich hole die Daten allerdings nur alle 3 Stunden und Nachts garnicht ab. Für meine Zwecke reicht das.
Wenn ich mich nicht täusche taucht der Adapter nicht in der ioBroker Liste der verfügbaren Adapter auf? Ist das noch geplant?
Habe gerade erst gesehen das es die Version 0.34 gibt. Ich habe die ganze Zeit noch die 0.33 genutzt...
I understand that the data point "rain" now delivers a "current" value.
But since it does so in mm, there needs to be a timeframe specified. So what exaclty is given as "rain"? ist it the current amount of rain in mm, extrapolated to a day / an hour?
Is it a measured value - or a prognostic one (e.g. extrapolated to "within the current/next hour/day" or so?
I am an automatic service that looks for possible errors in ioBroker and creates an issue for it. The link below leads directly to the test:
I have also found warnings that may be fixed if possible.
Thanks,
your automatic adapter checker.
P.S.: There is a community in Github, which supports the maintenance and further development of adapters. There you will find many experienced developers who are always ready to assist anyone. New developers are always welcome there. For more informations visit: https://github.com/iobroker-community-adapters/info
every day at 0 o clock I get multiple times these log warnings:
2021-07-19 00:00:06.127 - warn: netatmo-crawler.0 (1931233) Could not get Rain Today for station 70:ee:50:65:37:e8: TypeError: Cannot read property 'value' of undefined
2021-07-19 00:00:07.435 - warn: netatmo-crawler.0 (1931233) Could not get Rain Today for station 70:ee:50:65:37:e8: TypeError: Cannot read property 'value' of undefined
2021-07-19 00:01:02.699 - warn: netatmo-crawler.0 (1931483) Could not get Rain Today for station 70:ee:50:65:37:e8: TypeError: Cannot read property 'value' of undefined
2021-07-19 00:01:03.921 - warn: netatmo-crawler.0 (1931483) Could not get Rain Today for station 70:ee:50:65:37:e8: TypeError: Cannot read property 'value' of undefined
2021-07-19 00:02:01.986 - warn: netatmo-crawler.0 (1931617) Could not get Rain Today for station 70:ee:50:65:37:e8: TypeError: Cannot read property 'value' of undefined
2021-07-19 00:02:03.220 - warn: netatmo-crawler.0 (1931617) Could not get Rain Today for station 70:ee:50:65:37:e8: TypeError: Cannot read property 'value' of undefined
2021-07-19 00:03:02.064 - warn: netatmo-crawler.0 (1931762) Could not get Rain Today for station 70:ee:50:65:37:e8: TypeError: Cannot read property 'value' of undefined
2021-07-19 00:03:03.319 - warn: netatmo-crawler.0 (1931762) Could not get Rain Today for station 70:ee:50:65:37:e8: TypeError: Cannot read property 'value' of undefined
2021-07-19 00:04:02.088 - warn: netatmo-crawler.0 (1931879) Could not get Rain Today for station 70:ee:50:65:37:e8: TypeError: Cannot read property 'value' of undefined
2021-07-19 00:04:03.386 - warn: netatmo-crawler.0 (1931879) Could not get Rain Today for station 70:ee:50:65:37:e8: TypeError: Cannot read property 'value' of undefined
2021-07-19 00:05:01.882 - warn: netatmo-crawler.0 (1932017) Could not get Rain Today for station 70:ee:50:65:37:e8: TypeError: Cannot read property 'value' of undefined
2021-07-19 00:05:03.154 - warn: netatmo-crawler.0 (1932017) Could not get Rain Today for station 70:ee:50:65:37:e8: TypeError: Cannot read property 'value' of undefined
2021-07-19 00:06:01.946 - warn: netatmo-crawler.0 (1932184) Could not get Rain Today for station 70:ee:50:65:37:e8: TypeError: Cannot read property 'value' of undefined
2021-07-19 00:06:03.172 - warn: netatmo-crawler.0 (1932184) Could not get Rain Today for station 70:ee:50:65:37:e8: TypeError: Cannot read property 'value' of undefined
2021-07-19 00:07:01.947 - warn: netatmo-crawler.0 (1932321) Could not get Rain Today for station 70:ee:50:65:37:e8: TypeError: Cannot read property 'value' of undefined
2021-07-19 00:07:03.189 - warn: netatmo-crawler.0 (1932321) Could not get Rain Today for station 70:ee:50:65:37:e8: TypeError: Cannot read property 'value' of undefined
2021-07-19 00:08:01.970 - warn: netatmo-crawler.0 (1932441) Could not get Rain Today for station 70:ee:50:65:37:e8: TypeError: Cannot read property 'value' of undefined
2021-07-19 00:08:03.201 - warn: netatmo-crawler.0 (1932441) Could not get Rain Today for station 70:ee:50:65:37:e8: TypeError: Cannot read property 'value' of undefined
This happens for every station if it is more than one.
NodeJS 12.22.2
JS-Controller 3.3.14
Admin 5.1.12
Hallo, sollten nicht Objekte angelegt werden?
Wie funktioniert er?
Dear Adapter developer,
with js-controller 4.0 object definitions are now also checked that min/max in only provided for number/mixed objects and that the type of the default value matches to the object type.
If something is not correct this is logged as 'warning' or 'info' log.
Please also make sure to update to the lastest @iobroker/testing dependency 2.5.4 or to accept the PR from Apollon77 for legacy testing!
Please spent some time to verify your adapter by ideally starting with a fresh instance and do some actions and verify the log. If you see a warn or info log there from these checks please adjust the adapter and fix the relevant cases.
For questions please refer to ioBroker/ioBroker.js-controller#1749
Please close the issue after you checked it.
Thank you very much for your support to get the best experience for the growing numbers of ioBroker users!
Mit jeden Aufruf loggt der Adapter unter Info einige Daten, die das Log unnötig füllen. Besonders wenn der Adapter alle 5 Minuten die Daten abruft.
1 host.iobroker_V41 | 2020-07-03 06:03:03.763 | info | instance system.adapter.netatmo-crawler.0 terminated with code 0 (NO_ERROR) |
---|---|---|---|
2 netatmo-crawler.0 | 2020-07-03 06:03:03.250 | info | (2971) Terminated (NO_ERROR): Without reason |
3 netatmo-crawler.0 | 2020-07-03 06:03:02.629 | info | (2971) Saving station data for station: 1 |
4 netatmo-crawler.0 | 2020-07-03 06:03:02.499 | info | (2971) Getting data for stationid:70:ee:50:12:78:d0 |
5 netatmo-crawler.0 | 2020-07-03 06:03:02.496 | info | (2971) Going to get information for station: 1 |
6 netatmo-crawler.0 | 2020-07-03 06:03:01.820 | info | (2971) config stationNameType: id |
7 netatmo-crawler.0 | 2020-07-03 06:03:01.820 | info | (2971) config stationUrls: https://weathermap.netatmo.com//?zoom=12&type=rain¶m=hourly&stationid=70%3Aee%3A50%3A12%3A78%3Ad0&maplayer=Map&lang=undefined |
8 netatmo-crawler.0 | 2020-07-03 06:03:01.797 | info | (2971) starting. Version 0.3.2 in /opt/iobroker/node_modules/iobroker.netatmo-crawler, node: v10.18.1, js-controller: 3.1.4 |
9 host.iobroker_V41 | 2020-07-03 06:03:00.021 | info | instance system.adapter.netatmo-crawler.0 started with pid 2971 |
Da der JS-Controller das beenden (1) meldet kann 2 entfallen (bzw auf debug) wenn Terminated (NO_ERROR): Without reason
3 sollte auf debug geändert werden
4 ok
5 auf debug da es die Ausgabe 4 gibt
6 Zeigt die Config an, kann auf debug
7 zeigt die Config an, kann auf debug
8 ok
Describe the bug
Hello and thanks for the cool adapter! But I have a question (I'm an adapter developer myself): Why don't you confirm your values with ack = true? I only respond to ack = true by default in scripts, since it is the default when an adapter writes its own values to datapoints.
Expected behavior
I think you should fix that with a future update.
Versions:
Describe the bug
Moin, ich bin über die Admin-Startseite auf deinen Adapter gestoßen und wollte ihn gleich mal ausprobieren, doch leider bekomme ich immer nur die Meldung Terminated (NO_ERROR): Without reason
. Die Ordner netatmo-crawler.0 / stationData
wurden angelegt, bleiben aber leer. Zuerst habe ich es mit einer Station in meiner Nähe probiert, dann noch mit der Station in Köln aus der Readme (https://weathermap.netatmo.com//?zoom=15&type=temp¶m=Filter&stationid=70%3Aee%3A50%3A00%3Aba%3A0c&maplayer=Map&lang=undefined), doch in beiden Fällen gibt es den Fehler.
To Reproduce
Steps to reproduce the behavior:
Screenshots & Logfiles
host.ioBroker | 2020-08-11 23:15:06.013 | info | instance system.adapter.netatmo-crawler.0 terminated with code 0 (NO_ERROR) |
---|---|---|---|
netatmo-crawler.0 | 2020-08-11 23:15:05.492 | info | (11553) Terminated (NO_ERROR): Without reason |
netatmo-crawler.0 | 2020-08-11 23:15:05.153 | info | (11553) Getting data for stationid:70:ee:50:00:ba:0c |
netatmo-crawler.0 | 2020-08-11 23:15:02.794 | info | (11553) starting. Version 0.3.4 in /opt/iobroker/node_modules/iobroker.netatmo-crawler, node: v12.18.2 |
host.ioBroker | 2020-08-11 23:15:00.028 | info | instance system.adapter.netatmo-crawler.0 started with pid 11553 |
Versions:
Describe the bug
Sobald ich in der Liste eine Station mit Regensensor aufnehme, brechen die Abfragen beim crawlen mit einer Error meldung ab. Alle nachstehenden Stationen werden nicht abgefragt.
Sind in der Liste nur Stationen ohne Regensensor, klappt das abfragen
Auszug aus der Logfile:
host.IOBroker | 2020-07-02 14:40:12.155 | info | instance system.adapter.netatmo-crawler.0 terminated with code 0 (NO_ERROR) |
---|---|---|---|
netatmo-crawler.0 | 2020-07-02 14:40:11.639 | info | (420) Terminated (NO_ERROR): Without reason |
netatmo-crawler.0 | 2020-07-02 14:40:11.638 | info | (420) terminating |
netatmo-crawler.0 | 2020-07-02 14:40:11.636 | error | (420) TypeError: Cannot read property 'value' of undefined at Request._callback (/opt/iobroker/node_modules/iobroker.netatmo-crawler/main.js:365:56) at Request.self.callback (/opt/iobroker/nod |
netatmo-crawler.0 | 2020-07-02 14:40:11.636 | error | (420) unhandled promise rejection: Cannot read property 'value' of undefined |
netatmo-crawler.0 | 2020-07-02 14:40:11.635 | error | Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). |
netatmo-crawler.0 | 2020-07-02 14:40:11.424 | info | (420) Saving station data for station: 1 |
netatmo-crawler.0 | 2020-07-02 14:40:11.250 | info | (420) Getting data for stationid:70:ee:50:20:80:f2 |
netatmo-crawler.0 | 2020-07-02 14:40:11.249 | info | (420) Going to get information for station: 1 |
netatmo-crawler.0 | 2020-07-02 14:40:09.278 | info | (420) config stationNameType: counter |
netatmo-crawler.0 | 2020-07-02 14:40:09.278 | info | (420) config stationUrls: https://weathermap.netatmo.com//?zoom=15&type=temp¶m=Filter&stationid=70%3Aee%3A50%3A20%3A80%3Af2&maplayer=Map&lang=undefined |
netatmo-crawler.0 | 2020-07-02 14:40:09.270 | info | (420) starting. Version 0.3.0 in /opt/iobroker/node_modules/iobroker.netatmo-crawler, node: v12.16.3, js-controller: 3.1.4 |
host.IOBroker | 2020-07-02 14:40:08.835 | info | instance system.adapter.netatmo-crawler.0 started with pid 420 |
host.IOBroker | 2020-07-02 14:40:08.824 | info | instance scheduled system.adapter.netatmo-crawler.0 */5 * * * * |
Thanky you for adapter
I am receiving warnings in iobroker logs each 5 minutes:
netatmo-crawler.0 (6196) Could not get Rain Yesterday for station xx:xx:xx:x:xx:xx: TypeError: Cannot read property 'value' of undefined
Just removing datapoint rain_yesterday from station in objects did not help.
Adapter restart did not help either.
Other datapoint are healhy.
I guess station does not response with rain_yesterday value any more. But how can I reset configuration of this station?
Habe gerade Version 0.3.1 installiert. Der neue Datenpunkt wurde angelegt. Leider passt es von den Daten nicht.
Gestern als ich ins Bett ging hatte rain_today einen Wert von über 18ml. Somit hätte ich erwartet das der rain_yesterday einen Wert über diesen 18ml haben müsste, da es dort noch kräftig am regnen war. Leider zeigt der Wert nur eine 0,1 an. Das ist zufällig genau der Wert von rain_today. Ich beobachte es mal weiter was der Wert Morgen sagt.
Morgen soll es bei uns trocken sein. Gerade regnet es.
es kommt immer die meldung im syslog, wenn der adapter läuft
Dec 5 10:30:13 iobroker59 bash[70469]: (node:70469) Warning: Accessing non-existent property 'updateOne' of module exports inside circular dependency Dec 5 10:33:01 iobroker59 bash[71367]: (node:71367) Warning: Accessing non-existent property 'count' of module exports inside circular dependency Dec 5 10:33:01 iobroker59 bash[71367]: (Use
node --trace-warnings ... to show where the warning was created) Dec 5 10:33:01 iobroker59 bash[71367]: (node:71367) Warning: Accessing non-existent property 'findOne' of module exports inside circular dependency Dec 5 10:33:01 iobroker59 bash[71367]: (node:71367) Warning: Accessing non-existent property 'remove' of module exports inside circular dependency Dec 5 10:33:01 iobroker59 bash[71367]: (node:71367) Warning: Accessing non-existent property 'updateOne' of module exports inside circular dependency
ich habe node 14 installiert
Ich bins seit Version 1.x am Testen - geiler Adapter übrigens. Schön das meine FB Frage nach einer Wetterstation und Feedback mit einem Script eine solche Entwicklung nimmt! :-)
Habe in Version 1.x und gestern auch 2.x täglich Nachts zwischen 0:00 und ca. 1:00 Uhr immer folgende Fehlermeldung:
netatmo-crawler.0 | 2020-07-03 00:45:12.018 | error | at processTicksAndRejections (internal/process/task_queues.js:84:21) |
---|---|---|---|
netatmo-crawler.0 | 2020-07-03 00:45:12.018 | error | at endReadableNT (_stream_readable.js:1221:12) |
netatmo-crawler.0 | 2020-07-03 00:45:12.018 | error | at IncomingMessage.emit (events.js:327:22) |
netatmo-crawler.0 | 2020-07-03 00:45:12.018 | error | at Object.onceWrapper (events.js:421:28) |
netatmo-crawler.0 | 2020-07-03 00:45:12.018 | error | at IncomingMessage. (/opt/iobroker/node_modules/request/request.js:1076:12) |
netatmo-crawler.0 | 2020-07-03 00:45:12.018 | error | at Request.emit (events.js:315:20) |
netatmo-crawler.0 | 2020-07-03 00:45:12.018 | error | at Request. (/opt/iobroker/node_modules/request/request.js:1154:10) |
netatmo-crawler.0 | 2020-07-03 00:45:12.018 | error | at Request.emit (events.js:315:20) |
netatmo-crawler.0 | 2020-07-03 00:45:12.018 | error | at Request.self.callback (/opt/iobroker/node_modules/request/request.js:185:22) |
netatmo-crawler.0 | 2020-07-03 00:45:12.018 | error | at Request._callback (/opt/iobroker/node_modules/iobroker.netatmo-crawler/main.js:303:56) |
netatmo-crawler.0 | 2020-07-03 00:45:12.018 | error | (27480) TypeError: Cannot read property 'value' of undefined |
netatmo-crawler.0 | 2020-07-03 00:45:12.017 | error | (27480) unhandled promise rejection: Cannot read property 'value' of undefined |
Unhandled | 2020-07-03 00:45:12.016 | error | promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). |
Ab ca. 1:00 läuft wieder alles, soweit kein Problem. Bin immer nur über den LOG erschrocken.
Ggf. Try/Catch mit Info-Meldungen aufbohren?
Ich fände ein Feld praktisch wo man sieht wann die Daten zuletzt erfolgreich abgeholt wurden (pro Station).
Ob es wirklich nötig ist kann ich nicht beurteilen, da man mittels getState(id).ts ja auch sieht wann das Feld zuletzt verändert wurde. Die Frage wäre dann dort ob bei jeden abholen die Daten überschrieben werden oder nur wenn der Wert sich verändert hat.
Beispiel rain. Wenn es den ganzen Tag nicht regnet müsste das Feld ja nicht immer wieder mit 0 beschrieben werden. Das würde dann dazu führen dann man mittels getState ein falsches Datum erhalten würde.
Mit einen Datumsfeld wäre es wahrscheinlicher einfacher und auch für weniger erfahrene Nutzer leichter nachvollziehbarer...
Version: stable=0.4.1 (96 days old) => latest=0.5.1 (15 days old)
Installs: stable=450 (66.86%), latest=115 (17.09%), total=673
Click to edit
If I open the map I see
https://weathermap.netatmo.com//?stationid=70%3Aee%3A50%3A65%3A37%3Ae8
But netatmo-crawler.0.stationData.1.rain value is 0
netatmo-crawler.0.stationData.1.rain_today is 0.9
Same for a second station:
https://weathermap.netatmo.com//?stationid=70%3Aee%3A50%3A03%3A64%3A2c
netatmo-crawler.0.stationData.2.rain is 0
netatmo-crawler.0.stationData.2.rain_today is 0.7
adapter: 0.7.1
js-controller: 4.0.12
nodejs: 14.19.0
Last night, we had a resolver failure, so no nameservers were reachable. Now i had seen in the logs, the adapter has not terminated, l and was still running. I had to kill it by hand. Because the adapter runs normally without problems, maybe the DNS issue was the reason.
I think netamto changed something so it is currently not possible to crawl stations or the map without authentication.
Please confirm if you are affected too.
Dear Adapter developer,
with js-controller 3.2 and js-controller 3.3 some additional checks were added to make sure that created objects match to the specifications and also written state values match to the object definition.
If something is not correct this is logged as 'warning' or 'info' log.
Please take the time to verify your adapter by ideally starting with a fresh instance and do some actions and verify the log. If you see a warn log there from these checks please adjust the adapter and fix the relevant cases.
For questions please refer to ioBroker/ioBroker.js-controller#1301
Additionally we are preparing Admin 5 which will have a completely rewritten UI. Please install Admin 5, activate that new UI and verify that the configuration of you adapter works as expected also there.
More informations on Admin 5 can be found in Forum https://forum.iobroker.net/topic/44282/test-adapter-admin-5-0-x-alpha-der-neuen-ui
Please close the issue after you checked it.
Thank you very much for your support!
Hey, ich würde mir wünschen dass man per Haken im Adapter die Möglichkeit hat Mittelwerte zu benutzen.
Quasi neue Datenpunkte die die Mittelwerte von mehreren Stationen ausgeben.
Ich weiß dass man es sich auch leicht selber mit einem Script basteln kann. Aber fänd es ganz cool wenn der Adapter das Feature schon mitbringen würde.
After update to js-contoller 5 (5.0.12) this error stands in the log:
`
2023-08-19 09:25:07.388 | warn | Could not work with station 4 - Message: Error: undefined is not a valid state value |
---|
This error message refers to all stations that are in the settings.
Describe the bug
It looks like you can only insert one station.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
Please adjust the documentation or just provide multiple lines for input. The coolest thing would be a "+" button to add new lines. (table2value and value2table function is provided by ioBroker to create simple tables ;-) ).
Screenshots & Logfiles
My GUI (Admin 5.1.25)
Versions:
At the moment all objects are read and writeable. Usually such objects should be read only and the adapter should write all values with ack flag (acknowledge).
https://github.com/ioBroker/ioBroker/wiki/Adapter-Development-Documentation#commands-and-statuses
Standard mäßig bietet die Netatmo Wetterstation zwei Felder für Regen. Einmal aktuell und einmal kumuliert für den laufenden Tag.
Für die Beurteilung ob bewässert werden muss ist der kumulierte Wert der interessante. Jetzt kann es natürlich passieren, dass es noch regnet wenn man zu Bett geht. Um das zu prüfen bzw in Scripten zu verwenden fände ich es sinnvoll wenn der Inhalt von rain_today jeden neuen Tag in ein neues Feld rain_yesterday schreibt. Gleichzeitig kann man das Feld dann in eine DB speichern um z. B. ein Diagram anzulegen um den tägliche Regenmenge zu loggen. Das Feld müsste nur einmalig am Tagesanfang gefüllt werden.
The wind direction is not read in degrees.
Example of random weather station:
https://weathermap.netatmo.com//?zoom=14&type=wind¶m=wind&stationid=70%3Aee%3A50%3A04%3Ae5%3Ad8&maplayer=Map&lang=undefined
Otherwise the other values are accepted.
Please refer:
The weather station can do it - see:
I think the data point is not queried by the adapter.
Versions:
It would be great if you can include the parameter.
Thanks in advance and have a good time
Mark
Dear Adapter developer,
Node.js 14 is now available for a year and Node.js 16 was release just some days ago and will become LTS by October 2021. We plan to update the ioBroker Node.js recommendation (currently 12.x) to 14.x later this year.
Please check your adapter with Node.js 14 especially, and ideally also directly with Node.js 16
Please add both versions to the adapter testing which is executed on commits.
If your adapter requires a certain minimum version of Node.js please set the 'engine' setting in package.json accordingly! Please also do this if the adapter is not able to work in certain Node.js versions, so that ioBroker can prevent users from installing te adapter if not compatible!
On questions please talk to us at ioBroker/ioBroker.js-controller#1138
Please close the issue after you checked it.
Thank you very much for your support!
Seit 2 Tagen scheint die Netatmo Station nicht mehr abfragbar zu sein.
Bisher bekam ich die Meldung
warn | (21933) Could not work with station 1 - Message: Did not get any values for station 70:ee:50:12:78:d0 |
---|
Aber seit heute bekomme ich einen Error:
Wollte nur Fragen ob das ein generelles Problem ist oder ein Einzelproblem?
Habe erfolglos verschiedene Stationen ausprobiert, seit ein paar Tagen erhalte ich die folgende Fehlermeldung:
netatmo-crawler.0 | 2020-11-27 13:16:33.843 | info | (9957) Terminated (NO_ERROR): Without reason
netatmo-crawler.0 | 2020-11-27 13:16:33.840 | error | (9957) Error while running Netatmo Crawler. Error Message:No body for authorization token found
netatmo-crawler.0 | 2020-11-27 13:16:33.522 | info | (9957) starting. Version 0.3.4 in /opt/iobroker/node_modules/iobroker.netatmo-crawler, node: v12.19.0, js-controller: 3.1.6
Netatmo Crawler 0.3.4
Node.js v12.19.0
NPM 6.14.8
Gruß, Ralf
I am an automatic service that looks for possible errors in ioBroker and creates an issue for it. The link below leads directly to the test:
Thanks,
your automatic adapter checker.
P.S.: There is a community in Github, which supports the maintenance and further development of adapters. There you will find many experienced developers who are always ready to assist anyone. New developers are always welcome there. For more informations visit: https://github.com/iobroker-community-adapters/info
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.