Ankündigung

Einklappen
Keine Ankündigung bisher.

LBS19000935 - Husqvarna Automower Connect API

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • panzaeron
    antwortet
    Zitat von MrIcemanLE Beitrag anzeigen
    Install:
    1. "cd /usr/local/edomi/main/include/php"
    2. "composer require textalk/websocket"
    OK, ich musste bei mir noch composer nachinstallieren mit
    Code:
    sudo yum install composer
    Der Fehler ist jetzt weg, aber an A14 kommt nur eine Meldung "{"ready":true,"connectionId":"TedIEeHyjoECGtb="}" , beschäftige ich mich morgen genauer mit.
    Ich danke Dir für die Umstellung und deinen Einsatz.

    Einen Kommentar schreiben:


  • MrIcemanLE
    antwortet
    Zitat von panzaeron Beitrag anzeigen
    Könnte man den Inhalt vielleicht direkt in den LBS integrieren?
    Ich mag sowas auch nicht, aber leider ist das bei so speziellen Sachen immer so eine Sache. Man nimmt entweder ein fertige Klasse/Bibliothek o.ä. oder man setzt sich hin und programmiert das ganze selber. Je nach Komplexität, Größe der Klasse und verfügbarer Freizeit muss man da halt abwägen. Hier habe ich mich zunächst für das Fertigprodukt entscheiden, da PHP das so out-of-the-box nicht mitbringt. Wenn sich jemand findet, der das ganze in den LBS mit reinbekommt, immer her damit. Einfach den Baustein modifizieren und rüber schicken ;-)

    Ich habe auch immer so meine Bedenken bei solchen LBS, aber irgendwann habe ich mich von einem Vanilla EDOMI verabschiedet und akzeptiert, dass es sinnvoll ist für bestimmte Probleme auf fertige Lösungen zu setzen.

    Es ist auch etwas mehr als eine Klasse, sonst hätte ich die mit reinkopiert. Bei der Basis-Klasse für die API-Abfrage habe ich das auch so gemacht.

    Zitat von panzaeron Beitrag anzeigen
    Das Problem ist das "autoload.php" nicht gefunden wird
    Du musst die beiden Befehle aus der Hilfe im Terminal ausführen. Sonst wird es leider nicht funktionieren. Der LBS funktioniert jetzt ausschließlich auf Websocketbasis für die Status- und Positionsmeldungen.

    Die Klassen sind von hier: https://github.com/Textalk/websocket-php

    Einen Kommentar schreiben:


  • beauty
    antwortet
    MrIcemanLE super und danke für die schnelle Überarbeitung des LBS....
    hab ihn gerade mal installiert und warte morgen mal ab wie er funktioniert

    Einen Kommentar schreiben:


  • vento66
    antwortet
    Das ist ne externe Klasse,die wiederum wieder andere Abhängigkeiten hat. Diese werden mittels composer nachinstalliert. Ich bin kein Freund von sowas, manchmal geht es aber nicht anders.

    Einen Kommentar schreiben:


  • panzaeron
    antwortet
    Zitat von MrIcemanLE Beitrag anzeigen
    Edit: Sollte das für alle Ausgänge gelten? Oder vielleicht nur für den API-Ausgang?
    Bei meinen dauerlaufenden EXE-LBS nutze ich nur noch logic_getInputsQueued($id[,$fallback[,$sync]]) und logic_setOutput($id,$ausgang,$value).
    Notwendig ist es, meine ich zumindest, nur dort wo sich Ein- oder Ausgänge schnell ändern können...

    Das Problem ist das "autoload.php" nicht gefunden wird, wo kommt dies Skript den her? Könnte man den Inhalt vielleicht direkt in den LBS integrieren?

    Einen Kommentar schreiben:


  • MrIcemanLE
    antwortet
    Zitat von panzaeron Beitrag anzeigen
    Momentan bekomme ich allerdings noch eine Fehlermeldung in der Zeile 3 (require(dirname(__FILE__) . "/../../../../main/include/php/vendor/autoload.php") weil autoload.php nicht gefunden wird.
    Das habe ich nicht dazu geschrieben. Für die Websocket-Verbindung habe ich eine fertige Lösung benutzt. In der Hilfe steht dazu:

    Install:
    1. "cd /usr/local/edomi/main/include/php"
    2. "composer require textalk/websocket"

    Zitat von panzaeron Beitrag anzeigen
    Du kannst auch statt logic_setOutput($id,$ausgang,$value) den Befehl logic_setOutputQueued($id,$ausgang,$value) verwenden
    Werde ich beim nächsten Release mit aufnehmen.
    Edit: Sollte das für alle Ausgänge gelten? Oder vielleicht nur für den API-Ausgang?
    Zuletzt geändert von MrIcemanLE; 09.06.2022, 12:43. Grund: Ergänzung

    Einen Kommentar schreiben:


  • panzaeron
    antwortet
    Zitat von MrIcemanLE Beitrag anzeigen
    Daher wird der LBS von panzaeron wahrscheinlich so direkt erstmal nicht funktionieren. Der JSON-String vom Websocket sieht auch etwas anders aus. Die Übersetzung der verschiedenen Codes (Status, Modus, Aktivität und Fehler) habe ich versucht mit einzubauen. Ich kann aber auch noch Änderungen vornehmen, damit es für panzaeron nicht so aufwändig wird den LBS zu korrigieren. Vielleicht ein Output-Slot für jeden Eventtyp oder so.
    Wow, vielen Dank für die Überarbeitung

    Für meinen LBS ist es am einfachsten, wenn alle Meldungen direkt an A15 ausgegeben werden. Du kannst auch statt logic_setOutput($id,$ausgang,$value) den Befehl logic_setOutputQueued($id,$ausgang,$value) verwenden, dann gehen auch bei einem kurzen hintereinander Ausgeben von Werten, keine Meldungen verloren.

    Momentan bekomme ich allerdings noch eine Fehlermeldung in der Zeile 3 (require(dirname(__FILE__) . "/../../../../main/include/php/vendor/autoload.php") weil autoload.php nicht gefunden wird.

    Einen Kommentar schreiben:


  • MrIcemanLE
    antwortet
    Hallo Zusammen,

    ich denke ich habe eine lauffähige Websocket-Version (v0.4) hinbekommen. Der LBS läuft bei mir erst seit zwei Tagen. Kann also noch nicht viel über das Verhalten im Fall eines Fehlers beim Automower sagen. Ende des Monats wird sich zeigen, ob es wieder zu diesen Zugriffsproblemen bei der API kommt.

    Der ganze LBS basiert jetzt auf der Vorlage von gaert "EXEC-Script als Dämon". Das heißt, dass der LBS mit EDOMI per gesetztem Eingang E1 automatisch gestartet wird und dann in einer Endlosschleife mit einem Intervall von 50ms läuft. Das heißt die "Zykluszeit" aus dem alten LBS entfällt.

    Der LBS lauscht am WebSocket und reagiert bei eingehenden Nachrichten. Diese werden von der API in drei Typen eingeteilt: "Status-event", "Position-event" und "Settings-event". Die aktuelle Version reagiert auf die beiden ersten Events und aktualisiert die zugehörigen Ausgänge. Der Ausgang API-Output enthält immer den letzten empfangenen Event oder ggf. Fehlermeldungen. Daher wird der LBS von panzaeron wahrscheinlich so direkt erstmal nicht funktionieren. Der JSON-String vom Websocket sieht auch etwas anders aus. Die Übersetzung der verschiedenen Codes (Status, Modus, Aktivität und Fehler) habe ich versucht mit einzubauen. Ich kann aber auch noch Änderungen vornehmen, damit es für panzaeron nicht so aufwändig wird den LBS zu korrigieren. Vielleicht ein Output-Slot für jeden Eventtyp oder so.

    Die Fehlerwerte für den LBS muss ich mal noch dokumentieren. Die Idee hinter dem Ausgang (A16) ist, dass man nur bei 0 (= fehlerfrei) nachfolgende Aktionen auslösen würde um keine fehlerhaften Informationen auf der Visu oder im Archiv zu haben.

    Die Befehle an den Mäher sind nach wie vor noch nicht implementiert. Hier muss ich noch ran, damit man auch über Edomi entsprechende Befehle senden kann.

    Die Ausgänge musste ich leider neu Anordnen, damit es etwas übersichtlicher wird. Die Message vom Websocket enthält auch noch informationen über den nächsten Startzeitpunkt oder das geplante Ende der Mähzeit. Das werde ich auch noch mit ausgeben. Allerdings werden sich dann die Ausgänge nochmal verschieben.

    Gruß
    Stefan

    Einen Kommentar schreiben:


  • MrIcemanLE
    antwortet
    Das kann ich mir mal anschauen. Sieht auf den ersten Blick machbar aus. Muss aber mal schauen, wann ich dazu komme. Melde mich mit Fortschritten ;-)

    Einen Kommentar schreiben:


  • beauty
    antwortet
    Vielleicht kann sich das ja MrIcemanLE mal anschauen? Bei PHP etc. bin ich leider raus.....

    Einen Kommentar schreiben:


  • vento66
    antwortet
    Versteh ich nicht.... Über Websockets kommen die Stati, so ganz ohne Abfragen. Das Senden von Befehlen geht dann über die Rest API. Der geänderte Status kommt wieder über den Websocket. Das machen die homeconnect LBS genau so. Und mehr als 10000 Befehle wird ja wohl keiner im Monat an den Rasenmäher senden. OK, der Initiale Status muss auch darüber abgerufen werden.

    Einen Kommentar schreiben:


  • beauty
    antwortet
    vento66 ich nehme mal an wegen folgendem ist das über das Websocket nicht möglich?

    NOTE: Currently WebSocket does not support sending control commands to the mower. For this you need to use the REST API.

    Einen Kommentar schreiben:


  • vento66
    antwortet
    Normal sind doch gar keine Abfragen notwendig. Es gibt doch einen Websocket. https://developer.husqvarnagroup.clo...API#/websocket

    Einen Kommentar schreiben:


  • beauty
    antwortet
    Zitat von panzaeron Beitrag anzeigen
    Limit exceeded bedeutet Du hast die maximal mögliche Anzahl an Abfragen (pro Monat) überschritten. Im Montat sind es nur 10 000 und bedeutet ein geringeres Intervall als 4-5 Minuten ohne Überschreitung des API-Limits ist nicht möglich. Lösung: Zykluszeit erhöhen oder du legst bei Husqvarna noch weitere Apps an und nutzt z. B. einen API-Key pro Woche.
    Wird es hier noch eine andere Lösung geben? Also auch mit V3.2 hab ich nun das Limit erreicht bei Cycletime 60 sek. Ich finde halt wenn man 4-5 min. nehmen muss oder mehrere API Keys ist das ja totaler Quark mit dem LBS.....
    Wie ist das bei euch anderen?

    Einen Kommentar schreiben:


  • beauty
    antwortet
    Hab gerade die LBS V3.2 eingespielt und läuft....

    Einen Kommentar schreiben:

Lädt...
X