vpcola / esp32singlechannelgateway Goto Github PK
View Code? Open in Web Editor NEWA Fork of the popular ESP8266 single channel gateway adapted to ESP32 on the 915Mhz band.
A Fork of the popular ESP8266 single channel gateway adapted to ESP32 on the 915Mhz band.
Hi. I follow all the steps and when I try compiling the arduinio IDE say.
ESP-sc-gway:194:22: error: expected initializer before 'Interrupt_0'
ESP-sc-gway:195:22: error: expected initializer before 'Interrupt_1'
ESP-sc-gway:199:24: error: expected initializer before 'CreateMutux'
ESP-sc-gway:200:24: error: expected initializer before 'GetMutex'
ESP-sc-gway:201:24: error: expected initializer before 'ReleaseMutex'
_loraModem:1448:22: error: expected initializer before 'Interrupt_2'
C:\Users\JoséM\Documents\Arduino\ESP-sc-gway\ESP-sc-gway.ino: In function 'void setup()':
ESP-sc-gway:1317:30: error: 'Interrupt_0' was not declared in this scope
ESP-sc-gway:1323:30: error: 'Interrupt_0' was not declared in this scope
ESP-sc-gway:1324:30: error: 'Interrupt_1' was not declared in this scope
C:\Users\JoséM\Documents\Arduino\ESP-sc-gway_loraModem.ino: At global scope:
_loraModem:1423:22: error: expected initializer before 'Interrupt_0'
_loraModem:1440:22: error: expected initializer before 'Interrupt_1'
_loraModem:1448:22: error: expected initializer before 'Interrupt_2'
exit status 1
expected initializer before 'Interrupt_0'
Out of the box compilation shows the "libraries\IBM_LMIC_framework\src\lmic\radio.c:689" issue again.
I tried both CFG_sx1276_radio and CFG_sx1272_radio just to check
Radio works fine (TXRX) with the simple LORA demos.
Its a TTGO V1 (just purchased this month)
Any known issues?
(its just the node, not the GW)
Any idea what goes wrong. Did copy all libraries to the correct folder but still not successful @compiling.
Thanks for checking...
libraries\SimpleTimer-master\SimpleTimer.cpp.o: In function `SimpleTimer::SimpleTimer()':
C:\TEMP\arduino-nightly\portable\sketchbook\libraries\SimpleTimer-master/SimpleTimer.cpp:35: multiple definition of `SimpleTimer::SimpleTimer()'
sketch\SimpleTimer.cpp.o:sketch/SimpleTimer.cpp:35: first defined here
libraries\SimpleTimer-master\SimpleTimer.cpp.o: In function `SimpleTimer::SimpleTimer()':
SimpleTimer.cpp:(.text._ZN11SimpleTimerC2Ev+0x0): multiple definition of `SimpleTimer::SimpleTimer()'
sketch\SimpleTimer.cpp.o:SimpleTimer.cpp:(.text._ZN11SimpleTimerC2Ev+0x0): first defined here
libraries\SimpleTimer-master\SimpleTimer.cpp.o: In function `SimpleTimer::findFirstFreeSlot()':
SimpleTimer.cpp:(.text._ZN11SimpleTimer17findFirstFreeSlotEv+0x0): multiple definition of `SimpleTimer::findFirstFreeSlot()'
sketch\SimpleTimer.cpp.o:SimpleTimer.cpp:(.text._ZN11SimpleTimer17findFirstFreeSlotEv+0x0): first defined here
libraries\SimpleTimer-master\SimpleTimer.cpp.o: In function `SimpleTimer::setTimer(long, void (*)(), int)':
SimpleTimer.cpp:(.text._ZN11SimpleTimer8setTimerElPFvvEi+0x0): multiple definition of `SimpleTimer::setTimer(long, void (*)(), int)'
sketch\SimpleTimer.cpp.o:SimpleTimer.cpp:(.text._ZN11SimpleTimer8setTimerElPFvvEi+0x0): first defined here
libraries\SimpleTimer-master\SimpleTimer.cpp.o: In function `SimpleTimer::setInterval(long, void (*)())':
SimpleTimer.cpp:(.text._ZN11SimpleTimer11setIntervalElPFvvE+0x0): multiple definition of `SimpleTimer::setInterval(long, void (*)())'
sketch\SimpleTimer.cpp.o:SimpleTimer.cpp:(.text._ZN11SimpleTimer11setIntervalElPFvvE+0x0): first defined here
libraries\SimpleTimer-master\SimpleTimer.cpp.o: In function `SimpleTimer::setTimeout(long, void (*)())':
SimpleTimer.cpp:(.text._ZN11SimpleTimer10setTimeoutElPFvvE+0x0): multiple definition of `SimpleTimer::setTimeout(long, void (*)())'
sketch\SimpleTimer.cpp.o:SimpleTimer.cpp:(.text._ZN11SimpleTimer10setTimeoutElPFvvE+0x0): first defined here
libraries\SimpleTimer-master\SimpleTimer.cpp.o: In function `SimpleTimer::deleteTimer(int)':
SimpleTimer.cpp:(.text._ZN11SimpleTimer11deleteTimerEi+0x0): multiple definition of `SimpleTimer::deleteTimer(int)'
sketch\SimpleTimer.cpp.o:SimpleTimer.cpp:(.text._ZN11SimpleTimer11deleteTimerEi+0x0): first defined here
libraries\SimpleTimer-master\SimpleTimer.cpp.o: In function `SimpleTimer::run()':
SimpleTimer.cpp:(.text._ZN11SimpleTimer3runEv+0x0): multiple definition of `SimpleTimer::run()'
sketch\SimpleTimer.cpp.o:SimpleTimer.cpp:(.text._ZN11SimpleTimer3runEv+0x0): first defined here
libraries\SimpleTimer-master\SimpleTimer.cpp.o: In function `SimpleTimer::restartTimer(int)':
SimpleTimer.cpp:(.text._ZN11SimpleTimer12restartTimerEi+0x0): multiple definition of `SimpleTimer::restartTimer(int)'
sketch\SimpleTimer.cpp.o:SimpleTimer.cpp:(.text._ZN11SimpleTimer12restartTimerEi+0x0): first defined here
libraries\SimpleTimer-master\SimpleTimer.cpp.o: In function `SimpleTimer::isEnabled(int)':
SimpleTimer.cpp:(.text._ZN11SimpleTimer9isEnabledEi+0x0): multiple definition of `SimpleTimer::isEnabled(int)'
sketch\SimpleTimer.cpp.o:SimpleTimer.cpp:(.text._ZN11SimpleTimer9isEnabledEi+0x0): first defined here
libraries\SimpleTimer-master\SimpleTimer.cpp.o: In function `SimpleTimer::enable(int)':
SimpleTimer.cpp:(.text._ZN11SimpleTimer6enableEi+0x0): multiple definition of `SimpleTimer::enable(int)'
sketch\SimpleTimer.cpp.o:SimpleTimer.cpp:(.text._ZN11SimpleTimer6enableEi+0x0): first defined here
libraries\SimpleTimer-master\SimpleTimer.cpp.o: In function `SimpleTimer::disable(int)':
SimpleTimer.cpp:(.text._ZN11SimpleTimer7disableEi+0x0): multiple definition of `SimpleTimer::disable(int)'
sketch\SimpleTimer.cpp.o:SimpleTimer.cpp:(.text._ZN11SimpleTimer7disableEi+0x0): first defined here
libraries\SimpleTimer-master\SimpleTimer.cpp.o: In function `SimpleTimer::toggle(int)':
SimpleTimer.cpp:(.text._ZN11SimpleTimer6toggleEi+0x0): multiple definition of `SimpleTimer::toggle(int)'
Multiple libraries were found for "TimeLib.h"
sketch\SimpleTimer.cpp.o:SimpleTimer.cpp:(.text._ZN11SimpleTimer6toggleEi+0x0): first defined here
Used: C:\TEMP\arduino-nightly\portable\sketchbook\libraries\Time-master
libraries\SimpleTimer-master\SimpleTimer.cpp.o: In function `SimpleTimer::getNumTimers()':
Hi,
I am new to all the TTN and LoRa(WAN), and I am unsure how to set it up. I am able to get my heltec lora32 connected to the internet and get the IP address. From there I wasn't able to connect to the webserver or have the TTN gateway connected. I'm not sure what I am doing wrong or if there's anything that I missed for the setup.
error message @ compile time: could not convert '(uint8_t*)(& message)' from 'uint8_t* {aka unsigned char*}' to 'LoraUp'
refering to line 464 in _sensor file
any idea ?
best
hey,
I have done everything a per your video tutorial.
I get the following error when I compile.
Multiple libraries were found for "WiFi.h"
In file included from C:\Users\omkar\Documents\Arduino\libraries\ESP32SingleChannelGateway-master\ESP-sc-gway\ESP-sc-gway.ino:87:0:
Used: C:\Users\omkar\Documents\ArduinoData\packages\esp32\hardware\esp32\1.0.1\libraries\WiFi
C:\Users\omkar\Documents\Arduino\libraries\ESPWebServer-master\src/ESP8266WebServer.h:28:25: fatal error: ESP8266WiFi.h: No such file or directory
Not used: C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.21.0_x86__mdqgnx93n4wtt\libraries\WiFi
compilation terminated.
exit status 1
Error compiling for board ESP32 Dev Module.
please help
thanx
Dear sir,
I am new in this environment. seeing various videos and looking into a number of similar sketches, This one looks promising.
However I am not capable of compiling the project in Arduino 2.3 environment. I have also tried the earlier ver. without success.
Compiler provides bellow error, which mainly caused by Time.h library I have also tried out with TimeLib.h with the same result.
I will appreciate any feedback to get me on going with this.
C:\Users\User\Documents\Arduino\ESP-sc-gway\ESP-sc-gway.ino: In function 'void printTime()':
C:\Users\User\Documents\Arduino\ESP-sc-gway\ESP-sc-gway.ino:281:10: error: 'weekday' was not declared in this scope
switch (weekday())
^~~~~~~
C:\Users\User\Documents\Arduino\ESP-sc-gway\ESP-sc-gway.ino:293:14: error: 'hour' was not declared in this scope
printDigits(hour());
^~~~
C:\Users\User\Documents\Arduino\ESP-sc-gway\ESP-sc-gway.ino:295:14: error: 'minute' was not declared in this scope
printDigits(minute());
^~~~~~
C:\Users\User\Documents\Arduino\ESP-sc-gway\ESP-sc-gway.ino:295:14: note: suggested alternative: 'finite'
printDigits(minute());
^~~~~~
finite
C:\Users\User\Documents\Arduino\ESP-sc-gway\ESP-sc-gway.ino:297:14: error: 'second' was not declared in this scope
printDigits(second());
^~~~~~
C:\Users\User\Documents\Arduino\ESP-sc-gway\ESP-sc-gway.ino:297:14: note: suggested alternative: 'sysconf'
printDigits(second());
^~~~~~
sysconf
C:\Users\User\Documents\Arduino\ESP-sc-gway\ESP-sc-gway.ino: In function 'int WlanReadWpa()':
C:\Users\User\Documents\Arduino\ESP-sc-gway\ESP-sc-gway.ino:443:2: error: 'readConfig' was not declared in this scope
readConfig( CONFIGFILE, &gwayConfig);
^~~~~~~~~~
C:\Users\User\Documents\Arduino\ESP-sc-gway\ESP-sc-gway.ino:443:2: note: suggested alternative: 'gwayConfig'
readConfig( CONFIGFILE, &gwayConfig);
^~~~~~~~~~
gwayConfig
C:\Users\User\Documents\Arduino\ESP-sc-gway\ESP-sc-gway.ino: In function 'int WlanConnect(int)':
C:\Users\User\Documents\Arduino\ESP-sc-gway\ESP-sc-gway.ino:556:3: error: 'writeGwayCfg' was not declared in this scope
writeGwayCfg(CONFIGFILE);
^~~~~~~~~~~~
C:\Users\User\Documents\Arduino\ESP-sc-gway\ESP-sc-gway.ino: In function 'int readUdp(int)':
C:\Users\User\Documents\Arduino\ESP-sc-gway\ESP-sc-gway.ino:752:8: error: 'sendPacket' was not declared in this scope
if (sendPacket(data, packetSize-4) < 0) {
^~~~~~~~~~
C:\Users\User\Documents\Arduino\ESP-sc-gway\ESP-sc-gway.ino:752:8: note: suggested alternative: 'sendstat'
if (sendPacket(data, packetSize-4) < 0) {
^~~~~~~~~~
sendstat
C:\Users\User\Documents\Arduino\ESP-sc-gway\ESP-sc-gway.ino: In function 'void sendstat()':
C:\Users\User\Documents\Arduino\ESP-sc-gway\ESP-sc-gway.ino:1071:9: error: 'now' was not declared in this scope
t = now(); // get timestamp for statistics
^~~
C:\Users\User\Documents\Arduino\ESP-sc-gway\ESP-sc-gway.ino:1071:9: note: suggested alternative: 'pow'
t = now(); // get timestamp for statistics
^~~
pow
C:\Users\User\Documents\Arduino\ESP-sc-gway\ESP-sc-gway.ino:1074:63: error: 'year' was not declared in this scope
sprintf(stat_timestamp, "%04d-%02d-%02d %02d:%02d:%02d CET", year(),month(),day(),hour(),minute(),second());
^~~~
C:\Users\User\Documents\Arduino\ESP-sc-gway\ESP-sc-gway.ino:1074:63: note: suggested alternative: 'read'
sprintf(stat_timestamp, "%04d-%02d-%02d %02d:%02d:%02d CET", year(),month(),day(),hour(),minute(),second());
^~~~
read
C:\Users\User\Documents\Arduino\ESP-sc-gway\ESP-sc-gway.ino:1074:70: error: 'month' was not declared in this scope
sprintf(stat_timestamp, "%04d-%02d-%02d %02d:%02d:%02d CET", year(),month(),day(),hour(),minute(),second());
^~~~~
C:\Users\User\Documents\Arduino\ESP-sc-gway\ESP-sc-gway.ino:1074:78: error: 'day' was not declared in this scope
sprintf(stat_timestamp, "%04d-%02d-%02d %02d:%02d:%02d CET", year(),month(),day(),hour(),minute(),second());
^~~
C:\Users\User\Documents\Arduino\ESP-sc-gway\ESP-sc-gway.ino:1074:84: error: 'hour' was not declared in this scope
sprintf(stat_timestamp, "%04d-%02d-%02d %02d:%02d:%02d CET", year(),month(),day(),hour(),minute(),second());
^~~~
C:\Users\User\Documents\Arduino\ESP-sc-gway\ESP-sc-gway.ino:1074:91: error: 'minute' was not declared in this scope
sprintf(stat_timestamp, "%04d-%02d-%02d %02d:%02d:%02d CET", year(),month(),day(),hour(),minute(),second());
^~~~~~
C:\Users\User\Documents\Arduino\ESP-sc-gway\ESP-sc-gway.ino:1074:91: note: suggested alternative: 'finite'
sprintf(stat_timestamp, "%04d-%02d-%02d %02d:%02d:%02d CET", year(),month(),day(),hour(),minute(),second());
^~~~~~
finite
C:\Users\User\Documents\Arduino\ESP-sc-gway\ESP-sc-gway.ino:1074:100: error: 'second' was not declared in this scope
sprintf(stat_timestamp, "%04d-%02d-%02d %02d:%02d:%02d CET", year(),month(),day(),hour(),minute(),second());
^~~~~~
C:\Users\User\Documents\Arduino\ESP-sc-gway\ESP-sc-gway.ino:1074:100: note: suggested alternative: 'sysconf'
sprintf(stat_timestamp, "%04d-%02d-%02d %02d:%02d:%02d CET", year(),month(),day(),hour(),minute(),second());
^~~~~~
sysconf
C:\Users\User\Documents\Arduino\ESP-sc-gway\ESP-sc-gway.ino: In function 'void setup()':
C:\Users\User\Documents\Arduino\ESP-sc-gway\ESP-sc-gway.ino:1298:9: error: 'timeStatus' was not declared in this scope
while (timeStatus() == timeNotSet) {
^~~~~~~~~~
C:\Users\User\Documents\Arduino\ESP-sc-gway\ESP-sc-gway.ino:1298:9: note: suggested alternative: 'timerStarted'
while (timeStatus() == timeNotSet) {
^~~~~~~~~~
timerStarted
C:\Users\User\Documents\Arduino\ESP-sc-gway\ESP-sc-gway.ino:1298:25: error: 'timeNotSet' was not declared in this scope
while (timeStatus() == timeNotSet) {
^~~~~~~~~~
C:\Users\User\Documents\Arduino\ESP-sc-gway\ESP-sc-gway.ino:1298:25: note: suggested alternative: 'timerStart'
while (timeStatus() == timeNotSet) {
^~~~~~~~~~
timerStart
C:\Users\User\Documents\Arduino\ESP-sc-gway\ESP-sc-gway.ino:1303:21: error: 'setTime' was not declared in this scope
if (newTime != 0) setTime(newTime);
^~~~~~~
C:\Users\User\Documents\Arduino\ESP-sc-gway\ESP-sc-gway.ino:1303:21: note: suggested alternative: 'newTime'
if (newTime != 0) setTime(newTime);
^~~~~~~
newTime
C:\Users\User\Documents\Arduino\ESP-sc-gway\ESP-sc-gway.ino:1308:2: error: 'writeGwayCfg' was not declared in this scope
writeGwayCfg(CONFIGFILE );
^~~~~~~~~~~~
C:\Users\User\Documents\Arduino\ESP-sc-gway\ESP-sc-gway.ino:1314:2: error: 'setupWWW' was not declared in this scope
setupWWW();
^~~~~~~~
C:\Users\User\Documents\Arduino\ESP-sc-gway\ESP-sc-gway.ino:1314:2: note: suggested alternative: 'setup'
setupWWW();
^~~~~~~~
setup
C:\Users\User\Documents\Arduino\ESP-sc-gway\ESP-sc-gway.ino:1321:2: error: 'initLoraModem' was not declared in this scope
initLoraModem();
^~~~~~~~~~~~~
C:\Users\User\Documents\Arduino\ESP-sc-gway\ESP-sc-gway.ino:1325:3: error: 'cadScanner' was not declared in this scope
cadScanner(); // Always start at SF7
^~~~~~~~~~
C:\Users\User\Documents\Arduino\ESP-sc-gway\ESP-sc-gway.ino:1329:3: error: 'rxLoraModem' was not declared in this scope
rxLoraModem();
^~~~~~~~~~~
C:\Users\User\Documents\Arduino\ESP-sc-gway\ESP-sc-gway.ino:1347:2: error: 'writeConfig' was not declared in this scope
writeConfig( CONFIGFILE, &gwayConfig); // Write config
^~~~~~~~~~~
C:\Users\User\Documents\Arduino\ESP-sc-gway\ESP-sc-gway.ino:1347:2: note: suggested alternative: 'gwayConfig'
writeConfig( CONFIGFILE, &gwayConfig); // Write config
^~~~~~~~~~~
gwayConfig
C:\Users\User\Documents\Arduino\ESP-sc-gway\ESP-sc-gway.ino: In function 'void loop()':
C:\Users\User\Documents\Arduino\ESP-sc-gway\ESP-sc-gway.ino:1394:3: error: 'stateMachine' was not declared in this scope
stateMachine(); // start the state machine
^~~~~~~~~~~~
C:\Users\User\Documents\Arduino\ESP-sc-gway\ESP-sc-gway.ino:1394:3: note: suggested alternative: 'stattime'
stateMachine(); // start the state machine
^~~~~~~~~~~~
stattime
C:\Users\User\Documents\Arduino\ESP-sc-gway\ESP-sc-gway.ino:1407:3: error: 'initLoraModem' was not declared in this scope
initLoraModem();
^~~~~~~~~~~~~
C:\Users\User\Documents\Arduino\ESP-sc-gway\ESP-sc-gway.ino:1410:4: error: 'cadScanner' was not declared in this scope
cadScanner();
^~~~~~~~~~
C:\Users\User\Documents\Arduino\ESP-sc-gway\ESP-sc-gway.ino:1414:4: error: 'rxLoraModem' was not declared in this scope
rxLoraModem();
^~~~~~~~~~~
C:\Users\User\Documents\Arduino\ESP-sc-gway\ESP-sc-gway.ino:1416:3: error: 'writeRegister' was not declared in this scope
writeRegister(REG_IRQ_FLAGS_MASK, (uint8_t) 0x00);
^~~~~~~~~~~~~
C:\Users\User\Documents\Arduino\ESP-sc-gway\ESP-sc-gway.ino:1416:3: note: suggested alternative: 'register'
writeRegister(REG_IRQ_FLAGS_MASK, (uint8_t) 0x00);
^~~~~~~~~~~~~
register
C:\Users\User\Documents\Arduino\ESP-sc-gway\ESP-sc-gway.ino:1490:4: error: 'hop' was not declared in this scope
hop();
^~~
C:\Users\User\Documents\Arduino\ESP-sc-gway\ESP-sc-gway.ino:1490:4: note: suggested alternative: '_hop'
hop();
^~~
_hop
C:\Users\User\Documents\Arduino\ESP-sc-gway\ESP-sc-gway.ino:1499:4: error: 'rxLoraModem' was not declared in this scope
rxLoraModem();
^~~~~~~~~~~
C:\Users\User\Documents\Arduino\ESP-sc-gway\ESP-sc-gway.ino:1501:4: error: 'hop' was not declared in this scope
hop();
^~~
C:\Users\User\Documents\Arduino\ESP-sc-gway\ESP-sc-gway.ino:1501:4: note: suggested alternative: '_hop'
hop();
^~~
_hop
C:\Users\User\Documents\Arduino\ESP-sc-gway\ESP-sc-gway.ino:1505:5: error: 'cadScanner' was not declared in this scope
cadScanner();
^~~~~~~~~~
C:\Users\User\Documents\Arduino\ESP-sc-gway\ESP-sc-gway.ino:1568:3: error: 'initLoraModem' was not declared in this scope
initLoraModem();
^~~~~~~~~~~~~
C:\Users\User\Documents\Arduino\ESP-sc-gway\ESP-sc-gway.ino:1571:4: error: 'cadScanner' was not declared in this scope
cadScanner();
^~~~~~~~~~
C:\Users\User\Documents\Arduino\ESP-sc-gway\ESP-sc-gway.ino:1575:4: error: 'rxLoraModem' was not declared in this scope
rxLoraModem();
^~~~~~~~~~~
C:\Users\User\Documents\Arduino\ESP-sc-gway\ESP-sc-gway.ino:1577:3: error: 'writeRegister' was not declared in this scope
writeRegister(REG_IRQ_FLAGS_MASK, (uint8_t) 0x00);
^~~~~~~~~~~~~
C:\Users\User\Documents\Arduino\ESP-sc-gway\ESP-sc-gway.ino:1577:3: note: suggested alternative: 'register'
writeRegister(REG_IRQ_FLAGS_MASK, (uint8_t) 0x00);
^~~~~~~~~~~~~
register
C:\Users\User\Documents\Arduino\ESP-sc-gway\ESP-sc-gway.ino:1601:21: error: 'setTime' was not declared in this scope
if (newTime != 0) setTime(newTime);
^~~~~~~
C:\Users\User\Documents\Arduino\ESP-sc-gway\ESP-sc-gway.ino:1601:21: note: suggested alternative: 'newTime'
if (newTime != 0) setTime(newTime);
^~~~~~~
newTime
Multiple libraries were found for "WebServer.h"
Used: C:\Users\User\AppData\Local\Arduino15\packages\Heltec-esp32\hardware\esp32\0.0.7\libraries\WebServer
Not used: C:\Users\User\Documents\Arduino\ESP-sc-gway\libraries\WebServer_tng
exit status 1
Compilation error: 'weekday' was not declared in this scope
This is wait I got:
rPKT_PULL_RESP:: received
sendPacket:: LoraDown filled
sendPacket:: fini OK
readUdp:: TX buff filled
PKT_TX_ACK:: tmst=174440869
PKT_PULL_RESP:: received
sendPacket:: LoraDown filled
sendPacket:: fini OK
readUdp:: TX buff filled
PKT_TX_ACK:: tmst=305896809
But the ACK is not received by the node
The frequency and the SF are the same. I deleted the /gwayConfig.text, but it did not solve the problem.
The node sends packets, but the gateway does not receive.
Web server is working.
Hello,
I try change the frequency for 915 Mhz in LoraModem.h, but I can't receive or send, I don't Know. Can you show how I do this?
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.