Page 1 of 1

is het mogelijk een homeseer device value aan te roepen

Posted: Wed Dec 07, 2016 7:36 pm
by Harry
Hallo,...
Ik probeer een manier te vinden om een waarde van een in homeseer aanwezige device te gebruiken in een applicatie.
kan ik de waarde van bv een temp sensor importeren in bv een v.b .net projectje.

ik gebruik nog de HS2 software.

Re: is het mogelijk een homeseer device value aan te roepen

Posted: Fri Dec 09, 2016 3:57 pm
by AshaiRey
Natuurlijk kan dat, geen enkel probleem
In hoeverre is je kennis van .NET ontwikkelen? Kan ik gewoon een paar code snippers posten of moet je een compleet voorbeeld hebben maar dat dan weer uitgebreider is met overbodige zaken waar je weer overheen moet lezen?

Re: is het mogelijk een homeseer device value aan te roepen

Posted: Fri Dec 09, 2016 4:16 pm
by AshaiRey
Dit zou moeten werken
Een aparte class HSTools.cs

Code: Select all

using System;
using System.Net;
using System.Collections.Generic;
using System.Text;
using HomeSeer2;

namespace Je_Programma_Namespace
{
    class HSTools
    {
        private static HomeSeer2.application hsapp = new HomeSeer2.application();
        private static Scheduler.hsapplication hs = new Scheduler.hsapplication();

        public HSTools()
        {
        }

 
        #region Homeseer
        public bool HSConnect()
        {
            try
            {
		// Get the Username and Paswoord from the config file
                hsapp.SetHost(ConfigurationManager.AppSettings["HSLocation"]);
                hsapp.Connect(ConfigurationManager.AppSettings["HSUsername"], ConfigurationManager.AppSettings["HSPassword"]);
                hs = hsapp.GetHSRef();
            }
            catch
            {
                WriteToLog(string.Format("{0} - My program could not connect to HomeSeer!", DateTime.Now));
                return false;
            }
            return true;
        }

         
        /// <summary>
        /// Get a device value
        /// </summary>
        /// <param name="strDeviceCode"></param>
        /// <param name="Action"></param>
        public int GetDeviceValue(string strDeviceCode)
        {
	    int DeviceValue = -1;
            try
           {
                DeviceValue = hs.GetDeviceValue(strDeviceCode);
            }
            catch
            {
                WriteToLog(string.Format("{0} - My program could not get the value of device {1}.", DateTime.Now, strDeviceCode));
            }
	    return DeviceValue;
        }

        /// <summary>
        /// Control a device
        /// </summary>
        /// <param name="strDeviceName"></param>
        /// <param name="Statuse"></param>
        /// <param name="Value"></param>
        /// <param name="strText"></param>
        /// <param name="Action"></param>
        public void DoDevice(string strDeviceCode, int Status, int Value, string strText)
        {
            try
            {
                hs.SetDeviceStatus(strDeviceCode, Status);
                hs.SetDeviceValue(strDeviceCode, Value);
                hs.SetDeviceString(string strDeviceCode, strText, true);
            }
            catch
            {
                WriteToLog(string.Format("{0} - My program could not control device {1}.", DateTime.Now, strDeviceCode));
            }
        }

        /// <summary>
        /// Trigger an event
        /// </summary>
        /// <param name="EventName"></param>
        public void DoEvent(string EventName)
        {
            try
            {
                hs.TriggerEvent(EventName);
            }
            catch
            {
                Console.WriteLine("There was a problem to trigger the HS event named : {0}", EventName);
            }
        }
        #endregion
    }
}
Die kan je dan bijvoorbeeld in Main() aanroepen met

Code: Select all

           var hstools = new HSTools();

            if (hstools.HSConnect() == true)
            {
                 HSTools.GetDeviceValue("B12");
            }
            else
            {
                 // Could not connect the HS2 server
            }
Vergeet niet om in de folder waar je applicatie draait de volgende DLL's neer te zetten.
HomeSeer2.dll
HS2Util.dll
interop.dll
Scheduler.dll

Re: is het mogelijk een homeseer device value aan te roepen

Posted: Sat Dec 10, 2016 3:08 pm
by Harry
bedankt voor de info, motiveert weer enorm zo op weg geholpen te worden...
nog genoeg donkere winter avonden om hier mee aan de slag te kunnen.
voorbeelden, zijn natuurlijk altijd welkom.... hier mee ontdek je vaak methodes waar je zelf nog niet op was gekomen .

Re: is het mogelijk een homeseer device value aan te roepen

Posted: Sun Dec 11, 2016 7:59 pm
by Harry
Ik blijf toch nog wat steken.
het plan is vanaf een andere pc, verbinding te maken met de Hs2 server. en daar de waarde ophalen en die vervolgens weer gebruiken in een VB.Net applicatie.

Re: is het mogelijk een homeseer device value aan te roepen

Posted: Mon Dec 12, 2016 9:41 pm
by AshaiRey
Het kan nog steeds gedaan worden met bovenstaand voorbeeld

Het config file

Code: Select all

<?xml version="1.0"?>
<configuration>
  <appSettings>
    <!-- Homeseer settings 
    For tests from a remote location change this setting
    from localhost to the IP address of the HomeSeer machine
    <add key="HSLocation" value="localhost" />-->
    <add key="HSLocation" value="192.168.1.56"/>
    <add key="HSUsername" value="default"/>
    <add key="HSPassword" value="default"/>
  </appSettings>
</configuration>
Wat heb je al en wat is je probleem?