Aus einer CCU kann man ja die Gerätenamen mit /usr/local/lib/node_modules/homematic-manager/tools/import_rega_names.js <CCU IP>
übernehmen. Mit der IP des Pi, auf dem Homegear läuft, funktioniert das nicht. Gibt es eine andere Möglichkeit?
Hallo @Manul,
vermutlich könnte das Skript umgeschrieben werden. Poste es mal, dann kann ich da reinschauen.
Viele Grüße
Sathya
Hey @Manul,
hier .
Folgendes Skript in “/var/lib/homegear/scripts/importNamesToHmManager.php” speichern:
<?php
if($argc < 2) die("Bitte übergib den Pfad als Parameter, in welchem die Datei names.json angelegt werden soll (z. B. \"~/.hm-manager\".\n");
$namesPath = $argv[1];
if(substr($namesPath, -1) != '/') $namesPath .= '/';
$namesPath .= 'names.json';
$hg = new \Homegear\Homegear();
$devices = $hg->listDevices(false, array('ID', 'ADDRESS', 'CHANNELS'));
$names = array();
if(file_exists($namesPath))
{
$content = file_get_contents($namesPath);
$names = json_decode($content, true);
}
foreach($devices as $device)
{
$id = $device['ID'];
$serial = $device['ADDRESS'];
$channels = $device['CHANNELS'];
if(array_key_exists($serial, $names)) continue;
$name = $hg->getName($id);
if(!$name) continue;
$names[$serial] = $name;
foreach($channels as $channel)
{
$names[$serial.':'.$channel] = $name.':'.$channel;
}
}
file_put_contents($namesPath, json_encode($names, JSON_PRETTY_PRINT));
und mit folgendem Befehl ausführen:
homegear -e rs importNamesToHmManager.php ~/.hm-manager
Unter der Annahme, dass dein HomeMatic-Manager die Daten unter ~/.hm-manager speichert.
Viele Grüße
Sathya
Danke, funktioniert aber leider nicht. Datei .hm-manager/names.json wird nicht angelegt, egal, ob ich “homegear -e rs …” als root oder als mein eigener Nutzer ausführe. Log sieht dabei gut aus:
11/09/16 19:41:57.385 Script Engine Server: Info: Starting script "/var/lib/homegear/scripts/importNamesToHmManager.php" with id 5.
11/09/16 19:41:57.393 Script Engine Server: Info: Client number 0 is calling RPC method: listDevices Parameters:
(Boolean) 0
(Array length=3)
{
(String) ID
(String) ADDRESS
(String) CHANNELS
}
11/09/16 19:41:57.410 Script Engine Server: Info: Client number 0 is calling RPC method: getName Parameters:
(Integer) 1
11/09/16 19:41:57.411 Script Engine Server: Info: Client number 0 is calling RPC method: getName Parameters:
(Integer) 2
11/09/16 19:41:57.411 Script Engine Server: Info: Client number 0 is calling RPC method: getName Parameters:
(Integer) 3
11/09/16 19:41:57.415 Info: Script with id 5 finished with exit code 0
Hallo Manul,
ich hab das gerade bei mir auch ausprobiert. Im Prinzip funktioniert es, allerdings hat Homegear wohl keine Schreibrechte im .hm-manager Verzeichnis. Wenn Du stattdessen zB
homegear -e rs importNamesToHmManager.php /tmp
aufrufst und dann mit
mv /tmp/names.json ~/.hm-manager/
verschiebst, ist alles wie gewünscht.
Gruß,
Frank
Danke! Darauf wäre ich so schnell nicht gekommen - ich hab’s, wie gesagt, auch als root probiert. Ich teste das morgen.
@Manul: Der homegear Prozess setzt seine Rechte herunter.
Ist in der main.conf konfigurierbar, auch wenn die Kommentare dort noch veraltet scheinen.
Ooops, wohl doch schon zu spät