als erstes kann ich meine IP sehen also die von der ccu
hmmm…ich habe keine CCu - aber hast Du dir das hier angeschaut: CCU: IP-Symcon :: Automatisierungssoftware ?
und dann die IP verwaltungskonsole, aber wo sehe ich ob eine verbindung zur CCU vorhanden ist ??
In der „logischen Baumansicht“ gibt es unten die I/O Instanzen. Dort muss Deine CCU zu finden sein
wenn ich suchen gehe findet der ja auch garnix
Doch doch - da ist sie doch. Öffne sie einmal (doppelklick) und dann schau mal ob Du verbunden bist. Ich bin grad nicht vor meinem IPS, aber da müsste etwas wie „Gerät öffnen“ oder „Gerät verbinden“ stehen stehen…
bin mir jetzt echt unsicher ob die adressen richtig sind kann ich die auch testen oder würde ich die finden auf den rechner??
Sieht gut aus. Port’s in der Firewall freigegeben? Host ist die CCU, Ereignisserver ist der Rechner wo IPS läuft?
ja alles richtig gemacht, kann man die verbindung testen???
Hast du schon irgendeinen Aktor an der CCU angelernt? Wenn ja was?
Starte mal dieses Skript.
<?
/*
********************************************************************************
Create instances for new Homematic Devices from CCU device
Attention! It is necessary to have the XMLPatch-API installed (from
Homematic Inside
Creator: friendly
Version: 1.0
********************************************************************************
*/
$ccu_address = 'http://192.168.1.56'; // Protocol and IP address of CCU
$category_new_devices = 'new Homematic Devices'; // Category root folder for new devices
$category_dummy_room = 'no room'; // Category folder if room is not set
$logdir = IPS_GetKernelDir().'/logs/';
$logfile
= $logdir."hm_create_instances.log";
// nothing has to be changed below
// *****************************************************************************
$device_file = $logdir."HM_devicelist.xml";
$room_file = $logdir."HM_roomlist.xml";
// store reply from CCU for logging
$deviceList = getXmlApiList($ccu_address."/config/xmlapi/devicelist.cgi", $device_file);
$roomList = getXmlApiList($ccu_address."/config/xmlapi/roomlist.cgi", $room_file);
// check every device from devicelist
foreach($deviceList as $attrib) {
$HM_name = utf8_decode($attrib['name']);
$HM_address = $attrib['address'];
$HM_interface = $attrib['interface'];
// interate over all channels of device
foreach ($attrib as $channel) {
$HM_channel_name = utf8_decode($channel['name']);
$HM_channel_address = $channel['address'];
$HM_channel_ise_id = (integer)$channel['ise_id'];
$HM_found = FALSE;
// check if channel is already configured in IP-Symcon
foreach ( IPS_GetInstanceListByModuleID("{EE4A81C6-5C90-4DB7-AD2F-F6BBD521412E}") as $id ){
$curr_address = HM_GetAddress($id);
if($HM_channel_address == $curr_address){
$HM_found = TRUE;
$HM_instance = $id;
}
}
// search room for channel
$HM_room = $category_dummy_room;
foreach ($roomList as $currRoom){
$currRoomName = utf8_decode($currRoom['name']);
foreach ($currRoom as $roomChannel){
$roomChannel_ise_id = (integer)$roomChannel['ise_id'];
if($HM_channel_ise_id == $roomChannel_ise_id){
$HM_room = $currRoomName;
}
}
}
// create channel instance if address not exists
if($HM_found == FALSE){
// get folder (category) hierarchy ( Category / Room / Device )
$category = GetCategoryIDByName(0, $category_new_devices);
$room = GetCategoryIDByName($category, $HM_room);
$device = GetCategoryIDByName($room, $HM_name);
// Create instance
$HM_instance = IPS_CreateInstance("{EE4A81C6-5C90-4DB7-AD2F-F6BBD521412E}");
IPS_SetParent($HM_instance,$device);
IPS_SetName($HM_instance, $HM_channel_name);
HM_SetAddress($HM_instance,(string)$HM_channel_address);
if($HM_interface == 'BidCos-RF'){
$protocol = 0;
}
else{
$protocol = 1;
};
HM_SetProtocol($HM_instance,$protocol);
HM_SetEmulateStatus($HM_instance,true);
// apply changes
IPS_ApplyChanges($HM_instance);
}
// log channel attributes
logEntry ("Device: ".$HM_name." - ".$HM_interface." - Channel: ".
$HM_channel_name." (room: ".$HM_room.") - address: ".$HM_channel_address.
" - IPS instance: ".$HM_instance." - new created: ".
($HM_found ? "no" : "yes")."
");
}
}
function GetCategoryIDByName($ParentID, $name){
global $IPS_SELF;
$InstanzID = @IPS_GetCategoryIDByName($name, $ParentID);
if($InstanzID === false){
$InstanzID = IPS_CreateCategory();
IPS_SetParent($InstanzID, $ParentID);
IPS_SetName($InstanzID, $name);
IPS_SetInfo($InstanzID, "this variable was created by script #$IPS_SELF");
}
return $InstanzID;
}
function logEntry($text) {
global $logfile;
if (strlen($logfile)>0) {
$log=fopen($logfile,"a+");
if ($log) {
$d=date("r");
fwrite($log,"$d $text");
fflush($log);
fclose($log);
}
}
}
function getXmlApiList($url, $file){
logEntry("Get config from: ".$url."
");
$xml = @file_get_contents($url);
if((strpos($http_response_header[0], "200") === false)){
logEntry("Error getting devices.
");
return "";
}
// save Contents
file_put_contents( $file, $xml );
logEntry("Config written to ".$file."
");
return simplexml_load_string($xml);
}
?>
Im Objektbaum sollte dann so etwas erscheinen.
ja ne ganze menge aber das Wandthermostat ist am besten liegt neben mir:)
das ist Ok, ist etwas in der Objektansicht dazu gekommen?
So, hoffe das ich die ein wenig helfen konnte über TV. Bei weitere Fragen einfach hier melden.
dank BMW M3 habe ich die kiste zum laufen gebracht aber ich stelle gerade fest das Temperaturen nicht reinkommen seit 15:30 steht alles beim alten, die Aktoren kann ich aber alle ansprechen
also so wie es scheind geht die Datenübertragung nur in eine Richtung von IPS zur CCU aber nicht zurück darum bekomme ich auch rückmeldungen zB fester offen
Deaktiviere mal die Firewall bzw. Port 5544 muß frei sein
Lass mal das Script laufen.
<?
##################################################################################
# Zum überprüfen ob der entsprechende TCP-Port erreichbar ist oder geblockt wird #
# Für einen UDP Check muss ein udp// vor die IP-Adresse gesetzt werden. #
##################################################################################
//$port = array(1012,49000 /*[Objekt #49000 existiert nicht]*/); // Fritzbox
$port = array(2000,2001,2002,5544); // Homematic. Für den Lanadapter muss nur Port 2001 und 5544 erreichbar sein
//$port = array(5432);
for($i=0; $i<count($port); $i++)
{
$socket = fsockopen("192.168.1.45", $port[$i], $errno, $errstr); // IP Adresse anpassen
if(!$socket)
{
echo "ERROR: $errno - $errstr
";
}
else
{
echo "Port: ".$port[$i]." ist erreichbar.
";
}
}
?>