Rademacher Homepilot

Hallo,

dann besorge ich mir jetzt mal einen HomePilot…

Danke für’s Angebot…

wolkensurfer

Hallo an Alle,

gibt es denn hier Neuigkeiten … es scheint als ob in den aktuellen Firmware Versionen des Homepilot der genannte Port nicht mehr genutzt wird. Wer hat denn den Homepilot aktuell mit IPS laufen? Wenn ja, wie?

Danke und Grüße,
MaLu

Hallo zusammen ! Würde mich auch interessieren wie es hier aktuell aussieht, da ich alle meine Fenster mit Radermacher Gutwickler ausstatten möchte und diese auch über IPS steuern möchte.

Danke Euch !

Hallo,

habe bei mir den Homepilot mit der aktuellen Version 3.4.0.0 am laufen und ich kann nach wie vor meine Gurtwickler damit ansteuern. Die Implementierung habe ich mit den Informationen aus diesem Thread umgesetzt und es funktioniert problemlos.

Gruß

wolkensurfer

Danke Dir ! Sobald ich meine habe und Probleme haben sollte komm ich auf dich zurück :wink:

Mit der Hilfe von Jürgen (belmondo2001) habe ich es nun geschafft, die Automationen der Geräte
am HomePilot abzufragen und zu setzen (z.B. Morgendämmerung an/aus).So können z.B. die 4 Tasten
an den Troll Basis DuoFern 5615 und sicherlich auch an den Gurtwicklern (ungetestet) abgefragt
und getätigt werden. Vielleicht kann es ja der ein oder andere gebrauchen.


 <?
/**************************************************************************
* HomePilot Automationen
*
* Automationen:
*	(*)Morgendämmerung: 0
*	(*)Abenddämmerung: 1
*	(*)Zeit: 2
*	Manuellbetrieb: 3
*	(*)Sonne: 4
*	Regen: 5
*	Wind: 6
*
* mit http://homepilot.local/deviceajax.do?devices=1
* bekommt man eine Deviceliste mit den Statis der Automationen
*
* mit http://homepilot.local/deviceajax.do?device=deviceID
* bekommt man den Status eines bestimmten Device
* 
* Automationen die mit (*) gekennzeichnet sind, sind am
* Troll Basis DuoFern 5615 und RolloTron Standard DuoFern 1400
* und vermutlich noch anderen Geräten vorhanden. Alle anderen
* Automationen sind nur über den HomePilot einzusehen und zu ändern
***************************************************************************/

//IP vom HomePilot
$homepilotIP = 'homepilot.local';

//Geräte ID
$deviceID = '10000';

//Automations ID (siehe verfügbare Automationen oben in der Liste)
$automationID = '0';

//Zustand: true = an, false = aus
$state = false;

/**************************************************************************/

$strState =  $state ? "true" : "false"; //Boolean in String konvertieren

$ch = curl_init('http://'.$homepilotIP.'/deviceajax.do');
 curl_setopt($ch, CURLOPT_POSTFIELDS, "automation=1&data={%22did%22:{$deviceID},%22automation%22:{$automationID},%22state%22:{$strState}}");
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$result =  curl_exec($ch);

print_r (json_decode($result));

curl_Close($ch);

?>

Ausgabe:


 stdClass Object
(
    [message] => Automation aktualisiert
    [status] => uisuccess
)

Gruß Basti

Hallo in die Runde,

da ich Zuhause den Rolloport Duofern im Einsatz habe.
Würde ich gerne im IPS den Status des Garagentors
anzeigen. 100% geschlossen , 0% geöffnet.

Hat hierzu jemand einen Lösungsansatz wie das mittels
PHP zu lösen ist ?

Danke, Viele Grüße Alex

Hi,

sodela … einmal hier …

Rademacher Homepilot

Im einfachsten Fall, hast Du zwei Icons eins Garage offen und eins für geschlossen. Eben für 0% oder 100%

Grüsse,
MaLu

Hallo Malu,

das steuert nur den Homepilot ich brauche ein Skript zum die Position
auslesen !

http://homepilot.local/deviceajax.do?devices=1

hier erhalte ich Statusmeldungen alle Geräte !

Unter

http://homepilot.local/deviceajax.do?device=10006

nur des 10006 , meine Frage ist nun wie bekomme ich es hin denn
Status der „Postion“ auszulesen und in eine Variable zu schreiben.

Somit kann ich definieren 0% -> geöffnet und 100% -> geschlossen

Danke, Grüße Alex

Hallo Alex,

da die Antwort vom HomePilot im JSON Format kommt, kannst du diese sehr leicht in ein Array
speichern.

Schau mal hier: PHP: json_decode - Manual

Und dann kannste dir ne Funktion schreiben, die aus dem Array die Position ausliest.

Zum Beispiel so (ungetestet):


function HP_getDevicePosition($fullDeviceStatus) {
	if ($fullDeviceStatus['status'] === "ok") {
	   if (isset($fullDeviceStatus['device']['position'])) {
	   	$result = $fullDeviceStatus['device']['position'];
	   } else {
	        // Position nicht gefunden
	        $result = false;
	   }
	} else {
           // Fehler
           $result = false;
        }

	return $result;
}

Gruß Basti

Hey Basti,

ich hätte am liebsten drei Schalter mit Auf , Stop Zu und der Position
des Rolladen’s

Momentan habe ich das Skript aus der ersten Seite , ich starte es
dann bekomme ich eine Schwarzes Fenster mit :

„stdClass Object ( (message) => Command used: 2 …“

Auf jedenfall muss es ein Skript sein wo die Schalter im WF erstellt und
auch die Variable mit der Position, ich weiß nicht wie du es gelöst hast
aber wenn du es ähnlich hast könntest du dein Skript posten.

Grüße Alex

Mein Skript hat mehrere tausend zeilen und ist leider stark auf meine Situation zugeschnitten, deshalb ist das nicht so einfach.

Aber so könntest du vorgehen:

  1. Lege dir eine sinnvolle Kategorie an z.b. Hardware->Rolläden->HomePilot
  2. Lege eine Dummy Instanz mit dem Namen „Rollo1“ an
  3. Lege unter der Dummy Instanz eine Integer Variable mit dem Namen „Position“ un dem Variablenprofil „~Shutter“ an
  4. Lege in der Dummy Instanz ein neues Skript mit dem namen „Rollo 1 Aktionskript“ an, dieses kannst du verstecken.
  5. Kopiere den Code (*) in das Skript „Rollo 1 Aktionskript“, passe die HomePilot IP, die RolloID im HomePilot und das VariablenID der Positionsvariable auf deine Werte an
  6. Wähle für die Variable „Position“ unter „Eigene Aktion“ das Skript „Rollo 1 Aktionskript“ aus
  7. Führe das Skript „Rollo 1 Aktionskript“ einmal manuell aus
  8. Verlinke die Dummy Instanz oder die Variable „Position“ ins WebFront

Aktionsskript Beispiel (*):


<?
$homepilotIp = "192.168.100.168"; // HomePilot IP
$rolloHomePilotId ="10000"; // Rollo GeräteID im HomePilot
$positionVarId = "12346"; // ID Variable Position

//////Wenn von WebFront bedient
if ($_IPS['SENDER'] == "WebFront") {
	$pos = $_IPS['VALUE'];
	
	$ch = curl_init('http://' . $homepilotIp . '/deviceajax.do');
	curl_setopt($ch, CURLOPT_POSTFIELDS, "cid=9&did={$rolloHomePilotId}&goto={$pos}&command=1");
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	 
	$result = json_decode(curl_exec($ch), true);
	
	if ($result['status'] !== "uisuccess") {
		echo "Fehler!";
	} else {
		SetValueInteger($_IPS['VARIABLE'], $pos);
	}
	
	curl_Close($ch); 
}

//////Wenn manuell oder von TimerEvent ausgeführt
else if (($_IPS['SENDER'] == "TimerEvent") or ($_IPS['SENDER'] == "Execute")) {
	IPS_SetScriptTimer($_IPS['SELF'], 0); //Timer erstmal aus, falls die Abfrage zum Timeout führt

	//Variable wurde vor weniger als 10sek geändert -> Abfrage überspringen
	if ((time() - IPS_GetVariable($positionVarId)['VariableUpdated']) < 10) {
		IPS_SetScriptTimer($_IPS['SELF'], 30);
		return;
	}
	
	$ch = curl_init("http://" . $homepilotIp . "/deviceajax.do");
 	curl_setopt($ch, CURLOPT_POSTFIELDS, "device={$rolloHomePilotId}");
 	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);


	$result = json_decode(curl_exec($ch), true);
	curl_Close($ch);
	
	$pos = HP_getDevicePosition($result);
	
	if ($pos !== false) {
		SetValueInteger($positionVarId, $pos);
	} else {
		echo "Fehler!";
	}
	
	IPS_SetScriptTimer($_IPS['SELF'], 30); //Timer auf 30 Sekunden
}

function HP_getDevicePosition($fullDeviceStatus) {
	if ($fullDeviceStatus['status'] === "ok") {
		if (isset($fullDeviceStatus['device']['position'])) {
			$result = $fullDeviceStatus['device']['position'];
		} else {
			// Position nicht gefunden
			$result = false;
		}
	} else {
		$result = false;
	}

	return $result;
}
?>

Das Skript ist ungetestet und einfach so runtergeschrieben, falls es Probleme gibt, einfach bescheid geben.
Dies ist nur eine mögliche (einfache) Lösung. Falls du viele Rollos hast, gibt es andere Lösungen, die wesentlich
Ressourcen schonender sind.

Gruß Basti

runtergeschrieben :slight_smile: respekt echt hammer

ich bekomme nun einen Fehler in Line 17

Parse error: syntax error, unexpected ‚echo‘ (T_ECHO) in [Hardware\Homepilot\Rollo1\Rollo 1 Aktionsskript] on line 17
Abort Processing during Fatal-Error: syntax error, unexpected ‚echo‘ (T_ECHO)
Error in Script C:\IP-Symcon\scripts\45312.ips.php on Line 17

das wäre : echo „Fehler!“;

Tippfehler (in Zeile 16), versuchs nochmal, habs aktualisiert :slight_smile:

okay ich ändere die Postion über den Shutter im Webfront (von 100% auf z.b. 80%)
dann kommt diese Meldung

Bildschirmfoto 2016-03-28 um 01.57.25.png

und der Rolladen bewegt sich auf die Prozentzahl. Beim erneuten bedienen des
Shutters reagiert nichts , auch wenn ich das Skript nochmals starte passiert nichts.

Hast du noch eine Idee auf die Schnelle ?

Versuchs nochmal, Skript aktualiert. Es dürfte keine Fehlermeldung mehr kommen. Warum es allerdings beim erneuten Ändern der Variable nichts macht ist mir noch unklar. Schau mal bitte in der Konsole unter Meldungen, ob du da was siehst.

Hey Basti,

mir sind noch zwei Sachen aufgefallen das ich heute morgen nicht testen
konnte da ich den Rolladen nicht komplett hochfuhr, aufgrund der Uhrzeit :smiley:

  • Status unverändert bei Fahrt von 100% auf 0%
  • Auswahl Webfront wird mit „XFehler“ gemeldet

    Im Detail :

Ist der Rolladen geschlossen (100%) und wird komplett geöffnet über
Rollotron (Pfeil nach oben) bzw. im Homepilot Interface dann zeigt der
Status immer noch 100% an obwohl im Homepilot Interface 0% steht.

anders sieht es aber aus wenn ich den geschlossenen Rolladen nicht
ganz komplett öffne sondern nur zur Hälfte oder in eine bestimmte Pos.
alles > 0% kann man sagen dann zeigt es mir nach spätestens 30 sek.
den richtigen Status an.

Denn wenn bei mir die Rolläden automatisch am morgen hochfahren
steht immer 100% in der Variable obwohl es schon 0 sind.

Ändere ich die Position im Webfront kommt „XFehler“ und der Rolladen
fährt in die gewünschte Position !

An was kann das noch liegen ? Hast du noch eine Idee für die zwei Fehler ?

Danke, Grüße Alex

Ich vermute mal, das die unterschiedlichen Gerätetypen nicht exakt die selbe Antworten senden, dazu brauch ich deine Hilfe, da ich sie nicht kenne:

Öffne mal für jeden Gerätetyp folgende URL’s im Webbrowser und kopiere jeweils die Antwort (am besten in Code Tags [ CODE][/ CODE] (ohne leerzeichen in den Tags) hier rein):

  1. Ersetze die 10000 durch die ID des zu testenden Rollos und evt. homepilot.local durch die IP des HomePilot’s
  2. Rollo auf Position 50% fahren

http://homepilot.local/deviceajax.do?cid=9&did=10000&goto=50&command=1

  1. Antwort hier rein kopieren
  2. warten bis das Rollo auf Position 50% gefahren ist, dann:

http://homepilot.local/deviceajax.do?device=10000

  1. Antwort hier rein kopieren

Vielleicht auch nochmal mit ner anderen Position als 50% (goto=50).

Gruß Basti

Hi basti,

also das Skript läuft wie eine eins :slight_smile: Perfekt,
wie sieht es eigentlich aus wenn ich alle
Rolläden , hoch oder runter fahren möchte
muss ich dann einfach ein Skript machen wo
am Anfang die ganzen ID: 10000 , 10001 usw
drin stehen?

VG Alex

Hallo Basti,
hab mal versucht mit dem Script meinen HomePilot2 anzusteuern - klappt irgendwie nicht und bekomme die Fehlermeldung wie in dem Script hinterlegt. Bei der Direkteingabe(IP Und ID sollten stimmen…) in den Browser passiert auch nix und folgende Meldung wird ausgegeben:

{"message":"Der HomePilot® konnte nicht erreicht werden. Bitte versuchen Sie es erneut.","status":"uierror"}

.
Hast Du eine Idee?
Gruß, Kay.