Comments (10)
Hi Akhil, you can copy the whole repo into the Arduino IDE library folder. To get started, please create a new project and copy all files from the OneConnector_EVSE folder into the project folder.
from microocpp.
Thank you Matth-x. Let me give this a go. I have successfully setup Steve. Now time to get a chargepoint simulator running using your code
from microocpp.
Hi Akhil, you can copy the whole repo into the Arduino IDE library folder. To get started, please create a new project and copy all files from the OneConnector_EVSE folder into the project folder.
Are there any special tweaks to be made to be able to compile/run successfully in Arduino for ESP32?
I am having errors with missing files.
from microocpp.
At this moment, only the example in the folder ESP32
can compile for the ESP32. But it showcases all mechanics of the OCPP library, so it is a good starting point as well.
You can patch the other examples by adapting the Wi-Fi connection method in the main file and changing the pin mapping. And it needs the dependencies from the ESP32 environment in the platformio.ini
.
from microocpp.
So I tried following the steps you provided Matth-x. But ran into an error. I am using a generic NodeMCU ESP8266 broad, but somehow it's asking for a ESP32 FS libraries. Any idea how I can resolve them in Arduino IDE?
/Users/akhil/Documents/Arduino/libraries/ArduinoOcpp/src/ArduinoOcpp/Core/ConfigurationContainerFlash.cpp:15:10: fatal error: LITTLEFS.h: No such file or directory
15 | #include <LITTLEFS.h>
| ^~~~~~~~~~~~
compilation terminated.
exit status 1
Error compiling for board NodeMCU 1.0 (ESP-12E Module).
from microocpp.
Made a bit more progress, I installed the LITTLEFS library. Now I get this error while compiling
/Users/akhil/Documents/Arduino/libraries/LITTLEFS/src/LITTLEFS.cpp:17:10: fatal error: vfs_api.h: No such file or directory
17 | #include "vfs_api.h"
| ^~~~~~~~~~~
compilation terminated.
exit status 1
Error compiling for board NodeMCU 1.0 (ESP-12E Module).
from microocpp.
Resolved the above issue by doing two things
a) editing file "ConfigurationContainerFlash.cpp' inside the ArduinoOCpp library. The edit was to simply replace any reference for LITTLEFS to LittleFS
b) installed the esp32 board libraries as well.
After compiling post the steps above, I get a new error as follows.
WARNING: library ArduinoOcpp claims to run on espressif8266, espressif32 architecture(s) and may be incompatible with your current board which runs on esp8266 architecture(s).
/Users/akhil/Documents/Arduino/libraries/ArduinoOcpp/src/ArduinoOcpp/MessagesV16/ChangeConfiguration.cpp: In member function 'virtual void ArduinoOcpp::Ocpp16::ChangeConfiguration::processReq(ArduinoJson::JsonObject)':
/Users/akhil/Documents/Arduino/libraries/ArduinoOcpp/src/ArduinoOcpp/MessagesV16/ChangeConfiguration.cpp:43:32: error: invalid conversion from 'char' to 'const char*' [-fpermissive]
43 | const char *value_string = '\0';
| ^~~~
| |
| char
exit status 1
Error compiling for board Generic ESP8266 Module.
from microocpp.
Found the issue. For this code to compile successfully, you need to change the board version from esp8266 3.0 to 2.7.4. One can do this by going to Tools -> Boards -> Boardmanager --> type in ESP8266 --> select 2.7.4 and install.
from microocpp.
Here are the board manager URLs that I set under preferences
https://dl.espressif.com/dl/package_esp32_index.json, http://arduino.esp8266.com/stable/package_esp8266com_index.json
from microocpp.
Found the issue. For this code to compile successfully, you need to change the board version from esp8266 3.0 to 2.7.4. One can do this by going to Tools -> Boards -> Boardmanager --> type in ESP8266 --> select 2.7.4 and install.
hey I changed the board version but getting new error . can you help?
`
WARNING: library ArduinoOcpp claims to run on espressif8266, espressif32 architecture(s) and may be incompatible with your current board which runs on esp8266 architecture(s).
In file included from /Users/aashutoshjha/Documents/Arduino/libraries/ArduinoJson/src/ArduinoJson.hpp:37:0,
from /Users/aashutoshjha/Documents/Arduino/libraries/ArduinoJson/src/ArduinoJson.h:9,
from /Users/aashutoshjha/Documents/Arduino/libraries/ArduinoOcpp/src/ArduinoOcpp/Core/OcppOperationCallbacks.h:8,
from /Users/aashutoshjha/Documents/Arduino/libraries/ArduinoOcpp/src/ArduinoOcpp/Core/OcppOperation.h:14,
from /Users/aashutoshjha/Documents/Arduino/libraries/ArduinoOcpp/src/ArduinoOcpp/Core/OcppOperation.cpp:5:
/Users/aashutoshjha/Documents/Arduino/libraries/ArduinoJson/src/ArduinoJson/Variant/ConverterImpl.hpp: In instantiation of 'static void ArduinoJson6194_F1::Converter<T, Enable>::toJson(const T&, ArduinoJson6194_F1::VariantRef) [with T = std::basic_string; Enable = void]':
/Users/aashutoshjha/Documents/Arduino/libraries/ArduinoJson/src/ArduinoJson/Variant/VariantRef.hpp:173:38: required from 'bool ArduinoJson6194_F1::VariantRef::set(const T&) const [with T = std::basic_string]'
/Users/aashutoshjha/Documents/Arduino/libraries/ArduinoJson/src/ArduinoJson/Document/JsonDocument.hpp:201:27: required from 'bool ArduinoJson6194_F1::JsonDocument::add(const TValue&) [with TValue = std::basic_string]'
/Users/aashutoshjha/Documents/Arduino/libraries/ArduinoOcpp/src/ArduinoOcpp/Core/OcppOperation.cpp:118:36: required from here
/Users/aashutoshjha/Documents/Arduino/libraries/ArduinoJson/src/ArduinoJson/Variant/ConverterImpl.hpp:17:27: error: no matching function for call to 'convertToJson(const std::basic_string&, ArduinoJson6194_F1::VariantRef&)'
convertToJson(src, dst); // Error here? See https://arduinojson.org/v6/unsupported-set/
^
/Users/aashutoshjha/Documents/Arduino/libraries/ArduinoJson/src/ArduinoJson/Variant/ConverterImpl.hpp:17:27: note: candidates are:
In file included from /Users/aashutoshjha/Documents/Arduino/libraries/ArduinoJson/src/ArduinoJson/Document/BasicJsonDocument.hpp:7:0,
from /Users/aashutoshjha/Documents/Arduino/libraries/ArduinoJson/src/ArduinoJson/Document/DynamicJsonDocument.hpp:7,
from /Users/aashutoshjha/Documents/Arduino/libraries/ArduinoJson/src/ArduinoJson.hpp:28,
from /Users/aashutoshjha/Documents/Arduino/libraries/ArduinoJson/src/ArduinoJson.h:9,
from /Users/aashutoshjha/Documents/Arduino/libraries/ArduinoOcpp/src/ArduinoOcpp/Core/OcppOperationCallbacks.h:8,
from /Users/aashutoshjha/Documents/Arduino/libraries/ArduinoOcpp/src/ArduinoOcpp/Core/OcppOperation.h:14,
from /Users/aashutoshjha/Documents/Arduino/libraries/ArduinoOcpp/src/ArduinoOcpp/Core/OcppOperation.cpp:5:
/Users/aashutoshjha/Documents/Arduino/libraries/ArduinoJson/src/ArduinoJson/Document/JsonDocument.hpp:291:13: note: void ArduinoJson6194_F1::convertToJson(const ArduinoJson6194_F1::JsonDocument&, ArduinoJson6194_F1::VariantRef)
inline void convertToJson(const JsonDocument& src, VariantRef dst) {
^
/Users/aashutoshjha/Documents/Arduino/libraries/ArduinoJson/src/ArduinoJson/Document/JsonDocument.hpp:291:13: note: no known conversion for argument 1 from 'const std::basic_string' to 'const ArduinoJson6194_F1::JsonDocument&'
In file included from /Users/aashutoshjha/Documents/Arduino/libraries/ArduinoJson/src/ArduinoJson.hpp:37:0,
from /Users/aashutoshjha/Documents/Arduino/libraries/ArduinoJson/src/ArduinoJson.h:9,
from /Users/aashutoshjha/Documents/Arduino/libraries/ArduinoOcpp/src/ArduinoOcpp/Core/OcppOperationCallbacks.h:8,
from /Users/aashutoshjha/Documents/Arduino/libraries/ArduinoOcpp/src/ArduinoOcpp/Core/OcppOperation.h:14,
from /Users/aashutoshjha/Documents/Arduino/libraries/ArduinoOcpp/src/ArduinoOcpp/Core/OcppOperation.cpp:5:
/Users/aashutoshjha/Documents/Arduino/libraries/ArduinoJson/src/ArduinoJson/Variant/ConverterImpl.hpp:247:13: note: void ArduinoJson6194_F1::convertToJson(const Printable&, ArduinoJson6194_F1::VariantRef)
inline void convertToJson(const ::Printable& src, VariantRef dst) {
^
/Users/aashutoshjha/Documents/Arduino/libraries/ArduinoJson/src/ArduinoJson/Variant/ConverterImpl.hpp:247:13: note: no known conversion for argument 1 from 'const std::basic_string' to 'const Printable&'
/Users/aashutoshjha/Documents/Arduino/libraries/ArduinoJson/src/ArduinoJson/Variant/ConverterImpl.hpp:155:59: note: template typename ArduinoJson6194_F1::enable_if<ArduinoJson6194_F1::IsString<TString, void>::value, bool>::type ArduinoJson6194_F1::convertToJson(const T&, ArduinoJson6194_F1::VariantRef)
inline typename enable_if<IsString::value, bool>::type convertToJson(
^
/Users/aashutoshjha/Documents/Arduino/libraries/ArduinoJson/src/ArduinoJson/Variant/ConverterImpl.hpp:155:59: note: template argument deduction/substitution failed:
/Users/aashutoshjha/Documents/Arduino/libraries/ArduinoJson/src/ArduinoJson/Variant/ConverterImpl.hpp: In substitution of 'template typename ArduinoJson6194_F1::enable_if<ArduinoJson6194_F1::IsString<TString, void>::value, bool>::type ArduinoJson6194_F1::convertToJson(const T&, ArduinoJson6194_F1::VariantRef) [with T = std::basic_string]':
/Users/aashutoshjha/Documents/Arduino/libraries/ArduinoJson/src/ArduinoJson/Variant/ConverterImpl.hpp:17:27: required from 'static void ArduinoJson6194_F1::Converter<T, Enable>::toJson(const T&, ArduinoJson6194_F1::VariantRef) [with T = std::basic_string; Enable = void]'
/Users/aashutoshjha/Documents/Arduino/libraries/ArduinoJson/src/ArduinoJson/Variant/VariantRef.hpp:173:38: required from 'bool ArduinoJson6194_F1::VariantRef::set(const T&) const [with T = std::basic_string]'
/Users/aashutoshjha/Documents/Arduino/libraries/ArduinoJson/src/ArduinoJson/Document/JsonDocument.hpp:201:27: required from 'bool ArduinoJson6194_F1::JsonDocument::add(const TValue&) [with TValue = std::basic_string]'
/Users/aashutoshjha/Documents/Arduino/libraries/ArduinoOcpp/src/ArduinoOcpp/Core/OcppOperation.cpp:118:36: required from here
/Users/aashutoshjha/Documents/Arduino/libraries/ArduinoJson/src/ArduinoJson/Variant/ConverterImpl.hpp:155:59: error: no type named 'type' in 'struct ArduinoJson6194_F1::enable_if<false, bool>'
/Users/aashutoshjha/Documents/Arduino/libraries/ArduinoJson/src/ArduinoJson/Variant/ConverterImpl.hpp: In instantiation of 'static T ArduinoJson6194_F1::Converter<T, Enable>::fromJson(ArduinoJson6194_F1::VariantConstRef) [with T = std::basic_string; Enable = void]':
/Users/aashutoshjha/Documents/Arduino/libraries/ArduinoJson/src/ArduinoJson/Variant/VariantRef.hpp:72:40: required from 'typename ArduinoJson6194_F1::enable_if<((! ArduinoJson6194_F1::is_same<T, char*>::value) && (! ArduinoJson6194_F1::is_same<T, char>::value)), T>::type ArduinoJson6194_F1::VariantConstRef::as() const [with T = std::basic_string; typename ArduinoJson6194_F1::enable_if<((! ArduinoJson6194_F1::is_same<T, char*>::value) && (! ArduinoJson6194_F1::is_same<T, char>::value)), T>::type = std::basic_string]'
/Users/aashutoshjha/Documents/Arduino/libraries/ArduinoJson/src/ArduinoJson/Array/ElementProxy.hpp:71:53: required from 'typename ArduinoJson6194_F1::enable_if<((! ArduinoJson6194_F1::is_same<T, char*>::value) && (! ArduinoJson6194_F1::ConverterNeedsWriteableRef::value)), T>::type ArduinoJson6194_F1::ElementProxy< >::as() const [with T = std::basic_string; TArray = ArduinoJson6194_F1::JsonDocument&; typename ArduinoJson6194_F1::enable_if<((! ArduinoJson6194_F1::is_same<T, char*>::value) && (! ArduinoJson6194_F1::ConverterNeedsWriteableRef::value)), T>::type = std::basic_string]'
/Users/aashutoshjha/Documents/Arduino/libraries/ArduinoOcpp/src/ArduinoOcpp/Core/OcppOperation.cpp:158:56: required from here
/Users/aashutoshjha/Documents/Arduino/libraries/ArduinoJson/src/ArduinoJson/Variant/ConverterImpl.hpp:24:32: error: invalid initialization of reference of type 'String&' from expression of type 'std::basic_string'
convertFromJson(src, result); // Error here? See https://arduinojson.org/v6/unsupported-as/
^
/Users/aashutoshjha/Documents/Arduino/libraries/ArduinoJson/src/ArduinoJson/Variant/ConverterImpl.hpp:266:13: error: in passing argument 2 of 'void ArduinoJson6194_F1::convertFromJson(ArduinoJson6194_F1::VariantConstRef, String&)'
inline void convertFromJson(VariantConstRef src, ::String& dst) {
^
In file included from /Users/aashutoshjha/Documents/Arduino/libraries/ArduinoJson/src/ArduinoJson/Serialization/serialize.hpp:7:0,
from /Users/aashutoshjha/Documents/Arduino/libraries/ArduinoJson/src/ArduinoJson/Json/JsonSerializer.hpp:9,
from /Users/aashutoshjha/Documents/Arduino/libraries/ArduinoJson/src/ArduinoJson/Variant/ConverterImpl.hpp:7,
from /Users/aashutoshjha/Documents/Arduino/libraries/ArduinoJson/src/ArduinoJson.hpp:37,
from /Users/aashutoshjha/Documents/Arduino/libraries/ArduinoJson/src/ArduinoJson.h:9,
from /Users/aashutoshjha/Documents/Arduino/libraries/ArduinoOcpp/src/ArduinoOcpp/Core/OcppOperationCallbacks.h:8,
from /Users/aashutoshjha/Documents/Arduino/libraries/ArduinoOcpp/src/ArduinoOcpp/Core/OcppOperation.h:14,
from /Users/aashutoshjha/Documents/Arduino/libraries/ArduinoOcpp/src/ArduinoOcpp/Core/OcppOperation.cpp:5:
/Users/aashutoshjha/Documents/Arduino/libraries/ArduinoJson/src/ArduinoJson/Serialization/Writer.hpp: In instantiation of 'size_t ArduinoJson6194_F1::Writer<TDestination, Enable>::write(const uint8_t*, size_t) [with TDestination = std::basic_string; Enable = void; size_t = unsigned int; uint8_t = unsigned char]':
/Users/aashutoshjha/Documents/Arduino/libraries/ArduinoJson/src/ArduinoJson/Serialization/CountingDecorator.hpp:21:12: required from 'void ArduinoJson6194_F1::CountingDecorator::write(const uint8_t*, size_t) [with TWriter = ArduinoJson6194_F1::Writer<std::basic_string, void>; uint8_t = unsigned char; size_t = unsigned int]'
/Users/aashutoshjha/Documents/Arduino/libraries/ArduinoJson/src/ArduinoJson/Json/TextFormatter.hpp:145:5: required from 'void ArduinoJson6194_F1::TextFormatter::writeRaw(const char*) [with TWriter = ArduinoJson6194_F1::Writer<std::basic_string, void>]'
/Users/aashutoshjha/Documents/Arduino/libraries/ArduinoJson/src/ArduinoJson/Json/JsonSerializer.hpp:97:5: required from 'size_t ArduinoJson6194_F1::JsonSerializer::visitNull() [with TWriter = ArduinoJson6194_F1::Writer<std::basic_string, void>; size_t = unsigned int]'
/Users/aashutoshjha/Documents/Arduino/libraries/ArduinoJson/src/ArduinoJson/Variant/VariantFunctions.hpp:20:30: required from 'typename TVisitor::result_type ArduinoJson6194_F1::variantAccept(const ArduinoJson6194_F1::VariantData*, TVisitor&) [with TVisitor = ArduinoJson6194_F1::JsonSerializer<ArduinoJson6194_F1::Writer<std::basic_string, void> >; typename TVisitor::result_type = unsigned int]'
/Users/aashutoshjha/Documents/Arduino/libraries/ArduinoJson/src/ArduinoJson/Serialization/serialize.hpp:15:68: required from 'size_t ArduinoJson6194_F1::doSerialize(ArduinoJson6194_F1::VariantConstRef, TWriter) [with TSerializer = ArduinoJson6194_F1::JsonSerializer; TWriter = ArduinoJson6194_F1::Writer<std::basic_string, void>; size_t = unsigned int]'
/Users/aashutoshjha/Documents/Arduino/libraries/ArduinoJson/src/ArduinoJson/Serialization/serialize.hpp:21:49: required from 'size_t ArduinoJson6194_F1::serialize(ArduinoJson6194_F1::VariantConstRef, TDestination&) [with TSerializer = ArduinoJson6194_F1::JsonSerializer; TDestination = std::basic_string; size_t = unsigned int]'
/Users/aashutoshjha/Documents/Arduino/libraries/ArduinoJson/src/ArduinoJson/Json/JsonSerializer.hpp:120:55: required from 'size_t ArduinoJson6194_F1::serializeJson(ArduinoJson6194_F1::VariantConstRef, TDestination&) [with TDestination = std::basic_string; size_t = unsigned int]'
/Users/aashutoshjha/Documents/Arduino/libraries/ArduinoOcpp/src/ArduinoOcpp/Core/OcppOperation.cpp:130:35: required from here
/Users/aashutoshjha/Documents/Arduino/libraries/ArduinoJson/src/ArduinoJson/Serialization/Writer.hpp:22:29: error: 'class std::basic_string' has no member named 'write'
return _dest->write(s, n);
^
/Users/aashutoshjha/Documents/Arduino/libraries/ArduinoJson/src/ArduinoJson/Serialization/Writer.hpp: In instantiation of 'size_t ArduinoJson6194_F1::Writer<TDestination, Enable>::write(uint8_t) [with TDestination = std::basic_string; Enable = void; size_t = unsigned int; uint8_t = unsigned char]':
/Users/aashutoshjha/Documents/Arduino/libraries/ArduinoJson/src/ArduinoJson/Serialization/CountingDecorator.hpp:17:12: required from 'void ArduinoJson6194_F1::CountingDecorator::write(uint8_t) [with TWriter = ArduinoJson6194_F1::Writer<std::basic_string, void>; uint8_t = unsigned char]'
/Users/aashutoshjha/Documents/Arduino/libraries/ArduinoJson/src/ArduinoJson/Json/TextFormatter.hpp:162:5: required from 'void ArduinoJson6194_F1::TextFormatter::writeRaw(char) [with TWriter = ArduinoJson6194_F1::Writer<std::basic_string, void>]'
/Users/aashutoshjha/Documents/Arduino/libraries/ArduinoJson/src/ArduinoJson/Json/TextFormatter.hpp:81:19: required from 'void ArduinoJson6194_F1::TextFormatter::writeFloat(T) [with T = double; TWriter = ArduinoJson6194_F1::Writer<std::basic_string, void>]'
/Users/aashutoshjha/Documents/Arduino/libraries/ArduinoJson/src/ArduinoJson/Json/JsonSerializer.hpp:62:5: required from 'size_t ArduinoJson6194_F1::JsonSerializer::visitFloat(ArduinoJson6194_F1::Float) [with TWriter = ArduinoJson6194_F1::Writer<std::basic_string, void>; size_t = unsigned int; ArduinoJson6194_F1::Float = double]'
/Users/aashutoshjha/Documents/Arduino/libraries/ArduinoJson/src/ArduinoJson/Variant/VariantData.hpp:49:51: required from 'typename TVisitor::result_type ArduinoJson6194_F1::VariantData::accept(TVisitor&) const [with TVisitor = ArduinoJson6194_F1::JsonSerializer<ArduinoJson6194_F1::Writer<std::basic_string, void> >; typename TVisitor::result_type = unsigned int]'
/Users/aashutoshjha/Documents/Arduino/libraries/ArduinoJson/src/ArduinoJson/Variant/VariantFunctions.hpp:18:31: required from 'typename TVisitor::result_type ArduinoJson6194_F1::variantAccept(const ArduinoJson6194_F1::VariantData*, TVisitor&) [with TVisitor = ArduinoJson6194_F1::JsonSerializer<ArduinoJson6194_F1::Writer<std::basic_string, void> >; typename TVisitor::result_type = unsigned int]'
/Users/aashutoshjha/Documents/Arduino/libraries/ArduinoJson/src/ArduinoJson/Serialization/serialize.hpp:15:68: required from 'size_t ArduinoJson6194_F1::doSerialize(ArduinoJson6194_F1::VariantConstRef, TWriter) [with TSerializer = ArduinoJson6194_F1::JsonSerializer; TWriter = ArduinoJson6194_F1::Writer<std::basic_string, void>; size_t = unsigned int]'
/Users/aashutoshjha/Documents/Arduino/libraries/ArduinoJson/src/ArduinoJson/Serialization/serialize.hpp:21:49: required from 'size_t ArduinoJson6194_F1::serialize(ArduinoJson6194_F1::VariantConstRef, TDestination&) [with TSerializer = ArduinoJson6194_F1::JsonSerializer; TDestination = std::basic_string; size_t = unsigned int]'
/Users/aashutoshjha/Documents/Arduino/libraries/ArduinoJson/src/ArduinoJson/Json/JsonSerializer.hpp:120:55: required from 'size_t ArduinoJson6194_F1::serializeJson(ArduinoJson6194_F1::VariantConstRef, TDestination&) [with TDestination = std::basic_string; size_t = unsigned int]'
/Users/aashutoshjha/Documents/Arduino/libraries/ArduinoOcpp/src/ArduinoOcpp/Core/OcppOperation.cpp:130:35: required from here
/Users/aashutoshjha/Documents/Arduino/libraries/ArduinoJson/src/ArduinoJson/Serialization/Writer.hpp:18:26: error: 'class std::basic_string' has no member named 'write'
return _dest->write(c);
^
exit status 1
Error compiling for board Generic ESP8266 Module.
`
from microocpp.
Related Issues (20)
- Firware Service for ESP-IDF HOT 1
- Does PlatformIO + MicroOcpp not support IP addresses?
- Change WiFi interface for Ethernet HOT 1
- undefined reference to `setup()'
- How to implement/Use Authorization Cache HOT 1
- Support for binary data over websockets HOT 4
- BeginTransaction process with 2 connectors HOT 5
- addMeterValueInput Doesn't Work HOT 1
- Bug in void mocpp_initialize(const char *backendUrl,... HOT 4
- Issue with Inconsistent Responses for StopTransaction Requests HOT 3
- Meter values in ESP-IDF HOT 1
- Use of AuthorizeRemoteTxRequests Configuration Key HOT 2
- Error on Make - Invalid Initialization of Reference HOT 1
- Always Disconnected Problem
- Offline Behavior: Session Data Persistence HOT 1
- Saving the charging summary HOT 7
- Function to define the current limit of a EVSE HOT 4
- Commercially Available Options HOT 2
- FreeVending Mode for Two conectors Simultaneously HOT 1
- cppcheck fail (cppcheck --force src/MicroOcpp) HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from microocpp.