Homematic Direktverknüpfung per Skript anpassen

Ich habe den Klingelsignalsensor hm-sen-pcb-db erfolgreich mit dem mp3-Gong hm-cfm-ou-tw über openHAB verbunden.

Funktioniert, hat aber eine Verzögerung. Bei einer Direktverknüpfung geht es schneller.

Allerdings finde ich es nett, den Klingelton von Zeit zu Zeit ändern. Das kann ich komfortabel, wenn alles in openHAB ist, bei einer Direktverbindung kann ich das bisher nur über den Homematic Konfigurator. Komfortabel ist anders. :wink:

Ist es möglich bzw. wird nicht davon abgeraten, die Parameter einer bestehenden Direktverknüpfung mittels Skripts zu verändern?

So sehen die Parameter im Konfigurator aus:

So sieht der Link-Block des MP3-Gongs aus:

LINK
{
        Channel: 2
        {
                Address: 0x3d0bff
                {
                        Remote channel: 1
                        {
                                [UI_HINT]: 31
                                [SHORT_ON_TIME]: ff
                                [SHORT_ONDELAY_TIME]: 00
                                [SHORT_OFF_TIME]: ff
                                [SHORT_OFFDELAY_TIME]: 00
                                [SHORT_JT_ONDELAY]: 01
                                [SHORT_JT_ON]: 00
                                [SHORT_JT_OFFDELAY]: 01
                                [SHORT_CT_OFFDELAY]: 01
                                [SHORT_COND_VALUE_HI]: b4
                                [SHORT_ACT_TYPE]: 03
                                [SHORT_ACT_NUM]: 01
                                [SHORT_ACT_INTENS]: ff
                                [SHORT_CT_ON]: 01
                                [LONG_CT_ONDELAY]: 00
                                [LONG_OFF_TIME_MODE]: 00
                                [LONG_CT_OFF]: 00
                                [LONG_COND_VALUE_LO]: 32
                                [SHORT_COND_VALUE_LO]: 32
                                [LONG_CT_OFFDELAY]: 00
                                [LONG_OFFDELAY_TIME]: 00
                                [LONG_COND_VALUE_HI]: 64
                                [SHORT_JT_OFF]: 01
                                [LONG_ACT_TYPE]: 03
                                [LONG_ACT_INTENS]: ff
                                [SHORT_CT_ONDELAY]: 01
                                [LONG_ACT_NUM]: 01
                                [LONG_ACTION_TYPE]: 00
                                [LONG_JT_OFF]: 06
                                [SHORT_ON_TIME_MODE]: 00
                                [LONG_ONDELAY_TIME]: 00
                                [LONG_JT_ONDELAY]: 00
                                [SHORT_OFF_TIME_MODE]: 00
                                [LONG_CT_ON]: 00
                                [LONG_MULTIEXECUTE]: 01
                                [SHORT_CT_OFF]: 01
                                [LONG_OFF_TIME]: ff
                                [LONG_JT_OFFDELAY]: 00
                                [LONG_ON_TIME_MODE]: 00
                                [LONG_JT_ON]: 00
                                [LONG_ON_TIME]: ff
                                [SHORT_ACTION_TYPE]: 01
                        }
                }
                Address: 0x5ae927
                {
                        Remote channel: 2
                        {
                                [UI_HINT]: 00
                                [SHORT_ON_TIME]: ff
                                [SHORT_ONDELAY_TIME]: 00
                                [SHORT_OFF_TIME]: ff
                                [SHORT_OFFDELAY_TIME]: 00
                                [SHORT_JT_ONDELAY]: 00
                                [SHORT_JT_ON]: 00
                                [SHORT_JT_OFFDELAY]: 00
                                [SHORT_CT_OFFDELAY]: 00
                                [SHORT_COND_VALUE_HI]: 64
                                [SHORT_ACT_TYPE]: 00
                                [SHORT_ACT_NUM]: 01
                                [SHORT_ACT_INTENS]: ff
                                [SHORT_CT_ON]: 00
                                [LONG_CT_ONDELAY]: 00
                                [LONG_OFF_TIME_MODE]: 00
                                [LONG_CT_OFF]: 00
                                [LONG_COND_VALUE_LO]: 32
                                [SHORT_COND_VALUE_LO]: 32
                                [LONG_CT_OFFDELAY]: 00
                                [LONG_OFFDELAY_TIME]: 00
                                [LONG_COND_VALUE_HI]: 64
                                [SHORT_JT_OFF]: 01
                                [LONG_ACT_TYPE]: 00
                                [LONG_ACT_INTENS]: ff
                                [SHORT_CT_ONDELAY]: 00
                                [LONG_ACT_NUM]: 01
                                [LONG_ACTION_TYPE]: 01
                                [LONG_JT_OFF]: 01
                                [SHORT_ON_TIME_MODE]: 00
                                [LONG_ONDELAY_TIME]: 00
                                [LONG_JT_ONDELAY]: 00
                                [SHORT_OFF_TIME_MODE]: 00
                                [LONG_CT_ON]: 00
                                [LONG_MULTIEXECUTE]: 01
                                [SHORT_CT_OFF]: 00
                                [LONG_OFF_TIME]: ff
                                [LONG_JT_OFFDELAY]: 00
                                [LONG_ON_TIME_MODE]: 00
                                [LONG_JT_ON]: 00
                                [LONG_ON_TIME]: ff
                                [SHORT_ACTION_TYPE]: 01
                        }
                        Remote channel: 1
                        {
                                [UI_HINT]: 00
                                [SHORT_ON_TIME]: ff
                                [SHORT_ONDELAY_TIME]: 00
                                [SHORT_OFF_TIME]: ff
                                [SHORT_OFFDELAY_TIME]: 00
                                [SHORT_JT_ONDELAY]: 06
                                [SHORT_JT_ON]: 00
                                [SHORT_JT_OFFDELAY]: 06
                                [SHORT_CT_OFFDELAY]: 00
                                [SHORT_COND_VALUE_HI]: 64
                                [SHORT_ACT_TYPE]: 00
                                [SHORT_ACT_NUM]: 01
                                [SHORT_ACT_INTENS]: ff
                                [SHORT_CT_ON]: 00
                                [LONG_CT_ONDELAY]: 00
                                [LONG_OFF_TIME_MODE]: 00
                                [LONG_CT_OFF]: 00
                                [LONG_COND_VALUE_LO]: 32
                                [SHORT_COND_VALUE_LO]: 32
                                [LONG_CT_OFFDELAY]: 00
                                [LONG_OFFDELAY_TIME]: 00
                                [LONG_COND_VALUE_HI]: 64
                                [SHORT_JT_OFF]: 06
                                [LONG_ACT_TYPE]: 00
                                [LONG_ACT_INTENS]: ff
                                [SHORT_CT_ONDELAY]: 00
                                [LONG_ACT_NUM]: 01
                                [LONG_ACTION_TYPE]: 01
                                [LONG_JT_OFF]: 06
                                [SHORT_ON_TIME_MODE]: 00
                                [LONG_ONDELAY_TIME]: 00
                                [LONG_JT_ONDELAY]: 00
                                [SHORT_OFF_TIME_MODE]: 00
                                [LONG_CT_ON]: 00
                                [LONG_MULTIEXECUTE]: 01
                                [SHORT_CT_OFF]: 00
                                [LONG_OFF_TIME]: ff
                                [LONG_JT_OFFDELAY]: 00
                                [LONG_ON_TIME_MODE]: 00
                                [LONG_JT_ON]: 00
                                [LONG_ON_TIME]: ff
                                [SHORT_ACTION_TYPE]: 01
                        }
                }
                Address: 0x4e02a0
                {
                        Remote channel: 1
                        {
                                [UI_HINT]: 31
                                [SHORT_ON_TIME]: ff
                                [SHORT_ONDELAY_TIME]: 00
                                [SHORT_OFF_TIME]: ff
                                [SHORT_OFFDELAY_TIME]: 00
                                [SHORT_JT_ONDELAY]: 00
                                [SHORT_JT_ON]: 00
                                [SHORT_JT_OFFDELAY]: 00
                                [SHORT_CT_OFFDELAY]: 00
                                [SHORT_COND_VALUE_HI]: 64
                                [SHORT_ACT_TYPE]: 06
                                [SHORT_ACT_NUM]: 01
                                [SHORT_ACT_INTENS]: ff
                                [SHORT_CT_ON]: 00
                                [LONG_CT_ONDELAY]: 00
                                [LONG_OFF_TIME_MODE]: 00
                                [LONG_CT_OFF]: 00
                                [LONG_COND_VALUE_LO]: 32
                                [SHORT_COND_VALUE_LO]: 32
                                [LONG_CT_OFFDELAY]: 00
                                [LONG_OFFDELAY_TIME]: 00
                                [LONG_COND_VALUE_HI]: 64
                                [SHORT_JT_OFF]: 01
                                [LONG_ACT_TYPE]: 06
                                [LONG_ACT_INTENS]: ff
                                [SHORT_CT_ONDELAY]: 00
                                [LONG_ACT_NUM]: 01
                                [LONG_ACTION_TYPE]: 01
                                [LONG_JT_OFF]: 01
                                [SHORT_ON_TIME_MODE]: 00
                                [LONG_ONDELAY_TIME]: 00
                                [LONG_JT_ONDELAY]: 00
                                [SHORT_OFF_TIME_MODE]: 00
                                [LONG_CT_ON]: 00
                                [LONG_MULTIEXECUTE]: 01
                                [SHORT_CT_OFF]: 00
                                [LONG_OFF_TIME]: ff
                                [LONG_JT_OFFDELAY]: 00
                                [LONG_ON_TIME_MODE]: 00
                                [LONG_JT_ON]: 00
                                [LONG_ON_TIME]: ff
                                [SHORT_ACTION_TYPE]: 01
                        }
                }
                Address: 0x4bbac4
                {
                }
                Address: 0x4e0298
                {
                        Remote channel: 1
                        {
                                [UI_HINT]: 31
                                [SHORT_ON_TIME]: ff
                                [SHORT_ONDELAY_TIME]: 00
                                [SHORT_OFF_TIME]: ff
                                [SHORT_OFFDELAY_TIME]: 00
                                [SHORT_JT_ONDELAY]: 00
                                [SHORT_JT_ON]: 00
                                [SHORT_JT_OFFDELAY]: 00
                                [SHORT_CT_OFFDELAY]: 00
                                [SHORT_COND_VALUE_HI]: 64
                                [SHORT_ACT_TYPE]: 05
                                [SHORT_ACT_NUM]: 01
                                [SHORT_ACT_INTENS]: f0
                                [SHORT_CT_ON]: 00
                                [LONG_CT_ONDELAY]: 00
                                [LONG_OFF_TIME_MODE]: 00
                                [LONG_CT_OFF]: 00
                                [LONG_COND_VALUE_LO]: 32
                                [SHORT_COND_VALUE_LO]: 32
                                [LONG_CT_OFFDELAY]: 00
                                [LONG_OFFDELAY_TIME]: 00
                                [LONG_COND_VALUE_HI]: 64
                                [SHORT_JT_OFF]: 01
                                [LONG_ACT_TYPE]: 05
                                [LONG_ACT_INTENS]: f0
                                [SHORT_CT_ONDELAY]: 00
                                [LONG_ACT_NUM]: 01
                                [LONG_ACTION_TYPE]: 01
                                [LONG_JT_OFF]: 01
                                [SHORT_ON_TIME_MODE]: 00
                                [LONG_ONDELAY_TIME]: 00
                                [LONG_JT_ONDELAY]: 00
                                [SHORT_OFF_TIME_MODE]: 00
                                [LONG_CT_ON]: 00
                                [LONG_MULTIEXECUTE]: 01
                                [SHORT_CT_OFF]: 00
                                [LONG_OFF_TIME]: ff
                                [LONG_JT_OFFDELAY]: 00
                                [LONG_ON_TIME_MODE]: 00
                                [LONG_JT_ON]: 00
                                [LONG_ON_TIME]: ff
                                [SHORT_ACTION_TYPE]: 01
                        }
                }
        }
}

Es scheint mir, als wenn ich nur SHORT_ACT_TYPE bzw. LONG_ACT_TYPE umstellen müßte. Aber wie kann ich den Link-Block ändern? Ich habe bisher nur Werte in Master verändert.

Es geht genau um folgende Werte.
Klingel 1:

[LINK].[Channel2].[Adress: 0x4e02a0].[Remote channel: 1].[SHORT_ACT_TYPE]
[LINK].[Channel2].[Adress: 0x4e02a0].[Remote channel: 1].[LONG_ACT_TYPE]

Klingel 2:

[LINK].[Channel2].[Adress: 0x4e0298].[Remote channel: 1].[SHORT_ACT_TYPE]
[LINK].[Channel2].[Adress: 0x4e0298].[Remote channel: 1].[LONG_ACT_TYPE]

Wäre das der richtige Weg?

putParamset(26, 2, 75, 1, array("SHORT_ACT_TYPE" => x, "LONG_ACT_TYPE" => x ))
putParamset(26, 2, 76, 1, array("SHORT_ACT_TYPE" => y, "LONG_ACT_TYPE" => y ))

26 ist die PeerId des Gongs, 75 bzw. 76 sind die PeerIds der Klingelsensoren (Adresse 0x4E0298 bzw.0x4E02A0 ). Natürlich ist vorrausgesetzt, dass die Werte x bzw. y als mp3-Dateien vorhanden sind.

(irgendwie scheint der vorformatierte Text bei mir nicht immer zu funktionieren)

Kurze Anmerkung zur Formatierung: Vor dem Code-Block muss eine Leerzeile sein, damit Discourse es richtig formatiert.

1 Like

So, ich habe es jetzt einfach mal weiter durchgeführt. Es funktioniert prinzipiell, aber nicht aus openHAB

Ich habe ein Skript erstellt, um es von openHAB ausführen zu lassen:

#!/bin/sh

GONGID=26
PEERID=$1
SOUNDID=$2

/usr/bin/homegear -e rc "\$hg->putParamset($GONGID, 2, $PEERID, 1, array(\"SHORT_ACT_TYPE\" => $SOUNDID, \"LONG_ACT_TYPE\" => $SOUNDID ));"

Wenn ich das Skript nun über die Shell ausführe, funktioniert das, und die Direktverknüpfung wird geändert. Benutze ich aber folgende rule in openHAB, geht das nicht.

rule "f2db set sound"
when
    Item F2DB_SetDirect received command ON
then    
    val String modifyLink = String::format("/etc/openhab2/exec-scripts/SetDoorbellSound.sh 75 %s",F2DB_Sound.state.toString)
    val String msg = executeCommandLine(modifyLink)
    logInfo("klingel", msg)
    F2DB_SetDirect.postUpdate(OFF)
end

Im log von openHAB habe ich folgendes bei Aufruf über openHAB:

2017-12-04 06:16:57.614 [INFO ] [lipse.smarthome.io.net.exec.ExecUtil] - executed commandLine '/etc/openhab2/exec-scripts/SetDoorbellSound.sh 75 8'
2017-12-04 06:16:57.619 [INFO ] [lipse.smarthome.model.script.klingel] - null

Führe ich das Skript (/etc/openhab2/exec-scripts/SetDoorbellSound.sh 75 8) über die Kommandozeile aus, steht allerdings folgendes im Log von openHAB:

2017-12-04 06:22:38.727 [hingStatusInfoChangedEvent] - 'homematic:HG-HM-OU-CFM-TW:homegear:NEQ0772197' changed from ONLINE to ONLINE (CONFIGURATION_PENDING)
2017-12-04 06:22:39.931 [hingStatusInfoChangedEvent] - 'homematic:HG-HM-OU-CFM-TW:homegear:NEQ0772197' changed from ONLINE (CONFIGURATION_PENDING) to ONLINE

Das heißt, irgendwie scheint das Kommando bei Ausführung aus openHAB nicht vollständig zu Homegear durchzudringen.

Hat jemand eine Idee wieso?

1 Like

So, habe es selbst herausgefunden: Berechtigungen.

openHAB führt Skripte unter dem user openhab aus, nicht unter openhabian, dem user, mit dem man sich normalerweise anmeldet.

Daher habe ich den Benutzer openhab der Gruppe homegear hinzugefügt, homegear neu gestartet, und auf schon geht es. Zusätzlich habe ich den entsprechenden Änderungswunsch an das openhabian-git gemeldet.

2 Likes

Einen super @job machst du, danke! :slight_smile:

1 Like

Danke. :smiley: