📅  最后修改于: 2021-01-04 01:06:01             🧑  作者: Mango
在本节中,我们将使用Firebase数据库和Android应用程序控制与NodeMCU连接的LED。在上一节中,与该项目的NodeMCU ESP8266连接的Google Firebase控制LED,我们通过手动编辑Firebase数据中LED的状态来控制LED。每次都无法更改LED状态,这既耗时又不合逻辑。
为了解决上述问题,我们构建了一个与Firebase数据库交互并更新LED状态的Android应用,该状态可打开/关闭LED。
在这个项目中,有三个主要组件,分别是Android应用程序,Firebase数据库和Wi-Fi Node MCU。
Android应用会将串行数据1或0发送到Firebase数据库。 Firebase数据库与Wi-Fi NodeMCU进行交互,并且该NodeMCU根据从Firebase数据库接收的数据进行操作。如果NodeMCU接收到串行数据1,则LED点亮;如果NodeMCU接收到串行输入0,则LED熄灭。
打开Android Studio并创建一个Empty项目。
首先,我们需要将Android应用程序与Firebase项目连接。为此,请点击工具> Firebase>
单击实时数据库>保存并检索数据。
单击选项“ 1将您的应用程序连接到Firebase ”,然后选择通过Firebase创建的项目。
选择项目后,单击“连接到Firebase ”,然后将“实时数据库添加到您的应用程序”
在布局文件中,我们使用两个按钮发送串行数据以更改LED状态1(开)和0(关)
在MainActivity.java文件中,我们创建了两个按钮,一个用于“打开”,另一个用于“关闭”。单击“打开”按钮,将Firebase数据库LED_STATUS更新为“ 1”,然后单击“关闭”按钮,将Firebase数据库LED_STATUS更新为“ 0”。
在按钮单击侦听器中添加第四个选项代码“写入数据库”。
package example.javatpoint.com.controlledwithnodemcuusingandroidapp;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
public class MainActivity extends AppCompatActivity {
Button on;
Button off;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
on = findViewById(R.id.button_on);
off = findViewById(R.id.button_off);
on.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view) {
// Write a message to the database
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("LED_STATUS");//LED_STATUS is Firebase database LED_STATUS
myRef.setValue(1);
}
});
off.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view) {
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("LED_STATUS");//LED_STATUS is Firebase database LED_STATUS
myRef.setValue(0);
}
});
}
}
在AndroidManifest.xml文件中添加Internet权限
更新Firebase数据库的读取规则,将写入状态从false更改为true。
注意:将rules属性设为true可以将其设置为public,任何人都可以访问。因此,出于安全原因,请不要将其设置为true或了解有关安全规则的更多信息。
运行您的项目并控制与NodeMCU ESP8266连接的LED。
输出: