+ Antworten
Seite 3 von 17 ErsteErste 1 2 3 4 5 13 ... LetzteLetzte
Ergebnis 21 bis 30 von 162
  1. #21
    Registriert seit
    Jan 2010
    Ort
    Rheinland Pfalz
    Beiträge
    1,752

    Standard Gateway Class

    Hier das neue sollte funktionieren

    PHP-Code:
    <?php

    // -----------------------------------------------------------------------------
    class gardena_gateway
    {
        var 
    $user_id$token$locations;
        var 
    $devices = array();

        const 
    LOGINURL        "https://sg-api.dss.husqvarnagroup.net/sg-1/sessions";
        const 
    LOCATIONSURL    "https://sg-api.dss.husqvarnagroup.net/sg-1/locations/?user_id=";
        const 
    DEVICESURL    "https://sg-api.dss.husqvarnagroup.net/sg-1/devices?locationId=";
        const 
    CMDURL        "https://sg-api.dss.husqvarnagroup.net/sg-1/devices/|DEVICEID|/abilities/Gateway/command?locationId=";
    // -----------------------------------------------------------------------------
        // Gateway
        
    const CATEGORY_DEVICE_INFO        "device_info";
        const 
    CATEGORY_GATEWAY            "gateway";
    // -----------------------------------------------------------------------------
        
    function gardena_gateway($user$pw)
        {
            
    $data = array(
                
    "sessions" => array(
                    
    "email" => "$user""password" => "$pw")
                );
            
    $data_string json_encode($data);
            
    $ch curl_init(self::LOGINURL);
            
    curl_setopt($chCURLOPT_CUSTOMREQUEST"POST");
            
    curl_setopt($chCURLOPT_POSTFIELDS$data_string);
            
    curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
            
    curl_setopt($chCURLOPT_HTTPHEADER, array(
                
    'Content-Type:application/json',
                
    'Content-Length: ' strlen($data_string))
            );
            
    $result curl_exec($ch);
            
    $data json_decode($result);
            
    $this -> token $data -> sessions -> token;
            
    $this -> user_id $data -> sessions -> user_id;
            
    $this -> loadLocations();
            
    $this -> loadDevices();
        }
    // -----------------------------------------------------------------------------
        
    function loadLocations()
        {
            
    $url self::LOCATIONSURL $this -> user_id;
            
    $ch curl_init($url);
            
    curl_setopt($chCURLOPT_CUSTOMREQUEST"GET");
            
    curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
            
    curl_setopt($chCURLOPT_HTTPHEADER, array(
                
    'Content-Type:application/json',
                
    'X-Session:' $this -> token)
            );
            
    $this -> locations json_decode(curl_exec($ch)) -> locations;  
        }
    // -----------------------------------------------------------------------------
        
    function loadDevices()
        {
            foreach(
    $this->locations as $location)
            {
                
    $url self::DEVICESURL $location -> id;
                
    $ch curl_init($url);
                
    curl_setopt($chCURLOPT_CUSTOMREQUEST"GET");
                
    curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
                
    curl_setopt($chCURLOPT_HTTPHEADER, array(
                    
    'Content-Type:application/json',
                    
    'X-Session:' $this -> token)
                );
                
    $this -> devices[$location -> id] = json_decode(curl_exec($ch)) -> devices;
            }
        }
    // -----------------------------------------------------------------------------
        /*
        * Finds the first occurrence of a certain category type.
        * Example: You want to find your only mower, having one or more gardens. 
        * @param constant $category
        */
        
    function getFirstDeviceOfCategory($category)
        {
            foreach(
    $this -> devices as $locationId => $devices)
            {
                foreach(
    $devices as $device)
                    if (
    $device -> category == $category)
                        return 
    $device;
            }
        }
    // -----------------------------------------------------------------------------
        
    function getDeviceLocation($device)
        {
            foreach(
    $this -> locations as $location)
                foreach(
    $location -> devices as $d)
                    if (
    $d == $device -> id)
                        return 
    $location;
        }
    // -----------------------------------------------------------------------------
        
    function getInfo($device$category_name$proberty_name)
        {
            foreach (
    $device -> abilities as $ability)
                if (
    $ability -> name == $category_name)
                    foreach(
    $ability -> properties as $property)
                        if (
    $property -> name == $proberty_name)
                            return 
    $property -> value;
        }

    }

    ?>
    Gruß WiBo

    "Eventuelle Rechtschreib- und Tippfehler jeglicher Art sind nur ein Zeichen meiner Geschwindigkeit Ich bitte euch, gelassen darüber hinweg zu lesen."

  2. #22
    Registriert seit
    Jan 2010
    Ort
    Rheinland Pfalz
    Beiträge
    1,752

    Und noch ein kleines Script da seht ihr alle Daten die da ankommen.
    Hilft euch vlt. weiter.

    PHP-Code:
    <?php

        error_reporting
    (E_ALL);
        include(
    "pass.ips.php");
        include(
    "php_gardena_mover_class.ips.php");

        
    $gardena = new gardena($pw_user_maeher$pw_pawo_maeher);
        
    $mower $gardena -> getFirstDeviceOfCategory($gardena::CATEGORY_MOWER);

        
    print_r($gardena);

    //    print_r($mower);

    ?>
    Gruß WiBo

    "Eventuelle Rechtschreib- und Tippfehler jeglicher Art sind nur ein Zeichen meiner Geschwindigkeit Ich bitte euch, gelassen darüber hinweg zu lesen."

  3. #23
    Registriert seit
    Jan 2006
    Ort
    Schönkirchen, S.-H.
    Beiträge
    658

    Hallo WiBo,

    Gateway konnte nun erfolgreich eingebunden werden. Danke.

    Das zweite Script war sehr hilfreich. Bastel gerade an der Class für den Feuchtigkeitssensor mit dem dazugehörigen Ausleseskript. Bis zur Batterie ist es schon fertig. Hoffe, ich kann es heute noch abschließen und dann posten.

    Bei den Regnern werde ich sicher noch Hilfe benötigen.

    Gruß

    Jimmy

  4. #24
    Registriert seit
    Jul 2014
    Ort
    Heilbronn
    Beiträge
    314

    Also irgendwie komme ich mit den Klassen net zurecht ... bei mir läuft immer noch net ... immer noch dieselben Meldungen ... ich glaube ich brauch mal eine 1000seitige Anleitung .. Grüsse, MaLu

  5. #25
    Registriert seit
    Jan 2006
    Ort
    Schönkirchen, S.-H.
    Beiträge
    658

    Moin,

    Feuchtigkeitssensor ist fertig. Hier die Klasse und das Script nach "unser" Lesart.

    Klasse: php_gardena_senor_class.ips.php

    PHP-Code:
    <?php

    // -----------------------------------------------------------------------------
    class gardena_sensor
    {
        var 
    $user_id$token$locations;
        var 
    $devices = array();

        const 
    LOGINURL        "https://sg-api.dss.husqvarnagroup.net/sg-1/sessions";
        const 
    LOCATIONSURL    "https://sg-api.dss.husqvarnagroup.net/sg-1/locations/?user_id=";
        const 
    DEVICESURL    "https://sg-api.dss.husqvarnagroup.net/sg-1/devices?locationId=";
        const 
    CMDURL        "https://sg-api.dss.husqvarnagroup.net/sg-1/devices/|DEVICEID|/abilities/sensor/command?locationId=";
    //-----------------------------------------------------------------------------
        // Sensor
        
    const CATEGORY_DEVICE_INFO         "device_info";
        const 
    CATEGORY_SENSOR              "sensor";
        
    // Sensor Batterie
        
    const CATEGORY_BATTERY             "battery";
        
    // Sensor Radio - Funksignal
        
    const CATEGORY_RADIO               "radio";
        
    // Sensor Temperatur
        
    const CATEGORY_AMBIENT_TEMPERATURE "ambient_temperature";
        
    // Sensor Boden_Temperatur
        
    const CATEGORY_SOIL_TEMPERATURE "soil_temperature";
        
    // Sensor Luftfeuchtigkeit
        
    const CATEGORY_HUMIDITY"humidity";
        
    // Sensor Helligkeit
        
    const CATEGORY_LIGHT"light";

    //-----------------------------------------------------------------------------
        
    function gardena_sensor($user$pw)
        {
            
    $data = array(
                
    "sessions" => array(
                    
    "email" => "$user""password" => "$pw")
                );
            
    $data_string json_encode($data);
            
    $ch curl_init(self::LOGINURL);
            
    curl_setopt($chCURLOPT_CUSTOMREQUEST"POST");
            
    curl_setopt($chCURLOPT_POSTFIELDS$data_string);
            
    curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
            
    curl_setopt($chCURLOPT_HTTPHEADER, array(
                
    'Content-Type:application/json',
                
    'Content-Length: ' strlen($data_string))
            );
            
    $result curl_exec($ch);
            
    $data json_decode($result);
            
    $this -> token $data -> sessions -> token;
            
    $this -> user_id $data -> sessions -> user_id;
            
    $this -> loadLocations();
            
    $this -> loadDevices();
        }
    // -----------------------------------------------------------------------------
        
    function loadLocations()
        {
            
    $url self::LOCATIONSURL $this -> user_id;
            
    $ch curl_init($url);
            
    curl_setopt($chCURLOPT_CUSTOMREQUEST"GET");
            
    curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
            
    curl_setopt($chCURLOPT_HTTPHEADER, array(
                
    'Content-Type:application/json',
                
    'X-Session:' $this -> token)
            );
            
    $this -> locations json_decode(curl_exec($ch)) -> locations;  
        }
    // -----------------------------------------------------------------------------
        
    function loadDevices()
        {
            foreach(
    $this->locations as $location)
            {
                
    $url self::DEVICESURL $location -> id;
                
    $ch curl_init($url);
                
    curl_setopt($chCURLOPT_CUSTOMREQUEST"GET");
                
    curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
                
    curl_setopt($chCURLOPT_HTTPHEADER, array(
                    
    'Content-Type:application/json',
                    
    'X-Session:' $this -> token)
                );
                
    $this -> devices[$location -> id] = json_decode(curl_exec($ch)) -> devices;
            }
        }
    // -----------------------------------------------------------------------------
        /*
        * Finds the first occurrence of a certain category type.
        * Example: You want to find your only mower, having one or more gardens. 
        * @param constant $category
        */
        
    function getFirstDeviceOfCategory($category)
        {
            foreach(
    $this -> devices as $locationId => $devices)
            {
                foreach(
    $devices as $device)
                    if (
    $device -> category == $category)
                        return 
    $device;
            }
        }
    // -----------------------------------------------------------------------------
        
    function getDeviceLocation($device)
        {
            foreach(
    $this -> locations as $location)
                foreach(
    $location -> devices as $d)
                    if (
    $d == $device -> id)
                        return 
    $location;
        }
    // -----------------------------------------------------------------------------
        
    function getInfo($device$category_name$proberty_name)
        {
            foreach (
    $device -> abilities as $ability)
                if (
    $ability -> name == $category_name)
                    foreach(
    $ability -> properties as $property)
                        if (
    $property -> name == $proberty_name)
                            return 
    $property -> value;
        }

    }

    ?>
    Das Auslese-Script:

    PHP-Code:
    <?php

        error_reporting
    (E_ALL);
        include(
    "pass.ips.php");
        include(
    "php_gardena_sensor_class.ips.php");

        
    $gardena = new gardena_sensor($pw_user_maeher$pw_pawo_maeher);
        
    $mower $gardena -> getFirstDeviceOfCategory($gardena::CATEGORY_SENSOR);
        
    $category_name "device_info";

        
    $id_device_manufaktur        35400 /*[Home\Außenbereich\Bewässerung\Feuchtigkeitssensor\Hersteller]*/;
        
    $id_device_product            19718 /*[Home\Außenbereich\Bewässerung\Feuchtigkeitssensor\Gerät]*/;
        
    $id_device_serial_number    50877 /*[Home\Außenbereich\Bewässerung\Feuchtigkeitssensor\Seriennummer]*/;
        
    $id_device_version            42529 /*[Home\Außenbereich\Bewässerung\Feuchtigkeitssensor\Version]*/;
        
    $id_device_category            50634 /*[Home\Außenbereich\Bewässerung\Feuchtigkeitssensor\Kategorie]*/;
        
    $id_device_last_time_online    27007 /*[Home\Außenbereich\Bewässerung\Feuchtigkeitssensor\Letztes Mal online]*/;
        
    $id_device_sgtin            36826 /*[Home\Außenbereich\Bewässerung\Feuchtigkeitssensor\sgtin]*/;

        
    $proberty_name "manufacturer";
        
    $status $gardena -> getInfo($mower$category_name$proberty_name);
        
    SetValue($id_device_manufaktur$status);

        
    $proberty_name "product";
        
    $status $gardena -> getInfo($mower$category_name$proberty_name);
        
    SetValue($id_device_product$status);

        
    $proberty_name "serial_number";
        
    $status $gardena -> getInfo($mower$category_name$proberty_name);
        
    SetValue($id_device_serial_number$status);

        
    $proberty_name "version";
        
    $status $gardena -> getInfo($mower$category_name$proberty_name);
        
    SetValue($id_device_version$status);

        
    $proberty_name "category";
        
    $status $gardena -> getInfo($mower$category_name$proberty_name);
        
    SetValue($id_device_category$status);

        
    $proberty_name "last_time_online";
        
    $status $gardena -> getInfo($mower$category_name$proberty_name);
        
    SetValue($id_device_last_time_online$status);

        
    $proberty_name "sgtin";
        
    $status $gardena -> getInfo($mower$category_name$proberty_name);
        
    SetValue($id_device_sgtin$status);

        
    $category_name "battery";

        
    $id_device_level        31867 /*[Home\Außenbereich\Bewässerung\Feuchtigkeitssensor\Batterie]*/;
        
    $battery_status        17648 /*[Home\Außenbereich\Bewässerung\Feuchtigkeitssensor\Status Batterie]*/;

        
    $proberty_name "level";
        
    $status $gardena -> getInfo($mower$category_name$proberty_name);
        
    SetValue($id_device_level$status);

        
    $proberty_name "disposable_battery_status";
        
    $status $gardena -> getInfo($mower$category_name$proberty_name);
        
    SetValue($battery_status$status);

         
    $category_name "radio";

        
    $id_device_quality        43306 /*[Home\Außenbereich\Bewässerung\Feuchtigkeitssensor\Signalstärke]*/;
        
    $connection_status        26635 /*[Home\Außenbereich\Bewässerung\Feuchtigkeitssensor\Connection Status]*/;
         
    $signal_status                46304 /*[Home\Außenbereich\Bewässerung\Feuchtigkeitssensor\Empfang]*/;

        
    $proberty_name "quality";
        
    $status $gardena -> getInfo($mower$category_name$proberty_name);
        
    SetValue($id_device_quality$status);

        
    $proberty_name "connection_status";
        
    $status $gardena -> getInfo($mower$category_name$proberty_name);
        
    SetValue($connection_status$status);
        
        
    $proberty_name "state";
        
    $status $gardena -> getInfo($mower$category_name$proberty_name);
        
    SetValue($signal_status$status);
        
        
    $category_name "ambient_temperature";

        
    $temperature        45209 /*[Home\Außenbereich\Bewässerung\Feuchtigkeitssensor\Außentemperatur]*/;
        
    $frost_warning        13654 /*[Home\Außenbereich\Bewässerung\Feuchtigkeitssensor\Frostwarnung]*/;

        
    $proberty_name "temperature";
        
    $status $gardena -> getInfo($mower$category_name$proberty_name);
        
    SetValue($temperature$status);

        
    $proberty_name "frost_warning";
        
    $status $gardena -> getInfo($mower$category_name$proberty_name);
        
    SetValue($frost_warning$status);
        
        
    $category_name "soil_temperature";

        
    $boden_durchschschnitts_temperature        52298 /*[Home\Außenbereich\Bewässerung\Feuchtigkeitssensor\Durchschnittsbodentemperatur]*/;
        
        
    $proberty_name "temperature";
        
    $status $gardena -> getInfo($mower$category_name$proberty_name);
        
    SetValue($boden_durchschschnitts_temperature$status);

        
    $category_name "humidity";

        
    $humidity        14252 /*[Home\Außenbereich\Bewässerung\Feuchtigkeitssensor\Bodenfeuchtigkeit]*/;

        
    $proberty_name "humidity";
        
    $status $gardena -> getInfo($mower$category_name$proberty_name);
        
    SetValue($humidity$status);
        
        
    $category_name "light";

        
    $light        13327 /*[Home\Außenbereich\Bewässerung\Feuchtigkeitssensor\Helligkeit]*/;

        
    $proberty_name "light";
        
    $status $gardena -> getInfo($mower$category_name$proberty_name);
        
    SetValue($light$status);
    ?>
    Sieht dann so aus:

    Name:  gardena_sensor.jpg
Hits: 1265
Größe:  146.9 KB

    Gruß

    Jimmy
    Geändert von Jimmy Neutron (06.08.16 um 18:12 Uhr)

  6. #26
    Registriert seit
    Jan 2010
    Ort
    Rheinland Pfalz
    Beiträge
    1,752

    Prima, den Rest bekommen wir auch hin.
    Da ja bei dem Regner sicher nur gesendet wird ist die function sendCommand($device, $command) das Schlüsselwort
    und das Aktionsscript für den Mover


    @MaLu wo liegt dein Problem
    Gruß WiBo

    "Eventuelle Rechtschreib- und Tippfehler jeglicher Art sind nur ein Zeichen meiner Geschwindigkeit Ich bitte euch, gelassen darüber hinweg zu lesen."

  7. #27
    Registriert seit
    Jul 2014
    Ort
    Heilbronn
    Beiträge
    314

    Hallo Ihr Beiden,

    ich habe nun mal das von Jimmy verwendet ... bekomme das zurück (wie bei allen anderen Versuchen)

    Notice: Trying to get property of non-object in C:\IP-Symcon\scripts\php_gardena_sensor_class.ips.php on line 48

    Line 48:

    $this -> token = $data -> sessions -> token;

    Sieht so aus als würde kein Token zurückkommen ...

    Grüsse,
    MaLu

  8. #28
    Registriert seit
    Jan 2010
    Ort
    Rheinland Pfalz
    Beiträge
    1,752

    Was für ein Gerät hast Du im Einsatz
    Gruß WiBo

    "Eventuelle Rechtschreib- und Tippfehler jeglicher Art sind nur ein Zeichen meiner Geschwindigkeit Ich bitte euch, gelassen darüber hinweg zu lesen."

  9. #29
    Registriert seit
    Jul 2014
    Ort
    Heilbronn
    Beiträge
    314

    Hallo,

    das Set aus Gateway, Sensor und Bewässerungscomputer.

    Grüsse,
    MaLu

  10. #30
    Registriert seit
    Jul 2014
    Ort
    Heilbronn
    Beiträge
    314

    Hey,

    So, nu habe ich mal die API in meiner externen Automatisierungssoftware verwurstet - was soll ich sagen ... ich bekomme die Daten von der Webseite zurück ... alle Schritte funktionieren Tokenerstellung, Location ID, User ID und holen der Daten ... also ich speichere es einfach was zurückkommt als Datei ab ... Grundsätzlich sollte das dann auch mit Euren Skripten gehen ... das ist ja nur Cut and Paste .... Nachdem es ja hier grundsätzlich geht .... Eine Idee warum ich in IPS scheitere?

    Danke und Grüsse,
    MaLu

Ähnliche Themen

  1. Mähroboter Worx Landroid - Erfahrungen?
    Von Titus im Forum Haustechnik
    Antworten: 43
    Letzter Beitrag: 13.06.18, 21:04
  2. Antworten: 31
    Letzter Beitrag: 18.04.17, 10:31
  3. Antworten: 25
    Letzter Beitrag: 02.02.17, 23:23
  4. Gardena engagiert sich im Bereich Smart Garden
    Von Bayaro im Forum Off Topic
    Antworten: 6
    Letzter Beitrag: 02.08.16, 16:52
  5. Mähroboter Robomow RS630
    Von tomgr im Forum Haustechnik
    Antworten: 19
    Letzter Beitrag: 02.07.16, 17:05