Lüfter nach Temperatur an- bzw. ausschalten.

Hallo Leute,
folgende Situation:

Ich habe einen Aeon Labs Multisensor installiert und lese damit die Temperatur aus. Über die ausgelesene Temperatur möchte ich einen Lüfter an- bzw. ausschalten je nach Temperatur. Zum schalten habe ich eine Schaltmodul von Aeon Labs im Lüfter zwischengeschalten.

Wenn die Temperatur unter 18° fällt, soll der Lüfter anlaufen, ansonsten soll der Lüfter aus sein bzw. abgeschalten werden.

Die ID für die Temperatur ist die „55720“ die ID für den Status des Schaltmoduls also an oder aus (Boolean) ist die „53704“.

Mithilfe der Befehlesreferenz unter ip-sypcon.de habe ich mir folgendes Skript geschrieben:


<?

// Holt den Temperaturwert von Sensor am Schraubenregal
$temperatur_schraubenregal = GetValueFloat(55720);

if ($temperatur_schraubenregal < 18)
{
	SetValueBoolean(53704, true);  // Heizlüfter anschalten
}
else
{
	SetValueBoolean(53704, false);  // Heizlüfter ausschalten
}

?>

Wenn ich das Skript über IP-Sypcon ausführe erscheint folgende Fehlermeldung:
Warning: Variable wurde als „Nur-Lesen“ markiert und kann nicht verändert werden in D:\IP-Symcon\scripts\27252.ips.php on line 12

Aber laut der Befehlsreferenz „Befehle in dieser Gruppe sind für den lesenden und schreibenden Zugriff auf IP-Symcon Variable“ sollte das doch funtktionieren, oder denke ich an dieser Stelle falsch bzw. zu einfach?

probier es mal mit 1 für true und 0 für false :slight_smile:

Jetzt wo ich mir dein Screenshot angeschaut habe… :slight_smile:
Tausche die ID 53704 gegen ID 17739.

Die 53704 zeigt dir nur den STATUS an… Daher der Hinweis mit nur „Lesend“…
Die ID 17739 ist dein Schalter an/aus…

Mit der ID 17739 erscheint leider dieselbe Fehlermeldung. :confused:

Habs auch mal mit 0 und 1 getestet, dann erscheint eine andere Fehlermeldung.
True und False passt. Nur das mit der nur lesenden Variable macht mir das Leben schwer…

Das gelesen ?
http://www.ip-symcon.de/service/dokumentation/konzepte/variablen/

Du musst zum Schalten den richtigen Befehl auf die Instanz ausführen. (Hier ja vermutlich Z-Wave, kann auf dem Screenshot leider nix erkennen)
http://www.ip-symcon.de/service/dokumentation/modulreferenz/z-wave/zw-switchmode/
Michael

Stimmt das könnte natürlich auch noch dazukommen…

Anstatt SET
ZW_SwitchMode(12345, true); //Gerät einschalten

 <?

// Holt den Temperaturwert von Sensor am Schraubenregal
$temperatur_schraubenregal = GetValueFloat(55720);

if ($temperatur_schraubenregal <= 18)
{
    ZW_SwitchMode(17739, true);  // Heizlüfter anschalten
}
else
{
    ZW_SwitchMode(17739, false);  // Heizlüfter ausschalten
}

?> 

Um das Ganze etwas zu vereinfachen.
Nutze doch einfach die IPS-Bordmittel.
Ein Ereigniss brauchst du ja so oder so um etwas mit deinem Script anzufangen.
Und so geht es ganz ohne dabei PHP zu verwenden:

  • Doppelklick auf ID 13121
  • Reiter Ereignisse wählen
  • Klick auf ‚Neues augelöstes Ereignis‘
  • Unter ‚Variable‘ deine Temperatur-Variable auswählen
  • Auslöser auf 'Bei Grenzunterschreitung
  • Wert: 18 eintragen
  • Haken bei ‚Nachfolgende Ereignisse ausführen entfernen‘ (Damit nur der Befehl nur einmal beim Unterschreiten von größer 18 gesendet wird)
  • Weiter klicken
  • Funktion wählen : z.B. ZW_SwitchMode und Wert true für einschalten.
  • Weiter + Fertig klicken.

Ausschalten geht Identisch, nur mit 'Grenzüberschreitung und Funktions-Wert false.

Michael

Danke euch beiden, hat wunderbar funktioniert. (Danke auch für die hilfreichen Links) :slight_smile:

Ich habe das ganze jetzt per PHP realisiert.