Gardena Smart System

Begonnen von emilio_35, 16 April 2017, 17:14:53

Vorheriges Thema - Nächstes Thema

Kevin

Sehr gut!  :)

Wenn es Neuigkeiten gibt oder ich was testen soll, dann stehe ich gerne zur Verfügung!

Kevin

Gibt es hier schon Neuigkeiten?

CoolTux

Es gibt eventuell über einen Forenuser einen direkten Kontakt. Dieser Kontakt ist aber noch im Urlaub. Also bitte etwas Geduld.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Kenneth

sehr nettes Thema..
hab seit 1,5 Monaten einen Sileno incl. Smart Gateway und die Bewässerung .. eine Einbindung in FHEM wär der Knaller ^^


Hier ein LINK wo sich schon jemand große Mühe gegeben hat, evtl. könnt ihr ja mit dem PHP-Code etwas anfangen.. wurde auch sogar schon mal von PEPITO82 in einem anderem Beitrag erwähnt



vg
Intel NUC @Ubuntu > FHEM 5.8
HM-LAN, NanoCul, Signalduino
EchoDot, Gardena Sileno, XT1, Somfy RTS
TabletUI

mbrak

Hallo

ich habe nun seit einem Jahr einen Sileno Smart R130 LIC. Bin super zufrieden damit und kann die Probleme vieler nicht verstehen. Meist ist der Fehler dort zwischen den Ohren. Bin auch fleissig am Lesen im Roboterforum, wo es wohl am meisten Infos über die kleinen Helfer gibt.

Beim Programmieren kann ich euch nicht wirklich bei helfen, aber wenn es ums testen und debuggen geht würde ich mich gerne anbieten.

Eine Anbindung an FHEM wär schon toll. Vor allem, weil es doch so einige Daten mehr gibt, als man über App oder Mäher auslesen kann. Akkuzustand wär toll.

Gruß Michael

Kevin

Gibt es hier schon Neuigkeiten?   :)

CoolTux

Ein erster Kontakt wurde hergestellt. Nun bereite ich eine Anforderungsmail vor welche mein Kontakt an die Entwicklungsabteilung weiter geben wird.


Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

bigcheese

#22
Um mal Schwung in die Bude zu bekommen... kann jetzt Mähen und Parken per FHEM (leider fehlt es am Können und Wissen um ein Modul draus zu basteln... Status und so müsste man sich auch noch parsen...): (update: notify in ein DOIF geändert, da sonst zuviele aufrufe der Funktion)
fhem.cfg:
define Sileno dummy
attr Sileno genericDeviceType switch
attr Sileno room Garten,Roboter
attr Sileno webCmd maehen:parken

define DI_SilenoCmd DOIF ([Sileno:"maehen"]) ({sileno_cmd("maehen")}) DOELSEIF ([Sileno:"parken"]) ({sileno_cmd("parken")})
attr DI_SilenoCmd room Garten,Roboter
#ALT:
#define SilenoCommand notify Sileno:* {sileno_cmd(ReadingsVal("Sileno","state",0))}
#attr SilenoCommand room Garten,Roboter

99_myUtils.pm (beispielhaft, beachte den backslash in der email adresse vor dem Klammeraffen):
no strict;
use LWP::Simple;               
use JSON qw( decode_json );

sub sileno_cmd {
my $command = $_[0];
my $device_id = "9944b2e3-1d64-4d2f-b43f-9b150db6d2ed";
my $location_id = "847fbc05-2f1a-4447-a334-a15e23424af4";
my $gardena_email = "bigcheese.fhem\@superserver.de";
my $gardena_password = "meinsicherespasswort";

my $curl = `curl --data '{"sessions":{"email":"$gardena_email","password":"$gardena_password"}}' --header "Content-Type:application/json" https://sg-api.dss.husqvarnagroup.net/sg-1/sessions`;
my $decoded_json = decode_json( $curl );
my $session_id = $decoded_json->{'sessions'}{'token'};
print $session_id;

if ($command eq "maehen") {
  my $payload ='"name":"start_override_timer","parameters":{"duration":1440}';
  my $exec = `curl --data '{$payload}' --header "Content-Type:application/json" --header "X-Session:$session_id" https://sg-api.dss.husqvarnagroup.net/sg-1/devices/$device_id/abilities/mower/command?locationId=$location_id`;
}
elsif ($command eq "parken") {
  my $payload ='"name":"park_until_further_notice"';
  my $exec = `curl --data '{$payload}' --header "Content-Type:application/json" --header "X-Session:$session_id" https://sg-api.dss.husqvarnagroup.net/sg-1/devices/$device_id/abilities/mower/command?locationId=$location_id`;
}


Woher bekommt man die device_id und location_id?
Das wurde ja http://www.roboter-forum.com/showthread.php?16777-Gardena-Smart-System-Analyse super erklärt:
1) User ID einmalig holen (hier im commandline die email adresse ohne backslash verwenden):
curl --data '{"sessions":{"email":"DEINE GARDENA EMAIL ADRESSE","password":"DEIN PASSWORT"}}' --header "Content-Type:application/json" https://sg-api.dss.husqvarnagroup.net/sg-1/sessions

2)aus dem Return den TOKEN und user_id in nächsten request einbauen:
curl --header "Content-Type:application/json" --header "X-Session:TOKEN" https://sg-api.dss.husqvarnagroup.net/sg-1/locations/?user_id=DEINE USER ID

Hier aus dem Return siehst du die location ID und die Device ID (nicht die vom Gateway nehmen ;) )

grüsse,
Bigcheese

Kenneth

sehr geil bigchees funzt!

Hab mir das ganze mal noch erweitert da mir nur "24Std mähen" und "parken bis auf weiteres" nicht reicht.
99_myUtils.pm
Zitatif ($command eq "maehen_24Std") {
  my $payload ='"name":"start_override_timer","parameters":{"duration":1440}';
  my $exec = `curl --data '{$payload}' --header "Content-Type:application/json" --header "X-Session:$session_id" https://sg-api.dss.husqvarnagroup.net/sg-1/devices/$device_id/abilities/mower/command?locationId=$location_id`;
}
elsif ($command eq "maehen_zeitplan") {
  my $payload ='"name":"start_resume_schedule"';
  my $exec = `curl --data '{$payload}' --header "Content-Type:application/json" --header "X-Session:$session_id" https://sg-api.dss.husqvarnagroup.net/sg-1/devices/$device_id/abilities/mower/command?locationId=$location_id`;
}
elsif ($command eq "parken") {
  my $payload ='"name":"park_until_further_notice"';
  my $exec = `curl --data '{$payload}' --header "Content-Type:application/json" --header "X-Session:$session_id" https://sg-api.dss.husqvarnagroup.net/sg-1/devices/$device_id/abilities/mower/command?locationId=$location_id`;
}
elsif ($command eq "parken_zeitplan") {
  my $payload ='"name":"park_until_next_timer"';
  my $exec = `curl --data '{$payload}' --header "Content-Type:application/json" --header "X-Session:$session_id" https://sg-api.dss.husqvarnagroup.net/sg-1/devices/$device_id/abilities/mower/command?locationId=$location_id`;
}

CFG:
define Sileno dummy
attr Sileno genericDeviceType switch
attr Sileno room Outdoor
attr Sileno webCmd maehen_24Std:maehen_zeitplan:parken:parken_zeitplan
Intel NUC @Ubuntu > FHEM 5.8
HM-LAN, NanoCul, Signalduino
EchoDot, Gardena Sileno, XT1, Somfy RTS
TabletUI

CoolTux

Ich habe heute eine Mail an meinen Gardena Kontakt geschrieben wo eine kleine Anforderungsliste drin steht. Im Grunde geht es nur um API Doku und eventuell ein Starterkit als Muster. Mal schauen was wird. Derweil werde ich die nächsten Wochen mal erste Schritte unter nehmen für ein IO Devicemodul.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

SebastianN

Geil, mit der Anleitung von bigcheese ging es total schnell meinen Sileno einzubinden, super Basis zum weitermachen.
Danke

Kevin

Super!

Auch soeben mal eingebaut. Sieht ja soweit schon ganz cool aus!  :D


bigcheese

#27
sooo, kleine Erweiterung: zyklischer Status Poll von Batterie, ob geladen wird, Status vom Sileno, errormessage, next start:
(ich hoffe das durch die Polls nicht irgendwann der Account als Missbrauch geflaggt wird :D ) ... ggf braucht man die session ja nicht jedes mal zu holen und so...
und ich glaub das mit dem NOTIFY muss ich nochmal überdenken... da passieren jetzt vermehrt aufrufe bei einem Kommando...ggf auf DOIF switchen, mal gucken...

in der 99_myUtils.pm neue Funktion hinzufügen (wieder backslash bei email beachten):
sub sileno_status {
my $device_id = "1111-123123-4123123f-b48f-9b111111c";
my $location_id = "83333335-2f1a-433337-a337-a333334";
my $gardena_email = "bigcheese.fhem\@deinserver.de";
my $gardena_password = "deinpasswort";

my $curl = `curl --data '{"sessions":{"email":"$gardena_email","password":"$gardena_password"}}' --header "Content-Type:application/json" https://sg-api.dss.husqvarnagroup.net/sg-1/sessions`;
my $decoded_json = decode_json( $curl );
my $session_id = $decoded_json->{'sessions'}{'token'};

my $stats = `curl --header "Content-Type:application/json" --header "X-Session:$session_id" https://sg-api.dss.husqvarnagroup.net/sg-1/devices?locationId=$location_id`;
my $decoded_stats = decode_json( $stats );
#         sileno       battery         bat level     bat charging
#devices [1] abilities [1] properties [0] value und [2] value
#                                      [5] properties [1] value

my $batt_value = $decoded_stats->{'devices'}[1]{'abilities'}[1]{'properties'}[0]{'value'};
my $batt_is_charging = $decoded_stats->{'devices'}[1]{'abilities'}[1]{'properties'}[2]{'value'};
my $sileno_status = $decoded_stats->{'devices'}[1]{'abilities'}[4]{'properties'}[1]{'value'};
my $sileno_error = $decoded_stats->{'devices'}[1]{'abilities'}[4]{'properties'}[2]{'value'};
my $sileno_source_next_start = $decoded_stats->{'devices'}[1]{'abilities'}[4]{'properties'}[3]{'value'};
my $sileno_timestamp_next_start = $decoded_stats->{'devices'}[1]{'abilities'}[4]{'properties'}[4]{'value'};

fhem("setreading Sileno battery_value $batt_value");
fhem("setreading Sileno battery_is_charging $batt_is_charging");
fhem("setreading Sileno status $sileno_status");
fhem("setreading Sileno error $sileno_error");
fhem("setreading Sileno source_next_start $sileno_source_next_start");
fhem("setreading Sileno next_start $sileno_timestamp_next_start");

}


und in der fhem.cfg den alle Minute Timer aufziehen und ggf noch den Status aufhübschen:
define SilenoStatusCall at +*00:01:00 {sileno_status}
attr SilenoStatusCall room Garten,Roboter

attr Sileno stateFormat status batt: battery_value

CoolTux

Zitat von: CoolTux am 11 Juli 2017, 16:02:51
Ich habe heute eine Mail an meinen Gardena Kontakt geschrieben wo eine kleine Anforderungsliste drin steht. Im Grunde geht es nur um API Doku und eventuell ein Starterkit als Muster. Mal schauen was wird.


Habe Antwort von einem Techniker bekommen
Zitat
herzlichen Dank für Ihre Nachricht an Joachim Müller und Ihr Interesse an unserem GARDENA smart system. Ich bedauere, dass ich Ihnen aktuell leider keine öffentlich zugängliche API anbieten kann, halte Sie jedoch sehr gerne über Entwicklungen in diesem Bereich auf dem Laufenden. Bis dahin viel Erfolg mit Ihrem Smart Home Framework.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

bigcheese

hab in meinem ersten post noch das NOTIFY gegen ein DOIF getauscht, glaub das ist wesentlich besser, da sich sonst zu oft der State wechselt im notify und jedesmal die _cmd Funktion aufgerufen wurde...
:)