[Modul] Homematic Extended (Systemvariablen, Programme, Powermeter, u.v.m.)

von 3.4 auf 4.0 migriert. (mit Deinem alten Modul)

Ich vermute daran liegt es. Die Variablen sind noch als ReadOnly markiert und können deswegen vom PHP Modul nicht geändert werden. Nutzt du die Variablen irgendwo, oder kannst du die theoretisch löschen? (IPS würde die dann neu erstellen und das Problem sollte weg sein)

Trotzdem fehlt noch ein langfristige Lösung. Hm doof.

paresy

ja, nutze ich. Mit „suchen und ersetzen“ sollte das aber überschaubar sein. Muss nur nochmal sehn wie ich die dazu gehörenden Ereignisse raus bekomme.

Berichte dann

ge*le Sache. Sogar die Archivdaten konnte ich den neuen Variablen zuordnen.
Alles im grünen Bereich und Fehlermeldung ist auch weg.

Danke

Als wenn ich es nicht geahnt hätte [emoji14]
Da fehlt jetzt wohl eine neue Funktion für die Module, damit diese ihre eigenen Statusvariablen auch mit readonly erstellen und beschreiben können. :smiley:
Michael

Ja. Aber nur, wenn es eine Sandbox gibt die verhindert, dass kein anderer die Funktion nutzen darf :stuck_out_tongue:

paresy

Eimerchen und Schäufelchen habe ich schon parat :smiley:
Das schaffst du doch mit links bis zum Release :wink: :smiley:
Michael

Hallo,
ich komme einfach nicht weiter mit dem Modul. Das meine Kombination noch nicht voll unterstützt wird ist mir klar.
Ich habe SymBox mit der aktuellen Version von IPS.

Bekomme folgende Fehlermeldung:
2015-12-29 HM_EX_err.png

Möchte diesen virtuellen Key (Press_SHORT) der CCU als Trigger verwenden.

Mir ist auch nicht ganz klar wie ich die Variable IPS Status bearbeiten kann. Muss ich noch ein zusätzliches Script einbinden?

Danke für Eure Hilfe.

Gruß
monte001

Hatten wir schon :slight_smile:
Siehe hier:
[Modul] Homematic Extended (Systemvariablen, Programme, Powermeter u.v.m.) - Seite 2

Bei den Trigger habe ich tatsächlich gestern noch einen Fehler gefunden.
Fix dafür kommt die Tage.

Verstehe ich nicht. Was heißt bearbeiten ?
Du kannst im WebFront einfach die Werte anklicken.
Sonst wie in der Doku beschrieben:


HM_WriteValueBoolean2(48153,'IDENT DER VARIABLE',true);

Michael

So Version 2.01 kommt jetzt mit einer Unterstützung für die Systemvariablen vom Typ ‚Alarm‘.

Dazu gibt es zwei neue Einstellungen in der Instanz ‚Systemvariablen‘.

Einmal ob diese überhaupt gelesen werden sollen.
Und einen optionalen PHP-Script welches ausgeführt werden soll, wenn sich eine Änderung an den Alarmen ergeben hat.

Dazu gibt es einen neuen PHP-Befehl:

boolean HM_AlarmReceipt(integer $InstanceID, string $Ident);

Beispiel:

$erfolg = HM_AlarmReceipt(12345, 'AlDP1234');
if ($erfolg)
  echo "Alarm gelöscht";
else
  echo "Konnte Alarm nicht löschen, oder es steht kein Alarm an";

Das Script für die Alarmbearbeitung hat zusätzlich folgende IPS-Systemvariablen ($_IPS) :


$_IPS
array(12) {
  ["Channel"]=>
  string(12) "LEQ1234567:1"
  ["SENDER"]=>
  string(7) "AlarmDP"
  ["VARIABLE"]=>
  int(30006)
  ["ChannelName"]=>
  string(7) "Test MK"
  ["OLDVALUE"]=>
  bool(false)
  ["Room"]=>
  string(3) "Bad"
  ["VALUE"]=>
  bool(true)
  ["FirstTime"]=>
  int(1451405477)
  ["LastTime"]=>
  int(1451405477)
  ["DP"]=>
  string(5) "STATE"
  ["THREAD"]=>
  int(3)
  ["SELF"]=>
  int(15948)
}

Channel, Room, ChannelName und DP sind leer, wenn es sich um eine ‚Klarmeldung‘ handelt.
FirstTime und LastTime sind UnixTimestamp und entsprechen dem ersten Alarm und dem letzten Alarm.
Sie sind bei 0 wenn es sich um eine ‚Klarmeldung‘ handelt.
SENDER ist immer ‚AlarmDP‘.
VARIABLE, OLDVALUE, VALUE, THREAD und SELF entsprechen den ‚üblichen‘ Variablen.

Doku auf GitHub folgt noch… noch zu viele andere Baustellen :wink:


Michael

Hallo Michael,

erst mal vielen Dank für Dein Modul.

Wie Starte ich in einen Script denn ein Programm?

Die Doku sagt da ja folgendes?

HM_StartProgram(12345 /*[HomeMatic Programme]*/, string '4711' /* IDENT von Programm Licht Alles aus */);

Weil was ist der Ident? Ich habe den aus der XML-API genommen, aber damit klappt es nicht.

Hein09

Das ist ein intern von IPS genutzter Identifier, den jede Statusvariable hat.
Und wie du sie dir anzeigen kannst, steht auch in der der Doku :wink:

Startet ein auf der CCU hinterlegtes Programm. Als $IDENT muss der Ident der Variable des Programmes übergeben werden.
(Die IDENT werden unter dem Reiter ‚Statusvariablen‘ des Einstellungsdialogs der Instanz angezeigt.)

Michael

jetzt habe ich den Ident gefunden, aber es funktioniert immer noch nicht.
Bekomme noch folgenden Fehler:

Parse error:  syntax error, unexpected ''5150'' (T_CONSTANT_ENCAPSED_STRING)

Hein09

Poste bitte mal das ganze Script.
Bzw die ganze Zeile.
Dann schaue ich mir das mal an.
Michael

ist auch nur eine Zeile:

HM_StartProgram(29505 /*[Homematic\Sonstiges\HomeMatic Programme]*/, string '5150' /* IDENT von Programm Licht Alles aus */);

Hein09

Das ‚string‘ hat da nix zu suchen.
Da ist doch noch tatsächlich ein Fehler in der Doku :slight_smile:

Probiert es mal so:

HM_StartProgram(29505 /*[Homematic\Sonstiges\HomeMatic Programme]*/, '5150' /* IDENT von Programm Licht Alles aus */);

Michael

was so ein einzelnes Wort ausmacht.
Jetzt funktioniert es einwandfrei.

Danke

Hein09

Hallo zusammen,
ich habe heute auf IPS4.0 migriert und gleich das HM Extended Modul integriert.
Ziel ist der Einsatz des Triggers.

Jetzt kann es leicht sein, dass ich den Wald vor lauter Bäumen nicht sehe, aber wie muss das Zentralenprogramm auf der CCU aussehen, damit der Tastendruck auf der virtuellen Fernbedienung erzeugt wird?

Bei Änderung einer bestimmten Systemvariable ist mir das klar, aber wie detektiere ich die Änderung einer beliebigen Systemvariable?

VG,
Günter

Ich hätte mal das Bild verlinken sollen :slight_smile:

Michael

Hallo Michael,
ich vewende Dein Modul zur Ansteuerung des DisplayTasters HomeMatic Dis-WM55. Eigentlich funktioniert auch alles. Mir ist nur aufgefallen, dass das Rücksetzen der Variable PAGE nicht immer genau nach dem eingestellten Timeout von 10 sec passiert, sondern teilweise schon vorher.

Beispiel:

  • Ich drücke eine der beiden Tasten
  • PAGE geht auf 1
  • nach 10 sec geht PAGE wieder auf 0 (was ja so richtig ist)
  • ich warte 8 sec und drücke die Taste erneut
  • PAGE geht auf 1
  • bereits nach 2-3 sec geht PAGE wieder auf 0

Es sieht irgendwie so aus, als wenn das Drücken der Taste den Timer nicht (immer) resetted.

Ich habe daraufhin im module.php in der Funktion „RunDisplayScript“ die Zeilen

        $Timeout = $this->ReadPropertyInteger('Timeout');

        if ($Timeout > 0)
        {
            $this->SetTimerInterval('DisplayTimeout', $Timeout);
        }

mal ganz an den Anfang der Funktion verschoben. Das sieht dann schon deutlich besser aus, aber so ganz verstehe die Abfolge von Timer und Tastendruck noch nicht. Hat diese unterschiedliche Zeit evt. mit der etwas varierenden Abarbeitungszeit in der CCU2, Displaytaster und Funkübertragung zu tun?

Danke und Gruß
Peter