FUTH65D Unterstützung

Hallo,

da eines meiner alten Thermostate gestorben ist habe ich mir mal nun ein FUTH65D geholt. Ist leider noch nicht geliefert.
In der Suche und in den Instanzen ist keines zu finden. Daher die Standard Frage:

  1. Hat es einer und kann die Erfahrung teilen?
  2. Geht evtl. dann sowas wie von Thermokon Temperatur und Feuchtigkeit?

1000 Dank und Gruß

Ich kann dir nicht genau sagen, was das Gerät liefert, aber du kannst anscheinend das Gerät über die FHK14 Instanz (ab IP-Symcon 4.0 Beta) ansteuern.

paresy

Hallo mäc,

was willst Du denn mit IPS und dem FUTH machen? Was geht ist die Steuerung der Soll-Temperatur, damit kannst Du denn Soll-Wert am FUTH überstimmen. Mehr geht dann auch nicht. Ich habe das bei mir eingerichtet und habe ein Skript dafür, allerdings noch mit ESP2!

bertel2013

Ja vielmehr ist es auch nicht. Möchte;

  • Ist Temperatur sehen
  • Soll setzen
  • Feuchtigkeitswert lesen

Diese zig Programme in dem Ding finde ich braucht kein Mensch. Dazu ist das Display schlecht ab zu lesen.

Hallo,

hier mal die Beschreibung der Integration der FUTH in IPS:

1. Empfangen der Sensortelegramme (Ist-Temp, Soll-Temp und Luftfeuchte)
Du benötigst eine Enocean Instanz 07-10-12 Temperature and Humidity Sensor

Damit hast Du schon mal die Werte vom FUTH.

2. Vorgeben der Soll-Temp aus IPS
Jetzt wird es etwas schwieriger, da es hierfür keine Instanz in IPS gibt. Du musst also die Telegramme selbst zusammenbauen und über eine Register Variable an dein Enocean Gateway schicken.

Zuerst musst Du IPS in den FUTH einlernen:

  • Definieren die ID für denn Soll-Temp „Sensor“ (Base-ID + selbst definierte IPS-ID)
  • Schicken eines Lern-Telegramms mit der zuvor definierte ID und folgendem Inhalt:

Data_byte3 = 40
Data_byte2 = 30
Data_byte1 = 0D
Data_byte0 = 85

Nun müsste das IPS im FUTH eingelernt sein und bereit die Soll-Temp von IPS zu empfangen

Einstellen der Soll-Temp über IPS:

  • Schicken eines Sensor-Telegramms zum einstellen der Soll-Temp mit der zuvor definierte ID und folgendem Inhalt:

Data_byte3 = 00 wird nicht ausgewertet
Data_byte2 = 68 neuer Sollwert (0x00 = 8°C bis 0xFF = 40°C) Bsp. 68 => 21°C
Data_byte1 = 00 wird nicht ausgewertet
Data_byte0 = 08 0x08 fester Sollwert (Priorität), 0x0A verstellbarer Sollwert an dem FUTH +/- 3K (ohne Priorität)

So, wenn alles geklappt hat, dann sollte am FUTH der neue Soll-Wert eingestellt sein und die Soll-Temp Einstellung am FUTH gesperrt bzw. eingeschränkt sein (siehe Data_byte0). Wichtig ist aber noch, dass die Steuerung durch IPS beendet wird wenn der FUTH länger als 60 Minuten kein Telegramm empfängt (Ich sende alle 45 Minuten).
Wenn man aus welchen Gründen auch immer das FUTH wieder „freigeben“ möchte ohne eine Stunde zu warten, dann hilft folgendes Telegramm:

Data_byte3 = 00
Data_byte2 = 00
Data_byte1 = 00
Data_byte0 = 08

Wichtig ist natürlich auch die Anleitung zum FUTH zu lesen!

Ich hoffe ich kann damit weiterhelfen, ansonsten einfach fragen.

Gruß
bertel2013

Lieber bertel2013;263988,

ich habe Deine Anleitung befolgt und auch mit Eltako gesprochen.
Das FUTH65D wird bei mir in IPS angezeigt (Enocean Instanz 07-10-12 Temperature and Humidity Sensor). Klappte also prima.

Deine Erklärung zum einlernen in den FUTH65D habe ich auch prinzipiell verstanden, nur hapert es bei der Umsetzung.
Wie sende ich das Einlerntelegramm via IPS?
Wie sende ich generell selbstgebastelte Telegramme?
Eltako meinte ich müsste im Heizaktor bei mir FAE14SSR die ID hinterlegen.

Ich wüde mich über ein Feedback freuen.

LG

Carsten

Hallo Carsten,

hier mein Skript zum einlernen von IPS in den FUTH. Du musst nur die Variablen „$eno_regvar“ und „$id1-$id4“ mit deinen Werten definieren.

<?
/*
Skript zum senden eines Lerntelegramms an den Eltako FUTH
Auslöser: 
Bedingung: 
20.10.2015 - Roberto Martins
*/

$eno_regvar = 12345; // IPS-ID der Register-Variable des Enocean Gateways

//  Telegrammaufbau definieren
	$sync = "A55A";
	$header = "6B";
	$org = "07";
	$data3 = "40";
	$data2 = "30";
	$data1 = "0D";
	$data0 = "85";
	$id1 = "FF"; // Base-ID des Enocean-Gateways
	$id2 = "FF"; // Base-ID des Enocean-Gateways
	$id3 = "FF"; // Base-ID des Enocean-Gateways
	$id4 = "FF"; // Geräte-ID 
	$status = "00";
	$checksumcalc = dec2hex04(hexdec($header) + hexdec($org) + hexdec($data3) + hexdec($data2) + hexdec($data1) + hexdec($data0) + hexdec($id1) + hexdec($id2) + hexdec($id3) + hexdec($id4) + hexdec($status));
	$checksumbytes = str_split($checksumcalc, 2);
	$checksum = $checksumbytes[1];

//  Telegramm zusammenstellen und senden
	$telegram = Hex2Str($sync.$header.$org.$data3.$data2.$data1.$data0.$id1.$id2.$id3.$id4.$status.$checksum);
//echo($telegram);
	RegVar_SendText($eno_regvar , $telegram);  


//  #########################  FUNKTIONEN  #########################
//
function Hex2Str($hex){
    $string='';
    for ($i=0; $i < strlen($hex)-1; $i+=2){
        $string .= chr(hexdec($hex[$i].$hex[$i+1]));
    }
    return $string;
}

function dec2hex04($dec){
    return sprintf("%04X", $dec);
}


?>

und hier noch das Skript zum setzen der Soll-Temp über IPS. Den aktuellen Soll-Wert (Ist-Soll) vom FUTH hast Du ja bereits über die Instanz 07-10-12, nun fehlt noch eine neue Float-Variable zum setzen des neuen Soll-Wertes (Neu-Soll). Das Skript wird dann über ein Ereignis ausgelöst (Bei Variablenaktualisierung der Variable „Neu-Soll“) und zusätzlich über ein zyklisches Ereignis (alle 45 Minuten), damit der FUTH nicht nach 60 Minuten die Steuerung über IPS beendet (siehe Anleitung FUTH).

<?
/*
Skript zum senden der Soll-Temp an den Eltako FUTH
Auslöser: Ereignis - Änderung Soll-Temp, Zyklisch alle 45 Minuten
Bedingung:
20.10.2015 - Roberto Martins
*/

$eno_regvar = 12345; // IPS-ID der Register-Variable des Enocean Gateways

//  IST-Soll auslesen
	$istsoll = GetValue(12345); //IPS-ID der Soll-Temp empfangen vom FUTH
		
//  NEU-Soll auslesen
	$neusoll= GetValue(12345); //IPS-ID der Float-Variable zum setzen der Soll-Temp
		
//  Telegrammaufbau definieren
	$sync = "A55A";
	$header = "6B";
	$org = "07";
	$data3 = "00";
	$data2 = dec2hex02($neusoll/(40/255));
	$data1 = "00";
	$data0 = "08"; // 0x08 fester Sollwert (Priorität), 0x0A verstellbarer Sollwert an dem FUTH +/- 3K (ohne Priorität)
	$id1 = "FF"; // Base-ID des Enocean-Gateways
	$id2 = "FF"; // Base-ID des Enocean-Gateways
	$id3 = "FF"; // Base-ID des Enocean-Gateways
	$id4 = "FF"; // Geräte-ID
	$status = "00";
	$checksumcalc = dec2hex04(hexdec($header) + hexdec($org) + hexdec($data3) + hexdec($data2) + hexdec($data1) + hexdec($data0) + hexdec($id1) + hexdec($id2) + hexdec($id3) + hexdec($id4) + hexdec($status));
	$checksumbytes = str_split($checksumcalc, 2);
	$checksum = $checksumbytes[1];
		
//  Telegramm zusammenstellen
	$telegram = Hex2Str($sync.$header.$org.$data3.$data2.$data1.$data0.$id1.$id2.$id3.$id4.$status.$checksum);
//echo($telegram);
//  Telegramm zusammenstellen und senden
	RegVar_SendText($eno_regvar, $telegram);


//  #########################  FUNKTIONEN  #########################
//
function Hex2Str($hex){
    $string='';
    for ($i=0; $i < strlen($hex)-1; $i+=2){
        $string .= chr(hexdec($hex[$i].$hex[$i+1]));
    }
    return $string;
}

function dec2hex04($dec){
    return sprintf("%04X", $dec);
}

function dec2hex02($dec){
    return sprintf("%02X", $dec);
}

?>

Übrigens, an den FAE14SSR lernst Du nur noch ganz normal den FUTH direkt ein. Siehe dazu die jeweiligen Anleitungen.

Gruß
Roberto

Lieber Roberto,

ich habe Dein Script fast verstanden.
Bis auf die Variablen, leider das wichtigste (Fuchse mich gerade in IPS ein…):confused:

ID1-4 ist mir fast klar. Ich habe das TCM310 mit der Base-ID: fffcb400
Die Geräte ID ist dann einfach eine freie ID von z.B. Dez 110 was dann dem HEX Wert 6E entspricht. Oder?
Denn das FUTH taucht bei mir ja gar in IPS auf, bis dass ich die Temperatur empfange (zur Anzeige).
(Ich habe mir eine Excel Tabelle mit allen IDs von 1-126 erstellt sowohl für senden, als auch für Empfang FAM14 Base-ID und TCM310 Base ID).

Aber was ist die IPS-ID der Register-Variable des Enocean Gateways? :confused:

Liebe Grüße

Dein

Carsten

Hallo Carsten,

ich antworte hier auch mal auf deine PN, ist vielleicht auch für andere Interessant.
Die meisten Infos bzgl. Telegramme der Eltako-Devices bekommst Du direkt bei Eltako. http://www.eltako.com/fileadmin/downloads/de/Gesamtkatalog/Eltako_Gesamtkatalog_KapT_low_res.pdf
Früher gab es das PDF mit den Funktelegramme einzeln, aber in dem obigen PDF ist auch alles drin. Da steht z. B. auch der FRW drin.
Du hast das mit den IDs soweit glaube ich richtig verstanden. Wenn dein Gateway z. B. die Base-ID FFFFFF00 hat, dann sind aus IPS heraus die Geräte-IDs dec 1-127 (0x01-0x7F) verwendbar. Eine komplette Sende-ID würde z. B. folgendermaßen aussehen: FFFFFF7B (123).
Nun zum Thema Register Variable. Diese dient dazu Enocean-Telegramme (im konkreten Fall) von deinem Gateway „abzugreifen“ um sie mit einem Skript weiter zu verarbeiten bzw. auszuwerten (das machen ich mit Sensoren die nicht in IPS integriert sind, das Fall u. a. bei der Wetterstation der Fall). Die RegVar wird aber auch verwendet um eigene Telegramme über das Gateway zu verschicken. Zwar könnte man das theoretisch direkt an das Gateway schicken, der richtige Weg ist aber über die RegVar. Die RegVar sollte so oder so ähnlich aussehen:

Ich habe außerdem ein Template meiner Excel-Tabelle angehängt, mit dem ich meine ganzen Devices verwalte und so einen sehr guten Überblick habe, insbesondere was IDs angeht.

IPS_Enocean_IDs_template.zip (18.6 KB)

Lieber Roberto,

jetzt habe ich es kapiert.
Habe zwar noch ein wenig nach dem Weg gesucht eine Register Variable anzulegen (für die, die es nicht wissen, einfach Instanz hinzufügen…(Register Variable auswählen und Gatway auswählen))…

Ich habe mir auch eine Excel-Datei angelegt, allerdings noch etwas umfangreicher, und habe sowohl FAM14 als auch mein Enocean Gateway hinterlegt und rechne den rest automatisch aus.
Diese Datei werde ich einmal im Forum hinterlegen für andre, wenn diese bearbeitet wurde.

Ich habe gelesen, dass Du auch die Funk-Wettersation von Eltako hast. Was kann man damit noch machen (zeige heute nur die Werte an, allerdings finde ich die LUX anzeige nicht super optimal. Meine Frau fragt immer was heißt das jetzt…).
Hast Du da eine bessere Ehefrauenkompatibilitätsversion?

Vielen Dank noch einmal :D:D:D

Dein

Carsten

Danke für den Hinweis in dem PDF, da steht ja vieles interessantes drin, u.a. auch das man beim FSB14 die Laufzeit direkt mitgeben kann. Hast du, bevor ich jetzt selber bei 0 Anfange, ein Beispiel wo du ein Telegramm mal „von Hand“ an einen Aktor sendest? Ich würde z.B. gerne meine Rollos mit Laufzeitvorgabe ansprechen, das kann IPS aber noch nicht.

Genauso wäre es auch genial wenn man die Rückmeldetelegramme der Rollos auswerten könnte, dann kann man die z.B. per Taster gefahrene Zeit im STatus des Rollo setzen, das hat IPS auch noch nicht…

//EDIT - Hätte die Seite davor wohl noch lesen sollen, da werde ich wohl was draus ableiten können .

Hallo Hagbard,

hier ist mein Skript zum senden der Fahrzeit an die FSBs. Es ist leider noch etwas „dirty“, aber es funktioniert! :slight_smile: Ich habe zu jedem Rollladen eine Integer Variable „Postion“ erstellt und das Skript als Aktion hinterlegt, siehe Screenshots.

Variable_Position.png

Im WebFront sieht es dann so aus:

Im Skript müssen noch folgende Dinge definiert werden:

  • Laufzeiten der verschiedenen Typen
  • Die ID der Register Variable ($regvar)
  • In der Funktion „Telegramm“ müssen noch die IDs ($id1-$id3) entsprechend der Gateway Base-ID eingetragen werden

Bei der Variable „$ENOID“ wird zuerst die bestehende Geräte-ID (im Aktor eingelernt als „Richtungstaster“ für normal Auf/Ab) der jeweiligen Instanz ausgelesen und dann mit 128 und 64 addiert. 128 weil meine Gateway Base-ID mit 0x80 endet. Die 64 habe ich mir überlegt um die Vergabe der IDs für „Fahrkommando mit Zeitwertübergabe von GFVS“ zu vereinfachen (also bestehende ID + 64). Ich habe also für jedes Beschattungselement in den Aktoren jeweils zwei IDs eingelernt, einmal normal als „Richtungstaster“ (Instanz Enocean EltakoSwitch) und einmal als „Fahrkommando mit Zeitwertübergabe“. Klingt kompliziert, ich hoffe du verstehst was ich meine.
Hier noch ein Screenshot meiner Instanz:

Außerdem habe ich eine Variable „Typ“, da ich verschiedene Beschattungstypen mit verschiedenen Laufzeiten habe. Die Variable wird vom Skript angelgt, es muss nur noch angepasst und das entsprechende Profil angelegt werden.

Übrigens, das Ganze basiert noch auf ESP2! Werde es irgendwann in ferner Zukunft mal auf ESP3 umstellen.:cool:

<?
/*
Skript zum Setzen der Beschattungsposition
Auslöser: Webfront - Integer Variable (Slider)
Bedingung:
19.09.2015 - Roberto Martins
*/

if($IPS_SENDER == "WebFront"){
$regvar = 12345; //Register Variable
$OldPosition = GetValue($IPS_VARIABLE); // Alte Position vor ändern feststellen
SetValue($IPS_VARIABLE, $IPS_VALUE); // Neue Position setzen
$ParentID = IPS_GetParent($IPS_VARIABLE); // Instanz-ID ermitteln
$DeviceID = IPS_GetProperty($ParentID, "DeviceID"); // Device-ID ermitteln
$ENOID = dec2hex02(128+64+$DeviceID); // Enocean Sender-ID der Instanz ermitteln (TCM-ID + 64, nur letzter Byte, für Zeitwertübergabe an FSB14)
$TypeID = CreateVariableByName($ParentID, 'Typ', "Beschattungstypen", 1, true);
$Type = GetValue($TypeID); // Rolladentyp ermitteln
$MovingID = CreateVariableByName($ParentID, 'Moving', "", 0, true);

	switch ($Type)
	{
	   case 1:
	      $SecAuf = '18'; //Zeit Typ 1 auf in Sekunden
	      $SecAb ='17'; //Zeit Typ 1 zu in Sekunden
		break;
		case 2:
	      $SecAuf = '26'; //Zeit Typ 2 auf in Sekunden
	      $SecAb ='21'; //Zeit Typ 2 zu in Sekunden
		break;
		case 3:
	      $SecAuf = '60'; //Zeit Typ 3 auf in Sekunden
	      $SecAb ='60'; //Zeit Typ 3 zu in Sekunden
		break;
	}

		if ($IPS_VALUE > $OldPosition) // Ab sonst Auf
		{
			if ($IPS_VALUE == 100)
			{
			$Fahrzeit = dec2hex02(($SecAb/100)*($IPS_VALUE - $OldPosition)+5);
			}
			else
			{
			$Fahrzeit = dec2hex02(($SecAb/100)*($IPS_VALUE - $OldPosition));
			}
		$Bewegung = "02"; //Ab
		}
  		else
		{
		   if ($OldPosition < 100)
		   {
		   $Fahrzeit = dec2hex02(($SecAuf/100)*($OldPosition - $IPS_VALUE));
		   }
		   else
		   {
			$Fahrzeit = dec2hex02(($SecAuf/100)*($OldPosition - $IPS_VALUE)+5);
			}
		$Bewegung = "01"; //Auf
		}
	$telegram = Telegramm($Fahrzeit, $Bewegung, $ENOID);
	SetValue($MovingID, true); //Moving-Variable auf true setzen wegen Positionsauswertung mit Statustelegramm
	IPS_Sleep(200);
	RegVar_SendText($regvar , $telegram);
	IPS_Sleep((hexdec($Fahrzeit)*1000)+2000);
	SetValue($MovingID, false); //Moving-Variable wieder auf false setzen
}


//  #########################  FUNKTIONEN  #########################

function Telegramm($data2, $data1, $id4)
{
//  Telegrammaufbau definieren
	$sync = "A55A";
	$header = "6B";
	$org = "07";
	$data3 = "02";
	//$data2 = "00";
	//$data1 = "00";
	$data0 = "08";
	$id1 = "FF";
	$id2 = "FF";
	$id3 = "FF";
	//$id4 = "B7";
	$status = "00";
	$checksumcalc = dec2hex04(hexdec($header) + hexdec($org) + hexdec($data3) + hexdec($data2) + hexdec($data1) + hexdec($data0) + hexdec($id1) + hexdec($id2) + hexdec($id3) + hexdec($id4) + hexdec($status));
	$checksumbytes = str_split($checksumcalc, 2);
	$checksum = $checksumbytes[1];
//  Telegramm zusammenstellen
	$telegram = Hex2Str($sync.$header.$org.$data3.$data2.$data1.$data0.$id1.$id2.$id3.$id4.$status.$checksum);
	return $telegram;
}


function Hex2Str($hex)
{
    $string='';
    for ($i=0; $i < strlen($hex)-1; $i+=2){
        $string .= chr(hexdec($hex[$i].$hex[$i+1]));
    }
    return $string;
}

function dec2hex04($dec)
{
    return sprintf("%04X", $dec);
}

function dec2hex02($dec)
{
    return sprintf("%02X", $dec);
}

function CreateVariableByName($id, $name, $profile, $type, $hidden)
{
	$vid = @IPS_GetVariableIDByName($name, $id);
	if($vid===false) {
      $vid = IPS_CreateVariable($type);
      IPS_SetParent($vid, $id);
      IPS_SetName($vid, $name);
      IPS_SetInfo($vid, "This Variable was created by Script #".$_IPS['SELF']);
      IPS_SetHidden($vid, $hidden);
			if($profile !== "")
        		{
         	IPS_SetVariableCustomProfile($vid, $profile);
        		}
	 	}
    return $vid;
}

?>

Grüße
Roberto

Hier noch das Skript zum auswerten der Statustelegramme der FSB14. Das Skript hängt an der Register Variable. Einfach die IDs eurer Beschattungsinstanzen im Array eintragen und die Fahrzeiten definieren. Das Skript ist auch noch etwas „dirty“ aber es waren meine Anfänge mit IPS. Evtl. müssen noch händisch Variablen angelegt werden. Probiert es einfach aus…

<?
if ($_IPS['SENDER'] == "RegisterVariable")
{
//Definition der auszuwertenden Aktoren
//Rolladen-Typen: 1-Fenster, 2-Fenstertür, 3-Jalousie
$devices = array ("Rolladen" => array  (12345,
										12346,
										12347,
										12348,
										12349)
                 );


//  Erstelle Array Zuordnung ReturnID -> ObjektID
foreach ($devices["Rolladen"] AS $objektid) {
	$returnid = IPS_GetProperty($objektid, "ReturnID");
	$rolladenids[$returnid] = $objektid;
	}

	//  Prüfen nach Sync-Bytes "A5 5A"
	if(strpos($_IPS['VALUE'], chr(0xA5).chr(0x5A)) !== false)
   {
		//  Telegramm in Hex umwandeln
		$telegram = Str2Hex($_IPS['VALUE']);
		//  Telegramm im Bytes aufteilen
		$bytes = explode(" ", $telegram);
		//  Telegrammaufbau definieren
		$sync = "$bytes[0]$bytes[1]";
		$header = "$bytes[2]";
		$org = "$bytes[3]";
		$data3 = "$bytes[4]";
		$data2 = "$bytes[5]";
		$data1 = "$bytes[6]";
		$data0 = "$bytes[7]";
		$id = "$bytes[8]$bytes[9]$bytes[10]$bytes[11]";


//  #########################   Beschattung  #########################

	if (array_key_exists("$id", $rolladenids)){
		$ParentID = $rolladenids["$id"];
		$zustandsid = IPS_GetObjectIDByName ("Zustand", $ParentID);
		$status = IPS_GetObjectIDByName ("Status", $ParentID);
		$fahrzeitid = CreateVariableByName($ParentID, "Fahrzeit", 1, 'fahrzeit', 'Sekunden', true);
		$MyFahrzeit = (hexdec($data2) * 0.1) + (hexdec($data3) * 0.1 * 255);
		$PositionID = CreateVariableByName($ParentID, "Position", 1, 'position', '~Intensity.100', false);
		$TypeID = IPS_GetObjectIDByName("Typ", $ParentID);
		$OldPosition = GetValue($PositionID);
		$Type = GetValue($TypeID); // Rolladentyp ermitteln
		$MovingID = IPS_GetObjectIDByName("Moving", $ParentID);
		$Moving = GetValue($MovingID);

		switch ($Type){
			case 1:
			    $SecAuf = '18';
			    $SecAb ='17';
			break;
			case 2:
			    $SecAuf = '26';
			    $SecAb ='21';
			break;
			case 3:
			    $SecAuf = '60';
			    $SecAb ='60';
			break;
		}
		if($org == "05"){
			if($data3 == "01"){
				SetValue($zustandsid, "Start Auf");
			}
			if($data3 == "02"){
				SetValue($zustandsid, "Start Ab");
			}
			if($data3 == "70"){
				SetValue($zustandsid, "Endlage Oben");
				SetValue($PositionID,0);
			}
			if($data3 == "50"){
				SetValue($zustandsid, "Endlage Unten");
				SetValue($PositionID,100);
			}
		}
		if($org == "07"){
			if($data1 == "01"){
				SetValue($zustandsid, "Aufgefahren");
				SetValue($fahrzeitid, $MyFahrzeit);
				$NewPosition = $OldPosition - ($MyFahrzeit/$SecAuf*100);
				if($NewPosition < 0) $NewPosition = 0;{
                  	if($Moving === false){
						SetValue($PositionID,$NewPosition);
					}
				else{
					echo " +++ NICHTS +++";
				}
				}
			}
			if($data1 == "02"){
				SetValue($zustandsid, "Abgefahren");
				SetValue($fahrzeitid, $MyFahrzeit);
				$NewPosition = $OldPosition + ($MyFahrzeit/$SecAb*100);
				if ($NewPosition > 100) $NewPosition = 100;{
				  	if($Moving === false){
						SetValue($PositionID,$NewPosition);
					}
				else{
					echo " +++ NICHTS +++";
				}
				}
			}
		}
	}
	else{
		echo "ID nicht bekannt!";
	}


	}
}


//  #########################  Funktionen  #########################

function Str2Hex($daten)
{
    $hex = "";
     for($i=0; $i<strlen($daten); $i++)
   $hex .= sprintf("%02X ", ord($daten[$i]));
     return $hex;
}


function CreateVariableByName($id, $name, $type, $ident, $profile, $hidden)
{
    $vid = @IPS_GetObjectIDByIdent ($ident, $id);
    if($vid === false)
    {
        $vid = IPS_CreateVariable($type);
        IPS_SetParent($vid, $id);
        IPS_SetName($vid, $name);
        IPS_SetIdent($vid, $ident);
        IPS_SetInfo($vid, "Created by Skript #".$_IPS['SELF']);
        IPS_SetHidden($vid, $hidden);
        
          if($profile !== "")
        {
            IPS_SetVariableCustomProfile($vid, $profile);
        }
    }
    return $vid;
}
?>

Gruß
Roberto

Hallo Carsten,

ja ja, den WAF darf man nicht ignorieren! :smiley: Aber was genau meinst Du mit Lux Anzeige, bzw. was ist daran „nicht super optimal“? Licht wird nun mal in Lux gemessen, nur den meisten sind diese Werte nicht geläufig und können sich nichts darunter vorstellen. Bei Auto kommt ja auch jeder klar mit km/h. :stuck_out_tongue:
Aber vielleicht bringt es dich weiter (und erhöht den WAF) wenn du über ein Profil für verschiedene Werte was „sprechendes“ hinterlegst. z. B. 99000 lx = Sehr hell, 80000 lx = Hell, 10000 lx = Durchwachsen …

Gruß
Roberto

Hallo,

grundsätzlich hast Du zwei Möglichkeiten:

  1. Du verwendest den FAE14SSR für die Regelung (2-Punkt) und gibst mit IPS die Werte (Ist und Soll) vor. Dafür musst Du quasi mit IPS einen FUTH simulieren mit dem die notwendigen Telegramme gesendet werden, siehe dazu die Beschreibung von Eltako bzw. von Enocean (EEP: A5-10-12). Der FAE macht dann den Rest. Er schaltet ein wenn die Ist-Temp < Soll-Temp und aus wenn Ist-Temp > Soll-Temp (unter Berücksichtigung der eingestellten Hysterese).

  2. Du verwendest das Modul Heating Control für die 2-Punkt-Regelung, das geht aber nicht mit dem FAE14! Du müsstest hierfür einen normalen Schaltaktor verwenden, da das Modul nur Ein- bzw. Ausschaltet.

Gruß
Roberto

Hi,

ich muss dieses Thema nochmal nach vorne holen. Also in IPS gibt es ein Modul für den FUTH. Aber irgendwie nur halb.
Warum ist die Solltemperatur nur ein Integer?

Auch verstehe das für die Feuchtigkeit eine weitere Adresse benötigt wird. Wäre es dann dann nicht sinnig wenn man eine zweite eintragen kann bzw. die sich errechnet wird?

Wie bindet Ihr die Thermostate ein? Vermute über die EEPs oder?