我正在为IoT设备制作一个应用程序,我的应用程序已连接到显示超声波传感器值的firebase数据库。当传感器的当前值大于用户在应用程序中设置的值时,我可以选择将IoT设备上的引脚设为高电平和低电平。 我正在使用仅具有两个值“ HIGH”和“ LOW”的微调器。 1.当“选定值”>“当前值”时,我希望在数据库中更新微调器的值。 2.当“当前值”>“选定的值”时,我希望未选定的值应在数据库中得到更新。 情况1正常,但情况2无效。
在代码中,模拟值表示传感器的当前值,而值表示所选值。
// Read from the database
myRef = FirebaseDatabase.getInstance().getReference();
myRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull Datasnapshot datasnapshot) {
// This method is called once with the initial value and again
// whenever data at this location is updated.
if(StringValue.length()>0 && link2.length()>0) {
try{
status = datasnapshot.child("Distance").getvalue().toString();}
catch (NullPointerException ignored){}
if(status==null){
TextView text4 = layout.findViewById(R.id.text4);
text4.setText(" Error: Wrong ID. ");
// Toast...
Toast toast = new Toast(getapplicationContext());
toast.setGravity(Gravity.CENTER_VERTICAL,540);
toast.setDuration(Toast.LENGTH_LONG);
toast.setView(layout);
toast.show();
}
else{ analogvalue = Integer.parseInt(status);}
pin.setText(status);
final int value = Integer.parseInt(StringValue);
if (analogvalue > value) {
Firebase fireChild = fire2.child( "Pin1");
fireChild.setvalue(spinner1.getSelectedItem().toString());
Firebase fireChild1 = fire2.child( "Pin2");
fireChild1.setvalue(spinner2.getSelectedItem().toString());
}
if(analogvalue <= value) {
if(spinner1.getSelectedItem().toString().equals("HIGH")){Firebase fireChild = fire2.child("Pin1"); fireChild.setvalue("LOW");}
else {Firebase fireChild = fire2.child("Pin1"); fireChild.setvalue("HIGH");}
if(spinner2.getSelectedItem().toString().equals("HIGH")){Firebase fireChild = fire2.child("Pin2"); fireChild.setvalue("LOW");}
else {Firebase fireChild = fire2.child( "Pin2"); fireChild.setvalue("HIGH");}
}
}
}
[