📌  相关文章
📜  使用Android App的IoT Project Google Firebase控制LED

📅  最后修改于: 2021-01-04 01:06:01             🧑  作者: Mango

物联网项目Google Firebase使用Android App控制LED

在本节中,我们将使用Firebase数据库和Android应用程序控制与NodeMCU连接的LED。在上一节中,与该项目的NodeMCU ESP8266连接的Google Firebase控制LED,我们通过手动编辑Firebase数据中LED的状态来控制LED。每次都无法更改LED状态,这既耗时又不合逻辑。

为了解决上述问题,我们构建了一个与Firebase数据库交互并更新LED状态的Android应用,该状态可打开/关闭LED。

项目的工作原理(Android应用,Google Firebase和Node MCU)

在这个项目中,有三个主要组件,分别是Android应用程序,Firebase数据库和Wi-Fi Node MCU。

Android应用会将串行数据1或0发送到Firebase数据库。 Firebase数据库与Wi-Fi NodeMCU进行交互,并且该NodeMCU根据从Firebase数据库接收的数据进行操作。如果NodeMCU接收到串行数据1,则LED点亮;如果NodeMCU接收到串行输入0,则LED熄灭。

现在,编写一个Android代码以与Google Firebase数据库进行交互并更新LED状态:

打开Android Studio并创建一个Empty项目。

首先,我们需要将Android应用程序与Firebase项目连接。为此,请点击工具> Firebase>

单击实时数据库>保存并检索数据。

单击选项“ 1将您的应用程序连接到Firebase ”,然后选择通过Firebase创建的项目。


选择项目后,单击“连接到Firebase ”,然后将“实时数据库添加到您的应用程序

activity_main.xml

在布局文件中,我们使用两个按钮发送串行数据以更改LED状态1(开)和0(关)





    

MainActivity.java

在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。

输出: