Neues Modul: 74_HusqvarnaAutomower.pm

Begonnen von krannich, 27 Januar 2018, 12:12:01

Vorheriges Thema - Nächstes Thema

Honigmaul

#75
Guten Morgen,

Ich hab das Modul gestern Abend beim Update von FHEM entdeckt und natürlich sofort aktiviert. Funktioniert soweit glaub ich. Die Readings kommen.

Das Modul ist eine echt coole Sache. Respekt!

Meine Frage: wenn der Status Park gesetzt wird. Welches Park wird hier genommen? Bis auf weiteres? Oder bis zur nächsten Timereinstellung?
Wäre es möglich diese Optionen noch im Modul einzubauen?
Wir mögen nicht dass unser Waldi im Regen fährt und unser Tabui ist schneller zu erreichen als die Original App.

Danke schon mal für die Antwort.
Liebe Grüße
Honigmaul

spi3845

Hallo,

die Husqvarna Mähroboter unterstützen neuerdings Bluetooth - Husqvarna nennt das Connect@Home.

Hat jemand damit schon Erfahrungen gesammelt?

Viele Grüße,
Sebastian

HenrikAachen

Auch von mir vielen Dank für das Modul.
Leider geht starten, stoppen etc bei mir nicht. Dies würde ich aber gerne mit einbinden bei zB Regen.
Hat jemand eine Lösung gefunden?

choetzu

Geht noch nicht, siehe #67 und #73 in diesem Thread.. wurde schon öfter gefragt. Lg c
Raspi3, EnOcean, Zwave, Homematic

Klaus.A

Als Hinweis für den Entwickler - ich kann das im Moment nicht testen: Das sieht mir nach einem kleinen Problem mit Hochkommata in Zeile 648 aus (Leerzeilen mitgezählt):

Definition der "action" in der aktuellen Version:


my $json = '{"action": "' . $cmd . '"}';


Das sollte so aussehen:


my $json = "{action: " . $cmd . "}";


Mit der aktuellen Definition kommt die API durcheinander, weil der Action-Typ in zusätzlichen Hochkommata daherkommt und als Folge falsch interpretiert wird.
Einen zusätzlichen Dialogschritt zum Parken benötigt man nicht.

Gruß, Klaus

2 x CubieTruck mit 1) FHEM 5.9 und 2) IOBroker-mit Echo-Dot/Alexa und Homekit-/Siri-Integration. 1 x HMLAN, 3 x HM-LGW-O-TW-W-EU-2, mehr als 90 HomeMatic Sensoren und Aktoren, Velux-Fenster-IF, Fibaro ZWave-Sensoren und Aktoren, Philips Hue Bridge, IRTrans IR-Konverter, AutoMower via API

choetzu

Zitat von: Klaus.A am 03 Juni 2018, 22:52:35
Als Hinweis für den Entwickler - ich kann das im Moment nicht testen: Das sieht mir nach einem kleinen Problem mit Hochkommata in Zeile 648 aus (Leerzeilen mitgezählt):

Definition der "action" in der aktuellen Version:


my $json = '{"action": "' . $cmd . '"}';


Das sollte so aussehen:


my $json = "{action: " . $cmd . "}";


Mit der aktuellen Definition kommt die API durcheinander, weil der Action-Typ in zusätzlichen Hochkommata daherkommt und als Folge falsch interpretiert wird.
Einen zusätzlichen Dialogschritt zum Parken benötigt man nicht.

Gruß, Klaus
heisst das konkret, mit dieser Änderung kann man "set MeinRoboter park" machen? Das wäre ja schonmal sehr cool.  Und was ist mit start/stop?

Raspi3, EnOcean, Zwave, Homematic

Klaus.A

Ja, das sollte dann so funktionieren. Die Korrektur betrifft die folgenden Befehle:

start
stop
park

Ich kann das erst Ende nächster Woche testen (bin auf Geschäftsreise), wollte aber die Erkenntnisse hier bekanntgeben - vielleicht liest auch der Entwickler mit.

Gruß, Klaus

2 x CubieTruck mit 1) FHEM 5.9 und 2) IOBroker-mit Echo-Dot/Alexa und Homekit-/Siri-Integration. 1 x HMLAN, 3 x HM-LGW-O-TW-W-EU-2, mehr als 90 HomeMatic Sensoren und Aktoren, Velux-Fenster-IF, Fibaro ZWave-Sensoren und Aktoren, Philips Hue Bridge, IRTrans IR-Konverter, AutoMower via API

guehoe

Hallo Klaus,

danke für deine Unterstützung. Die Zeile #684 habe ich auch im Verdacht, nur fehlen mir die nötigen Perlkenntnisse.
Deine Änderung habe ich eingebracht. Jetzt lautet der Fehler:

{"code":400,"message":"Unable to process JSON"}

Gruß, Günter


Raspi 3+, CUL868, FS20, CCU2, div. MAX! und Shellys

guehoe

sorry, Zahlendreher. Meinte natürich Zeile # 648
Raspi 3+, CUL868, FS20, CCU2, div. MAX! und Shellys

Klaus.A

@Günter:

Au, da habe ich mich in der Perl/Json Syntax aber verirrt ...  :-[

"action" muss in Hochkommata stehen, sonst ist der Json-Teil ungültig. In einer anderen - funktionierenden Implementierung (Python) wird der Command ohne Hochkommata übergeben. Die API ist doch etwas flexibler - beim Login setzt das Skript auch alles in einfache Hochkommata.

ABER mir fällt etwas ganz anders auf: Du hattest einmal die Meldung im Log gepostet:


... Instead use control subpaths ('../control/{action}'


Nach dem ../control und vor {action} ist ein weiterer Forward-Slash in der Fehlermeldung im Log. Das Zeichen fehlt im Skript. Ich weiß nicht wie HttpUtilsGet_NonblockingGet(...) die einzelnen Datenelemente zusammensetzt - ob zwischen Forward-Slash und {action: 'xxx'} dann eine Leerstelle entsteht. Ich frage mich jetzt auch wie die Meldung genau zu interpretieren ist. Wie erwartet die API die 'action' ?

Zeile 648 muss wieder zum Ursprungszustand zurück.
Zeile 651 an /control noch einen Forward-Slash anhängen.

Wenn das auch nicht zum Erfolg führt dann muss ich eine lauffähige andere Implementierung versuchen detaillierter zu loggen um zu sehen was genau gesendet wird. Wie auch immer, wir sind ganz nahe an der Lösung.

Gruß, Klaus
2 x CubieTruck mit 1) FHEM 5.9 und 2) IOBroker-mit Echo-Dot/Alexa und Homekit-/Siri-Integration. 1 x HMLAN, 3 x HM-LGW-O-TW-W-EU-2, mehr als 90 HomeMatic Sensoren und Aktoren, Velux-Fenster-IF, Fibaro ZWave-Sensoren und Aktoren, Philips Hue Bridge, IRTrans IR-Konverter, AutoMower via API

guehoe

Hallo Klaus,

das mit /control/ war schon vor Tagen meine erste Idee. Habs jetzt nochmal probiert. Kein Erfolg.
Ich habe mal den Netzverkehr der AMC-APP protokolliert. Hier die cmd's die an Husqvarna übergeben werden. 


POST /app/v1/mowers/<meine-mower-id>/control/pause
POST /app/v1/mowers/<meine-mower-id>/control/start
POST /app/v1/mowers/<meine-mower-id>/control/park/duration/timer


Wollte auch noch den Netztraffic des Moduls mit wireshark protokollieren. Komme aber auf die Schnelle nicht weiter.

Ab Zeile #286 im Modul werden anscheinend die Kommandos generiert. Änderung  in Kleinschrift bewirkt an dieser Stelle nichts.

Vielleicht hat der Entwickler noch eine Idee?

Gruß, Günter

Raspi 3+, CUL868, FS20, CCU2, div. MAX! und Shellys

Klaus.A

Nachdem das schon langsam mysteriös wird bin ich auf die Suche nach Differenzen zwischen verschiedenen Skripten gegangen. Und, siehe da, habe zu meiner Überraschung etwas gefunden:
Die "APIURL" ist anders (die AUTHURL ist überall identisch).

Im FHEM-Modul ist als APIURL definiert:


"https://amc-api.dss.husqvarnagroup.net/app/v1/";


Das funktionsfähige Skript verwendet (ebenso wie andere, z.B. eine Lösung für Node.js):


"https://amc-api.dss.husqvarnagroup.net/v1/";


Der Subpath "/app" ist da nicht drin.

Das wirft natürlich die Frage auf, warum die anderen Funktionen - mehrere Mower erkennen, Statusabfrage - mit dem FHEM-Modul funktionieren. Ich kann mir allerdings vorstellen, das es eine spezielle API für die "App" gibt und eine mehr globale API. Oder es ist historisch bedingt. In jedem Fall gibt es eine Abweichung bei der URL.

Sonst sehe ich momentan nicht warum das nicht funktionieren sollte. Die Login-Daten werden auch mit Hochkommata eingeschlossen, da war meine Vermutung doch etwas daneben (sorry für die Konfusion).

Gruß, Klaus
2 x CubieTruck mit 1) FHEM 5.9 und 2) IOBroker-mit Echo-Dot/Alexa und Homekit-/Siri-Integration. 1 x HMLAN, 3 x HM-LGW-O-TW-W-EU-2, mehr als 90 HomeMatic Sensoren und Aktoren, Velux-Fenster-IF, Fibaro ZWave-Sensoren und Aktoren, Philips Hue Bridge, IRTrans IR-Konverter, AutoMower via API

guehoe

Das war die Initialzündung.

habe eben div. Änderungen vorgenommen. Sieht momentan gut aus.
Werde morgen testen und melde mich wieder.

Gruß, Günter
Raspi 3+, CUL868, FS20, CCU2, div. MAX! und Shellys

guehoe

Hallo zusammen, hallo Klaus,

es funktioniert!!!

Klaus, mit deiner Vermutung, es liegt an den Pfaden, lagst du goldrichtig.
Husqvarna verwendet für Abfragen und Kommandos tatsächlich unterschiedliche Pfade.

Habe gestern noch einen kleinen workaround gebastelt und heute positiv getestet.
Ist vielleicht nicht die eleganteste Lösung, tut es aber erstmal.

Zeile 43 ändern, Zeile 44 hinzufügen

use constant APIURLGET => "https://amc-api.dss.husqvarnagroup.net/app/v1/";
use constant APIURLPOST => "https://amc-api.dss.husqvarnagroup.net/v1/";


Zeile 458 ändern

url => APIURLGET . "mowers",


Zeile 546 ändern

url => APIURLGET . "mowers/" . $mymower_id . "/status",


Zeile 653 ändern

url => APIURLPOST . "mowers/". $mower_id . "/control",


Sollte sich jemand die Änderungen nicht zutrauen bitte per mail bei mir melden. Ich schicke dann das komplette Modul.
Bis zu einer offiziellen Version sollte 74_HusqvarnaAutomower.pm von den Updates ausgenommen werden.

Viel Spass beim Rasenmähen

Gruß, Günter

@Klaus: Vielen, vielen, vielen Dank für deine hilfreiche Unterstützung und weiterhin angenehme Dienstreise.
Raspi 3+, CUL868, FS20, CCU2, div. MAX! und Shellys

Klaus.A

Hallo Günter,

schön wenn es jetzt funktioniert. Aber zwei unterschiedliche URL-Pfade? Das muss mit einem einzigen Pfad (dem ohne "/app") funktionieren - machen andere Skripts auch problemlos.
Welchen Fehler gab es denn mit einer einzigen URL?  (Ich kann erst wieder testen wenn ich wieder zu Hause bin und direkten Zugriff auf mein ganzes System habe.)

Gruß, Klaus


2 x CubieTruck mit 1) FHEM 5.9 und 2) IOBroker-mit Echo-Dot/Alexa und Homekit-/Siri-Integration. 1 x HMLAN, 3 x HM-LGW-O-TW-W-EU-2, mehr als 90 HomeMatic Sensoren und Aktoren, Velux-Fenster-IF, Fibaro ZWave-Sensoren und Aktoren, Philips Hue Bridge, IRTrans IR-Konverter, AutoMower via API