Python polling mechanism to control led instances

I won't say much nonsense, everyone should just look at the code!

# - *- coding:utf-8-*- 
# File: ceshitianqi
 
import urllib2
import json
import time
import datetime
import serial 
import random
import os
import sys
 
APIKEY ='ZPdLyl***=' #Change to your APIKEY
ser=serial.Serial("/dev/ttyUSB2",9600,timeout=1)
 
def read(key):
 ser.write(key)print("output:"+key)
 time.sleep(1)
 response = ser.readall()print(response)print(type(response))return response
 
def http_put(key):
 val =read(key) #Get Arduino data
 CurTime = datetime.datetime.now()
 url='http://api.heclouds.com/devices/**1/datapoints'
 # values={'datastreams':[{"id":"temp","datapoints":[{"at":CurTime.isoformat(),"value":val}]}]}print(type(val))if key=="a":
 values={'datastreams':[{"id":"humidity","datapoints":[{"at":CurTime.isoformat(),"value":val}]}]}if key=="b":
 values={'datastreams':[{"id":"temperature","datapoints":[{"at":CurTime.isoformat(),"value":val}]}]}
 jdata = json.dumps(values)         #Format and encode data in JSON
 # Print json content
 print jdata
 request = urllib2.Request(url, jdata)
 request.add_header('api-key', APIKEY)
 request.get_method = lambda:'POST'     #Set HTTP access method
 request = urllib2.urlopen(request)return request.read()  
 
str =("a","b")while True:for i in str: 
		f =open('1.txt')
		e = f.read()if e =="1\n":
			ser.write("c")if e =="0\n":
			ser.write("d")
 
		f.close()  
		resp =http_put(i)
 		time.sleep(2)

Poll 1.txt

1 Light up

0 Then close

Supplementary knowledge: python notes (polling, long polling)

One, polling

views.py

from flask import Flask,render_template,request,jsonify

app =Flask(__name__)

USERS ={'1':{'name':'Babe','count':1},'2':{'name':'Small northeast','count':0},'3':{'name':'He Weiming','count':0},}

@ app.route('/user/list')
def user_list():import time
 returnrender_template('user_list.html',users=USERS)

@ app.route('/vote',methods=['POST'])
def vote():
 uid = request.form.get('uid')
 USERS[uid]['count']+=1return"Vote successful"

@ app.route('/get/vote',methods=['GET'])
def get_vote():returnjsonify(USERS)if __name__ =='__main__':
 app.run(threaded=True)

html

<! DOCTYPE html 
< html lang="zh-CN"<head 
 < meta charset="UTF-8"<title Title</title 
 < meta name="viewport" content="width=device-width, initial-scale=1"<style 
 li{
  cursor: pointer;}</style 
< /head 
< body 
 < ul id="userList"{%for key,val in users.items()%}<li uid="{{key}}"{{val.name}}({{val.count}})</li 
 { % endfor %}</ul 

 < script src="https://cdn.bootcss.com/jquery/3.3.0/jquery.min.js"</script 
 < script 

 $(function(){$('#userList').on('dblclick','li',function(){var uid =$(this).attr('uid');
  $.ajax({
   url:'/vote',
   type:'POST',
   data:{uid:uid},
   success:function(arg){
   console.log(arg);}})});});/*
 Get voting information
  * /functionget_vote(){
  $.ajax({
  url:'/get/vote',
  type:"GET",
  dataType:'JSON',
  success:function(arg){$('#userList').empty();
   $.each(arg,function(k,v){var li = document.createElement('li');
   li.setAttribute('uid',k);
   li.innerText = v.name +"("+ v.count +')';$('#userList').append(li);})}})}setInterval(get_vote,3000);</script 
< /body 
< /html 

2. Long polling

views.py

from flask import Flask,render_template,request,jsonify,session
import uuid
import queue

app =Flask(__name__)
app.secret_key ='asdfasdfasd'

USERS ={'1':{'name':'Babe','count':1},'2':{'name':'Small northeast','count':0},'3':{'name':'He Weiming','count':0},}

QUEQUE_DICT ={}

@ app.route('/user/list')
def user_list():
 user_uuid =str(uuid.uuid4())
 QUEQUE_DICT[user_uuid]= queue.Queue()

 session['current_user_uuid']= user_uuid
 returnrender_template('user_list.html',users=USERS)

@ app.route('/vote',methods=['POST'])
def vote():
 uid = request.form.get('uid')
 USERS[uid]['count']+=1for q in QUEQUE_DICT.values():
 q.put(USERS)return"Vote successful"

@ app.route('/get/vote',methods=['GET'])
def get_vote():
 user_uuid = session['current_user_uuid']
 q = QUEQUE_DICT[user_uuid]

 ret ={'status':True,'data':None}try:
 users = q.get(timeout=5)
 ret['data']= users
 except queue.Empty:
 ret['status']= False

 returnjsonify(ret)if __name__ =='__main__':
 app.run(threaded=True)

html

<! DOCTYPE html 
< html lang="zh-CN"<head 
 < meta charset="UTF-8"<title Title</title 
 < meta name="viewport" content="width=device-width, initial-scale=1"<style 
 li{
  cursor: pointer;}</style 
< /head 
< body 
 < ul id="userList"{%for key,val in users.items()%}<li uid="{{key}}"{{val.name}}({{val.count}})</li 
 { % endfor %}</ul 

 < script src="https://cdn.bootcss.com/jquery/3.3.0/jquery.min.js"</script 
 < script 

 $(function(){$('#userList').on('click','li',function(){var uid =$(this).attr('uid');
  $.ajax({
   url:'/vote',
   type:'POST',
   data:{uid:uid},
   success:function(arg){
   console.log(arg);}})});get_vote();});/*
 Get voting information
  * /functionget_vote(){
  $.ajax({
  url:'/get/vote',
  type:"GET",
  dataType:'JSON',
  success:function(arg){if(arg.status){$('#userList').empty();
    $.each(arg.data,function(k,v){var li = document.createElement('li');
    li.setAttribute('uid',k);
    li.innerText = v.name +"("+ v.count +')';$('#userList').append(li);})}get_vote();}})}</script 
< /body 
< /html 

The above example of python polling mechanism control led is all the content shared by the editor, I hope to give you a reference.

Recommended Posts

Python polling mechanism to control led instances
01. Introduction to Python
Introduction to Python
Centos 6.4 python 2.6 upgrade to 2.7
Centos 6.4 python 2.6 upgrade to 2.7
Python garbage collection mechanism