Arbeiten mit Parameter ..

Hallo,

ich bin gerade dabei mich mit IPS einzuarbeiten. Was ich gerade nicht ganz verstehe bzw. auch zuordnen kann wie ich mit welchen Befehlen von Methode die Geräte spezifisch einsetzen kann.

<?
$stateON = GetValue(23864 /*[EnOcean FT55 Test LINKS\Status]*/);

if ($stateON)
{
	//HM_WriteValueString(16803 /*[CCU\Räume\Rolladenaktoren\Rolladen EG\ROLL EG HWR - EQ0652785:1\Level]*/, 0);
	
	HM_WriteValueFloat(45596 /*[CCU\Räume\Rolladenaktoren\Rolladen EG\ROLL EG HWR - MEQ0652785:1]*/, 'Level', 0);
}
else
{
	HM_WriteValueFloat(16803 /*[CCU\Räume\Rolladenaktoren\Rolladen EG\ROLL EG HWR - EQ0652785:1\Level]*/, 100);
}
?>

Da bekomme ich aus dem Script Editor den Fehler …

Warning: Wrong parameter count for HM_WriteValueFloat() in /var/lib/symcon/scripts/11989.ips.php on line 14

Wie und wo kann ich sehen welche Methoden zu den Parameter des Objektes zu nutzen sind?

Gruß
MacToolz

Siehe Doku HM_WriteValueFloat — IP-Symcon :: Automatisierungssoftware

Du verweist auf die Variable Du musst aber stets auf die Instanz verweisen und dann die Ident benutzen des Wertes den Du verstellen willst.

HM_WriteValueFloat(45596 /[CCU\Räume\Rolladenaktoren\Rolladen EG\ROLL EG HWR - MEQ0652785:1]/, ‚Level‘, 0);
}
else
{
HM_WriteValueFloat(16803 /[CCU\Räume\Rolladenaktoren\Rolladen EG\ROLL EG HWR - EQ0652785:1\Level]/, 100);

Hallo!
Bin nicht der große PHP Programmierer aber mir fällt was auf
1.ROLL EG HWR - MEQ0652785:1]/, ‚Level‘, 0
2.ROLL EG HWR - EQ0652785:1\Level]
/, 100

siehst du den unterschied?
(M) fehlt, und mit … Level stimmt auch was nicht!

Mfg
Maxx

das kommt wohl vom hierein kopieren … bei mir im Code ist es drin …

ich teste das was Fonzo sagt …
Also ist es grundsätzlich so das man auf die Instanz zugreift und dann den Parameter übergibt ?

Gruß

if ($stateON)
if (($stateON) == <> irgendwas) {

sollte so aussehen, du musst ja irgendwas festlegen zum vergleichen

ne wieso … die Fallunterscheidung kann einen Boolschen Ausdruck so vergleichen …

Als InLine Funktionen z.B. auch eine Fallunterscheidung kann so angewandt werden, aber auch nur wenn eine einzige Zeile folgt

if($stateON)
$StateON = FALSE;

Hi,

also ich blick das nicht … Also der HM Aktor mit Level oder Steuerung bringt Probleme.

<?

$xStateON = GetValue(23864 /[EnOcean FT55 Test LINKS\Status]/);

if ($xStateON == TRUE)
{
HM_WriteValueInteger(45596 /[CCU\Räume\Rolladenaktoren\Rolladen EG\ROLL EG HWR - MEQ0652785:1]/, ‚Steuerung‘, 1);
//HM_WriteValueFloat(45596 /[CCU\Räume\Rolladenaktoren\Rolladen EG\ROLL EG HWR - MEQ0652785:1]/, ‚Level‘, 1);
}
else
{
HM_WriteValueInteger(45596 /[CCU\Räume\Rolladenaktoren\Rolladen EG\ROLL EG HWR - MEQ0652785:1]/, ‚Steuerung‘, -1);
//HM_WriteValueFloat(45596 /[CCU\Räume\Rolladenaktoren\Rolladen EG\ROLL EG HWR - MEQ0652785:1]/, ‚Level‘, 1);
}

?>

Der Fehler ist jetzt …

Warning: HomeMatic Error: Unknown parameter in /var/lib/symcon/scripts/11989.ips.php on line 7

Warum unbekannter Parameter …

Gruß

Die Meldung kommt von Homematic nicht IPS.
Homematic meckert, weil es ‚Steuerung‘ als Datenpunkt nicht gibt.
Ebensowenig wie Level.
Es gibt ‚LEVEL‘ .
Um zu verstehen, welche Datenpunkte (das ist der 2. Parameter ) erlaubt ist, solltest du dir die Datenpunktliste von EQ3 anschauen.
Hier verlinkt unter Tips&Tricks.
HomeMatic — IP-Symcon :: Automatisierungssoftware
Oder hier:

Für HmIP gibt es eine eigene.
Michael

Hi,

sind denn nicht die Datenpunkte unter der Instanz alle angehangen, sprich wenn ich das Gerät als Instanz anlege, sehe ich ja darunter z.B. wie beim HM Rolladenaktor, Level, Steuerung, Direction etc …

Jein. Der Name ist frei änderbar.
Und es gibt mehr Datenpunkte als was IPS als Variablen erzeugt (z.B. nur beschreibbare Aktionen wie ON_TIME oder STOP). Dann gibt es Datenpunkte wie Direction, welche du nur lesen kannst. Also ein HM_WriteValue* immer fehlschlägt.

Allerdings kannst du einfach die Instanz öffnen und oben Statusvariablen anklicken, dann siehst du den Namen und den IDENT, der IDENT ist der Datenpunkt bei Homematic.
Aber wie gesagt, sind das nicht alle.
Hier sind so einige spezielle Datenpunkte in Benutzung:

Michael

Moin,

Nall-chan hat dir ja schon die Hinweise auf die Doku gegeben. Hier noch wie es z. B. konkret bei mir aussieht. Bei runter so

if (GetValueFloat(53464 /*[Hans\Rollos\Hans Rollo rechts\LEVEL]*/) != 0.0)
{
	HM_WriteValueFloat(37257 /*[Hans\Rollos\Hans Rollo rechts]*/, "LEVEL", 0.0);
}

und bei hoch

if (GetValueFloat(53464 /*[Hans\Rollos\Hans Rollo rechts\LEVEL]*/) != 1.0)
{
	HM_WriteValueFloat(37257 /*[Hans\Rollos\Hans Rollo rechts]*/, "LEVEL", 1.0);
}

Mit den Datenpunkten musst du dich allerdings auf jeden Fall beschäftigen, wenn du HM aktoren ansteuern möchtest :wink:

Gruß
Hans

Hi,

ja ok. aber wenn ich erstmal das Gerät ja als Instanz anlege oder importieren lasse, sind ja erstmal ein paar Datenpunkte vorhanden. Wenn man was vermisst, sollte man in die Doku kucken.

Das mit der Instanz öffnen habe ich nicht verstanden …

Doppelklick auf die Instanz im logischen Baum. Instanz ist das Homematic-Gerät bzw. Homematic-Device.
Grundlagen zu IPS:
https://www.symcon.de/service/dokumentation/konzepte/instanzen/
Michael

und darunter kommen doch die Datenpunkte … sind doch alle die die vom IPS implementiert worden sind oder ?

IPS implementiert da gar nix.
IPS fragt den BidCos nach allen Datenpunkten dieses Gerätes und erzeugt entsprechende Variablen mit dem Ident und den Namen jedes Datenpunktes.
Der Name ist frei änderbar.
Der Ident entspricht der Bezeichnung des Datenpunktes.
Und wie gesagt, es gibt auch Datenpunkte welche nur gelesen, nur geschrieben oder nur als Aktion getriggert werden können. Sowie jede dieser Kombinationen.
Nur schreib Datenpunkte wie ON_TIME werden von IPS nicht als Variable erzeugt.
Nur lesen Datenpunkte wie WORKING oder DIRECTION schon.
Also immer aufpassen und besser in die Datenpunktliste von EQ3 schauen.
Michael

Hi,

achsooo das BidCos Protkoll bringt die Datenpunkte von jedem Gerät mit sich und IPS verknüpft so zusagen die Datenpunkte für sich als Objkete sprich als Ident in seiner Logik.

Klar der Name ist frei wählbar … Aber grundlegend kommt der ja erstmalig durch das Anlegen des Gerätes.
Das auch Datenpunkte entsprechend nur lese oder schreibrechte haben sind auch klar.

Aber nochmal, heißt das dass Bidcos aber nicht alle unbedingt beim abfragen mitbringt?

Daher wenn was fehlen sollte, bzw. benötigt kann man aus der Doku von EQ3 noch zusätzliche Datenpunkte nutzen die das Gerät umsetzen kann.

Doch der BidCos bringt ‚alle‘ mit.
Als Außnahme kenne ich nur die PARTY*** Datenpunkten der neuen Heizkörper- und Wandthermostate. (Vermutlich ein Bug im BidCos, keine Ahnung ob dies noch immer so ist)
Dort reicht dann ein HM_RequestState um diese aktiv vom BidCos anzufordern.
Anlegen als Variable kannst du selber keine, aber dennoch kannst du alle aus der EQ3 Doku mit HM_WriteValue* ansprechen.
Michael

Ok passt danke …

dann wäre erstmal soweit geklärt …

Danke …