Möhlenhoff Alpha 2

Guten Morgen!

Anbei ein kleines, nettes Modul an dem wir letzte Woche gearbeitet haben. Damit könnt ihr eure Alpha 2 von Möhlenhoff super simpel aus IP-Symcon heraus ansteuern. Wir haben eine Menge Parameter direkt in das Modul hinzugefügt! Falls es noch Wunschparamter gibt, könnt ihr die gerne anfragen und wir versuchen die dann einzubauen.

Mini Entwickler-Dokumentation:
Wer ein wenig PHP kann, kann auch recht einfach selber fehlende Variablen hinzufügen, da diese in der module.php ganz oben definiert werden. Der Schlüssel vom Array ist dabei der XPath Query vom static.xml Dokument.

Funktionen
-Einlesen von vielen verschiedenen Parametern
-Ändern der Parameter über das WebFront
-Heizkreise 1-12 können jeweils in der Konfiguration aktiviert/deaktiviert werden (spart Variablen)

GitHub Link: GitHub - symcon/SymconMH: Möhlenhoff Alpha 2

paresy

Hallo paresy,

Ich bekomm leider das Modul nicht richtig zum laufen. Bei mir zeigt es unabhängig vom gewählten Heizkreis immer den selben Heizkreis an. Egal welchen Heizkreislauf ich anklicke, es wir immer nur „Wohnzimmer“ (und entsprechende Daten wie zB IST Temperatur) gezeigt.

Das sind die Daten von der Station:
HW 01
SW 86.26
LAN 71.48
WEB 02.01

Mein Gerät hat 8 Zonen, wobei ich mehrere Zonen zusammen mit einem Raumbediengerät steuer.

Hast du eine Ahnung an was das liegen kann bzw. wie ich das hinbekomm, dass ich die Daten von den anderen (gruppierten) Heizzonen bekomm?

Es ist zwar nicht mehr Heizzeit, aber es wär super, wenn für die nächste Saison schon alles gerichtet ist :slight_smile:

danke und lg
thomas

Moin Thomas,

der Fehler liegt nicht bei dir.
Im Moment wird nur die erste und als einzige Heizzone ausgelesen.
Dies ist einfach ein Architekturfehler meinerseits.

Die neue Version die momentan entwickelt wird, sollte da Abhilfe schaffen.

Also bitte einfach die neue Version abwarten.

Grüße
Pio

Der letzte Post ist ja schon ein paar Monate her, gibt es schon eine neue Version, die mehr als den ersten Heizkreis integriert ?

Noch nicht, aber bald :slight_smile:

paresy

Moin zusammen.

Die neue Version ist online.

Über die Konfigurationsseite ist es möglich die HeatAreas/Heizzone 1-12 zu aktivieren.
Die 12 Heizkreise sind immer aktiv und je nach Version wird auch automatisch erkannt, ob Actor Percent als Wert bei den Heizkreisen vorhanden ist.
Die Sollwerte etc können über das WebFront geschaltet werden.

Virtuelle Räume sind noch nicht möglich.

Zur Visualisierung empfehle ich die Möhlenhoff unsichtbar zu machen und die gewollten Daten per Link anzeigen zu lassen.

Grüße
Pio

Super, danke für das Update !

Es gab ein weiteres Update.

Es ist die Funktion MA2_WriteValue hinzugekommen, mit der via Skript Werte in der Alpha 2 gesetzt werden können.

Ebenfalls gibt es nun eine Dokumentation in der auch besagte Funktion beschrieben ist.

Grüße
Pio

Hallo Pio,
wäre es möglich, dass du mit deinem Modul folgende Parameter sichtbar und editierbar machst?

<T_HEAT_DAY></T_HEAT_DAY>
<T_HEAT_NIGHT></T_HEAT_NIGHT>
<T_COOL_DAY></T_COOL_DAY>
<T_COOL_NIGHT></T_COOL_NIGHT>

Besten Dank
Alfred

Das ist ein tolles Modul, was auf Anhieb und bis jetzt gut läuft. Allerdings mit sehr umfangreichen Infos, die auf einer Ebene doch etwas unübersichtlich wirken. Daher würde ich die Variablen gern unterordnen mittels Kategorie oder Dummy Instanz…

Dazu könnte man im Konfig-Array einen weiteren Parameter einfügen und diesen bei Erstellen der Variable als Parent heranziehen. Vielleicht etwas so:

"ID" => Array("Parent" => "Allgemeines", "Name" => "Basis ID", "Type" => 3, "Profile" => "", "Action" => false, "Position" => 50),

Direkt nach dem MaintainVariable müßte die Erstellung der Kategorie rein:

	private function MaintainArray($Array) {
		foreach($Array as $key => $value){
			if(!isset($value["Keep"])){
				$keep = true;
			} else {
				$keep = $this->ReadPropertyBoolean($value["Keep"]);
			}
			$var_id = $this->MaintainVariable($this->ReduceToIdent($key), $value["Name"], $value["Type"], $value["Profile"], $value["Position"], $keep);


if(isset($value["Parent"])){
// Kategorie erstellen
// Namen aus $value["Parent"] übernehmen
// Modul-Instanz als Parent setzen
// ...
			}


			if ($keep && $value["Action"]){
				$this->EnableAction($this->ReduceToIdent($key));
			}
		}
	}

Wie bekomme ich aber die Modul-Instanz als Parent gegriffen, um die erstellte Kategorie direkt darunter zu ordnen? Bei den Variablen geht das doch aus? Oder müssen in einem Modul alle Variablen IMMER direkt unter der Instanz des Moduls (hier: „Möhlenhoff Alpha 2“) liegen?

Und hier die Idee in grafischer Darstellung:

Beim Suchen und Setzen von Werten müßte dann natürlich wieder das Konfig-Array herangezogen werden, damit die Variable über den Ident unterhalb der Kategorie gefunden wird.

Du kannst in PHP Modulen über $this->InstanceID auf die ID der Instanz zugreifen :slight_smile:

Schöne Idee!

paresy

Folgendes habe ich mal verändert:

in der Konfig ist ein neuer Key („Parent“ => „Allgemein“) dazugekommen:

	private static $values = Array(
		"ID" => Array("Parent" => "Allgemein", "Name" => "Basis ID", "Type" => 3, "Profile" => "", "Action" => false, "Position" => 50),
		"VERS_SW_STM" => Array("Parent" => "Allgemein", "Name" => "Basis SW STM Version", "Type" => 3, "Profile" => "", "Action" => false, "Position" => 50),
		"VERS_SW_ETH" => Array("Parent" => "Allgemein", "Name" => "Basis SW ETH Version", "Type" => 3, "Profile" => "", "Action" => false, "Position" => 50),
		"VERS_HW" => Array("Parent" => "Allgemein", "Name" => "Basis HW Version", "Type" => 3, "Profile" => "", "Action" => false, "Position" => 50),
		"TEMPERATUREUNIT" => Array("Parent" => "Allgemein", "Name" => "Basis Temperatureinheit", "Type" => 1, "Profile" => "MH.TemperatureUnit", "Action" => true, "Position" => 50),
		"SUMMERWINTER" => Array("Parent" => "Allgemein", "Name" => "Basis Automatische Zeitumstellung", "Type" => 0, "Profile" => "MH.SummerWinter", "Action" => true, "Position" => 50),
private function MaintainArray($Array) {
		foreach($Array as $key => $value){
			if(!isset($value["Keep"])){
				$keep = true;
			} else {
				$keep = $this->ReadPropertyBoolean($value["Keep"]);
			}
			$this->MaintainVariable($this->ReduceToIdent($key), $value["Name"], $value["Type"], $value["Profile"], $value["Position"], $keep);
			$var_id = @IPS_GetObjectIDByIdent($this->ReduceToIdent($key), $this->InstanceID);
			
			if(array_key_exists("Parent", $value))
				{

				// Kategorie prüfen und erstellen
				$check_ident = @IPS_GetObjectIDByIdent("MH_ALLGEMEIN", $this->InstanceID);
				if (!$check_ident)
					{
					$cat_id = IPS_CreateCategory();
					// Namen aus $value["Parent"] übernehmen
					IPS_SetName($cat_id, $value["Parent"]);
					//Modul-Instanz als Parent setzen
					IPS_SetParent($cat_id,  $this->InstanceID);
					IPS_SetIdent($cat_id, "MH_ALLGEMEIN");
					IPS_SetParent($var_id,  $cat_id);
					}
				else
					{
					IPS_SetParent($var_id,  $check_ident);
					}

				}
			if ($keep && $value["Action"]){
				$this->EnableAction($this->ReduceToIdent($key));
			}
		}
	}

Positive Ergebnisse:

  • für diese Variablen wird unterhalb der Instanz eine Kategorie „Allgemein“ angelegt und selbige unter diese verschoben
  • alle anderen Vars behalten die Instanz als Parent

Negative Ergebnisse:

  • die Instanz bekommen keinen Namen (bleibt leer!)
  • die Instanz wird unter der Root („IP-Symcon“ angelegt)
  • bei Variablen mit „Action“ => true schlägt das EnableAction fehl, da in der __ipsmodule.inc.php davon ausgegangen wird, dass der Ident direkt unter der Instanz liegt und nicht unter der Kategorie „Allgemein“:
	protected function EnableAction($Ident) {
			IPS_EnableAction($this->InstanceID, $Ident);
		}

Welchen Lösungsansatz könnte es geben, dass nicht alle Variablen direkt unter der Modulinstanz liegen müssen?
Kann man die Datei __ipsmodule.inc.php einfach ändern oder wird sie beim nächsten Update überschrieben?

EDIT: auch mit einer DummyInstanz anstelle der Kategorie kommen Fehler.

Hallo
Habe mir die Beschreibung SymconMH/README.md at master · symcon/SymconMH · GitHub
durchgelesen, finde in IP-Symcon Manager die Inszanz nirgends
Verwende aktuellste Verrsion von IPS
Was übersehe ich?

Inst.jpg

Hast du das Modul auch installiert? Die Instanz gibt es nur, wenn du das Modul installierst ;).

Hallo, Danke, Modul war nicht installiert, jetzt funktioniert es

Hallo

Habe an der „Alpha 2“ Steuereinhet mit 8 Relais 5 Raumbedieneräte verknüpft.
Was ich bis jetzt herausgefunden habe, kann ich ein Relai nur über das Raumbediengerät ansprechen, und das auch nicht direkt.
Meine Frage, kann ich nicht direkt die Werte für
Heizkreis x Aktiv
Heizkreis x Aktor
Heizkreis x Aktor Prozent ansteuern.

Habe 2 Heizkreise die nicht über ein Raumbediengerät gesteuert werden.
Genauer, habe einen Zusatzheizstab in einem Heizkörper, wenn der Heizstab heizt, soll des Ventiel zumachen!
Ich möchte nicht 2 Raumbediengeräte kaufen nur um das Relai ansprechen zu können.

LG Markus