Files
Haussteuerung-Android/app/src/main/java/com/haussteuerung/activityDoris.java

138 lines
5.6 KiB
Java

package com.haussteuerung;
import android.app.TimePickerDialog;
import android.os.Bundle;
import android.util.Log;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.RadioButton;
import android.widget.TextView;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.content.res.AppCompatResources;
import androidx.lifecycle.ProcessLifecycleOwner;
import com.google.gson.Gson;
import com.haussteuerung.helper.Temperatur;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.Locale;
public class activityDoris extends AppCompatActivity {
Button buttonSend, buttonTablette, buttonSendEssen, zeitFiebertemp;
int hourFiebertemp = 0, minuteFiebertemp = 0;
TextView textFiebertemp;
LocalDateTime datetime = LocalDateTime.now();
DateTimeFormatter dateTimeFormat = DateTimeFormatter.ofPattern("yyyy-MM-dd");
Gson gson = new Gson();
String msg;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ProcessLifecycleOwner.get().getLifecycle().addObserver(new AppLifecycleTracker());
androidx.appcompat.app.ActionBar actionBar = getSupportActionBar();
assert actionBar != null;
actionBar.setBackgroundDrawable(AppCompatResources.getDrawable(getApplicationContext(), R.color.black));
setContentView(R.layout.activity_doris);
setTitle("Haussteuerung - Doris");
buttonSend = findViewById(R.id.buttonSend);
// Tablette + Essen -------------------------------
buttonTablette = findViewById(R.id.buttonTablette);
buttonSendEssen = findViewById(R.id.buttonSendEssen);
RadioButton doris_fruehstueck = findViewById(R.id.doris_fruehstueck);
RadioButton doris_mittagessen = findViewById(R.id.doris_mittagessen);
RadioButton doris_abendessen = findViewById(R.id.doris_abendessen);
buttonTablette.setOnClickListener(view -> {
MqttClient.publish("cmnd/Haussteuerung/Doris/Tabletten", "Tablette");
});
buttonSendEssen.setOnClickListener(view -> {
if (doris_fruehstueck.isChecked()) {
MqttClient.publish("cmnd/Haussteuerung/Doris/Tabletten", "Frühstück");
} else if (doris_mittagessen.isChecked()) {
MqttClient.publish("cmnd/Haussteuerung/Doris/Tabletten", "Mittagessen");
} else if (doris_abendessen.isChecked()) {
MqttClient.publish("cmnd/Haussteuerung/Doris/Tabletten", "Abendessen");
} else {
Toast.makeText(activityDoris.this, "Bitte eine Mahlzeit auswählen.", Toast.LENGTH_LONG).show();
}
});
// Fiebertemperatur --------------------------------
zeitFiebertemp = findViewById(R.id.zeitFiebertemp);
CheckBox checkFiebertemp = findViewById(R.id.checkFiebertemp);
TextView tvFiebertemp = findViewById(R.id.tvFiebertemp);
textFiebertemp = findViewById(R.id.textFiebertemp);
hourFiebertemp = datetime.getHour();
minuteFiebertemp = datetime.getMinute();
zeitFiebertemp.setText(String.format(Locale.getDefault(), "%02d:%02d", datetime.getHour(), datetime.getMinute()));
zeitFiebertemp.setOnClickListener(v -> timePickerDialog(zeitFiebertemp));
checkFiebertemp.setOnClickListener(view -> {
if (checkFiebertemp.isChecked()) {
zeitFiebertemp.setEnabled(true);
tvFiebertemp.setEnabled(true);
textFiebertemp.setEnabled(true);
} else {
zeitFiebertemp.setEnabled(false);
tvFiebertemp.setEnabled(false);
textFiebertemp.setEnabled(false);
}
});
// Send-Button -------------------------------------
buttonSend.setOnClickListener(view -> {
boolean setFiebertemp = false;
if (checkFiebertemp.isChecked() && (textFiebertemp.getText().length() == 0)) {
Toast.makeText(activityDoris.this, "Bitte einen Temperaturwert eingeben!", Toast.LENGTH_LONG).show();
} else if (checkFiebertemp.isChecked() && (textFiebertemp.getText().length() > 0)) {
String formattedDate = datetime.format(dateTimeFormat);
String hour = Integer.toString(hourFiebertemp);
String minute = Integer.toString(minuteFiebertemp);
String fiebertemp = textFiebertemp.getText().toString();
msg = gson.toJson(new Temperatur(MainActivity.ID, formattedDate + " " + hour + ":" + minute + ":00", fiebertemp));
MqttClient.publish("cmnd/Haussteuerung/Doris/Temperatur", msg);
Log.d("Doris", msg);
setFiebertemp = true;
}
if (setFiebertemp) {
finish();
}
});
}
public void timePickerDialog(Button button) {
LocalTime localTime = LocalTime.parse(button.getText());
int hour = localTime.getHour();
int minute = localTime.getMinute();
TimePickerDialog.OnTimeSetListener onTimeSetListener = (timePicker, selectedHour, selectedMinute) -> button.setText(String.format(Locale.getDefault(), "%02d:%02d", selectedHour, selectedMinute));
TimePickerDialog timePickerDialog = new TimePickerDialog(this, onTimeSetListener, hour, minute, true);
timePickerDialog.show();
}
@Override
protected void onPause() {
super.onPause();
}
@Override
protected void onResume() {
super.onResume();
}
@Override
protected void onStop() {
super.onStop();
}
}