Apple HomeKit (Siri) mit IP-Symcon verbinden

…ohne funktionierenden Rückkanal machen neue Geräte in meinen Augen nur wenig Sinn. Wenn ich vor Ort das Licht an und aus mache ohne das das im homekit ankommt, ist das nicht so 100%ig brauchbar.:rolleyes:

Bald :slight_smile: Zur Zeit war ich mit dem OPcache sehr abgelenkt :slight_smile:

paresy

Moin paresy,

hab dir ne PR für den Air Quality Sensor geschickt. :wink:

Grüße,
Kai

Review Kommentare sind da :smiley:

paresy

Leider. :smiley:

Mit den Tests, muss ich mal schauen, noch nie gemacht.
Den Fehler hab ich schon gefunden, war gestern zu spät. :smiley:

Grüße,
Kai

Gesendet von iPhone mit Tapatalk

Ich muss doch immer neue Herausforderungen für dich finden :smiley:

paresy

Die hab ich mir gestern Abend schon selbst geschaffen…
Ich dachte mir wunderbar, gibst du aufm Server den Ordner Modules frei, klonst alles per Git darein, dann kannste von allen Rechnern aus in der Freigabe programmieren…
Geht natürlich nicht, sobald ich mich mitm anderem Rechner und dem Repo verbinde kann ich natürlich nicht Committen oder Pushen. :D:banghead:

Grüße,
Kai

Paresy hat gestern den PR gemerged, der Air Quality Sensor ist somit auch verfügbar.

Folgende Werte werden von HomeKit erwartet:

[ul]
[li]0 = Unknown[/li][li]1 = Excellent[/li][li]2 = Good[/li][li]3 = Fair[/li][li]4 = Inferior[/li][li]5 = Poor[/li][/ul]
Grüße,
Kai

Hier mal mein Feedback:
-IPS auf Windows Server 2012 R2 als esxi host, upgrade auf 5.0 -> Keine Fehler, alles läuft stabil
-Installieren des HomeKit Plugins -> Keine Fehler beim Installieren und einrichten, ca. 1,5 Wochen am laufen und keine Fehler bemerkt, reagiert schnell und bei mir gab es bisher auch noch „Keine Antwort“ Fehler

Klasse Arbeit! Ein Lob an alle mitwirkenden :smiley:

Wünsche an Komponenten von mir wären:
-Jalousien
-Fensterkontakte
-Heizung
-Fensterantriebe (habe Kettenantriebe an den Fenstern und würde gerne sagen „öffne die Fenster im Wohnzimmer“ oder „lüfte das Wohnzimmer“)

Ich habe aber Geduld und freue mich wenn an dem Modul weitergearbeitet wird und bin gespannt was da noch so alles eingebaut wird ::wink: :loveips:

Da hat noch ein „keine“ gefehlt: bei mir gab es bisher auch noch keine „Keine Antwort“ Fehler

Bekomme beim pairen folgenden Fehler:

09.04.2018 19:22:23 | FlowHandler | Kann Daten nicht zur Instanz #56325 weiterleiten: <br />
<b>Fatal error</b>: Uncaught SodiumException: public key size should be SODIUM_CRYPTO_SIGN_PUBLICKEYBYTES bytes in /var/lib/symcon/modules/HomeKit/HomeKitBridge/session.php:758
Stack trace:
#0 /var/lib/symcon/modules/HomeKit/HomeKitBridge/session.php(758): sodium_crypto_sign_verify_detached()
#1 /var/lib/symcon/modules/HomeKit/HomeKitBridge/session.php(635): HomeKitSession->handlePairVerifyM3()
#2 /var/lib/symcon/modules/HomeKit/HomeKitBridge/session.php(239): HomeKitSession->postPairVerify()
#3 /var/lib/symcon/modules/HomeKit/HomeKitBridge/module.php(159): HomeKitSession->processData()
#4 /-(3): HomeKitBridge->ReceiveData()
#5 {main}
thrown in <b>/var/lib/symcon/modules/HomeKit/HomeKitBridge/session.php</b> on line <b>758</b><br />

Kann wer helfen?

Hast du mal das System neu gestartet? Das Pairing öfters gestartet?

paresy

Ja, pairing bestimmt 10x probiert und das System auch diverse male neu gestartet. Sogar PHP neu aufgesetzt…

Habe die Instanz komplett noch einmal entfernt, das hat geholfen… :slight_smile:

Hallo zusammen,

ich habe das selbe Problem bei mir wie eeFrank.

Bekomme keine Verbindung zu HomeKit.
KNX und meine anderen Komponenten kann ich alle Steuern.
Habe Symcon seit gerade eben auch auf Docker auf meiner Synology am Laufen.
Auch bei deaktivierter Firewall bekomme ich keine Verbindung

Gruß, Andi

Dafür dürfte paresy Pull Requests bekommen haben. :slight_smile:
Wenn ich nicht zu viel falsch gemacht habe, wird es die wohl bald geben. :wink: :smiley:

Grüße,
Kai

Sehr Cool :slight_smile:
Sobald verfügbar, werde ich updaten, testen und berichten wie es läuft :smiley:
Mal schauen ob meine Jalousien auch mit diesem Modul laufen. Mit dem Modul für die Homebridge hat die Ansteuerung von meiner selbstgebauten Arduino Motorsteuerung funktioniert. Bin aber sowieso gerade dabei das so umzumodeln, das es mit Shutter Control von IPS läuft. :loveips:

Hey Kai,
ich konnte es nicht abwarten und habe mir schonmal die accessories ContactSensor und WindowCovering manuell hinzugefügt. Nun habe ich bei den ContactSensor das Problem, das meine ganzen variablen als „bool“ angelegt sind allerdings erwartet er hier „int“ Variablen. Ich habe mir Testhalber mal einen Kontakt als „int“ angelegt und damit funktioniert es auch sehr gut.
Das Einziege was nicht so klappt, das ist glaube ich aber schon bekannt, das bei Variablen Änderung ich erst HomeKit aufrufen muss damit sich das ganze aktualisiert.
Jetzt meine Frage, gibt es eine Möglichkeit dies anzupassen oder muss ich meine ganzen Variablen neu als „int“ anlegen?

Grüße, Marc

Hallo,

HomeKit erwartet genau diese Werte, wenn ich paresy richtig verstanden habe überlegt er sich noch etwas, wie man solche Dinge trotzdem vernünftig abbilden kann.

Grüße,
Kai

Hi wann wird das gehen:

Änderungen vom z.B. WebFront aus werde noch nicht Live in die Home App zurück übertragen

?

Kann mir mal jemand ein Beispiel zeigen, wie per Script z.b. eine Level Variable von dem Dimmer zu Homekit hinzufügen kann ?

Bin schon weiter gekommen:

IPS_GetProperty($hbid, „AccessoryLightbulbDimmer“);

So bekomme ich schon mal die Konfig raus:

[{„ID“:2,„Name“:„Licht Test 1“,„VariableID“:37084},{„ID“:3,„Name“:„Licht Test 2“,„VariableID“:47637}]

Aber das ist ja nicht so schön… verstehe ich das richtig, das ich immer, bevor ich ein neues Gerät hinzufügen kann, erst die Konfig einlesen muss, dann erweitern um das Gerät, das hinzugefügt werden soll und die neue Konfig wieder einspielen muss ?

Ich muss die letzte ID in der Konfig finden, dann +1 und dann den rest ?

Das ist aber total umständlich :frowning: Geht das nicht einfacher, smarter ? :banghead:

So habe es schonmal hinbekommen, scheitere nur daran wie ich die letzte ID rausbekomme ?

Ich habe mal eine Funktion geschrieben:

<?
$hbid=57136 /*HomeKit Bridge*/;

homekit_add($hbid,"lightswitch","Licht Test 6",31578);

function homekit_add($hbid,$devicegroup,$name,$varid)
{
$debug=false;

switch ($devicegroup) {
    case "airsensor":
        echo "Es ist ein Lufquallitätssensor
";
        $Accessory="AccessoryAirQualitySensor";
        break;
    case "dooropener":
        echo "Es ist ein Garagentoröffner
";
        $Accessory="AccessoryGarageDoorOpener";
        break;
    case "humiditysensor":
        echo "Es ist ein Luftfeuchtigkeitsmesser
";
        $Accessory="AccessoryHumiditySensor";
        break;
    case "leaksensor":
        echo "Es ist ein Leck Sensor
";
        $Accessory="AccessoryLeakSensor";
        break;    
     case "lightsensor":
        echo "Es ist ein Licht Sensor
";
        $Accessory="AccessoryLightSensor";
        break;         
     case "moitionsensor":
        echo "Es ist ein Bewegungs Sensor
";
        $Accessory="AccessoryMotionSensor";
        break;      
    case "smokesensor":
        echo "Es ist ein Rauch Sensor
";
        $Accessory="AccessorySmokeSensor";
        break; 
    case "switch":
        echo "Es ist ein Schalter
";
        $Accessory="AccessorySwitch";
        break; 
    case "temperaturesensor":
        echo "Es ist ein Temperatur Sensor
";
        $Accessory="AccessoryTemperatureSensor";
        break; 
    case "lightswitch":
        echo "Es ist ein Lichtswitch
";
        $Accessory="AccessoryLightbulbSwitch";
        break;

    case "dimmer":
        echo "Es ist ein Dimmer
";
        $Accessory="AccessoryLightbulbDimmer";
        break;
}
#***************** Config lesen *********************

$settings=IPS_GetProperty($hbid, $Accessory);
$json_input=json_decode($settings,true);
if ($debug==true) print_r($json_input);
$lastkey=0;
$suchen=$varid;
$vorhanden=false;
if (empty($json_input) != true)
{
foreach ($json_input as $array)
{
$vorhanden=array_search($suchen,$array,true);
}

$keys=array_keys($json_input);
$firstkey = (isset($keys[0])) ? $keys[0] : null;
$lastkey = (isset($keys[count($keys)-1])) ? $keys[count($keys)-1] : null;
if ($debug==true) print_r($lastkey);
}

#********************************** grösste ID finden *************************************************
$devices=array("AccessoryAirQualitySensor","AccessoryGarageDoorOpener","AccessoryHumiditySensor","AccessoryLeakSensor","AccessoryLightbulbSwitch","AccessoryLightbulbDimmer","AccessoryLightSensor","AccessoryMotionSensor","AccessorySmokeSensor","AccessorySwitch","AccessoryTemperatureSensor");
$max=0;
foreach ($devices as $deviceart)
{
$settings=IPS_GetProperty($hbid, $deviceart);
$json=json_decode($settings,true);
$dimmer_keyvalue=0;

if (empty($json) != true)
{
$keys=array_keys($json);
$firstkey = (isset($keys[0])) ? $keys[0] : null;
$dimmer_lastkey = (isset($keys[count($keys)-1])) ? $keys[count($keys)-1] : null;
$dimmer_keyvalue=$json[$dimmer_lastkey]['ID'];
if ($dimmer_keyvalue >$max) $max =$dimmer_keyvalue;
}}
#********************************** alles Zusammenbauen *************************************************

if ($vorhanden == true) print "Das Gerät gibt es schon
";

if ($vorhanden == false) 
{
print "Das Gerät gibt es nocht nicht, ich lege es an...
";
if ($debug==true) print $max;

$id=$max +1;
$newarray=array($lastkey => array("ID"=> $id, "Name" => $name, "VariableID" => $varid));
if (empty($json_input)==false)$finalarray=array_merge($json_input,$newarray);
else $finalarray=$newarray;

$temp=json_encode($finalarray);
if ($debug==true) print $temp;
IPS_SetProperty($hbid,$Accessory,$temp);
IPS_ApplyChanges($hbid );
}}
?>

Geht das nicht einfacher ?

Ohne Gewehr das alles geht, war auf die schnelle…