Homematic Sender / Empfänger

Frohe Weihnachten an Alle,

ich will eine neue Homematic Instanz anlegen. Wann verwende ich Homematic Empfänger und wann den Sender?

Wenn die Adresse stimmt funktioniert beides.

z.B. Funkthermostat:

Was ist Solltemperatur Sender oder Empfänger
Isttemperatur und Luftfeuchte was sind das? Sender oder Empfänger?

VG Dirk

Hallo Dirk,

Ich bin mir nicht mehr ganz sicher ob es damals Sender oder Empfänger war.

Bei mir sieht der Raumregler so aus.

PS: LOWBAT und SNR habe ich händisch eingefügt!!

Wie fragt man denn Lowbat ab?
Wie kriege ich Tag und Nachtbetrieb raus?
Was ist SNR

VG Dirk

Hallo Dirk,

LOWBAT und STICKY_UNREACH muss man über ein Script abfragen.

ich habe das hier genommen.

Da man für die Abfrage die Seriennummer der Geräte wissen muss habe ich auch bei jedem Gerät eine Stringvariable mit dem Namen SNR eingefügt. Im Nachhinein könnte ich mir auch vorstellen die Seriennummer beim Device abzufragen. Vielleicht weiß jemand wie das geht.

Zitat:
Wie kriege ich Tag und Nachtbetrieb raus?

Was meinst Du damit? Wo kommt das her?

Bis dann

Martin

Hi,

orientiere Dich an den Einträgen in der CCU.

Wenn dort Sender steht, dann musst Du die Instanz Empfänger mit der jeweiligen Adresse aus der CCU in IPS gewählt UND dort übernommen.

Dann brauchst Du nur warten. Sobald die CCU über tcdump die Daten sendet, werden automatisch die jeweiligen Variablen angelegt.

wesseli

Nachdem ich das gelesen hatte, habe ich das speziell mal für HM-Devices geschrieben. Das war mir dann doch zuviel, das händisch zu machen :wink:

<?
/*
*************************************************************************
Legt für Homematic-Instanzen die String-Variable mit der Seriennummmer an
*************************************************************************
*************************************
File     :  HM-Seriennummer in Variablen.php
Trigger  :  Runscript
Interval :  Start
*/

$alleInstanzen = IPS_GetInstanceListByModuleType(3); // nur I/O Instanzen auflisten
$string = $alleInstanzen;
$newname = "Serien-Nummer";                     // Name der neuen String-Variable
$instname = "HomeMatic Device";                 // Welcher Instanz-Name soll gesucht werden

// Array sortieren
//asort($string);

// Array ausgeben
foreach($string AS $id)
   {
   $instanz = IPS_GetInstance($id);
	$instanz = $instanz['ModuleInfo'];
	$instanz = $instanz['ModuleName'];
		if ($instanz == $instname)                                  // Vergleich ob das Array den Instanz-Name ausgibt
		{
		$adresse = HM_GetAddress($id);            						// HM-Seriennummer ermitteln
		//$adresse = substr($adresse,0,10);     								// HM-Seriennummer ohne Sub-Adresse(:xx)
			if ( (!IPS_GetVariableIDByName($newname, $id) ) > 0)     // Überprüfen ob String-Variable schon existiert, Ergebnis = NEIN
			{
			$newid = IPS_CreateVariable(3);                          // String-Variable anlegen
			IPS_SetName($newid, $newname);                           // Name für String-Variable schreiben
			IPS_SetParent($newid, $id);                              // Unter Parent-ID verschieben
			SetValueString($newid, $adresse);                        // Seriennummer in String-Variable schreiben
			}
			else
			{
			$newid = IPS_GetVariableIDByName($newname, $id);         // Überprüfen ob String-Variable schon existiert, Ergebnis = JA
				if ( (GetValueString($newid)) != $adresse)
				{
				SetValueString($newid, $adresse);                        // Seriennummer in String-Variable schreiben
				}
			}
		 //echo "$id    $instanz $adresse"."
";         			// Instanzen kontrollieren
		}
	}
?>

Wenn einem im Nachhinein die Bezeichnung($newname) der Variable nicht mehr gefällt, dann muss man sie aber vorerst noch von Hand löschen. Das habe ich noch nicht automatisiert. Also am besten vorher überlegen, wie sie heißen soll.

Hallo nancilla,

Mein Chef sagt immer: Man kann besser mit einem faulen zusammenarbeite wie mit einem doofen. :smiley:

Du bis ne bütz!

Besten Dank

Martin

Hallo Schablone,

ich meine wie ich rauskriege ob am Wandthermostat Tag oder Nachtbetrieb gedrückt worden ist.

VG Dirk

Tag u. Nachtbetrieb?
Das heisst eigentlich nur, dass die am Thermostat eingestellte(programmierte) Temperatur abgesenkt wird. Aber ob man jetzt auslesen kann, ob da ein Mond oder eine Sonne auf dem Display steht?.. Ich mag es bezweifeln :wink:

@Schablone
Eigentlich bin ich ja auch nicht faul(Ich weiss schon, wie du das meinst :D), nur das Script hat den Vorteil, dass man es immer wieder laufen lassen kann, wenn man mehrere neue HM-Devices angelegt hat und spart sich dabei jedesmal die manuelle Eintragung.
Man kann es ja auch noch beliebig umbauen und erweitern, für andere „Aufgaben“ und Variablen …das war mein Hintergedanke. Wenn man einmal 100 HM-Komponenten in IPS eingebunden und mit der Konsole im Baum strukturiert hat… wer mag da schon sich durchhangeln und entsprechend viele Variablen von Hand anlegen wollen. Wenn man mehrere Fernbedienungen z.B. hat, kommt da schnell einiges zusammen.

Hi Nancilla,

ich habe Dein Skript gleich mal laufen lassen.

Hat wunderbar funktioniert, die noch fehlenden Variablen wurden eingetragen und ich habe viel Zeit gespart.

Danke… :wink:

Anderes Thema: Hast Du mal das HSC-Tool benutzt? Ich habe Probleme mit der Installation. Über einen Tipp wäre ich dankbar.

wesseli

Ich habe das Script nochmals überarbeitet und das Löschen und Umbenennen mit eingefügt (dazu hatte ich gestern Abend keine Lust mehr :D):

Aber Achtung, wenn man gelöscht hat und danach neu anlegt, ändern sich die Var-ID’s!


<?
/*
*******************************************************************************************
Erstellen, Löschen u. Umbenennen von String-Variablen mit der Seriennummmer an HM-Instanzen
*******************************************************************************************
File     :  HM-Seriennummer in Variablen
Trigger  :  Runscript
Interval :  Start
*/

$newname = "Serien-Nummer";                     	// Name der String-Variable (beim erstmaligen ERSTELLEN)
$altname = "S-NR";                               	// Alternativer Name der String-Variable (beim UMBENENNEN)
$instname = "HomeMatic Device";                 	// Welcher Instanz-Name soll gesucht werden

$create = 1;                                       // ERSTELLEN [Variable 1=Anlegen(Beibehalten) / 0=Löschen]
$rename = 0;                                       // UMBENENNEN [1=JA / 0=NEIN]


if (!$create)  $rename = 0;                        // Wenn Löschen, dann nicht gleichzeitig Umbenennen
$alleInstanzen = IPS_GetInstanceListByModuleType(3); // nur I/O Instanzen auflisten

// Array sortieren
//asort($alleInstanzen);

// Array ausgeben
foreach($alleInstanzen AS $id)
   {
   $instanz = IPS_GetInstance($id);
	$instanz = $instanz['ModuleInfo'];
	$instanz = $instanz['ModuleName'];
		if ($instanz == $instname)                                  // Vergleich ob das Array den Instanz-Name ausgibt
		{
			if ($create)
			{
			$adresse = HM_GetAddress($id);            						// HM-Seriennummer ermitteln
			//$adresse = substr($adresse,0,10);     								// HM-Seriennummer ohne Sub-Adresse(:xx)
				if ( (!IPS_GetVariableIDByName($newname, $id) ) > 0)     // Überprüfen ob String-Variable schon existiert, Ergebnis = NEIN
				{
				$newid = IPS_CreateVariable(3);                          // String-Variable anlegen
				IPS_SetName($newid, $newname);                           // Name für String-Variable schreiben
				IPS_SetParent($newid, $id);                              // Unter Parent-ID verschieben
				SetValueString($newid, $adresse);                        // Seriennummer in String-Variable schreiben
				}
				else
				{
				$newid = IPS_GetVariableIDByName($newname, $id);         // Überprüfen ob String-Variable schon existiert, Ergebnis = JA
					if ($rename)
					{
				   IPS_SetName($newid, $altname);                           // Name für String-Variable schreiben
				   }
				   else
					{
						if ( (GetValueString($newid)) != $adresse)
						{
						SetValueString($newid, $adresse);                        // Seriennummer in String-Variable schreiben
						}
					}
				}
			}
			else
			{
			$newid = IPS_GetVariableIDByName($newname, $id);         // Überprüfen ob String-Variable existiert, Ergebnis = JA
			IPS_DeleteVariable($newid);                              // String-Variablen ($newname) löschen
			}
		 //echo "$id $instanz $adresse"."
";         			// Instanzen kontrollieren
		}
	}
?>

@wesseli
HSC-Tool?
Was ist das? Was macht das?
Ich glaube, ich habe davon schonmal auf homematic-inside.de gelesen, mich aber nicht weiter dafür interessiert…

Genau so soll es auch sein. Man kann sich das Leben schwer machen so wie ich, oder erst mal nachdenken so wie Du. Ich habe erst im Nachhinein gesehen das die Seriennummern bereits in den Devices hinterlegt ist. Da hatte ich aber schon alles fertig.

Jetzt haben wir ja eine schöne Lösung. :wink:

Bis dann

Martin

Ich dachte zuerst darüber nach, eine Copy der „settings.xml“ zu parsen, aber das erschien mir weit aufwendiger und komplizierter. Dann habe ich in der „functionlist“ den (leider bisher undokumentierten) Befehl „HM_GetAddress“ gefunden und was „drumrum gebaut“. Was dabei raus kam, steht hier und stimmte mich erstmal zufrieden. Vorallem lässt sich das individuell weiter ausbauen und mit anderen Ideen „verknüpfen“:wink:

P.S. So, ich glaube, nun haben wir die Frage des TO ziemlich „diffusioniert“. Eventuell sollte man die Themen trennen :confused:
Sry, zman0801!