Homegearlib.net Versuche

Hallo,
ich habe versucht über die Homegearlib Kontakt mit meiner Homegear Installation aufzunehmen und bin kläglich gescheitert. Dazu hab ich mir die aktuelle lib runter geladen und wie in der Doku beschrieben ein Projekt angelegt.
Da ich ohne SSL arbeite ist es ja ziemlich übersichtlich.


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using HomegearLib;
using HomegearLib.RPC;
using System.Security.Authentication;

namespace Homegear_RPC
{
    public partial class Form1 : Form
    {
        RPCController rpc = null;
        Homegear homegear = null;
        string tb1 = "";
        
        public Form1()
        {
            InitializeComponent();
        }

        void rpc_ClientConnected(RPCClient sender, CipherAlgorithmType cipherAlgorithm, Int32 cipherStrength) { tb1 = "Connected to Homegear." + Environment.NewLine; }
        void rpc_ClientDisconnected(RPCClient sender) {tb1="Disconnected from Homegear."+ Environment.NewLine;}
        void rpc_ServerDisconnected(RPCServer sender) {tb1="Incoming connection from Homegear closed." + Environment.NewLine; }
        void rpc_ServerConnected(RPCServer sender, CipherAlgorithmType cipherAlgorithm, Int32 cipherStrength) { tb1 = "Incoming connection from Homegear." + Environment.NewLine; }
        void homegear_OnConnectError(Homegear sender, string message, string stackTrace) { tb1 = "Error connecting to Homegear: " + message + "\r\nStacktrace: " + stackTrace + Environment.NewLine; }
        void homegear_OnReloaded(Homegear sender){tb1=("Reload complete. Received " + sender.Devices.Count + " devices." + Environment.NewLine);}

        private void button1_Click(object sender, EventArgs e)
        {
            RPCController rpc = new RPCController
                    (
                        "172.17.30.238",     //Hostname of your server running Homegear
                        2001,           //Port Homegear listens on
                        "172.17.30.53",   //The hostname or ip address of the computer your program runs on
                        "0.0.0.0",      //The ip address the callback event server listens on
                        9876            //The port the callback event server listens on
                    );
            rpc.ClientConnected += rpc_ClientConnected;
            rpc.ClientDisconnected += rpc_ClientDisconnected;
            rpc.ServerConnected += rpc_ServerConnected;
            rpc.ServerDisconnected += rpc_ServerDisconnected;

            Homegear homegear = new Homegear(rpc);
            homegear.ConnectError += homegear_OnConnectError;
            homegear.Reloaded += homegear_OnReloaded;

            int i = 0;
            foreach (KeyValuePair<Int32, Device> device in homegear.Devices)
            {
                i++;
            }
            textBox2.Text = i.ToString();
            //homegear.Devices[1].Channels[1].Variables["STATE"].;
            //homegear.Devices[2].Channels[1].Config["WINDOW_OPEN_TEMPERATURE"].IntegerValue =     = true_selectedDevice.Channels[_selectedVariable.Channel].Config.Put();
            //textBox1.Text = homegear.Devices[2].Channels[1].Variables["WINDOW_OPEN_TEMPERATURE"].StringValue;
                ;
            
        }
    }
}

Wenn ich den Button drücke passiert auf der Homegear Installation folgendes:

01/11/17 10:22:52.593 RPC Server (Port 2001): Info: Connection from 172.17.30.53:51776 accepted. Client number: 26
01/11/17 10:22:52.594 RPC Server (Port 2001): Info: RPC server client id for client number 26 is: 8
01/11/17 10:22:52.605 RPC Server (Port 2001): Info: Client number 26 is calling RPC method: getAllValues (2) Parameters:
(Boolean) 1
01/11/17 10:22:52.631 RPC Server (Port 2001): Info: Client number 26 is calling RPC method: listFamilies (2) Parameters:
01/11/17 10:22:52.646 RPC Server (Port 2001): Info: Client number 26 is calling RPC method: init (2) Parameters:
(String) binary://172.17.30.53:9876
(String) HomegearLib.172.17.30.53:9876
(Integer) 7
01/11/17 10:22:52.647 Info: Removing server "binary://172.17.30.53".
01/11/17 10:22:52.648 Info: Adding server "binary://172.17.30.53".
01/11/17 10:22:52.648 Info: Calling init methods on server "binary://172.17.30.53".
01/11/17 10:22:52.656 RPC Server (Port 2001): Info: Client number 26 is calling RPC method: listFamilies (2) Parameters:
01/11/17 10:22:52.660 RPC Server (Port 2001): Info: Client number 26 is calling RPC method: getAllValues (2) Parameters:
(Boolean) 1
01/11/17 10:22:52.683 RPC Server (Port 2001): Info: Client number 26 is calling RPC method: getAllSystemVariables (2) Parameters:
01/11/17 10:22:53.149 RPC client: Info: Calling RPC method "system.listMethods" on server binary://172.17.30.53.
01/11/17 10:22:53.175 RPC client: Info: Calling RPC method "listDevices" on server 172.17.30.53.
01/11/17 10:23:22.803 RPC Server (Port 2001): Info: Client number 26 is calling RPC method: clientServerInitialized (2) Parameters:
(String) HomegearLib.172.17.30.53:9876
01/11/17 10:23:32.833 RPC Server (Port 2001): Info: Client number 26 is calling RPC method: clientServerInitialized (2) Parameters:
(String) HomegearLib.172.17.30.53:9876
01/11/17 10:23:41.066 RPC Server (Port 2001): Info: Connection to client number 26 closed (3).

Sieht für mich jetzt nicht schlecht aus. Aber Ein Device nun anzusprechen klappt nicht.
Device 1 ist ein Fensterkontakt.
homegear.Devices[1].Channels[1].Variables[“STATE”].BooleanValue = true;
endet mit “Der angegebene Schlüssel war nicht im Wörterbuch angegeben.”

Was mir ebenfalls aufgefallen ist, im Beispiel steht bei der Erstellung des Homgear objekts
Homegear homegear = new Homegear(rpc, true);

true lässt er bei mir gar nicht zu. Er lässt keine zwei Argumente zu.

Ach ja meine Firewall ist korrekt eingerichtet. Das Beispieltool funktioniert.
Ich bin C# technisch ein Anfänger aber vielleicht kann mir ja jemand etwas unter die Arme greifen.

Besten Dank im Voraus
Grüße / Zennix

Hallo @Zennix,

hast du noch eine alte Version? Ich habe dem GitHub-Probjekt mal zwei Beispiel-Projekte hinzugefügt. Der zweite Parameter des Homegear-Objekt-Konstrutors ist dafür da, Ereignisse (und damit den Callback-Server) ein- oder auszuschalten.

Probier noch einmal, ob es mit der aktuellen Version klappt (0.1.6.0). Mit Versionen vor 0.1.5.1 kann es mit der aktuellen Homegear-Version Probleme geben.

Viele Grüße

Sathya

Hallo Sathya,

Die aktuelle 0.1.6.0 nimmt jetzt den zweiten Parameter entgegen.

Dennoch komme ich nicht weiter.
Bekomme immer die Meldung:

homegear.Devices[1].Channels[1].Variables[“STATE”].BooleanValue = true;
endet mit “Der angegebene Schlüssel war nicht im Wörterbuch angegeben.”

Hast du noch eine Idee?

Grüße / Zennix

Hallo Sathya,

Hab eben die beiden Beispiele unter Examples gefunden. Jetzt versuch ich das mal auf diesem Weg und nehm die als Vorlage. Sollte ich hier auch nicht klar kommen melde ich mich wieder.

Besten Dank / Zennix

Hallo @Zennix,

Hast du auf Homegear.Reloaded gewartet? Vorher sind die Geräte nicht ansprechbar.

Viele Grüße

Sathya

Hallo Sathya,

bin jetzt weiter. Kann meinen Teststeller auslesen und setzen. Warten bringt was :slight_smile:

Vielen Danke / Grüße / Zennix