MAX! Geräte verlinken

Hallo zusammen,

ich würde gerne meine MAX! Geräte verlinken, ähnlich, wie es die MAX! Software selbst über die Raumkonfiguration kann.
Dabei sollen mehrere Thermostate und Fensterkontakte velrinkt werden können.

Ich habe hier einen Beitrag gefunden, der beschreibt, dass das grundsätzlich geht:
viewtopic.php?f=15&t=199&p=1379&hilit=raum#p1353

Allerdings fehlt hier z.B. die Variante, wie man 2 Thermostate miteinander verlinkt.
Gibt es irgendwo eine Übersicht, welche Geräte man wie über welche Kanäle miteinander verlinken kann?
Kann man diese Konfiguration auch über das homegear CLI vornehmen?

Danke & Viele Grüße
Alex

Hallo Alex,

du kannst alle MAX!-Geräte genauso verlinken, wie mit dem MAX!-Cube. Also vor allem:

[ul]
[li] Fensterkontakt mit Wandthermostat und Stellantrieb[/li]
[li] Wandthermostat mit Stellantrieb.[/li][/ul]

Ob der ECO-Taster verlinkt werden kann, weiß ich nicht sicher. Den würde ich aber ohnehin über Homegear- oder OpenHAB-Skripte nutzen :wink:.

Verlinken selbst kannst du am einfachsten über den HomeMatic-Konfigurator. Da es nach wie vor keine Konfigurationsoberfläche gibt, ansonsten nur über die HomegearLib.NET-Testanwendung oder Homegear-Skripte (mittels der RPC-Funktion addLink).

Viele Grüße

Sathya

Hallo Sathya,

vielen Dank für deine Antwort.
Ich schätze ich habe es etwas unklar formuliert:
Ich würde gerne die Skriptvariante nutzen um mittels addlink Geräte zu verlinken. So weit so gut.
Ich habe mehrere Räume wo ich mehrere Heizkörper mit Stellantrieben habe, die ich gerne direkt verlinken möchte und genau dafür finde ich bislang kein Beispiel (für addlink muss man ja Kanäle mit angeben)

Auch in den XML Definitionen der Devices finde ich keinen Hinweis, wo denn der ausgehende Kanal des Antriebs ist:
github.com/Homegear/Homegear-MA … -CyG-3.xml

Der HomeMatic-Konfigurator funktioniert bei mir aus unerklärlichen Gründen nicht, ich habe sowohl eine Direktverbindung als auch eine Verbindung über ssh Tunnel versucht. In beiden Fällen steht unten rechts in der Statusleiste dass eine Verbindung aufgebaut wird. Diese kommt aber auch nach minutenlangem Warten nicht zustande und es kommt auch keine Fehlermeldung. Mir wäre die Skriptvariante aber ohnehin lieber. Von der Software von eQ-3 halte ich nicht besonders viel… :wink:

Viele Grüße
Alex

Hallo Alex,

ah ok, hier die Kanäle:

Stellantrieb

[ul]
[li] Empfangskanal für Wandthermostat: 3[/li]
[li] Empfangskanal für Fensterkontakt: 4[/li][/ul]

Wandthermostat

[ul]
[li] Sendekanal für Stellantrieb: 1[/li][/ul]

Fensterkontakt

[ul]
[li] Sendekanal für Wandthermostat: 3[/li]
[li] Sendekanal für Stellantrieb: 1[/li][/ul]

Viele Grüße

Sathya

Hallo Sathya,

danke für die Übersicht. Mir fehlt leider immer noch eine Variante:

Wenn ich 2 Stellantriebe miteinander verlinken will, so dass eine Änderung der Temperatur/Modus/etc an einem Antrieb sich auf alle anderen verlinkten ebenso auswirkt, dafür müsste der Stellantrieb doch auch einen Sendekanal haben?! Oder unterstützt Homegear das bisher nicht?

Viele Grüße
Alex

Hallo Alex,

geht das denn? Ehrlich gesagt habe ich das selbst mit dem MAX!-Cube noch nicht probiert… Ich schaue mir das morgen an. Die zwei Test-Stellantriebe stehen bereits auf meinem Schreibtisch :wink:.

Viele Grüße

Sathya

So angeschaut und eingebaut :wink:. Ist im nächsten Commit und dann im nächsten 0.6-Nightly drin. Kanal ist auf beiden Seiten “1”.

Viele Grüße

Sathya

Hi Sathya,

super, vielen Dank!
Jetzt muss ich nur noch schauen, wie ich von der 0.5 auf die 0.6 komme.
Die 0.5 habe ich auf meinem raspian einfach über die Paketverwaltung installiert, die 0.6 muss man soweit ich das gesehen habe ja von Hand installieren.

Viele Grüße
Alex

Genau.

Super,
das ist genau was mir noch gefehlt hat. War gerade dabei einen Event einzubauen, der bei Änderung eines Stellers den anderen nachzieht. Werde das am Wochenende mal testen. Dann reicht ein Script für die Verlinkung aller Komponenten eines Raumes.

Hier das Script zum Testen. Es setzt gleich noch die Defaulttemperaturen der Steller.

!/usr/bin/env php
<?php
	$device1=26; //Homegear ID des Stellers1
	$device2=25; //Homegear ID des Stellers2
	hg_invoke("setValue", $device1, 1, "WINDOW_OPEN_TEMPERATURE", 5.0);
	hg_invoke("setValue", $device1, 1, "COMFORT_TEMPERATURE", 21.0);
	hg_invoke("setValue", $device1, 1, "ECO_TEMPERATURE", 17.0);
	hg_invoke("setValue", $device1, 1, "COMFORT_TEMPERATURE", 21.0);
	hg_invoke("setValue", $device1, 1, "DECALCIFICATION_TIME", 16);
	hg_invoke("setValue", $device1, 1, "DECALCIFICATION_WEEKDAY", 1);
// hg_invoke("setValue", $device1, 1, "TEMPERATURE_OFFSET", 9); //Falls nötig

	hg_invoke("setValue", $device2, 1, "WINDOW_OPEN_TEMPERATURE", 5.0);
	hg_invoke("setValue", $device2, 1, "COMFORT_TEMPERATURE", 21.0);
	hg_invoke("setValue", $device2, 1, "ECO_TEMPERATURE", 17.0);
	hg_invoke("setValue", $device2, 1, "COMFORT_TEMPERATURE", 21.0);
	hg_invoke("setValue", $device2, 1, "DECALCIFICATION_TIME", 16);
	hg_invoke("setValue", $device2, 1, "DECALCIFICATION_WEEKDAY", 1);
// hg_invoke("setValue", $device2, 1, "TEMPERATURE_OFFSET", 9); //Falls nötig

//	Linken der Komponenten
	print_r(hg_invoke("addLink","LEQFensterkontakt:1", "LEQSteller1:4")); //Fenster zu Thermostat2
	print_r(hg_invoke("addLink","LEQFensterkontakt:1", "LEQSteller2:4")); //Fenster zu Thermostat1 
	print_r(hg_invoke("addLink","LEQSteller2:1", "LEQSteller1:1")); //Thermostat2 zu Thermostat1
	print_r(hg_invoke("addLink","LEQSteller1:1", "LEQSteller2:1")); //Thermostat1 zu Thermostat2
?>

Grüße / Zennix

So, mir ist nun das Update auf homegear 0.6 gelungen, zumindest scheint es grundsätzlich zu funktionieren auch wenn beim Start ein paar Fehler kommen, dass irgendein Verzeichnis nicht da ist.

Ich habe mal das Verlinken probiert, aber ich bekomme weder vom Skript einen Output noch sehe ich sonst irgendwie dass es geklappt hat. Ohne Fehlermeldung ist es schwer zu erkennen, was da wohl schief gelaufen ist.
Auch das Orinigalskript von Zennix hat keine Wirkung gehabt. :frowning:

[code]!/usr/bin/env php

<?php // Linken der Komponenten $hg = new \Homegear\Homegear(); try { $hg = new \Homegear\Homegear(); $hg->invoke("addLink",3,1,1,4); $hg->invoke("addLink",3,1,2,4); print "done"; } catch(\Homegear\HomegearException $e) { print "Exception catched. Code: ".$e->getCode().". Message: ".$e->getMessage(); } ?>

[/code]

So sieht meine derzeitige Gerätekonfig aus:

code> ls
ID â Name â Address â Serial Number â Type â Type String â Firmware â Unreach
ââââââââââ¼ââââââââââââââââââââââââââââ¼ââââââââââ¼ââââââââââââââââ¼âââââââ¼ââââââââââââââââââââââââââââ¼âââââââââââ¼ââââââââ
â â â â â â â
1 â Ankleidezimmer â 10E740 â MKF0032650 â 01A0 â BC-RT-TRX-CyG-3 â 1.0 â No
2 â Schlafzimmer â 10E757 â MKF0032665 â 01A0 â BC-RT-TRX-CyG-3 â 1.0 â No
3 â Fenster Schlafzimmer â 0F6BA7 â LEQ1073230 â 0400 â BC-SC-Rd-WM-2 â 1.0 â No
ââââââââââ´ââââââââââââââââââââââââââââ´ââââââââââ´ââââââââââââââââ´âââââââ´ââââââââââââââââââââââââââââ´âââââââââââ´ââââââââ
[/code]

Wenn ich mir in homegear die verlinkten Geräte der Devices ansehe kommt folgendes:

code> peers list
No peers are paired to this peer.
[/code]

Hallo alexf2000,

hast du die queues nachgesehen? Werden die die geleert?

Gruß / Zennix

#!/usr/bin/env php
<?php
        print_r(hg_invoke("addLink","LEQ1073230:1", "MKF0032650:4")); //Fenster zu Thermostat
?>

Das script in /var/lib/homegear/scripts speichern
mit chmod +x scriptname ausführbar machen
dann homegear -e rs scriptname

Anschließend schaust du in der Queue nach ob es wirklich abgeschickt wurde. Falls nicht, schau deine Feldstärke nach. Bei mir klappts nur bei einer Feldstärke besser als -80dB.

Gruß / Zennix

Super danke, der entscheidende Hinweis war, dass das Skript im richtigen Verzeichnis liegen muss!

Ein wenig verwirrend finde ich noch die Syntax, mir ist z.B. nicht ganz klar, warum das hg_invoke für das Hinzufügen der Links noch in ein print_r eingebettet wird und zum Setzen der Temperaturen nicht.

Nachdem das Linken mit dem Fensterkontakt jetzt geklappt hat versuche mich mal an dem Rest. :slight_smile:

Nach ein bischen rumprobieren ist es mir gelungen, die Konfiguration der Zeitpläne auszulesen, allerdings weiß ich noch nicht so ganz wie ich Zeitpläne setze. Laut Dokumentation müsste der Ouput von “getParamSet” ganz anders aussehen als er bei mir aussieht und ich vermute, dass das Setzen mit 2putParamSet dann auch anders funktioniert.

Befehl zum auslesen:

#!/usr/bin/env php
<?php
        print_r(hg_invoke("getParamset", 1, 0, "MASTER"));
?>
root@r

Ouput (gekürzt):

Array ( [ENDTIME_FRIDAY_1] => 360 [ENDTIME_FRIDAY_10] => 1440 [ENDTIME_FRIDAY_11] => 1440 [ENDTIME_FRIDAY_12] => 1440 [ENDTIME_FRIDAY_13] => 1440 [ENDTIME_FRIDAY_2] => 540 [ENDTIME_FRIDAY_3] => 1020 [ENDTIME_FRIDAY_4] => 1380 [ENDTIME_FRIDAY_5] => 1440 [ENDTIME_FRIDAY_6] => 1440 [ENDTIME_FRIDAY_7] => 1440 [ENDTIME_FRIDAY_8] => 1440 [ENDTIME_FRIDAY_9] => 1440 ......... [TEMPERATURE_WEDNESDAY_1] => 17 [TEMPERATURE_WEDNESDAY_10] => 17 [TEMPERATURE_WEDNESDAY_11] => 17 [TEMPERATURE_WEDNESDAY_12] => 17 [TEMPERATURE_WEDNESDAY_13] => 17 [TEMPERATURE_WEDNESDAY_2] => 21 [TEMPERATURE_WEDNESDAY_3] => 17 [TEMPERATURE_WEDNESDAY_4] => 21 [TEMPERATURE_WEDNESDAY_5] => 17 [TEMPERATURE_WEDNESDAY_6] => 17 [TEMPERATURE_WEDNESDAY_7] => 17 [TEMPERATURE_WEDNESDAY_8] => 17 [TEMPERATURE_WEDNESDAY_9] => 17 )

Hallo Alex,

Du brauchst das “print_r” nicht. Dieses gibt nur eine mögliche Rückgabe aus. Wenn eine Funktion keine Rückgabe hat (wie addLink), ist es irrelevant.

Richtig. “putParamset” sieht so aus:

//                  GERÄTEID KANAL
// $hg->putParamset(   1,      0,  "MASTER", array("PARAMETERNAME" => WERT));
// Zum Beispiel (Temperatur am Freitag bis 7 Uhr auf 15 °C und bis 8 Uhr auf 21 °C):
$hg->putParamset(1, 0, "MASTER", array("ENDTIME_FRIDAY_1" => 420,
                                       "TEMPERATURE_FRIDAY_1" => 15.0,
                                       "ENDTIME_FRIDAY_2" => 480,
                                       "TEMPERATURE_FRIDAY_1" => 21.0
                                       ));

Viele Grüße

Sathya

Danke, das hat geklappt!

Leider muss ich feststellen, dass anscheinend seit dem Update auf 0.6 das PAiring nicht mehr funktioniert.
Anscheinend ist da etwas beim Upgrad von 0.5 auf 0.6 schief gelaufen oder es ist was falsch konfiguriert.

Ich bekomme beim Starten auch immer einen Fehler, der bisher scheinbar keine Auswirkungen hatte aber vielleicht hat das ja was mit dem PAring zu tun?!

[ ok ] Stopping Homegear: homegear.
chmod: cannot access `/usr/share/homegear/firmware': No such file or directory
chmod: cannot access `/usr/share/homegear/firmware/*': No such file or directory
chmod: cannot access `/usr/share/homegear/firmware/GetFirmwareUpdates*.sh': No such file or directory
[....] Starting Homegear: homegear11/21/15 21:44:46.273 Warning: Setting not found: physicalInterfaceSettingsPath
11/21/15 21:44:46.274 Warning: Setting not found: physicalInterfaceSettingsPath
11/21/15 21:44:46.276 Loading RPC server settings from /etc/homegear/rpcservers.conf
11/21/15 21:44:46.278 Loading RPC client settings from /etc/homegear/rpcclients.conf
. ok

Hey,

Das Anlernen sollte funktionieren - gerade getestet. Der Fehler beim Starten ist egal. Aber schick mir mal das Log von einem Anlernversuch, das sollte zeigen, warum es nicht klappt. Hast du versucht, vor dem Anlernen einen Werksreset zu machen?

Viele Grüße

Sathya

Nachtrag: Schon gelöst :wink:: viewtopic.php?f=15&t=413

Hmm die Verlinkung der Devices untereinander scheint noch nicht so zu funktionieren wie gewünscht.
So sieht meine Config aus:

(Device)> ps 6
Peer with id 6 and device type 0x1a0 selected.
For information about the peer's commands type: "help"
(Peer)> queues info
Number of Pending queues: 0
(Peer)> peers list
Channel: 1      Address: 0xdf85e        Remote channel: 1       Serial number: KEQ0990476
Channel: 4      Address: 0xf6722        Remote channel: 1       Serial number: LKF0019282
(Peer)> u
Peer unselected.

(Device)> ps 7
Peer with id 7 and device type 0x1a0 selected.
For information about the peer's commands type: "help"
(Peer)> peers list
Channel: 1      Address: 0xe1bde        Remote channel: 1       Serial number: KEQ1081431
Channel: 4      Address: 0xf6722        Remote channel: 1       Serial number: LKF0019282
(Peer)> u
Peer unselected.

(Device)> ps 8
Peer with id 8 and device type 0x400 selected.
For information about the peer's commands type: "help"
(Peer)> queues info
Number of Pending queues: 0
(Peer)> peers list
Channel: 1      Address: 0xe1bde        Remote channel: 4       Serial number: KEQ1081431
Channel: 1      Address: 0xdf85e        Remote channel: 4       Serial number: KEQ0990476

Wenn ich jetzt mittels MANU_MODE z.B. einen der Stellantriebe auf manuell stelle und eine Temperatur setze, dann bekommt der andere Antrieb das nicht mit und bleibt mit alter Temperatur im Auto-Mode.

Kann ich bestätigen. Das Linken zweier Steller klappt noch nicht.

11/27/15 18:00:24.949 Scriptengine (/var/lib/homegear/scripts/link_wohn_og.php): PHP Fatal error: Uncaught Homegear\HomegearException: Link not supported. in /var$
Stack trace:
#0 /var/lib/homegear/scripts/link_wohn_og.php(5): hg_invoke(‘addLink’, ‘LEQ0009141:1’, 'LEQ0008647:1)
#1 {main}
thrown in /var/lib/homegear/scripts/link_wohn_og.php on line 5

hg_invoke("addLink,"LEQsteller2:1", "LEQsteller1:1"); 
hg_invoke("addLink","LEQsteller1:1", "LEQsteller2:1"); 

Pairen von Fensterkontakt und Steller funktioniert.
Habe Version 0.6.0-1056 versucht.

Gruß / Zennix