初始化提交
This commit is contained in:
137
boards/default/micropython_k210_mixgoai/build/lib/aionenet.py
Normal file
137
boards/default/micropython_k210_mixgoai/build/lib/aionenet.py
Normal file
@@ -0,0 +1,137 @@
|
||||
import network,time,random,request,base64,json,board
|
||||
from machine import UART
|
||||
|
||||
wifi_en=board.pin(19,board.GPIO.OUT)
|
||||
board.register(18,board.FPIOA.UART2_TX)
|
||||
board.register(17,board.FPIOA.UART2_RX)
|
||||
|
||||
def wifi_enable(en):
|
||||
global wifi_en
|
||||
wifi_en.value(en)
|
||||
|
||||
def wifi_reset():
|
||||
global uart
|
||||
wifi_enable(0)
|
||||
time.sleep_ms(200)
|
||||
wifi_enable(1)
|
||||
time.sleep(2)
|
||||
uart = UART(UART.UART2,115200,timeout=1000, read_buf_len=4096)
|
||||
tmp = uart.read()
|
||||
uart.write("AT+UART_CUR=921600,8,1,0,0\r\n")
|
||||
print(uart.read())
|
||||
uart = UART(UART.UART2,921600,timeout=1000, read_buf_len=10240) # important! baudrate too low or read_buf_len too small will loose data
|
||||
uart.write("AT\r\n")
|
||||
tmp = uart.read()
|
||||
print(tmp)
|
||||
if not tmp.endswith("OK\r\n"):
|
||||
print("reset fail")
|
||||
return None
|
||||
try:
|
||||
nic = network.ESP8285(uart)
|
||||
except Exception:
|
||||
return None
|
||||
return nic
|
||||
|
||||
def nic_init(account,password):
|
||||
nic=wifi_reset()
|
||||
if not nic:
|
||||
raise Exception("[Cool.AI]:WiFi init fail")
|
||||
|
||||
nic.connect(account,password)
|
||||
nic.ifconfig()
|
||||
|
||||
|
||||
class SimpleEncode():
|
||||
keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890abcdefghijklmnopqrstuvwxyz~!@#$%^&*()_+-={}[]:;<,>.?/|"
|
||||
keyLength = len(keyStr)
|
||||
encryptionA = 17
|
||||
encryptionB = 8
|
||||
decodeA = 0
|
||||
preCountMax = 15
|
||||
postCount = 5
|
||||
randomChar = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnop"
|
||||
randomCharLength = len(randomChar)
|
||||
#base64字符
|
||||
ALPHABET = "ABCDEFGHIJKLMN0123456789OPQRSTUVWXYZ+/abcdefghijklmnopqrstuvwxyz"
|
||||
STANDARD = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" # 标准的字符串索引
|
||||
|
||||
#找到密钥
|
||||
for i in range(1,keyLength):
|
||||
if (encryptionA * i) % keyLength == 1:
|
||||
decodeA = i
|
||||
|
||||
def base64Encode(self,sourceStr):
|
||||
encode = ""
|
||||
for ch in base64.b64encode(sourceStr.encode()).decode():
|
||||
if ch == '=':
|
||||
encode += '='
|
||||
else:
|
||||
for i in range(64):
|
||||
if ch == self.STANDARD[i]:
|
||||
encode += self.ALPHABET[i]
|
||||
return encode
|
||||
|
||||
def encrpyt(self,sourceStr):
|
||||
srcLength = len(sourceStr)
|
||||
#先加入干扰字符的数量
|
||||
addCharCount = random.randint(1,self.preCountMax) if srcLength < self.preCountMax else 0
|
||||
#随机字符
|
||||
sb = str(addCharCount)+"|"
|
||||
for i in range(addCharCount):
|
||||
sb += self.randomChar[random.randint(0,self.randomCharLength-1)]
|
||||
|
||||
sb += sourceStr
|
||||
#尾部固定增加x个字符
|
||||
for i in range(self.postCount):
|
||||
sb += self.randomChar[random.randint(0,self.randomCharLength-1)]
|
||||
|
||||
#base64 加密
|
||||
base64Str = self.base64Encode(sb)
|
||||
|
||||
destStr = ''
|
||||
for i in range(len(base64Str)):
|
||||
#找到字符所在位置
|
||||
position = self.keyStr.find(base64Str[i])
|
||||
|
||||
#对字符进行转换
|
||||
y = (self.encryptionA * position + self.encryptionB) % self.keyLength
|
||||
|
||||
#找到替换后的字符
|
||||
|
||||
destStr += self.keyStr[y]
|
||||
|
||||
return destStr
|
||||
|
||||
def token(account,password):
|
||||
url = 'http://ai.heclouds.com:9090/v1/user/oneNetLogin'
|
||||
headers = {
|
||||
'Content-Type': 'application/json',
|
||||
}
|
||||
simpleencode = SimpleEncode()
|
||||
data = {'account': account, 'password': simpleencode.encrpyt(password)}
|
||||
|
||||
req = request.post(url, data=json.dumps(data), headers=headers)
|
||||
#print(req.text)
|
||||
try:
|
||||
return eval(req.text)['data']['loginToken']
|
||||
except:
|
||||
raise ValueError( "[Cool.AI]:Wrong account or password ")
|
||||
|
||||
|
||||
def post_ai(img,urlx,Token):
|
||||
ur = 'http://183.230.40.32:9090/v1/aiApi/picture/MixPY'
|
||||
url=ur.replace("MixPY",urlx)
|
||||
headers ={
|
||||
'Content-Type':'application/json',
|
||||
'Login-Token':'Token'
|
||||
}
|
||||
|
||||
headers['Login-Token']=Token
|
||||
|
||||
imge = img.compressed(quality=50)
|
||||
file =imge.to_bytes()
|
||||
str = base64.b64encode(file).decode()
|
||||
data = {'picture':[str]}
|
||||
req = request.post(url,data=json.dumps(data),headers=headers)
|
||||
return json.loads(req.text)
|
||||
#return eval(req.text)
|
||||
Reference in New Issue
Block a user