Steuerbefehle für Keymatic?

Hallo,
ich habe seit gestern eine Keymatic HM. Die Hardware-Istallation verlief Problemlos, auch das Anlernen des Handsenders. Die Anbindung an IPS via LAN-Konfigurationsadapter verlief äusserst frustrierend und dauerte 8 Stunden (vermutlich wegen fehlendem .Net 3.5 xx - aber keinerlei Fehlermeldungen).
Dank der Infos hier im Forum und Google läuft nun es aber, ich kann die Keymatic und den Sender in IPS sehen, der Status wird empfangen, ich kann Keymatic per


HM_WriteValueBoolean($ID_KM /*[Haussteuerung\Sensoren_Aktoren\Diele\Wohnungstür]*/, "OPEN", true);

öffnen, soweit alles prima. Allerdings hab ich noch nit herausbekommen wie ich die Tür wieder verriegle. Probiert habe ich


HM_WriteValueBoolean($ID_KM /*[Haussteuerung\Sensoren_Aktoren\Diele\Wohnungstür]*/, "CLOSE", true);


HM_WriteValueBoolean($ID_KM /*[Haussteuerung\Sensoren_Aktoren\Diele\Wohnungstür]*/, "OPEN", false);

etc, führt aber immer zu Fehlermeldungen oder zur Türentrieglung - nicht aber zur Türverrieglung. Kann mir hier jemand aufs Pferd helfen (ich tu mich als Neueinsteiger noch etwas schwer mit Programmierung)?

Hallo.

Verriegeln:
HM_WriteValueBoolean($ID_KM /[Haussteuerung\Sensoren_Aktoren\Diele\Wohnungstür]/, „STATE“, false);

Entriegeln:
HM_WriteValueBoolean($ID_KM /[Haussteuerung\Sensoren_Aktoren\Diele\Wohnungstür]/, „STATE“, true);

Öffnen:
HM_WriteValueBoolean($ID_KM /[Haussteuerung\Sensoren_Aktoren\Diele\Wohnungstür]/, „OPEN“, true);

Grüsse.

wow, das ging schnell, danke sehr !
Jetzt fällt auch der Groschen: man gibt zunächst die ID der anzusteuernden Instanz an, anschliessend die Variable („STATUS“) und dann den für diese Variable gewünschen Steuerungsbefehl (true) (bis eben dachte ich noch anders herum (für die letzten beiden Parameter).

Das bringt mich auf eine weitere Frage:
unterhalb meiner KM-Instanz habe ich die Variablen (von IPS automatisch angelegt):

ERROR
INHIBIT
STATE_UNCERTAIN
STATE

fehlt da nicht die Variable OPEN (ich schliesse das aus dem Befehl HM_WriteValueBoolean(ID, „OPEN“, true) ?

1 „Gefällt mir“

Hallo.

Wenn es „OPEN“ als Variable gäbe, dann wäre Sie sehr wahrscheinlich angelegt worden. Ich habe „OPEN“ nur über die Datenpunkte in der Homematic-Doku auf der EQ3-Seite gefunden und dort steht das - wenn ich mich recht entsinne - als reine Schreibinstanz drin, also nix lesen. Daher kommt die wohl auch nicht rüber in IPS.

Grüsse.

Ok, verstanden. Nochmals herzlichen Dank für die schnelle und verständliche Hilfe. Ich werd mir dann die HM-Doku besorgen, vielleich kapier ich ja dann noch etwas mehr :slight_smile:

Hi Leute!

Ich verfolge die Diskussionen zur Keymatic seit kurzem mit regem Interesse. Ich hab seit drei Jahren so ein Ding an der Haustür und frage mich schon die längste Zeit wie ich das Teil in IPS einbinden könnte. Soweit ich gelesen habe gibt es von Keymatic mittlerweile eine neuere Version als die, die bei mir eingebaut ist.

Funktioniert meine alte auch mit diesem LAN-Adapter und lässt sich somit in IPS einbinden oder brauche ich dafür die neuste Keymatic Version??

Wyr schon mal kurz davor einen Handsender umzufunktionieren und an ne SPS zu hängen, hat ja hier auch schon mal jemand gemacht!

Hallo Hofimax.

Wenn das Teil drei Jahre alt ist arbeitet es sicher nicht mit Homematic zusammen und daher auch nicht mit dem LAN-Adapter. Auch jetzt werden noch unterschiedliche Versionen vertrieben wobei die teuerste Variante die zu Homematic kompatible ist. Du müsstest daher leider eine neue Keymatic an die Tür schrauben.

Grüsse.

Danke für die Info, ich habs befürchtet :wink:

Wobei die neue ja jede Menge Vorteile bietet so wie ich gelesen habe. Mal sehen ob ich diese Investition mal wagen werde! Wo kauft ihr die Homematic Teile, beim grossen E?

Wie erkenne ich denn die Version die zu Homematic kompatibel ist, ausser am Preis?

Das passende Teil hat die Herstellerbezeichnung HM-Sec-Key-?
Das Fragzeichen codiert die farbliche Ausführung.

Du kannst die Keymatic auch hier im Shop kaufen. Einfach mal bei Steiner anfragen. Gibt für Lizenzinhaber auch einen Rabatt

Hallo,

ich möchte dieses Thema gerne noch einmal zum Leben erwecken und kein separaten Thread mit dem gleichen Thema erstellen.

Auch ich versuche aktuell mein KeyMatic mit IP-symcon in Betrieb zu bekommen. Beim Anlegen der passenenden HomeMatic-Instanz muss auch ich feststellen, dass die Status-Variable OPEN zum öffnen des Schlosses bei mir fehlt und ich nicht ohne weitere Zutun meine Tür öffnen kann.

Nach einigen Recherchen hier im Forum habe ich dann einfach eine zusätzliche Bool-Variable in meiner KeyMatic-Instanz mit dem Namen OPEN angelegt. Wenn ich diese Variable anspreche (egal ob mit true oder false), öffnet auch meine Tür.

Mir stellt sich nun jedoch die Frage, weshalb diese Variable bei mir nicht automatisch mit angelegt wird, wenn dieses Problem scheinbar bereits bekannt ist. Gibt es hierfür einen besonderen Grund?

Viele Dank für die Hilfe.

Genau das ist der Punkt - der Datenpunkt ist vom Typ „action“ - d.h. einen definitiven Status gibt er Dir nicht wieder - es macht also wenig Sinn diesen im Objektbaum zu haben. Der DP ist, wie der Typ schon sagt, dafür gedacht eine Aktion auszulösen. Aus einem Skript wäre das z.B. ein

HM_WriteValueBoolean($KM_ID, "OPEN", true);

Die verfügbaren Datenpunkte mit Beschreibung für sämtliche HM-Geräte kannst Du Dir in der DP-Doku von eQ3 erlesen.

Beste Grüße
/Jens

Hallo Jens,

vielen Dank für deine Antwort. Das hat mir bereits weitergeholfen.

Ich dachte bisher, dass die anzusteuernden Datenpunkte/Aktionpunkte als Variable in IPS angelegt sein müssen. Mit deinem Hinweis habe ich nun festgestellt, dass dies, speziell im Fall von OPEN der KeyMatic, nicht zwingend der Fall sein muss.

Viele Grüße,
bition

Das liegt daran, dass es Datenpunkte gibt welche nur beschrieben und nie gelesen werden können.
So wie diese OPEN-Action.
Da es somit keinen ‚Wert‘ gibt, erzeugt IPS auch keine Variable.
Auch sendet die CCU bei solchen Datenpunkten auch nie ein Ereignis mit einem Wert.
Was sollte also in so einer IPS-Variable stehen?!
Es werden wirklich nur dort Variablen erzeugt wo es einen Wert gibt.
Michael

Hi Kronos, wie schaffst du das die Türe bei STATE true nicht öffnet sondern nur entriegelt?

Hallo.

Die Frage verstehe ich nicht. :confused:

Es sind doch ganz klar drei unterschiedliche Befehle für verriegeln, entriegeln (ohne öffnen) und öffnen (=entriegeln und öffnen). Die unterschiedlichen Datenpunkte STATE und OPEN hattest Du aber gesehen?

Wenn die Tür beim entriegeln schon öffnet kann es höchstens noch sein, dass Du die Keymatic nicht vernünftig kalibiert hast - d.h. sie dreht schon beim entriegeln den Schliesszylinder zu weit.

Hi mhhh das wird es wohl sein…ich werd die Keymatic neu kalibieren!
Danke

Hallo an alle Lesenden.
Ich bin noch ziemlich frisch mit IP-Symcon und habe keinerlei PHP Kenntnisse, aber dafür viele Probleme :smiley:

Jetzt möchte ich gerne diesen älteren Thread hier nochmal zum leben erwecken und erhoffe auf etwas Hilfe und viel Verständniss…

Also, ich habe einen Keymatic Türöffner, eine Funkfernbedienung und eine Raspberrymatic CCU2? (Hoffe das heisst auch so). Die HM-CCU habe ich mit dem Keymatic Türöffner gekoppelt. Funktioniert.
Auch habe ich es geschafft die Homematic CCU über IPS einzubinden.

Jetzt habe ich es sogar geschafft, unter Hilfenahme eins Scripts des Users „mäc“, welches ich aber in Mühevoller arbeit ändern musste damit es bei mir läuft, meine Keymatic über eine Integer Variable anzusteuern. (öffnen, entriegeln und verriegeln).

Das Script hänge ich natürlich gleich noch an.

Jetzt meine Frage bzw. mein Problem.:
Ich nutze zudem noch meine Funkfernbedienung der Keymatic. Wenn ich die Keymatic (KM) darüber schalte ändert sich auch schön brav in IPS die „State“ Variable. Allerdings bekomme ich diesen Status nicht auf meiner Integer Variable (mein Schalter) angezeigt. Sodass dort nur der Status erscheint, welchen ich zuletzt über IPS gesendet bzw. dann von der KM empfangen habe.
Ich vermute einen generellen Fehler bei dem vorgehen wie ich das Skript angelegt habe.
Dieses läuft bei mir nämlich als Aktionsscript an der Integer Variable. Ich bin hier aber schon seit drei Tagen (eigentlich die Nächte) am tüfteln und komme nicht weiter. Für jegliche Hilfe wäre ich dankbar.
Aber bitte für Anfänger…


<?
// keymatic ansteuern, bzw. darstellen 
    // verriegeln:    HM_WriteValueBoolean(ID, "STATE" , false); 
    // entriegeln:     HM_WriteValueBoolean(ID, "STATE" , true); 
    // öffnen:        HM_WriteValueBoolean(ID, "OPEN" , true); 
    // Tastensperre an: HM_WriteValueBoolean(ID, "INHIBIT" , true); 
    // Tastensperre aus: HM_WriteValueBoolean(ID, "INHIBIT" , false); 
 // SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);
	
    $ID_KEYMATIC = 24281 ;      // Keymatic Instanz ID 
    $ID_KEYMATIC_STATE =46763 ; // STATE Variable der Keymatic Instanz 
    $ID_VAR_ACTION = 51528;    // Integer Variable für Schalt und Darstellungszustände 
   // $ID_VAR_KEYLOCK = 16482;   // Boolean Variable für Tastensperre 
     
   // $ID_DOOR = 23191;          // Instanz eines Türkontaktes 
     
    // aufruf über steuervariable 
     if ($_IPS['SENDER']=="WebFront" && $_IPS['VARIABLE']==$ID_VAR_ACTION ) 
    { 
       $OLDVALUE=GetValue($ID_VAR_ACTION); 
        // variable setzen, da aktion aus webfront als "taster" dient 
       SetValue($ID_VAR_ACTION,$_IPS['VALUE']); 
     
        if ($_IPS['VALUE']==2) 
        {  // öffnen (türöffner) 
              HM_WriteValueBoolean($ID_KEYMATIC, "OPEN" , true); 
          } 
        else if ($_IPS['VALUE']==0) 
        {  // verriegeln nur wenn die tür zu ist 
            //if (getValue(23191)==true) 
            { 
               HM_WriteValueBoolean($ID_KEYMATIC, "STATE" , false); 
              } 
          } 
        else if ($_IPS['VALUE']==1) 
        {  // entriegeln aber tür noch zu 
           HM_WriteValueBoolean($ID_KEYMATIC, "STATE" , true); 
          } 
           
          // alten wert setzen, da nur einmalige tastaktion bei aktion open 
        if ($_IPS['VALUE']==2) 
        { 
              SetValue($ID_VAR_ACTION,$OLDVALUE); 
          } 
    } 
    else if ($_IPS['SENDER']=="WebFront" && $_IPS['VARIABLE']==$ID_VAR_KEYLOCK) 
    {  // aufruf über variable tastensperre 
       // oberflächen variable setzen und den selben status zur keymatic senden 
       SetValue($$_IPS['VARIABLE'],$_IPS['VALUE']); 
       HM_WriteValueBoolean($ID_KEYMATIC, "INHIBIT" , $_IPS['VALUE']); 
        
    } 
    else 
    {  // über variablenänderung aufgerufen prüfen wie der Keymatic status ist 
       if (getValue($ID_KEYMATIC_STATE)==true) 
        {  //entriegelt 
              SetValue($ID_VAR_ACTION,1); 
          } 

        if (getValue($ID_KEYMATIC_STATE)==false) 
        {  //entriegelt 
              SetValue($ID_VAR_ACTION,0); 
          } 
      } 
?>

link zum Original Script, welches bei mir aber Sehr viele Fehler hervorgerufen hatte.

https://www.symcon.de/forum/threads/11095-Keymatic-wehrt-sich-gegen-IPS/page4

Vielen Dank für Eure Hilfe

Auf diesem Bild sieht man dass die „State“ Variable sich geändert hat, jedoch der Status des Schalters noch der alte ist. Geschaltet hatte ich in diesem Fall über die Fernbedienung

Habe ich richtig verstanden das Du die Integer Variable nicht nur schalten nutzten willst, sondern auch zusätzlich wenn die Tür offen ist auf entriegeln umspringen soll?

Dann legt Dir einfach ein Skript und ein Ereignis an, das bei Variablenaktualisierung der Variable State ausgeführt wird.


$state = GetValue(46763);
if($state)
{
SetValue(51528, 1);
}
else
{
SetValue(51528, 0);
}

das Variablenprofil der Variable State würde ich auf ~Window ändern, das macht bei einer Tür mehr Sinn, den Rest der Variablen könntest Du für den Webfront eigentlich auch ausblenden, aber das ist persönliche Geschmackssache.