digging in TG

telegram:
get Info of bot: https://api.telegram.org/bot/getme

SendMessage: http://api.telegram.org/bot/sendMessage?chat_id=&text=HelloFromESP8266

ReceiveMessage: https://api.telegram.org/bot/getUpdates

reply a message: /sendmessage?chat_id=1234567&text=yoyo&reply_to_message_id=454
sendphoto: –> get the file id first!!!
/sendphoto?chat_id=1234567&photo=AgADBQADxagxG6PpUVdHAwvYecQlGt2C-TIABAEAAwIAA20AA4XvAgABFgQ

Sendphoto with URL:
/sendphoto?chat_id=1234567&photo=https://www.canva.com/learn/wp-content/uploads/2018/11/best-free-stock-photos-tb-2640×1485.jpg

https://stackoverflow.com/questions/33126743/how-do-i-add-my-bot-to-a-channel
sendMessage?chat_id=@test&text=Testing%20if%20this%20works

Advertisements

Pointer and Address

int myVar = 8; // variable myVar store value
&myVar; //address of myVar
int *myPtr;
myPtr = &myVar; // pointer myPtr store address of myVar
*myPtr; //value of the address pointed by myPtr

myVar &myVar
*myPtr myPtr
value => 23 address => 0x1234

Dynamic array

int size; cin >> size;
int * pz = new int [size];   // dynamic binding, size set at run time

delete [] pz;                // free memory when finished

 

1 2
void swapr(int & a, int & b) // use   references { int temp;
temp = a; // use a, b for values of variables a = b; b = temp;
}
swapr(wallet1, wallet2);        // pass variables
void swapp(int * p, int * q)    // use pointers { int temp;
temp = *p;      // use *p, *q for values of variables *p = *q; *q = temp;
}
swapp(&wallet1, &wallet2);      // pass addresses of variables 
void swapv(int a, int b)        // try using values { int temp;
temp = a;      // use a, b for values of variables a = b; b = temp;
}
swapv(wallet1, wallet2);        // pass values of variables

C++ — String Object vs C-Style String

Two way to manipulate string.

std::string

String Object C-Style Sting
#include “string” #include “cstring” / “string.h”
string myStr = “Hello World”; char myCharr[20] = “Hello World”;
str1 = str2; strcpy(charr1, charr2);
str1 += str2; strcat(charr1, charr2);
str.size() strlen(charr)
getline(cin, str); cin.getline(charr, 20);     //20 – max len

Advance C/C++ lang topics

// Here we can see that more than one variables
// are being used without reporting any error.
// That is because they are declared in the
// different namespaces and scopes.
#include <iostream>
using namespace std;

// Variable created inside namespace
namespace first
{
int val = 500;
}

// Global variable
int val = 100;

int main()
{
// Local variable
int val = 200;

// These variables can be accessed from
// outside the namespace using the scope
// operator ::
cout << first::val << ‘\n’;

return 0;
}

C++[] –> namespace is like a named-scope, so you can use it kind of like everywhere

CNU library

https://www.gnu.org/software/libc/manual/html_node/Getopt.html

More about C/C++ library

https://www.tutorialspoint.com/c_standard_library/index.htm

https://www.tutorialspoint.com/cpp_standard_library/index.htm

Basic thing, telegram on NodeMCU

Example used: HTTPSRequest

/*
HTTP over TLS (HTTPS) example sketch

This example demonstrates how to use
WiFiClientSecure class to access HTTPS API.
We fetch and display the status of
esp8266/Arduino project continuous integration
build.

Limitations:
only RSA certificates
no support of Perfect Forward Secrecy (PFS)
TLSv1.2 is supported since version 2.4.0-rc1

Created by Ivan Grokhotkov, 2015.
This example is in public domain.
*/

telegram:
get Info of bot: https://api.telegram.org/bot<YOUR-BOT-TOKEN>/getme

SendMessage: http://api.telegram.org/bot<YOUR-BOT-TOKEN>/sendMessage?chat_id=<YOUR-CHATID>&text=HelloFromESP8266

ReceiveMessage: https://api.telegram.org/bot<YOUR-BOT-TOKEN>/getUpdates

 

On the NodeMCU: Since it is HTTPS –> I cannot find a way to used it with AT COMMAND

Programming to NodeMCU:
HTTPSRequest:

–>fingerprint[] –> inside the Chrome –> certificate –> detail –> thumb print

 

GPRS A9 Module AT Command list

https://wiki.ai-thinker.com/gprs

//

AT+CGDCONT=1,”IP”,”cmhk”<\r><\n>
AT+CGATT=1<\r><\n>
AT+CGACT=1,1<\r><\n>

//

AT+CDNSGIP=”erp.hkite.com”<\r><\n>

Test the DNS, and check with terminal

host -a erp.hkite.com

//Base station location

+CREG: 2,1,”00A0″,”0D37″<\r><\n>
<\r><\n>
OK<\r><\n>

http://www.gpsspg.com/bs.htm

MCC:454 -> HK//http://www.gpsspg.com/bs/mcc.htm

MNC: 12 -> CMHK//http://www.gpsspg.com/bs/mnc.htm

LAC: 160 -> 0xA0

CI:3383 -> 0xD37

Google Cloud AutoML test

Overview:

Google 機器學習三大服務:AutoML, Cloud ML Engine, ML API 介紹與比較

screenshot:

https://docs.google.com/presentation/d/1KCSoR_aG-yn_vPBYFlLTzQdBAlBcdQgRYp5zdgH5IFA/edit?usp=sharing

Cloud AutoML Vision Object Detection

https://cloud.google.com/vision/automl/object-detection/docs/?_ga=2.244268482.-671499862.1555384491

With my training data: https://cloud.google.com/vision/automl/object-detection/docs/prepare

Getting Started on Sipeed MAIX M1

https://item.taobao.com/item.htm?id=578484113485
Link of the product.

Sipeed MAIX M1 is a SoC of the kendryte K210: https://kendryte.com/
Sipeed is AI enabler https://www.sipeed.com/#/

When if ship, it has Maxipy flashed inside the SoC. Connect to the PC via USB cable, connect with UART, putty (success)

MaixPy 是将 Micropython 移植到 K210( 一款64位双核带硬件FPU和卷积加速器的 RISC-V CPU, ) 的一个项目.
https://micropython.org/
https://maixpy.sipeed.com/zh/
https://github.com/sipeed/MaixPy —-> source code

About the chip:
https://github.com/kendryte/
https://kendryte.com/downloads/

About the M1 SoC: https://maixpy.sipeed.com/assets/M1_pin.png

—-> doc from the sipeed
http://dl.sipeed.com/