Wie 'bindet' man Eingänge/Ausgänge?

Hallo,

ich habe gerade Versucht mit Homegear die ersten Schritte in Richtung Home-Automation zu wagen. Ich habe bisher nur ein Gerät welches von meiner Homegear Installation auch erfolgreich via. USB/RS485 Dongle erkannt wird:

[code]> peers list
ID │ Address │ Serial Number │ Type │ Type String │ Firmware │ Unreach
─────────┼──────────┼───────────────┼──────┼───────────────────────────┼──────────┼────────
│ │ │ │ │ │
1 │ 0000C084 │ JEQ0713798 │ 1200 │ HMW-IO-12-Sw7-DR │ 3.06 │ No
─────────┴──────────┴───────────────┴──────┴───────────────────────────┴──────────┴────────

[/code]

Es handelt sich bei dem Gerät um ein 7-Ausgang Relais Block mit 12 Eingängen. Meine Frage lautet nun ob es nicht möglich ist via. Homegear z.B. Eingang 1 dem Ausgang 1 zuzuweisen, 2 auf 2 etc. - das wäre für mich ein erster Schritt da das Modul im Auslieferungszustand überhaupt nichts schaltet. Homegear zeigt mir jedoch nur 4 Optionen für diesen Peer und das folgende Kommando zeigt mir dass nichts zugewiesen ist:

> peers list No peers are paired to this peer.

Frage: Ist es irgendwie möglich die Eingänge den Ausgängen zuzuweisen? Oder ist Homegear eher dahingehend entwickelt dass man von Homegear aus alle Logik steuert? Wenn ja, wie könnte ich dann Ausgang 1 des Relais Moduls z.B. einfach via. Commandline an/ausschalten?

Vielen Dank!
Michael

Hey Michael,

ich habe leider kein HMW-IO-12-Sw7-DR zum Testen, aber es müsste eigentlich gehen, die Ein- und Ausgänge direkt zu verknüpfen. Der zweite Weg wäre, in Homegear ein Ereignis zu erzeugen, welches bei Änderung am Eingang den Ausgang schaltet. Für beides hier eine kurze Anleitung.

[size=150]Ein- und Ausgänge verknüpfen[/size]

Leider besitzt Homegear noch keine Weboberfläche zur Konfiguration. Es müsste aber funktionieren, den “HomeMatic-Konfigurator” zu verwenden (findest du auf der HomeMatic Homepage).

Alternativ kannst du ein PHP-Script zum verknüpfen verwenden (einfach in “/var/lib/homegear/scripts/link.php” speichern):

#!/usr/bin/env php
<?php
require_once("HM-XMLRPC-Client/Client.php");
$Client = new \XMLRPC\Client("localhost", 2001);

//Eingänge sind Kanal 1 bis 12, Ausgänge Kanal 13 bis 19. Für mehr Informationen zu addLink siehe: https://www.homegear.eu/index.php/AddLink
print_r($Client->send("addLink", array(
										1, //ID des sendenden Geraetes
										1, //Kanal des Eingangs
										1, //ID des empfangenden Geraetes
										13 //Kanal des Ausgangs
									)));

?>

Dieses Script kannst du dann einfach mit “/var/lib/homegear/scripts/link.php” ausführen. Danach sollte der Eingang mit dem Ausgang verknüpft sein. Was dann beim Schalten passiert, lässt sich durch setzen diverser Konfigurationsparameter einstellen. Die einstellbaren Parameter findest du in der XML-Datei (hmw_io12_sw7_dr.xml). Letztere sind nicht ganz selbsterklärend. Wenn du weitere Infos zu den Parametern brauchst, sag bescheid. Eine Erklärung sämtlicher Parameter ist mir hier zu aufwändig :unamused:.

[size=150]Ereignisse[/size]

Alternativ lassen sich Ereignisse verwenden. Diese kannst du mit der RPC-Funktion “addEvent” (https://www.homegear.eu/index.php/AddEvent) erzeugen. Auch hierfür ein Beispielscript (packs in /var/lib/homegear/scripts/createEvent.php):

#!/usr/bin/env php
<?php
require_once("HM-XMLRPC-Client/Client.php");
$Client = new \XMLRPC\Client("localhost", 2001);

print_r($Client->send("addEvent", array(
									"TYPE" => 0, //Getriggertes Ereignis
									"ID" => "Schalter 1", //Ein beliebiger Name zum identifizieren des Ereignisses
									"PEERID" => 1, //ID des HMW-IO-12-Sw7-DR
									"PEERCHANNEL" => 1, //Kanal des Einganges (1 bis 12)
									"VARIABLE" => "PRESS_SHORT", //"PRESS_SHORT" oder "PRESS_LONG" (siehe XML-Datei hmw_io12_sw7_dr.xml)
									"TRIGGER" => 8, //Der Wert der Variablen muss "TRIGGERVALUE" entsprechen, damit das Ereignis ausgeloest wird
									"TRIGGERVALUE" => true, //Wenn "PRESS_SHORT" "true" ist, wird das Ereignis ausgeloest
									"EVENTMETHOD" => "setValue", //RPC-Funktion, die durch das Ereignis aufgerufen wird
									"EVENTMETHODPARAMS" => Array( //Parameter, die an die Funktion "setValue" uebergeben werden
																1, //ID des HMW-IO-12-Sw7-DR
																13, //Kanal des Ausgangs
																"INSTALL_TEST", //Name der Variablen, die gesetzt werden soll. "INSTALL_TEST" toggled den Schalter
																true) //Fuer "INSTALL_TEST" egal
									)));

?>

Jetzt /var/lib/homegear/scripts/createEvent.php ausführen und mit jedem Kontakt am Eingang wird der Schalter getoggled.

Wenn du den Schalter unabhängig von Ereignissen über die Kommandozeile ein- und ausschalten möchtest, kannst du die Funktion “setValue” (siehe https://www.homegear.eu/index.php/SetValue) verwenden:

print_r($Client->send("setValue", array(1, 13, "STATE", true)));

Ich hoffe, das hilft dir weiter. Wenn du noch weitere Fragen hast oder Hilfe beim Scripting benötigst, sag bescheid :wink:.

Liebe Grüße

Sathya

Hallo Sachen,

Vielen Dank für die prompte Hilfe. Ich habe gestern ich via. Dem kleinen php example meine Relais schalten können. Ein erster Erfolg! Das mit link.php werde ich in zwei Wochen ausprobieren da ich solange kein Raspberry bei mir habe. Ein paar basic links möchte ich erstellen um einfach eine gewisse ausfallsicherheit zu haben. Sonst geht ohne Raspberry ja kein einziges Licht mehr an :slight_smile: Später werde ich dann natürlich auch das ganze mit php bzw. Für meine mobile Geräte implementieren.

Für die HW Kompatibilitätsliste evtl noch die Info:

USB-RS485-WE-1800-BT (FTDI chip) funktioniert bei mir.

Vielen Dank!
Michael

[quote]Für die HW Kompatibilitätsliste evtl noch die Info:

USB-RS485-WE-1800-BT (FTDI chip) funktioniert bei mir. [/quote]

Steht jetzt drauf :wink:.

Hallo !

Ich habe auch ein “HMW-IO-12-Sw7-DR”, und versuche die Ein- und Ausgänge direkt zu verknüpfen.

Das funktioniert wunderbar, mit einer Verknüpfung :

Danach sieht es so :

$Client->send("getLinks", array())

Array
(
    [0] => Array
        (
            [DESCRIPTION] => 
            [FLAGS] => 3
            [NAME] => 
            [RECEIVER] => MEQ0278695:13
            [RECEIVER_CHANNEL] => 13
            [RECEIVER_ID] => 2
            [SENDER] => MEQ0278695:3
            [SENDER_CHANNEL] => 3
            [SENDER_ID] => 2
        )

)

Soweit so gut …

Versuche ich jetzt aber eine zweite Verknüpfung, hier zB.

Dnn bekomme ich folgende Fehlermeldung :

Array
(
    [faultCode] => -32500
    [faultString] => Can't get free eeprom address to store config.
)

Wenn ich die erste Verknüpfung lösche, dann kann ich die zweite einwandfrei hersellen.

Heißt das etwa, das Gerät unterstützt nur maximal EINE direkte Verknüpfung auf die Art ??

Oder mache ich da noch etwas falsch ?

Hey,

es sollte mehr als eine Verknüpfung funktionieren. Hast du mal einen Werksreset probiert? Falls ja, post mal das Log vom Verknüpfungsversuch. Hast du Homegear 0.5 oder 0.6 am Laufen?

Viele Grüße

Sathya

Hallo !

Nach dem Reset war der Homematic HMW weg und auch nicht mehr wieder zu finden.

Beim Versuch mit “search” bekomme ich im log Meldungen wie :

01/31/16 16:58:15.825 Module HomeMatic Wired: RS485 Module “My-RS485”: Info: Sending: FD0000000003026C76
01/31/16 16:58:15.879 Module HomeMatic Wired: RS485 Module “My-RS485”: Error sending HomeMatic Wired packet: No sending detected.

Sieht irgendwie so aus als stimmt etwas mit meinem RS485 Modul nicht, bzw. es hat den Geist aufgegeben.

Hallo !

Tatsächlich, heute ist mein nachbestelltes MAX485 Modul gekommen, das kaputte ausgetauscht, RS485 Bus Verkabelung überprüft und … alles Funktioniert wie erwartet, ich knn jetzt uch weitere Links erstellen ohne Error :wink:

Vielen Dank für den Support und ich wollte noch hinzufügen, daß das Homegear und das Engagement hier eine super Sache ist !

Gruß Robert.

Eine Frage dazu :

Kann ih bei Verwendung von “addlink” zwischen einem Ein- und Ausgang wie oben, auch irgendwo festlegen, daß kein Toggle verwendet wird sondern der Ausgang fix Ein oder geschaltet wird ?
So wie in dem Command Line Beispiel.
Die Aufgabe wäre, einen Schalter zu haben, der zB. sämtliche verknüpfte Ausgänge “aus” schaltet.
Bzw. einen Anderen, der diese alle “Ein” schaltet … also keinen Toggle.

Oder geht das nr über ein Event ?

Gruß,
Robert

Hallo,

Ich beschäftige mich mit dem hmwio12_sw7_dr.xml file und versuche dort zu finden, welcher Parameter da zuständig sein könnte, wenn ich statt einem toggle den STATE auf true oder false (Ausgang aus oder an) setzen will …
Komme da aber nicht so richtig weiter … wo das geändert werden könnte.

Ich habe also einen Eingang mit einem Ausgang per addLink verknüpft, und das geht, jedesmal wenn ich den Taster betätige, geht Licht an bzw. aus.
Aber ich finde nicht, wo ich Verhalten da jetzt ändern könnte, daß bei einer Betätigug des Schalters das licht zB. immer aus geht, STATE = false.

Gruß
Robert

1 Like

Hallo @flappadap,

das könnte über die Linkkonfigurationsparameter gehen. Vielleicht lässt sich die Option im HomeMatic-Konfigurator auswählen. Das würde ich als erstes probieren. Falls nicht, such mal im HomeMatic-Forum, wie die Konfigurationsparameter gesetzt werden müssen - ich müsste selbst suchen. Wirklich selbsterklärend sind die Parameter leider nicht. Das einfachste ist vermutlich wirklich, das Ganze über “Events” oder ein Tool wie Node-RED zu realisieren.

Viele Grüße

Sathya

Hallo @sathya ,

Vielen Dank für den Tipp. In der Tat sind das viele Parameter und die Namen sind wirklich nicht selbsterklärend …

Dann probiere ich vielleicht mal den HomeMatic Konfigurator aus, dazu muß ich erstmal ein Windows organisieren :wink:

Ich glaube ich nehme erstmal events …

Gruß
Robert