Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 8

package com.example.

android_garden;

import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.View;
import android.view.Menu;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;

import com.google.android.material.navigation.NavigationView;

import androidx.annotation.NonNull;
import androidx.navigation.NavController;
import androidx.navigation.Navigation;
import androidx.navigation.ui.AppBarConfiguration;
import androidx.navigation.ui.NavigationUI;
import androidx.drawerlayout.widget.DrawerLayout;
import androidx.appcompat.app.AppCompatActivity;

import com.example.android_garden.databinding.ActivityMain3Binding;
//////////////////////////////////////////////
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.ValueEventListener;

import android.util.Log;
import android.widget.Toast;

import android.app.AlertDialog;
import android.content.DialogInterface;

import com.github.mikephil.charting.charts.LineChart;

import java.util.Timer;

public class MainActivity3 extends AppCompatActivity {


private LineChart chart;
private Timer timer;
private AppBarConfiguration mAppBarConfiguration;
private ActivityMain3Binding binding;
private DatabaseReference DataSensor, DataActuator, Datamode;
private TextView readdoam, readdoamdat, readnhietdo;
private ImageView readquat, readbom, readden, mode;
private EditText timetuoicay, timebatquat, timebatden;
private Button setup, bt_pumpon, bt_lighton, bt_fanon, bt_pumpoff,
bt_lightoff, bt_fanoff;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = ActivityMain3Binding.inflate(getLayoutInflater());
setContentView(binding.getRoot());

setSupportActionBar(binding.appBarMain.toolbar);
DrawerLayout drawer = binding.drawerLayout;
NavigationView navigationView = binding.navView;
mAppBarConfiguration = new AppBarConfiguration.Builder(
R.id.nav_home, R.id.nav_manage, R.id.nav_graph)
.setOpenableLayout(drawer)
.build();
NavController navController = Navigation.findNavController(this,
R.id.nav_host_fragment_content_main);
NavigationUI.setupActionBarWithNavController(this, navController,
mAppBarConfiguration);
NavigationUI.setupWithNavController(navigationView, navController);
auto_or_manual();
readdata();
writedata();
}

private void writedata() {


//////////////////Auto_mode
timetuoicay = (EditText) findViewById(R.id.settime1);
timebatden = (EditText) findViewById(R.id.settime2);
timebatquat = (EditText) findViewById(R.id.settime3);
setup = (Button) findViewById(R.id.buttonsetup);
setup.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String timeValue1 = timetuoicay.getText().toString();
String timeValue2 = timebatden.getText().toString();
String timeValue3 = timebatquat.getText().toString();
if (timeValue1.isEmpty() || timeValue2.isEmpty() ||
timeValue3.isEmpty()) {
Toast.makeText(getApplicationContext(), "Vui lòng nhập
đầy đủ thông tin", Toast.LENGTH_SHORT).show();
} else {
FirebaseDatabase database =
FirebaseDatabase.getInstance();
DatabaseReference myRef1 =
database.getReference("time_pum/time_pum1");
DatabaseReference myRef2 =
database.getReference("time_den/time_den");
DatabaseReference myRef3 =
database.getReference("time_fan/time_fan");

myRef1.setValue(timeValue1);
myRef2.setValue(timeValue2);
myRef3.setValue(timeValue3);
}
}
});
bt_fanon = (Button) findViewById(R.id.bt_fanon);
bt_lighton = (Button) findViewById(R.id.bt_lighton);
bt_pumpon = (Button) findViewById(R.id.bt_pumpon);
bt_fanoff = (Button) findViewById(R.id.bt_fanoff);
bt_lightoff = (Button) findViewById(R.id.bt_lightoff);
bt_pumpoff = (Button) findViewById(R.id.bt_pumpoff);

bt_fanon.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DatabaseReference feedback =
FirebaseDatabase.getInstance().getReference("button_denled");
feedback.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot
snapshot) {
String value = snapshot.getValue(String.class);
if (value != null && value.equals("1")) {
FirebaseDatabase database =
FirebaseDatabase.getInstance();
DatabaseReference myRef =
database.getReference("button_quat");
myRef.setValue("1");
} else {
Toast.makeText(getApplicationContext(), "ĐANG Ở
CHẾ ĐỘ TỰ ĐỘNG KHÔNG DÙNG ĐƯỢC CHỨC NĂNG NÀY", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
Log.w(MainActivity3.class.getSimpleName(), "Failed
to read value.", error.toException());
}
});
}
});
bt_fanoff.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DatabaseReference feedback =
FirebaseDatabase.getInstance().getReference("button_denled");
feedback.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot
snapshot) {
String value = snapshot.getValue(String.class);
if (value != null && value.equals("1")) {
FirebaseDatabase database =
FirebaseDatabase.getInstance();
DatabaseReference myRef =
database.getReference("button_quat");
myRef.setValue("11");
} else {
Toast.makeText(getApplicationContext(), "ĐANG Ở
CHẾ ĐỘ TỰ ĐỘNG KHÔNG DÙNG ĐƯỢC CHỨC NĂNG NÀY", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
Log.w(MainActivity3.class.getSimpleName(), "Failed
to read value.", error.toException());
}
});
}
});
bt_lighton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DatabaseReference feedback =
FirebaseDatabase.getInstance().getReference("button_denled");
feedback.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot
snapshot) {
String value = snapshot.getValue(String.class);
if (value != null && value.equals("1")) {
FirebaseDatabase database =
FirebaseDatabase.getInstance();
DatabaseReference myRef =
database.getReference("button_den");
myRef.setValue("3");
} else {
Toast.makeText(getApplicationContext(), "ĐANG Ở
CHẾ ĐỘ TỰ ĐỘNG KHÔNG DÙNG ĐƯỢC CHỨC NĂNG NÀY", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
Log.w(MainActivity3.class.getSimpleName(), "Failed
to read value.", error.toException());
}
});
}
});
bt_lightoff.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DatabaseReference feedback =
FirebaseDatabase.getInstance().getReference("button_denled");
feedback.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot
snapshot) {
String value = snapshot.getValue(String.class);
if (value != null && value.equals("1")) {
FirebaseDatabase database =
FirebaseDatabase.getInstance();
DatabaseReference myRef =
database.getReference("button_den");
myRef.setValue("33");
} else {
Toast.makeText(getApplicationContext(), "ĐANG Ở
CHẾ ĐỘ TỰ ĐỘNG KHÔNG DÙNG ĐƯỢC CHỨC NĂNG NÀY", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
Log.w(MainActivity3.class.getSimpleName(), "Failed
to read value.", error.toException());
}
});
}
});
bt_pumpon.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DatabaseReference feedback =
FirebaseDatabase.getInstance().getReference("button_denled");
feedback.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot
snapshot) {
String value = snapshot.getValue(String.class);
if (value != null && value.equals("1")) {
FirebaseDatabase database =
FirebaseDatabase.getInstance();
DatabaseReference myRef =
database.getReference("button_bom");
myRef.setValue("2");
} else {
Toast.makeText(getApplicationContext(), "ĐANG Ở
CHẾ ĐỘ TỰ ĐỘNG KHÔNG DÙNG ĐƯỢC CHỨC NĂNG NÀY", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
Log.w(MainActivity3.class.getSimpleName(), "Failed
to read value.", error.toException());
}
});
}
});
bt_pumpoff.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DatabaseReference feedback =
FirebaseDatabase.getInstance().getReference("button_denled");
feedback.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot
snapshot) {
String value = snapshot.getValue(String.class);
if (value != null && value.equals("1")) {
FirebaseDatabase database =
FirebaseDatabase.getInstance();
DatabaseReference myRef =
database.getReference("button_bom");
myRef.setValue("22");
} else {
Toast.makeText(getApplicationContext(), "ĐANG Ở
CHẾ ĐỘ TỰ ĐỘNG KHÔNG DÙNG ĐƯỢC CHỨC NĂNG NÀY", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
Log.w(MainActivity3.class.getSimpleName(), "Failed
to read value.", error.toException());
}
});
}
});
}

private void auto_or_manual() {


mode = (ImageView) findViewById(R.id.mode);
Datamode =
FirebaseDatabase.getInstance().getReference().child("button_denled");
Datamode.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
String trangthai = snapshot.getValue(String.class);
if (trangthai != null && trangthai.equals("0")) {
mode.setImageResource(R.drawable.on);
} else {
mode.setImageResource(R.drawable.off);
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
Log.w(MainActivity3.class.getSimpleName(), "Failed to read
value.", error.toException());
}
});
Drawable current1 = mode.getDrawable();
if
(current1.getConstantState().equals(getResources().getDrawable(R.drawable.o
n).getConstantState())) {
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef1 =
database.getReference("button_denled");
myRef1.setValue("0");
}
mode.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AlertDialog.Builder builder = new
AlertDialog.Builder(MainActivity3.this);
builder.setMessage("Bạn có muốn thay đổi trạng thái?");
builder.setPositiveButton("Yes", new
DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which)
{
dialog.dismiss();
Drawable current = mode.getDrawable();
if
(current.getConstantState().equals(getResources().getDrawable(R.drawable.on
).getConstantState())) {
mode.setImageResource(R.drawable.off);
String modevalua = "1";
FirebaseDatabase database =
FirebaseDatabase.getInstance();
DatabaseReference myRef =
database.getReference("button_denled");
myRef.setValue(modevalua);
} else {
mode.setImageResource(R.drawable.on);
String modevalua = "0";
FirebaseDatabase database =
FirebaseDatabase.getInstance();
DatabaseReference myRef =
database.getReference("button_denled");
myRef.setValue(modevalua);
}
}
});
builder.setNegativeButton("No", new
DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which)
{
dialog.dismiss();
}
});
AlertDialog dialog = builder.create();
dialog.show();
}
});
}

private void readdata() {


readdoam = (TextView) findViewById(R.id.doam);
readdoamdat = (TextView) findViewById(R.id.doamdat);
readnhietdo = (TextView) findViewById(R.id.nhietdo);
readquat = (ImageView) findViewById(R.id.quat);
readbom = (ImageView) findViewById(R.id.bom);
readden = (ImageView) findViewById(R.id.den);
DataSensor = FirebaseDatabase.getInstance().getReference();

DataSensor.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String doAm =
dataSnapshot.child("doam").getValue(String.class);
String doAmDat =
dataSnapshot.child("doamdat").getValue(String.class);
String nhietDo =
dataSnapshot.child("nhietdo").getValue(String.class);
readdoam.setText(doAm + "%");
readdoamdat.setText(doAmDat + "%");
readnhietdo.setText(nhietDo + "℃");
}

@Override
public void onCancelled(DatabaseError error) {
Log.w(MainActivity3.class.getSimpleName(), "Failed to read
value.", error.toException());
}
});
DataActuator =
FirebaseDatabase.getInstance().getReference().child("trangthai");
DataActuator.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
String lightStatus =
snapshot.child("RELAY_1").getValue(String.class);
String fanStatus =
snapshot.child("RELAY_2").getValue(String.class);
String pumpStatus =
snapshot.child("RELAY_3").getValue(String.class);
if (lightStatus != null) {
if (lightStatus.equals("lamp_on")) {
readden.setImageResource(R.drawable.lampon);
} else {
readden.setImageResource(R.drawable.lampoff);
}
}
if (fanStatus != null) {
if (fanStatus.equals("fan_on")) {
readquat.setImageResource(R.drawable.fanon);
} else {
readquat.setImageResource(R.drawable.fanoff);
}
}
if (pumpStatus != null) {
if (pumpStatus.equals("pump_on")) {
readbom.setImageResource(R.drawable.pumpon1);
} else {
readbom.setImageResource(R.drawable.pumpoff1);
}
}
}

@Override
public void onCancelled(DatabaseError error) {
// Xử lý lỗi nếu có
Log.w(MainActivity3.class.getSimpleName(), "Failed to read
value.", error.toException());
}
});
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is
present.
getMenuInflater().inflate(R.menu.main_activity3, menu);
return true;
}

@Override
public boolean onSupportNavigateUp() {
NavController navController = Navigation.findNavController(this,
R.id.nav_host_fragment_content_main);
return NavigationUI.navigateUp(navController, mAppBarConfiguration)
|| super.onSupportNavigateUp();
}

You might also like