通过Espruino将传感器数据写入数据库

espruino部分

  1. 首先连接wifi
function onInit() {
    //连接wifi
   pinMode(D27, 'input_pullup');
   pinMode(D14, 'input_pullup');
   pinMode(D39, "analog");
   var ssid = 'wifi账号';
var password = 'wifi密码';

var wifi = require('Wifi');
wifi.connect(ssid, {password: password}, function() {
    console.log('Connected to Wifi.  IP address is:', wifi.getIP().ip);
    wifi.save(); // 测试网络是否可用,如可用则输出IP
});
  1. 请求传感器数据并将数据封装成json格式
setWatch(function(e) {
  console.log("Button pressed 27");
  //请求数据
  //gm
 var data = " ";
var sensor={wendu:23,         //封装成json格式
        deviceid:"h7hs7h",
        sidu:78,
        gm:154
           };

var gm=analogRead(D39)*100;
  gm= Math.round(gm);
  sensor.gm=gm;                            //保存实际光敏传感器值
var json1=JSON.stringify(sensor);
console.log(sensor);
var json1=JSON.stringify(sensor);
  1. 将获取到的数据上传至网站
var request = require("http").request(
    {host:"服务器IP", method:"POST",port: 8080,path:"/工程名/servlet的名字", headers:{
        "Content-Type":"application/json;charset=UTF-8",
        "content-length": json1.length,
        "connection":"close"
    }},
    response=>{
        var content = "";
        response.on("data", data=>{
            content += data;
        });
        response.on("close", ()=>{
            console.log(content);
        });
        response.on("error", err=>{
            console.log("error", err);
        });
    });
request.write(json1);
request.end();
    //button end
}, D27, { repeat: true, edge: 'falling', debounce: 50 });
//
setWatch(function(e) {
  console.log("Button pressed 14");
  //请求数据
 
  
    //button end
}, D14, { repeat: true, edge: 'falling', debounce: 50 });

}

save();

JAVA部分

  1. action层中的servlet
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		
		StringBuffer jb=new StringBuffer();
		String line=null;
		String result="";
		
		//获取请求内容
		
		try {
			BufferedReader reader=request.getReader();      
			 while((line=reader.readLine())!=null){
				 jb.append(line);
			 }
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		String str=jb.toString();
		System.out.println("strL"+str);
		
		//将json字符串中的数据写入我们写的sonsor对象
		
		try {
			sensor=gson.fromJson(str, Sensor.class);
			System.out.println("sensor:"+sensor);
		} catch (JsonSyntaxException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
		sensor.setDate(new Date());//获取当前时间并写入sensor对象中
		int insertSensor = service.InsertSensor(sensor);//调用service层中的插入数据库方法
		if (insertSensor>=1) {
			System.out.println("win");
		}else {
			System.out.println("lose");
		}
		response.getWriter().append("OK");
	}

在servlet中的代码中主要分为三个部分

(1) 获取传入的json数据
(2)将获取到的json数据写入我们bean层中的sensor类
(3)调用dao层方法写入数据库

  1. bean层中的sensor
    bean
    并创建get和set方法

  2. service层

public class SensorService {
	SensorDao sensorDao;
	public SensorService() {
		// TODO Auto-generated constructor stub
		sensorDao=new SensorDao();
	}
	public int InsertSensor(Sensor sensor) {    //插入数据库方法
		return sensorDao.InsertSensor(sensor);
	}
	public List<Sensor> SelectSensor(){      //显示数据方法
		return sensorDao.SelectSensor();
	}
}
  1. dao层
public class SensorDao {
	Connection conn = null;
    PreparedStatement ps = null;
    ResultSet rs = null;
    
	public int InsertSensor(Sensor sensor){
		int i=0;
		String sql="insert into sensor values(null,?,?,?,?,?)";
       try {
       	conn = DBUtils.getConnection();
			ps = conn.prepareStatement(sql);
			ps.setString(1, sensor.getDeviceid());
			ps.setInt(2, sensor.getWd());
			ps.setInt(3, sensor.getSd());
			ps.setInt(4, sensor.getGm());
			SimpleDateFormat sFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
			String currentTime = sFormat.format(sensor.getDate());
			//格式化sensor对象中的时间后方可写入数据库
			ps.setString(5, currentTime);
			i=ps.executeUpdate();
		} catch (SQLException e) {
			e.printStackTrace();
		}finally{
			 DBUtils.close(rs, ps, conn);
		}
       return i;
	}
}

要导的包
gson-2.8.4.jar
mysql-connector-java-5.1.18-bin.jar

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将数据写入数据库,您需要使用适当的编程语言和数据库连接库。以下是一个Python示例,它使用MySQL作为数据库,通过点击按钮将数据写入数据库。 1. 首先,安装MySQL连接库: ``` pip install mysql-connector-python ``` 2. 在Python代码中导入库并创建数据库连接: ```python import mysql.connector mydb = mysql.connector.connect( host="localhost", user="yourusername", password="yourpassword", database="yourdatabase" ) ``` 3. 创建一个函数,该函数将在按钮点击事件中被调用,并将数据插入数据库: ```python def insert_data(): mycursor = mydb.cursor() # 获取数据 data = get_data() # 插入数据 sql = "INSERT INTO mytable (column1, column2, column3) VALUES (%s, %s, %s)" val = (data[0], data[1], data[2]) mycursor.execute(sql, val) # 提交更改 mydb.commit() print(mycursor.rowcount, "record inserted.") ``` 4. 在按钮的点击事件中调用该函数: ```python button = tkinter.Button(window, text="Insert Data", command=insert_data) button.pack() ``` 在这个示例中,`get_data()`函数从表单或其他输入中获取数据,并将该数据作为元组返回给`insert_data()`函数。然后,`insert_data()`将数据插入名为`mytable`的表中的`column1`、`column2`和`column3`列中。最后,它提交更改并打印插入的记录数。 请注意,这只是一个示例,并且您需要根据您的具体情况进行调整。例如,您需要根据实际情况更改数据库连接详细信息、表名和列名。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值