Home » ARDUINO, FEATURED » Funk-Thermostat der Heizung online steuern

Funk-Thermostat der Heizung online steuern

Um seine Heizung über das Internet aus- und einzuschalten, gibt es mittlerweile einige fertige Lösungen. Leider sind die alle nicht ganz billig. Beim wohl bekanntesten Anbieter RWE kostet allein der Heizkörperthermostat knapp 60€. Die einfachen Funk-Thermostate sind da deutlich günstiger. Voelkner hatte letztens ein Angebot, bei dem man zwei Funk-Thermostate und die dazugehörige Fernbedienung für knapp 50€ bekam. Aktuell kosten die Teile zusammen 60€, mit einem der vielen Gutscheine sollte man aber trotzdem wieder auf 50€ kommen.

Die Montage der Thermostate ist einfach: Alten Thermostat abschrauben, neuen draufschrauben, Datum einstellen, fertig. Die Fernbedienung muss anschließend noch mit den Thermostaten per Knopfdruck verbunden werden. Nun kann man schon bequem vom Sofa aus die Temperatur einstellen, allerdings nur per Fernbedienung und nicht online.

Um das zu ermöglichen habe ich die 868 MHz-Fernbedienung aufgemacht und erst einmal durchgemessen. Die Spannung ist 3,3 Volt. Legt man einen der vier Knöpfe (Temperatur auf 21°, Temperatur auf 17°, Temperatur um 0,5° erhöhen, Temperatur um 0,5° verringern) auf Ground, werden sie ausgelöst. Leider ist die Antenne verdeckt, weshalb man also die Knöpfe selbst „auslösen“ muss.

Da kommt dann wieder der Arduino ins Spiel. Die Output-Spannung des Arduinos beträgt 5 Volt. Da die Fernbedienung nicht mit 5 Volt läuft, kommen hier die Optokoppler zum Einsatz. Ich habe dafür zwei ILD74 verwendet.
Die vier Ausgänge des Arduino-Ethernets lassen sich dann direkt über einen HTTP-Aufruf ansteuern. Hier der entsprechende Arduino-Sketch:

 #include <SPI.h>
 #include <Ethernet.h>
 #include <MsTimer2.h>
 #include <SPI.h>
 #include <Ethernet.h>
 #include <MsTimer2.h>
 byte mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0x5C, 0x5C };
 byte ip[] = { 192,168,178,2 }; // IP vom Arduino im Netzwerk
 byte gateway[] = { 192, 168, 178, 1 };
 byte subnet[] = { 255, 255, 255, 0 };
 EthernetServer server(80);
 String readString = String(100);
 const int minus = 7; // Ausgänge zur Fernbedienung
 const int plus = 6;
 const int day = 8;
 const int night = 9;
 //Serial connection must be started to debug
 int start_bit = 2000; /// Code von http://jleopold.de/2010/08/10/arduino-als-webserver/     
 sendValue(night);
 }
 readString="";
 client.stop();
 }
 }
 }
 }
 }
 void sendValue(int value){
 if(lastTime = 9800){
 Serial.print(millis());
 Serial.print(" - ");
 Serial.print(lastTime);
 Serial.print(" = ");
 Serial.println(millis() - lastTime);
 Serial.println("Wake up");
 digitalWrite(value,HIGH); // Fernbedienung anschalten (geht nach 10 Sekunden wieder aus)
 delay(200);
 digitalWrite(value,LOW);
 delay(200);
 }
 Serial.println("Sending");
 digitalWrite(value,HIGH);
 delay(200);
 digitalWrite(value,LOW);
 lastTime = millis();
 }



Der Aufruf der HTML- bzw. PHP-Datei sieht so aus:

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de"> 
  <head>
    <meta name="viewport" content="width=device-width, 
     initial-scale=1.0, maximum-scale=1.0, user-scalable=1" />
    <meta name="handheldfriendly" content="true" />
<script type="text/javascript">
$(document).ready(function() {
    $.ajax({
                url: "doquery.php",    
                type: "GET"
            });
    $('#day').click(function () {
        $.ajax({
            url: "doquery2.php",    
            type: "GET",
            data: "status=day"
        });
        return false;
  });  
  $('#night').click(function () {
        $.ajax({
            url: "doquery2.php",    
            type: "GET",
            data: "status=night"
        });
        return false;
  });  
  $('#plus').click(function () {
        $.ajax({
            url: "doquery2.php",    
            type: "GET",
            data: "status=plus"
        });
        return false;
  });  
  $('#minus').click(function () {
        $.ajax({
            url: "doquery2.php",    
            type: "GET",
            data: "status=minus"
        });
        return false;
  });
});
</script>
  </head>
  <body>
  <table cellspacing="0" cellpadding="6" width="100%">
   <tr><td align="center">    
    <form method="get" action="doquery2.php" onsubmit="return false;">
    <input type="submit" id="day" value="21°" style="width: 120px;font-size: 22px;"/>
    </form>
    </td><td align="center">
    <form method="get" action="doquery2.php" onsubmit="return false;">
    <input type="submit" id="night" value="17 °" style="width: 120px;font-size: 22px;"/>
    </form>
  </td></tr>   <tr><td align="center">    
    <form method="get" action="doquery2.php" onsubmit="return false;">
    <input type="submit" id="plus" value="+ °" style="width: 120px;font-size: 22px;"/>
    </form>
    </td><td align="center">
    <form method="get" action="doquery2.php" onsubmit="return false;">
    <input type="submit" id="minus" value="- °" style="width: 120px;font-size: 22px;"/>
    </form>
  </td></tr>
</table>
  </body>
  </html>



Die doquery.php könnte dann so aussehen:

 <?php
 $status= $_GET['status'];
 $query = 'http://192.168.178.2:80/?'.$status; //IP vom Arduino im Netzwerk
 file_get_contents($query);
 echo $query;
 ?>

Rechnet man den nötigen PHP-Server nicht mit, kann man also für ca. 100€ (50€ für die Thermostate und ca. 50€ für den Arduino Ethernet) seine Heizung über das Internet steuern.

Tags: , , , , ,

4 Kommentare

  1. […] Das Thema DIY-Heimautomatisierung finde ich recht spannend. Die professionellen Produkte dazu sind meist sehr teuer, sodass sich selbstgebaute Lösungen häufig lohnen (dazu passt auch meine Online-Heizungssteuerung). […]

  2. Torsten sagt:

    Super Beschreibung! Der Arduino Sketch hat eine komische Lücke, aber sonst tiptop. Habe es an einem Abend nachgebaut inkl. Webserver auf dem Arduino und einer iPhone App. Leider ist der Sender von Völkner ein bisschen schwach auf der Brust. Habe das Ding im Holzschrank vom Wohnzimmer. Habe 2 Heizkörper. Eine Heizung ist ca 2,5m entfernt -> geht. Das andere Thermostat ist ca 3,5m weit weg. Hier passiert nur was wenn ich die Schranktür auflasse 🙁

  3. Daniel sagt:

    Hallo,
    ein richtig schönes Projekt! 🙂
    Kannst/Könntest du deine Heizung damit auch online steuern, wenn du nicht zuhause bist?

  4. Michael sagt:

    Hallo Jan,
    cooles Projekt das du vorgestellt hast. Weißt du vielleicht wie es möglich wäre statt die alte Fernbedinung auszuschlachten ein 868 Mhz Funkmodul mit Arduino zu verwenden. Ich frage mich wie man das Datenpaket der Fernbedinung für die einzelnen Befehle kopieren kann… Kann man das mit einer Antenne und einer seriellen Verbindung zum PC auslesen und dann kopieren? Würde mich über einen Tipp freuen,
    Michael

Hinterlasse einen Kommentar

Designed by Theme Junkie · Powered by WordPress
Lesen Sie den vorherigen Eintrag:
Space Invaders Uhr zum Gmail-Alarm umgebaut

Aus einer für ca. 4€ erstandenen Space Invaders Uhr hat Grant einen Arduino-basierten Gmail-Alarm gemacht. Das Setup ist denkbar einfach...

Schließen