Akıllı Evler İçin Mobil Uygulama Arayüzü Geliştirme Çalışması 

Akıllı Evler İçin Mobil Uygulama Arayüzü Geliştirme Çalışması 

Flutter ile bir örnek çalışma yapmak istedik.

Bu çalışma bir Akıllı Ev veya İşyeri sisteminin mobil yönetim paneli çalışması

Bir akıllı ev sistemi farklı iletişim protokolleri kullanılarak tasarlanabilir. Sitemizde daha önce bluetooth ve wifi iletişim ile ilgili uygulamalar yaptık.  Aşağıdaki linklerden o çalışmalar incelenebilir. 

LinkControlling 8 LEDs with Android phone 

Mobil Arayüzü tasarımımız 9 adet widget'tan oluşuyor.  Bu kodlara, daha önce yapmış olduğumuz bluetooth veya wifi bağlantı kodları da eklenebilir. 

Flutter-Dart kodları aşağıda: 

import 'package:flutter/material.dart';
import 'dart:math';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Smart Home Management V1.1'),
        ),
        body: SmartHomeUI(),
      ),
    );
  }
}
class SmartHomeUI extends StatefulWidget {
  @override
  _SmartHomeUIState createState() => _SmartHomeUIState();
}
class _SmartHomeUIState extends State<SmartHomeUI> {
  bool lamp1Status = false;
  bool lamp2Status = false;
  bool lamp3Status = false;
  bool lamp4Status = false;
  double lamp1Brightness = 0.0;
  double lamp2Brightness = 0.0;
  double lamp3Brightness = 0.0;
  double lamp4Brightness = 0.0;
  double tempValue = Random().nextInt(70).toDouble();
  double humdValue = Random().nextInt(70).toDouble();
  double windValue = Random().nextInt(70).toDouble();
  @override
  Widget build(BuildContext context) {
    return SingleChildScrollView(
      child: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.start,
          children: <Widget>[
            buildSwitchTile("lamp1", lamp1Status),
            buildSwitchTile("lamp2", lamp2Status),
            buildSwitchTile("lamp3", lamp3Status),
            buildSwitchTile("lamp4", lamp4Status),
            buildSlider("lamp1", lamp1Brightness),
            buildSlider("lamp2", lamp2Brightness),
            buildSlider("lamp3", lamp3Brightness),
            buildSlider("lamp4", lamp4Brightness),
            SizedBox(height: 20), // Araya boşluk ekleyin
            buildSensorWidget("Temp", tempValue),
            buildSensorWidget("Humd", humdValue),
            buildSensorWidget("Wind", windValue),
          ],
        ),
      ),
    );
  }
  Widget buildSwitchTile(String name, bool status) {
    IconData iconData = status ? Icons.brightness_1 : Icons.brightness_1_outlined;
    Color iconColor = status ? Colors.blue : Colors.grey;
    return ListTile(
      leading: Icon(
        iconData,
        color: iconColor,
        size: 24.0,
      ),
      title: Text(name),
      trailing: Switch(
        value: status,
        onChanged: (value) {
          setState(() {
            if (name == "lamp1") {
              lamp1Status = value;
            } else if (name == "lamp2") {
              lamp2Status = value;
            } else if (name == "lamp3") {
              lamp3Status = value;
            } else if (name == "lamp4") {
              lamp4Status = value;
            }
          });
        },
        activeTrackColor: Colors.blue,
        activeColor: Colors.blue,
        inactiveThumbColor: Colors.grey,
        inactiveTrackColor: Colors.grey,
      ),
    );
  }
  Widget buildSlider(String name, double brightness) {
    return ListTile(
      title: Text("$name Brightness"),
      subtitle: Slider(
        value: brightness,
        min: 0,
        max: 100,
        onChanged: (value) {
          setState(() {
            if (name == "lamp1") {
              lamp1Brightness = value;
            } else if (name == "lamp2") {
              lamp2Brightness = value;
            } else if (name == "lamp3") {
              lamp3Brightness = value;
            } else if (name == "lamp4") {
              lamp4Brightness = value;
            }
          });
        },
      ),
    );
  }
  Widget buildSensorWidget(String name, double value) {
    return ListTile(
      title: Text("$name: $value"), // Rasgele değeri gösterir
      subtitle: LinearProgressIndicator(
        value: value / 45.0, // 0 ile 45 arasındaki değeri normalleştirin
        valueColor: AlwaysStoppedAnimation<Color>(Colors.orangeAccent),
        backgroundColor: Colors.grey,
      ),
    );
  }
}