gianbacchio / esp8266-telegrambot Goto Github PK
View Code? Open in Web Editor NEWTelegram Bot Library for ESP8266 on Arduino IDE
License: GNU General Public License v2.0
Telegram Bot Library for ESP8266 on Arduino IDE
License: GNU General Public License v2.0
Hi.
Excuse me for my English.
I’m using flashled bot and I’m trying to build a device that has high reliability.
Sometimes When I deliberately disconnect Internet connection ,my ESP’s hangs and after about 13 minutes it recover again and send failed to update to serial monitor.if I re-establish Internet connection between that 13 minutes and send a new command to BOT ,ESP can not run it and I will wait to that times be elapsed
But sometimes it doesn't hangs and after lower than 2 seconds I see failed to update in my serial monitor.
Is there any defined timeout for waiting for server reply?and how I can decrease it to lower than 1 minutes?
I hope I could explain what I mean.
Thank you in advance.
E' previsto ? Non riesco piu' a ricevere risposta dal bot nonostante veda sul monitor seriale che il messaggio arriva.
Good evening, thank you for your library, it seems to be powerful.
I m using Arduino ide and NodeMCU v3 board, i installed ESP8266 v. 2.3.0 and update sketch EchoBot.
Of course i filled the requested fields like SSID and PASSWORD with my wireless credentials, but on Serial it writes:
Connecting Wifi: [mySSID]
................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
and never connect. with other libraries it does, but it crashes later on sketch for other issues. With your library, it doesnt connect so i cannot see if it works with my BOT.
Where am i wrong?
Thanks
PS i tried with another wifi, because i ve differents on my home, with different keys (wpa2, wpa, wep): none of these works.
Any help is apprieciated.
[HTTPS] Received payload telegram:
Sent Update request messages up to : }
update-id and date always the same value
i am using the examples/EchoBot
bot keeps sending same message
When I want complile Flashedledbot.ino I have this problem
How to solve it?
warning :
FlashledBot.ino: In function 'void Bot_ExecMessages()':
FlashledBot.ino:43:30: warning: unknown escape sequence: '/' [enabled by default]
FlashledBot.ino:47:30: warning: unknown escape sequence: '/' [enabled by default]
FlashledBot.ino:51:30: warning: unknown escape sequence: '/' [enabled by default]
Happy new year to all.
with current library each message closes the connection and makes a new one .
so I need to know is it possible to keep the connection alive permanently to process the new arrived message faster?
Hello,
when using the Telegram command "/start" the string is not recognized in the example and the string "entities":[{"type":"bot_command","offset":0,"length":7}]}}]} is ignored in the function.
I can suppose this is an issue in the Telegram new bot api version.
why can't connect to server? many example trying
here is output when internal debug is active
Checking for messages.. GET Update Messages
[BOT]Connecting to server
[BOT]Conection error
Received empty string in response!
0 new messages
please any update? how about fingerprint api.telegram.org
We had trouble connecting to wifi. Things worked only when we changed this
while (WiFi.begin(ssid, password) != WL_CONNECTED) {
to this
WiFi.begin(ssid);
while ( WiFi.status() != WL_CONNECTED) {
(Btw, we were using wifi without password)
Thanks for the code though, works great now!
(Btw2 This message comes straight from Thingscon Amsterdam, we just did the Telegram Arduino MKR1000 workshop with Davide, and wanted to find out if we could get it to run on the ESP's which were handed out for free at the conference)
Hi, I always get this when compiling the examples
`
C:\Program Files (x86)\Arduino\arduino-builder -dump-prefs -logger=machine -hardware C:\Program Files (x86)\Arduino\hardware -tools C:\Program Files (x86)\Arduino\tools-builder -tools C:\Program Files (x86)\Arduino\hardware\tools\avr -built-in-libraries C:\Program Files (x86)\Arduino\libraries -libraries C:\Users\David\Documents\Arduino\libraries -fqbn=arduino:avr:mega:cpu=atmega2560 -vid-pid=0X2341_0X0042 -ide-version=10611 -build-path C:\Users\David\AppData\Local\Temp\build7084775030a6c7b4dbd932a1b1ae6f2c.tmp -warnings=none -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.avrdude.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avr-gcc.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -verbose C:\Users\David\Desktop\Desarrollo\Arduino\PRUEBAS\wifi_telegram\wifi_telegram.ino
C:\Program Files (x86)\Arduino\arduino-builder -compile -logger=machine -hardware C:\Program Files (x86)\Arduino\hardware -tools C:\Program Files (x86)\Arduino\tools-builder -tools C:\Program Files (x86)\Arduino\hardware\tools\avr -built-in-libraries C:\Program Files (x86)\Arduino\libraries -libraries C:\Users\David\Documents\Arduino\libraries -fqbn=arduino:avr:mega:cpu=atmega2560 -vid-pid=0X2341_0X0042 -ide-version=10611 -build-path C:\Users\David\AppData\Local\Temp\build7084775030a6c7b4dbd932a1b1ae6f2c.tmp -warnings=none -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.avrdude.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avr-gcc.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -verbose C:\Users\David\Desktop\Desarrollo\Arduino\PRUEBAS\wifi_telegram\wifi_telegram.ino
Using board 'mega' from platform in folder: C:\Program Files (x86)\Arduino\hardware\arduino\avr
Using core 'arduino' from platform in folder: C:\Program Files (x86)\Arduino\hardware\arduino\avr
Detecting libraries used...
"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10611 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\mega" "C:\Users\David\AppData\Local\Temp\build7084775030a6c7b4dbd932a1b1ae6f2c.tmp\sketch\wifi_telegram.ino.cpp" -o "nul"
"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10611 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\mega" "C:\Users\David\AppData\Local\Temp\build7084775030a6c7b4dbd932a1b1ae6f2c.tmp\sketch\wifi_telegram.ino.cpp" -o "C:\Users\David\AppData\Local\Temp\build7084775030a6c7b4dbd932a1b1ae6f2c.tmp\preproc\ctags_target_for_gcc_minus_e.cpp"
C:\Users\David\Desktop\Desarrollo\Arduino\PRUEBAS\wifi_telegram\wifi_telegram.ino:12:25: fatal error: ESP8266WiFi.h: No such file or directory
#include <ESP8266WiFi.h>
^
compilation terminated.
exit status 1
Error compiling for board Arduino/Genuino Mega or Mega 2560.`
What am I doing wrong?
hi my friends, i wanna use my own server client for Telegram bot with webhook method , but my request didn't deliver to the Arduino board not at all, can u help me?
If i try to use the Bot and to have some other fuctions like sending an Gmail, the ESP do a reset.
(a memory problem)
with
Serial.printf("Free heap size3:\t\t\t\t\t%d (bytes)\n", ESP.getFreeHeap());
we can look for the free Heap and if it's go low like 17152 there's the problem.
client.println("Connection: close"); /// zum speicher frei geben
return mess;
will remove the problem in my Sketch
Hello, I need to process a message sent to the bot. how can i do this using ESP8266-TelegramBot?
Hi, how i can upload video files?
I tried a lot things wrote in this Issue:
esp8266/Arduino#1426
(interrupt/timing problem)
My workaround;
ETS_GPIO_INTR_DISABLE(); // interrupt disablen wegen softuart, da sonst wdt reset möglich
IPAddress server(149,154,167,198);
....
client.println("Connection: close"); /// zum speicher frei geben
ETS_GPIO_INTR_ENABLE(); // interrupt enablen/disablen wegen softuart, da sonst wdt reset möglich
In my Telegram-bot Lib.
(Connection: close remove also a Bug if you try to send an Email an with Telegrambot usage)
With that workaround there is missing Serial Data. So i do this in my Sketch:
for (int l = 0; l < 20 ; l++)
{
error = my_sds.read(&p25,&p10);
if (!error) {
break;
}
else {
p25=-2;
p10=-2;
}
delay(100);
}
I get the Message:
WiFi connected
IP address:
192.168.0.27
GET Update Messages
Exception (29):
epc1=0x4000dfa9 epc2=0x00000000 epc3=0x00000000 excvaddr=0x00000000 depc=0x00000000
ctx: cont
sp: 3fff1200 end: 3fff1560 offset: 01a0
stack>>>
3fff13a0: 3fff04e8 00000000 00000000 3fff1330
3fff13b0: 3fff04e8 00000b62 00000b62 4010020c
3fff13c0: 00000002 00000017 00000004 40228584
3fff13d0: 3fff2d8c 0000001d 0000440c 00000000
3fff13e0: 3fff2d8c 3ffe91f4 00000002 4022964f
3fff13f0: 00000002 00000000 3fff2d8c 40228576
3fff1400: 00000050 3fff8084 3fff0370 3fff14c0
3fff1410: 3ffe99b4 00000000 3fff0370 40203410
3fff1420: 00000049 00000001 3fff1470 402046a9
3fff1430: 3ffe91f4 3fff0370 3fff0370 40203410
3fff1440: 3ffe99b4 3fff0370 3fff0370 40205904
3fff1450: 3ffe99b4 3fff0370 3fff1470 40205949
3fff1460: 00000043 3fff0370 3fff14e4 40203fe2
3fff1470: 3fff8084 0000004f 00000049 3fff2d0c
3fff1480: 0000000f 00000000 3ffe91f0 c6a79a95
3fff1490: 3fff0508 3fff0270 3fff14c0 402063f4
3fff14a0: 3fff0508 3fff0270 3fff026c 3fff1530
3fff14b0: 3fff0508 3fff0270 3fff026c 402040e5
3fff14c0: 3fff25dc 0000004f 00000044 401006d8
3fff14d0: 00000000 0000000b 3fff1530 4020626a
3fff14e0: 3fff2764 3fff2b84 0000000f 00000000
3fff14f0: 3fff268c 0000004f 00000044 402062f2
3fff1500: 3fffdad0 00000000 3fff1530 402063f4
3fff1510: 1b00a8c0 00ffffff 3fff026c 3fff0534
3fff1520: 3fffdad0 00000000 3fff026c 40202795
3fff1530: 3fff16ac 0000000f 00000001 feefeffe
3fff1540: 3fffdad0 00000000 3fff052d 402047bc
3fff1550: feefeffe feefeffe 3fff0540 40100958
<<<stack<<<
ets Jan 8 2013,rst cause:2, boot mode:(3,6)
load 0x4010f000, len 1264, room 16
tail 0
chksum 0x42
csum 0x42
~ld
I think it has to do with the bot.getUpdate command, because if i delete it then i don't get a error message. Plz Help :)
bot.sendMessage( m.id , "中文","");
telegram client show
\u4e2d\u6587
big5 to utf8 ?
Hi, in example flashedbot, 43, 47, 51 string. if (bot.message[i][5] == "/ledoff") { need to change to "ledoff", because we cut 1 symbol "/"
Hello,
Can you add support to send e.g. a jpg image which is in the esp8266's ram to telegram?
Regards
Hello
tell me how can I get the time to send a message (timestamp) from a variable date?
Thank you
I did compile and upload successfully echo example and my ESP8266 connect to my network with no problems.
After that the MC start to rebooting continuously with error:
Exception (3):
epc1=0x40100629 epc2=0x00000000 epc3=0x00000000 excvaddr=0x4006e6d0 depc=0x00000000
stack>>>
ctx: cont
sp: 3ffffd40 end: 3fffffc0 offset: 0190
3ffffed0: 3ffe8882 00000000 00656761 40207df5
3ffffee0: 3ffe868b 3ffe8715 3ffee710 3ffee884
3ffffef0: 3fffdad0 00000000 00000020 401008e7
3fffff00: 40206010 3ffee7fc 3ffe8880 402062e1
3fffff10: 3fffdad0 0000000e 3fffff64 4020674e
3fffff20: 3fffdad0 00000000 3ffee6c8 40206764
3fffff30: 3fffdad0 00000000 3ffee6c8 40201134
3fffff40: 3ffee7b8 00000d50 ffffff00 3ffee884
3fffff50: 000001bb 3ffee6d4 3ffe8715 3ffee884
3fffff60: 000001bb 3ffee6d4 3ffe8715 40203ba9
3fffff70: 40209560 dca79a95 40209560 dca79a95
3fffff80: 3fffdad0 3ffee7a0 3ffee6c8 40204acc
3fffff90: 3fffdad0 3ffee7a0 3ffee7fc 402010b6
3fffffa0: feefeffe 00000000 3ffee844 402070a4
3fffffb0: feefeffe feefeffe 3ffe8534 40100ba9
<<<stack<<<
ets Jan 8 2013,rst cause:2, boot mode:(3,6)
load 0x4010f000, len 3456, room 16
tail 0
chksum 0x84
csum 0x84
va5432625
~ld
What can be a problem ?
Hi guys, I'm getting this "failed to update" error in my serial monitor as soon as the ESP is connected to my WiFi.
Does anyone know how to solve this? is this a code related problem or a TelegramBot related problem?
Thanks in advance!!!
Is not working
hi
i am thanks for your help to peaple for publishin your good project
in this code i want give data from google Sheet and send data in telegram bot,
i use this project to give data from google sheet:
https://github.com/lorol/Googlesheet_DHT_simple
and use this project for recive and send data from telegram robat:
https://github.com/witnessmenow/Universal-Arduino-Telegram-Bot
i use esp8266
i merge two above project but i cant compile because i give error , because two project use WiFiClientSecure.h library , and same client :(
i changed the client name , and code ha been compiled, but in serial monitor , program crashed
i changed "HTTPSRedirect* client= nullptr;" to "HTTPSRedirect* test= nullptr;" and change every client in the code to test,
i also change below code, in the next change
WiFiClientSecure client;
UniversalTelegramBot bot(BOTtoken, client);
to :
WiFiClientSecure test;
UniversalTelegramBot bot(BOTtoken, test);
and you can see my Serial monitor in both time:
Starting ...
Connecting to hooshmandsazan3
.
WiFi connected
Exception (29):
epc1=0x4000e1cc epc2=0x00000000 epc3=0x00000000 excvaddr=0x00000204 depc=0x00000000
ctx: cont
sp: 3fff0fd0 end: 3fff18e0 offset: 01a0
>>>stack>>>
3fff1170: 00410000 3fffb59c 3fffb75c 40224e3f
3fff1180: 3fffb63c 3fffb87c 00000081 40225aa1
i add Serial.println() in the code for debugging
this is my code:
#include <ESP8266WiFi.h>
#include <ArduinoJson.h>
#include "HTTPSRedirect.h"
//======================From Telegram===============================
#include <WiFiClientSecure.h>
#include <UniversalTelegramBot.h>
#define BOTtoken "339475786:AAH7IjXu51xPom_sMx8IRnvQbcTD5FfO2Wc" // your Bot Token (Get from Botfather)
WiFiClientSecure client;
UniversalTelegramBot bot(BOTtoken, client);
int Bot_mtbs = 1000; //mean time between scan messages
long Bot_lasttime; //last time messages' scan has been done
bool Start = false;
const int ledPin = 2;
int ledStatus = 0;
void handleNewMessages(int numNewMessages) {
//Serial.println(F("handleNewMessages"));
//Serial.println(String(numNewMessages));
for (int i=0; i<numNewMessages; i++) {
String chat_id = String(bot.messages[i].chat_id);
String text = bot.messages[i].text;
String from_name = bot.messages[i].from_name;
if (from_name == "") from_name = "Guest";
if (text == "/ledon") {
digitalWrite(ledPin, HIGH); // turn the LED on (HIGH is the voltage level)
ledStatus = 1;
bot.sendMessage(chat_id, "Led is ON", "");
}
if (text == "/ledoff") {
ledStatus = 0;
digitalWrite(ledPin, LOW); // turn the LED off (LOW is the voltage level)
bot.sendMessage(chat_id, "Led is OFF", "");
}
if (text == "/status") {
if(ledStatus){
bot.sendMessage(chat_id, "Led is ON", "");
} else {
bot.sendMessage(chat_id, "Led is OFF", "");
}
}
if (text == "/start") {
String welcome = "Welcome to Universal Arduino Telegram Bot library, " + from_name + ".\n";
welcome += "This is Flash Led Bot example.\n\n";
welcome += "/ledon : to switch the Led ON\n";
welcome += "/ledoff : to switch the Led OFF\n";
welcome += "/status : Returns current status of LED\n";
bot.sendMessage(chat_id, welcome, "Markdown");
}
}
}
//***************************************************************************
#define WRITE_INTERVAL_MINITES 1
#define MAX_CONNECT 200 //reuse 2 times same clent
#define MAX_ERROR 100 //restart everything
const char *ssid = "sajjad";
const char *pass = "1q2w3e4r5t6y";
const char* host = "script.google.com";
const int httpsPort = 443;
int seconds = (WRITE_INTERVAL_MINITES * 60) - 20; // schedule first sending to TS in 20 sec after start
char *GScriptId = "AKfycbxRzkMt87iyiyU9EDY6REoRDpl5C9oHdjVyCSF6A4QN7jkNMGHD"; // Put your GScriptId here
// Access to Google Spreadsheet
String url = String("/macros/s/") + GScriptId + "/exec?";
HTTPSRedirect* test = nullptr;
float hum;
float tem;
void setup() {
Serial.begin(115200);
Serial.println();
delay(200);
Serial.println(F("Starting ..."));
delay(200);
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.mode(WIFI_STA);
if (WiFi.status() != WL_CONNECTED) WiFi.begin(ssid, pass);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.println(F("."));
}
Serial.println("");
Serial.println("WiFi connected");
pinMode(ledPin, OUTPUT); // initialize digital ledPin as an output.
delay(10);
digitalWrite(ledPin, LOW); // initialize pin as off
}
void loop() {
Serial.println("1");
//==============================From telegram=========================================
if (millis() > Bot_lasttime + Bot_mtbs) {
Serial.println("2");
int numNewMessages = bot.getUpdates(bot.last_message_received + 1);
while(numNewMessages) {
Serial.println("3");
Serial.println("got response");
handleNewMessages(numNewMessages);
numNewMessages = bot.getUpdates(bot.last_message_received + 1);
}
Serial.println("4");
Bot_lasttime = millis();
}
//***********************************************************************
Serial.println("5");
static int error_count = 0;
static int connect_count = 0;
static bool flag = false;
if (!flag){
Serial.println("6");
test = new HTTPSRedirect(httpsPort);
flag = true;
test->setPrintResponseBody(true); // or false and use String getResponseBody();
Serial.println("6a");
test->setContentTypeHeader("application/json");
Serial.println("6b");
if (!test->connected()) test->connect(host, httpsPort);
Serial.println("6c");
++connect_count;
Serial.println("6d");
}
// 30 sec after writing
if (test != nullptr){
Serial.println("7");
if (!test->connected()){
test->connect(host, httpsPort);
}
}
else{
Serial.println(F("Error2 creating client object!"));
error_count = -10;
Serial.println("7a");
}
Serial.println("7b");
Serial.println(F("========================="));
if (test->GET(url + String("readrow=last"), host)){
Serial.println("8");
DynamicJsonBuffer jsonBuffer;
JsonObject& json = jsonBuffer.parseObject(test->getResponseBody());
//json.printTo(Serial);
String Timestamp = json["values"][0];
int MaxT0 = json["values"][1];
int minT0 = json["values"][2];
String Con0 = json["values"][3];
int Hu0 = json["values"][4];
String WS0 = json["values"][5];
String WD0 = json["values"][6];
int MaxT1 = json["values"][7];
int minT1 = json["values"][8];
String Con1 = json["values"][9];
int Hu1 = json["values"][10];
String WS1 = json["values"][11];
String WD1 = json["values"][12];
int MaxT2 = json["values"][13];
int minT2 = json["values"][14];
String Con2 = json["values"][15];
int Hu2 = json["values"][16];
String WS2 = json["values"][17];
String WD2 = json["values"][18];
int MaxT3 = json["values"][19];
int minT3 = json["values"][20];
String Con3 = json["values"][21];
int Hu3 = json["values"][22];
String WS3 = json["values"][23];
String WD3 = json["values"][24];
float TEMP = json["values"][25];
float Hu = json["values"][26];
Serial.println(Timestamp);
Serial.println(MaxT0);
Serial.println(minT0);
Serial.println(Con0);
Serial.println(Hu0);
Serial.println(WS0);
Serial.println(WD0);
Serial.println("");
Serial.println(MaxT1);
Serial.println(minT1);
Serial.println(Con1);
Serial.println(Hu1);
Serial.println(WS1);
Serial.println(WD1);
Serial.println("");
Serial.println(MaxT2);
Serial.println(minT2);
Serial.println(Con2);
Serial.println(Hu2);
Serial.println(WS2);
Serial.println(WD2);
Serial.println("");
Serial.println(MaxT3);
Serial.println(minT3);
Serial.println(Con3);
Serial.println(Hu3);
Serial.println(WS3);
Serial.println(WD3);
Serial.println("");
Serial.println(TEMP);
Serial.println(Hu);
++connect_count;
} else {
Serial.println("9");
++error_count;
Serial.println(F("GET Last row val failed!"));
seconds = 10; // stage again in 10 sec
}
if (error_count > MAX_ERROR){
Serial.println("10");
Serial.println(F("Errors > MAX_ERROR..."));
//delete client;
//client = nullptr;
//connect_count = -1;
//error_count = 0;
//flag = false;
ESP.restart();
}
if (connect_count > MAX_CONNECT){
Serial.println("11");
Serial.println(F("Connects > MAX_CONNECT... rebuild"));
connect_count = -1;
flag = false;
delete test;
//return; //where?
}
seconds++;
delay(1000); //1 sec loop
}
when the code arive to "6b" program go to hang,
when arive to :
if (!test->connected()) test->connect(host, httpsPort);
this is my output:
Starting ...
Connecting to sajjad
.
.
.
.
.
.
.
.
WiFi connected
1
2
4
5
6
6a
6b
Exception (29):
epc1=0x4000dfd9 epc2=0x00000000 epc3=0x00000000 excvaddr=0x00000000 depc=0x00000000
ctx: cont
sp: 3fff1000 end: 3fff1850 offset: 01a0
>>>stack>>>
3fff11a0: 3fff073c 000011c9 000011c9 4022ab8c
3fff11b0: 3fff1584 00000012 00000003 00000000
please help me please :(
hi, thank you for the library..
i have a little problem here. when i try to send multi line text, but the only first line is sent.
example message i want to send :
Command : /state
Reply : LAMP : ON\n\nSEND : 12/12/2020, 05:00:00
Command : /man
Reply : /ON : Turn ON Light\n/OFF : Turn OFF Ligth\n/AUTO : Auto turn ON/OFF based on Time\n/STATE : Lamp State\nSEND : 12/12/2020, 05:00:00
any solution? thank you
hi , sorry to open ticket for my question but I really appreciated to have your advise. Actually I intend to make secure one to one communication between my ESP module and my phone (or couple of allowed phones), There is ESP8266WebServer, hosting web page, and intend to register allowed phones numbers by it, what is your suggestion to find id number of allowed phones and made secure communication
Thanks
How to make custom keyboard and pass it as reply markup?
I've spent a lot of time tinking and i just cant solve it
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.