Verschiedene Instanzen Verknüpfen

Hallo zusammen,

ich habe nun schon einige verschiedene Geräte wie den Doorbird, Fritzbox, Homematic Teile oder auch meine Heizung integrieren können. Für die Visualisierung wirklich toll… Jetzt wo ich die verschiedenen Geräte verknüpfen will, scheitere ich jedoch.
Wie kann ich z.B. ein HM Gerät ansprechen wenn meine Müllvariable heute eine Abholung anzeigt oder wie kann ich eine HM Systemvariable ändern wenn der Doorbird den Zeitpunkt des letzten Klingelsignals ändert?

Muss ich hier ein „Ereignis hinzufügen“? Ich komme hier leider nicht voran.

Schönen Gruß
Tom

Beispiel Doorbird:
CTRL+4 ein Ereignis anlegen -> Ausgelöstes Ereignis -> Variable auswählen Zeitpunkt letzes Klingelsignal -> Bei Variablenaktualisierung -> Aktion Gerät ausführen oder Skript starten oder Variable ändern je nachdem was man halt braucht. Bei Gerät ausführen dann z.B. Funktion Auswählen was passieren soll.

Wenn Du damit nicht zurecht kommst kannst Du sagen sagen was genau passieren soll, dann kann man Dir auch noch beim letzten Schritt helfen. Wenn man das aber ein Paar mal gemacht hat sollte das dann selbsterklärend sein.

Für Homematic Systemvariablen am besten ab 4.1 Homematic Extended nutzten.

Ansonsten mal ein einfaches Beispiel für das Schalten einer Beleuchtung:

[ul]
[li]CTRL+3 Skript hinzufügen
[/li][li]Skript benennen
[/li][li]Skript Inhalt schreiben
[/li][/ul]


<?
//Licht einschalten beim Klingeln wenn es dunkel ist
$daylight = GetValue(53150 /*[Location\Ist es Tag]*/);
if (!$daylight)
{
	IPS_RunScript(32404 /*[Geräte\Homematic\Homematic Scripte\Erdgeschoss\Flur\Eingangsbeleuchtung\Eingangsbeleuchtung einschalten]*/);
}
?>

$daylight ist die Variable unter Kern Instanzen → Location → Ist es Tag
Wenn es also nicht Tag ist, soll ein Licht über ein Homematic Aktor eingeschaltet werden. Dazu wird ein weiteres Skript ausgeführt, dass das Licht einschaltet über IPS_RunScript. Alternativ kann hier natürlich auch gleich der Befehl eingetragen werden wenn kein weiteres Skript aufgerufen werden soll.

Das Skript das aufgerufen wird schaltet im einfachsten Fall einfach den Homematic Aktor an.


<?
HM_WriteValueBoolean(47480 /*[Geräte\Homematic\Räume\Garten\Außenbeleuchtung vorne]*/, "STATE", true); //Gerät einschalten
?>

Jetzt soll dieses Skript aufgerufen werden wenn es klingelt. Dazu das Skript markieren und dann CRTL+4 Ereignis hinzufügen.
ausgelöstes Ereignis.png
Weiter
Doorbird Klingelsignal.png
Weiter
Doorbird Licht.png
Ok

Die Müllvariable ist wahrscheinlich eine Boolean (True / False), welches Homematic Gerät willst Du in dem Fall ansprechen und was soll dieses genau machen wenn der Müll heute abgeholt wird?

Hi. Danke schon mal für deine Hilfe. Ich habe in der Garage eine HM LED Anzeige. Sobald der Müll abgeholt wird will ich das sehen, damit ich vor der Arbeit die Tonne rausstellen kann. Und ja, ist ne Boolean.

Gesendet von iPad mit Tapatalk

Ich besitze so eine LED Anzeige nicht, kannst Du mal sagen wie das im Objektbaum von IP-Symcon aussieht bzw. welche Variablen da zur Verfügung stehen? Ich nehme ja an pro Anzeige auf dem Display eine Boolean Variable.

Hi,

also der Doorbird kann mittlerweile eine Variable in HM ändern. Das ist schon mal super :slight_smile:

Die 16LED Anzeige kann je Kanal 3 Farben darstellen.
In IPS sieht das dann so aus.

Wenn ich auf eine Variablenänderung den LED Status ändern will, wird mir beim erstellen vom Ereignis folgendes angezeigt: „Ausgewähltes Objekt ist nicht erlaubt!“.

Wenn Du Variablen von Instanzen ändern willst, musst Du darauf achten die Instanz mit dem passenden Befehl anzusprechen und nicht versuchen die Variable selber zu beschreiben.
In dem Fall möchtest Du ja das sich die Variable LED_Status ändert. Diese hat, so wie Du beschrieben hast, drei mögliche Werte, also wohl 0,1 oder 2.
Ändern kannst Du den Wert indem Du die Ident der Variable nachschaust, indem Du die Variable markierst und dann CTRL+Enter (Objekt bearbeiten) drückst. Dort steht die Ident der Variable.
Nun kannst du mit HM_WriteValueInteger den Wert der Variable setzten, indem Du dort die Ident der Variable einträgst und den Wert den die Variable annehmen soll z.B. 2.
z.B.


HM_WriteValueInteger(12345, IDENT, 2);

12345 ist die ObjektID der Instanz die Du ändern willst
IDENT ist die Ident der Variable die Du verändern willst
2 ist in dem Fall der Wert den die Variable annehmen soll

Hi,

die Ident der Variable die ich ändern will, wird mir aber nicht angezeigt wenn ich unter Geräte auf LED Status mit STRG und enter drücke.
Das klappt nur bei Systemvariablen.

Ah so, ist das keine Variable die von IP-Symcon angelegt worden ist oder hast Du diese selber angelegt?

Das ist ein Homematic Aktor. IP Symcon hat bei Erstellung durch HM Configurator dann drei Variablen erstellt.

Nur bei echten HM Systemvariablen (diejenigen die auch direkt in der CCU zu finden sind), werden unter strg+enter mit Ident angezeigt. Bei allen anderen dingen wie lampen steht z.B nur STATE oder LED_STATUS und ist grau hinterlegt.

Bisher schaffe ich es nur Homematic Programme über skripte aufzurufen…

Dann bitte mal das Programm und die zugehörigen Instanzen per Screenshot zeigen, vielleicht meinen dann alle Beteiligten das gleiche.

Es wäre auch schön zu erfahren, um welchen Aktor es geht.

Gruß
Bruno

Hi,

also HM Programme rufe ich z.B über folgendes Skript auf:

<?
HM_StartProgram(22551 /[Homematic\HomeMatic Programme]/, ‚5332‘ /* IDENT vom Programm */);
?>

HM Systemvariablen ändere ich mit diesem Skript:

<?
HM_WriteValueBoolean2(36242 /[Homematic\HomeMatic Systemvariablen]/, ‚20619‘ /* IDENT */, true);
?>

Klappt beides wunderbar.

Die (wie schon erwähnte) HomeMatic Funk-Statusanzeige LED16 bekomme ich nicht hin.

Es geht ja um das, was nicht funktioniert, davon interessieren die Screenshots.

Hi nochmal,

jetzt klappt es schon mal mit dem Schalten vom Aktor :wink:
Nur die Fehlermeldung bekomme ich noch…

Danke schon mal für eure Geduld.

Schreib mal


HM_WriteValueInteger(44872, "LED_Status", 1);

und gibt mal Rückmeldung ob es dann klappt.

Ja, das wars. Danke dir. Vom vielen probieren und ändern sind die wohl auf der strecke geblieben :frowning:

Gesendet von iPad mit Tapatalk