Esera 1-Wire in Scripten Schalten

Hallo,

Seit kurzem habe ich ein „1-Wire Controller 2“ (11340) zum Testen in mein System eingebunden.
Eingebunden habe den Controller mit dem Modul Weg.
In der IP-Symcon Management Console wird mir eine Controller Instanz mit 1x Analogem Ausgang, 4 x Input und 5x Output angezeigt.
Im Web kann ich alle Ein- und Ausgänge sehen und die Ausgänge schalten. Links auf die einzelnen Ausgänge werden mir auch im Web angezeigt und ich kann sie schalten.Soweit alles gut.

Leider gelingt mir die Einbindung ein meine Scripte nicht so wie ich das gerne hätte. Ich versuche es zu vermeiden Aktoren direct innerhalb meiner Scripte anzusprechen. Bei meine Z-Wave und HomeMatic Aktoren bin ich folgendermaßen vorgegangen: Alle von einem Script zu schaltenden Aktoren stehen entweder in einem Arry zum Anfang des Scriptes oder wenn möglich als Child unterhalb der Scripte. So sehe ich sehr schnell welche Scripte welche Aktoren Schalten und kann auch sehr schnell Aktoren tauschen ohne lange im Queltext der Scripte suchen zu müssen.

Bisher habe ich als einzige Möglichkeit die Esera Augänge durch ein Script zu steuern folgenden Befehl gefunden:
ESERA_SetSysOutput(integer $InstanzID, int $OutputNumber, int $Value);
Ich möchte beispielsweise die ObjektID 23048 Schalten. $InstanzID ist klar. Die bekomme ich über IPS_GetParent.

Wie komme ich an die $OutputNumber?

2018-10-07 21_32_28NOBODY-Window.png

Ich hoffe ich habe meine Frage halbwegs verständlich formuliert.

Vielen Dank für Eure Hilfe

:confused::confused::confused:
Einfach aus Deinem Screenshot ablesen. Output1 hat die OutputNumber 1, Output2 die 2 und so weiter.

:loveips:

Da habe ich meine Frage wohl nicht so klar formuliert wie ich das gehofft hatte. Anbei mal ein Bild mit geänderter Beschriftung.
Unbenannt.png

Wie komme ich in diesem Fall an die benötigte $OutputNumber um den Aktor aus einem Script zu schalten?

Du musst als Instanz ID Die der 1Wire Instanz nehmen, also bei Dir die 27414 nicht Die des Ausgang, Die ist 2

Also ESERA_SetSysOutput(27414,2,1) zum Einschalten Ausgang 2.

Also ESERA_SetSysOutput(27414,3,1) zum Einschalten Ausgang 3.
Versuch macht kluch.
Gruß Helmut

Hallo,

ja, soweit hatte ich das bereits verstanden.

Beispiel:

  1. Ich verändere die Beschriftung und kann anhand der Beschriftung nicht mehr auf die $OutputNumber (1 bis 5) schlissen.
  2. Aus der ID des Outputkanales bekomme ich sehr schnell die ID des Controllers (IPS_GetParent(23048) zum Beispiel)
  3. Nun fehlt mir die $OutputNummer. Gibt es wirklich keine Möglichkeit über die ID des Ausganges die Outputnummer zu ermittel?

Mir scheint dann nur der Weg über eine Systematische Beschriftung und Textzerlegung (also die Outputnummer 1-5 immer am Ende der geänderten Beschriftung anzuhängen) möglich zu sein. Aber schön ist das nicht!!

Du kannst den Ident der Variable auslesen und daraus auf den Output schließen.

Und wie geht das?

Indem man sich die Doku ansieht :wink:
IPS_GetObject — IP-Symcon :: Automatisierungssoftware
Michael

Besser hätte ich es fast nicht beschreiben können :loveips::slight_smile:

Hallo,

vielen Dank. Manchmal fehlt halt ein kleiner Schups in die Richtige Richtung oder besser ausgedrückt der richtige Suchbegriff für Google :wink:

Für den Fall dass irgend jemand auch mal die $OutputNumber eines ESERA Schaltausganges direct aus der IP-Symcon $ObjektID bestimmen möchte, hier die Auflösung:

substr(IPS_GetObject($ObjektID)['ObjectIdent'],-1)

oder Hier mal der Gesamte Schaltbefehl


$idSchachaltausgang=10762 /*[test\11340 Controller 2 DIN, DOUT + ANALOG\SW_TV]*/;
ESERA_SetSysOutput(IPS_GetParent($idSchachaltausgang),substr(IPS_GetObject($idSchachaltausgang)['ObjectIdent'],-1),0); // On-Wire ausschalten
ESERA_SetSysOutput(IPS_GetParent($idSchachaltausgang),substr(IPS_GetObject($idSchachaltausgang)['ObjectIdent'],-1),1); // On-Wire einschalten

2018-10-09 10_21_34NOBODY-Start.png