Gardena Smart System

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

Vorheriges Thema - Nächstes Thema

CoolTux

Zitat von: Kenneth am 25 Juli 2017, 10:45:22
Hi,

Zeit würde sich finden lassen sollte also kein Problem sein. Zugang [emoji15]. mhhh ok wenn du alles sauber und ordentlich hinterlässt [emoji12]..




Gesendet von iPhone mit Tapatalk

Hihi, keine Sorge. Ich habe nicht vor da irgendwas um zu stellen oder so. Ich benötige nur die Daten für den Token und die global_id. Danach muß ich mir anschauen wie der JSON aufgebaut ist und wie ich daraus am besten automatisch alle gefundenen Devices anlegen lasse. Mehr nicht.



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

mbrak

hi cooltux

den json kann ich dir schicken. den habe ich gestern mal komplett in eine datei umgeleitet.
hab allerdings nur meinen "robert" da drinne....


gruß michael

Kenneth

nur Spaß und wahrscheinlich würdest eh ne Menge an Optimierungsmöglichkeiten finden ^^

Meld dich einfach wenn es soweit ist, evtl. schreibst du mir schon mal vorher via PM was du alles an Zugängen benötigst SFTP oder nur FHEM-WEB...

Grüße
Matthias
Intel NUC @Ubuntu > FHEM 5.8
HM-LAN, NanoCul, Signalduino
EchoDot, Gardena Sileno, XT1, Somfy RTS
TabletUI

CoolTux

Zitat von: mbrak am 25 Juli 2017, 11:04:54
hi cooltux

den json kann ich dir schicken. den habe ich gestern mal komplett in eine datei umgeleitet.
hab allerdings nur meinen "robert" da drinne....


gruß michael

Danke das ist nett. Ein JSON an sich habe ich ja auch im Netz gefunden, ich brauche das alles live. Also wenn ich den direkt mir vom account hole.




Zitat von: Kenneth am 25 Juli 2017, 11:05:55
nur Spaß und wahrscheinlich würdest eh ne Menge an Optimierungsmöglichkeiten finden ^^

Meld dich einfach wenn es soweit ist, evtl. schreibst du mir schon mal vorher via PM was du alles an Zugängen benötigst SFTP oder nur FHEM-WEB...

Grüße
Matthias

Ich brauche ja nicht Deine FHEM Daten sondern die vom Gardena Account. Oder ich habe es absolut falsch verstanden. Aber das was ich bis jetzt gefunden habe geht alles über die Cloud API von Gardena.
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

natürlich nur die Daten für den Gardena ACC .. ::)  da hatte ich dich missverstanden ^^

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

CoolTux

Supi. Dann melde ich mich wenn ich soweit bin per PN.

Du bist dann natürlich auch der erste der die Module testen darf  ;D
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

mbrak

ist das bei dir eigentlich auch so das die Zeit für den nächsten Start (next_start) immer auf "1969-12-31T22:00Z" steht wenn er gerade mäht..
Intel NUC @Ubuntu > FHEM 5.8
HM-LAN, NanoCul, Signalduino
EchoDot, Gardena Sileno, XT1, Somfy RTS
TabletUI

mbrak

hi

die time_next_start passt soweit wenn man +2h für die zeitzone hinzurechnet. da gibt es noch ein feld mit einer override_end_time. die steht bei mir auf 1969..... hab aber im moment keinen schimmer was die mir sagen will... :)

logge die daten seit gestern mit. sieht schon recht nett aus im svg :D


Kenneth

Zitat von: mbrak am 25 Juli 2017, 11:58:34
die time_next_start passt soweit wenn man +2h für die zeitzone hinzurechnet. da gibt es noch ein feld mit einer override_end_time. die steht bei mir auf 1969..... hab aber im moment keinen schimmer was die mir sagen will... :)

wie gesagt nur wenn er mäht, wenn er läd passt sie .. wenn man von den 2Std mal absieht. ..stimmt sehr net der Plot.

Zitat von: mbrak am 24 Juli 2017, 18:41:52
Hallo Gardena Sileno Freunde

ich habe mich mal durch das JSON Array gewühlt und bekomme mittlerweile diese Readings.

könntest du deine sub dafür mal posten, wär super

Danke & Grüße
Matthias

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

mbrak

ja klar. mach ich nachher wenn ich zuhause bin. hab allerdings die abfrageintervalle auf 5 min. hochgedreht weil mir das ein wenig viel traffic und logfile produzierte. reicht mir aber von der auflösung.
Gruß Michael

mbrak

#70
Hallo

hier nun meine finale subroutine bis es ein fertiges modul geben wird  ;D

sub sileno_status {
my $device_id = "DEINE DEVICE ID";
my $location_id = "DEINE LOCATION ID";
my $gardena_email = "DEINE\@EMAIL.ADRESSE";
my $gardena_password = "DEIN GARDENA PASSWORT";
my $sileno_status_D;
my $sileno_error_D;
my $sileno_source_next_start_D;

my $curl = `curl -s --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 -s --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 );

my $sileno_manufacturer = $decoded_stats->{'devices'}[1]{'abilities'}[0]{'properties'}[0]{'value'};
my $sileno_product = $decoded_stats->{'devices'}[1]{'abilities'}[0]{'properties'}[1]{'value'};
my $sileno_serial_number = $decoded_stats->{'devices'}[1]{'abilities'}[0]{'properties'}[2]{'value'};
my $sileno_version = $decoded_stats->{'devices'}[1]{'abilities'}[0]{'properties'}[3]{'value'};
my $sileno_category = $decoded_stats->{'devices'}[1]{'abilities'}[0]{'properties'}[4]{'value'};
my $sileno_last_time_online = $decoded_stats->{'devices'}[1]{'abilities'}[0]{'properties'}[5]{'value'};
my $sileno_sgtin = $decoded_stats->{'devices'}[1]{'abilities'}[0]{'properties'}[6]{'value'};
my $batterie_value = $decoded_stats->{'devices'}[1]{'abilities'}[1]{'properties'}[0]{'value'};
my $batterie_status = $decoded_stats->{'devices'}[1]{'abilities'}[1]{'properties'}[1]{'value'};
my $batterie_is_charging = $decoded_stats->{'devices'}[1]{'abilities'}[1]{'properties'}[2]{'value'};
my $sileno_quality = $decoded_stats->{'devices'}[1]{'abilities'}[2]{'properties'}[0]{'value'};
my $sileno_connection_status = $decoded_stats->{'devices'}[1]{'abilities'}[2]{'properties'}[1]{'value'};
my $sileno_state = $decoded_stats->{'devices'}[1]{'abilities'}[2]{'properties'}[2]{'value'};
my $sileno_temparture = $decoded_stats->{'devices'}[1]{'abilities'}[3]{'properties'}[0]{'value'};
my $sileno_manual_operation = $decoded_stats->{'devices'}[1]{'abilities'}[4]{'properties'}[0]{'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'};
my $sileno_override_end_time = $decoded_stats->{'devices'}[1]{'abilities'}[4]{'properties'}[5]{'value'};
my $sileno_firmware_status = $decoded_stats->{'devices'}[1]{'abilities'}[5]{'properties'}[0]{'value'};
my $sileno_firmware_upload_progress = $decoded_stats->{'devices'}[1]{'abilities'}[5]{'properties'}[1]{'value'};
my $sileno_firmware_available_version = $decoded_stats->{'devices'}[1]{'abilities'}[5]{'properties'}[2]{'value'};
my $sileno_inclusion_status = $decoded_stats->{'devices'}[1]{'abilities'}[5]{'properties'}[3]{'value'};
my $sileno_firmware_update_start = $decoded_stats->{'devices'}[1]{'abilities'}[5]{'properties'}[4]{'value'};
my $sileno_firmware_command = $decoded_stats->{'devices'}[1]{'abilities'}[5]{'properties'}[5]{'value'};

if ( $sileno_status eq "parked_autotimer") {
      $sileno_status_D = "Geparkt durch SensorControl";
}
elsif ( $sileno_status eq "paused") {
      $sileno_status_D = "Pausiert";
}
elsif ( $sileno_status eq "ok_cutting") {
      $sileno_status_D = "Mähen";
}
elsif ( $sileno_status eq "ok_searching") {
  $sileno_status_D = "Suche Ladestation";
}
elsif ( $sileno_status eq "ok_charging") {
  $sileno_status_D = "Lädt";
}
elsif ( $sileno_status eq "ok_leaving") {
  $sileno_status_D = "Mähen";
}
elsif ( $sileno_status eq "parked_timer") {
  $sileno_status_D = "Geparkt nach Zeitplan";
}
elsif ( $sileno_status eq "off_disabled") {
  $sileno_status_D = "Der Mäher ist ausgeschaltet";
}
elsif ( $sileno_status eq "parked_park_selected") {
  $sileno_status_D = "Geparkt";
}
elsif ( $sileno_status eq "off_hatch_open") {
  $sileno_status_D = "Deaktiviert. Abdeckung ist offen oder PIN-Code erforderlich";
}
elsif ( $sileno_status eq "error") {
  $sileno_status_D = "Fehler";
}
elsif ( $sileno_status eq "error_at_power_up") {
  $sileno_status_D = "Neustart ...";
}
elsif ( $sileno_status eq "off_hatch_closed") {
  $sileno_status_D = "Deaktiviert. Manueller Start erforderlich";
}
elsif ( $sileno_status eq "ok_cutting_timer_overridden") {
  $sileno_status_D = "Manuelles Mähen";
}
elsif ( $sileno_status eq "parked_daily_limit_reached") {
  $sileno_status_D = "Abgeschlossen";
}

if ( $sileno_error eq "no_message") {
      $sileno_error_D = "Kein Fehler";
}
elsif ( $sileno_error eq "outside_working_area") {
      $sileno_error_D = "Außerhalb des Arbeitsbereichs";
}
elsif ( $sileno_error eq "no_loop_signal") {
      $sileno_error_D = "Kein Schleifensignal";
}
elsif ( $sileno_error eq "wrong_loop_signal") {
      $sileno_error_D = "Falsches Schleifensignal";
}
elsif ( $sileno_error eq "loop_sensor_problem_front") {
      $sileno_error_D = "Problem Schleifensensor, vorne";
}
elsif ( $sileno_error eq "loop_sensor_problem_rear") {
      $sileno_error_D = "Problem Schleifensensor, hinten";
}
elsif ( $sileno_error eq "trapped") {
      $sileno_error_D = "Eingeschlossen";
}
elsif ( $sileno_error eq "upside_down") {
      $sileno_error_D = "Steht auf dem Kopf";
}
elsif ( $sileno_error eq "low_battery") {
      $sileno_error_D = "Niedriger Batteriestand";
}
elsif ( $sileno_error eq "empty_battery") {
      $sileno_error_D = "Batterie ist leer";
}
elsif ( $sileno_error eq "no_drive") {
      $sileno_error_D = "Kein Antrieb";
}
elsif ( $sileno_error eq "lifted") {
      $sileno_error_D = "Angehoben";
}
elsif ( $sileno_error eq "stuck_in_charging_station") {
      $sileno_error_D = "Eingeklemmt in Ladestation";
}
elsif ( $sileno_error eq "charging_station_blocked") {
      $sileno_error_D = "Ladestation blockiert";
}
elsif ( $sileno_error eq "collision_sensor_problem_rear") {
      $sileno_error_D = "Problem Stoßsensor hinten";
}
elsif ( $sileno_error eq "collision_sensor_problem_front") {
      $sileno_error_D = "Problem Stoßsensor vorne";
}
elsif ( $sileno_error eq "wheel_motor_blocked_right") {
      $sileno_error_D = "Radmotor rechts blockiert";
}
elsif ( $sileno_error eq "wheel_motor_blocked_left") {
      $sileno_error_D = "Radmotor links blockiert";
}
elsif ( $sileno_error eq "wheel_drive_problem_right") {
      $sileno_error_D = "Problem Antrieb, rechts";
}
elsif ( $sileno_error eq "wheel_drive_problem_left") {
      $sileno_error_D = "Problem Antrieb, links";
}
elsif ( $sileno_error eq "cutting_system_blocked") {
      $sileno_error_D = "Schneidsystem blockiert";
}
elsif ( $sileno_error eq "invalid_sub_device_combination") {
      $sileno_error_D = "Fehlerhafte Verbindung";
}
elsif ( $sileno_error eq "settings_restored") {
      $sileno_error_D = "Standardeinstellungen";
}
elsif ( $sileno_error eq "electronic_problem") {
      $sileno_error_D = "Elektronisches Problem";
}
elsif ( $sileno_error eq "charging_system_problem") {
      $sileno_error_D = "Problem Ladesystem";
}
elsif ( $sileno_error eq "tilt_sensor_problem") {
      $sileno_error_D = "Kippsensorproblem";
}
elsif ( $sileno_error eq "wheel_motor_overloaded_right") {
      $sileno_error_D = "Rechter Radmotor überlastet";
}
elsif ( $sileno_error eq "wheel_motor_overloaded_left") {
      $sileno_error_D = "Linker Radmotor überlastet";
}
elsif ( $sileno_error eq "charging_current_too_high") {
      $sileno_error_D = "Ladestrom zu hoch";
}
elsif ( $sileno_error eq "temporary_problem") {
      $sileno_error_D = "Vorübergehendes Problem";
}
elsif ( $sileno_error eq "guide_1_not_found") {
      $sileno_error_D = "SK 1 nicht gefunden";
}
elsif ( $sileno_error eq "guide_2_not_found") {
      $sileno_error_D = "SK 2 nicht gefunden";
}
elsif ( $sileno_error eq "guide_3_not_found") {
      $sileno_error_D = "SK 3 nicht gefunden";
}
elsif ( $sileno_error eq "difficult_finding_home") {
      $sileno_error_D = "Problem die Ladestation zu finden";
}
elsif ( $sileno_error eq "guide_calibration_accomplished") {
      $sileno_error_D = "Kalibration des Suchkabels beendet";
}
elsif ( $sileno_error eq "guide_calibration_failed") {
      $sileno_error_D = "Kalibration des Suchkabels fehlgeschlagen";
}
elsif ( $sileno_error eq "temporary_battery_problem") {
      $sileno_error_D = "Kurzzeitiges Batterieproblem";
}
elsif ( $sileno_error eq "battery_problem") {
      $sileno_error_D = "Batterieproblem";
}
elsif ( $sileno_error eq "alarm_mower_switched_off") {
      $sileno_error_D = "Alarm! Mäher ausgeschalten";
}
elsif ( $sileno_error eq "alarm_mower_stopped") {
      $sileno_error_D = "Alarm! Mäher gestoppt";
}
elsif ( $sileno_error eq "alarm_mower_lifted") {
      $sileno_error_D = "Alarm! Mäher angehoben";
}
elsif ( $sileno_error eq "alarm_mower_tilted") {
      $sileno_error_D = "Alarm! Mäher gekippt";
}
elsif ( $sileno_error eq "connection_changed") {
      $sileno_error_D = "Verbindung geändert";
}
elsif ( $sileno_error eq "connection_not_changed") {
      $sileno_error_D = "Verbindung nicht geändert";
}
elsif ( $sileno_error eq "com_board_not_available") {
      $sileno_error_D = "COM board nicht verfügbar";
}
elsif ( $sileno_error eq "slipped") {
      $sileno_error_D = "Rutscht";
}

if ( $sileno_source_next_start eq "no_source") {
      $sileno_source_next_start_D = "OK";
}
elsif ( $sileno_source_next_start eq "mower_charging") {
      $sileno_source_next_start_D = "Mäher wurde geladen";
}
elsif ( $sileno_source_next_start eq "completed_cutting_autotimer") {
      $sileno_source_next_start_D = "SensorControl erreicht";
}
elsif ( $sileno_source_next_start eq "week_timer") {
      $sileno_source_next_start_D = "Wochentimer erreicht";
}
elsif ( $sileno_source_next_start eq "countdown_timer") {
      $sileno_source_next_start_D = "Stoppuhr Timer";
}
elsif ( $sileno_source_next_start eq "undefined") {
      $sileno_source_next_start_D = "Unklar";
}

fhem("setreading Sileno signal_quality $sileno_quality");
fhem("setreading Sileno connection_status $sileno_connection_status");
fhem("setreading Sileno signal_strength $sileno_state");
fhem("setreading Sileno Temperatur $sileno_temparture");
fhem("setreading Sileno batterie_value $batterie_value");
fhem("setreading Sileno batterie_status $batterie_status");
fhem("setreading Sileno batterie_is_charging $batterie_is_charging");
fhem("setreading Sileno status $sileno_status_D");
fhem("setreading Sileno error $sileno_error_D");
fhem("setreading Sileno source_next_start $sileno_source_next_start_D");
fhem("setreading Sileno next_start $sileno_timestamp_next_start");
fhem("setreading Sileno Hersteller $sileno_manufacturer");
fhem("setreading Sileno Produkt $sileno_product");
fhem("setreading Sileno Seriennummer $sileno_serial_number");
fhem("setreading Sileno Version $sileno_version");
fhem("setreading Sileno Modell $sileno_category");
fhem("setreading Sileno Letzte_Uebertragung $sileno_last_time_online");
fhem("setreading Sileno Sgtin $sileno_sgtin");
fhem("setreading Sileno firmware_status $sileno_firmware_status");
fhem("setreading Sileno firmware_upload_progress $sileno_firmware_upload_progress");
fhem("setreading Sileno inclusion_status $sileno_inclusion_status");
fhem("setreading Sileno firmware_update_start $sileno_firmware_update_start");
fhem("setreading Sileno firmware_command $sileno_firmware_command");

}


Hier noch die Einstellungen für den SVG Plot.

Kenneth

#71
coool Danke.
mehr Readings und ich kann mein eventMap löschen :)

den Plot kopier ich mir auch gleich mal .. ;-)
Intel NUC @Ubuntu > FHEM 5.8
HM-LAN, NanoCul, Signalduino
EchoDot, Gardena Sileno, XT1, Somfy RTS
TabletUI

VolkerL

Hallo,

wie bekomme ich das Reading angezeigt? Stehe im Moment auf dem Schlauch. :'(

Volker
Raspberry PI mit fhem 5.8, COC & HM-CFG-LAN für Homematic & CUL für FS20

Kenneth

#73
Zitat von: VolkerL am 28 Juli 2017, 23:22:55
Hallo,

wie bekomme ich das Reading angezeigt? Stehe im Moment auf dem Schlauch. :'(

Volker

Hi Volker,

als Erstes den Anleitungen hier   & hier von Bigchees folgen. Wenn du dann eine deutsche Übersetzung und mehr Readings
haben möchtest verwendest und die sub "sileno_status" von mbrak statt der von bigchees.

Grüße
  Matthias


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

VolkerL

Hallo Kenneth,

Ich habe alles in fhem.cfg und myUtils eingetragen.
Bekomme aber nach dem Start folgende Fehlermeldung, aber es funktioniert trotzdem.


Messages collected while initializing FHEM:
configfile: Sileno: unknown attribute genericDeviceType. Type 'attr Sileno ?' for a detailed list.


Dankeschön

Volker





Raspberry PI mit fhem 5.8, COC & HM-CFG-LAN für Homematic & CUL für FS20