[Modul] Husqvarna Automower Connect

(1) Ich glaube ich hab den 450x. Bin aber nicht 100%ig sicher, da ich woanders bin.
(2) Die Variablen sind jetzt da
(3) Es steht aber immer noch da „Aktuelle Aktivität: Ausser Betrieb“ aber „Status: mäht“. Beissen sich etwas, die beiden Aussagen…

Danke für die Hilfe

gros_ibou

PS: Der Positionsstring ist leer. Wurde aber auch nie geupdated. Ebenso wurden nicht geupdated „Aktuelle Aktivität“ und „Aktivität starten“. Deswegen hat wahrscheinlich aktuelle Aktivität den schrägen Wert…

Aha, der Verzeichnisname hat sich irgendwann in einer relativ frühen Phase mal geändert. Da nach dem ersten Anlegen das Wurzelverzeichnis vom git nicht mehr geändert wird, erklärt sich diese Diskrepanz.

nein, das sollte nicht so sein, ist ja bei mir auch nicht so und ich hab es auch von keinem sonst gehört.
Mit diesem Befehl ist (relativ) klar, das es ein Problem gibt bei der Generierung des IPS-Indexes (___generated.inc.php).
So spontan fällt mir nichts ein. Ist natürlich auch etwas schwierig zu testen, weil es ja nun nicht so häufig Updates gibt - bei 4.4 kann ich mich gar nicht erinnern, wann es das letzte mal war. Aber auf einem raspi (wie bei mir) kann das mit den Update auch eventuell etwas anders sein (wird auf jeden Fall komplett anders aufgerufen).

Im Augenblick würde ich dazu tendieren den Support mal in Anspruch zu nehmen.

Kanst Du das Auftreten des Problems reproduzieren?

Wie gesagt, das Update on „Position“ erfolgt nur bei bestimmten Aktivitäten, wei er sonst jede Menge Werte / Positionen erzeugt; ich hatte, als ich das noch nicht abgefangen habe, jede Menge Fake-Positionswechsel während er parkte.

das die Aktivität nicht aktualisiert wird ist ja zu komisch, da würde mich schon ein Prokoll mit einem der HTTP-Requests / Antworten interessieren ( also Modul aufmachen und Debug laufen lassen).
Dann schau ich mir gerne an, wo die Differenzen sind.

Was die __generated damit zu tun? Wenn deine Instanz beim Starten fehlerhaft ist, macht dein Modul etwas im Create oder ApplyChanges wenn IPS noch nicht betriebsbereit ist.
Das kannst/musst du unterlassen und mit GetRunlevel abfangen.
Michael

das die Aktivität nicht aktualisiert wird ist ja zu komisch, da würde mich schon ein Prokoll mit einem der HTTP-Requests / Antworten interessieren ( also Modul aufmachen und Debug laufen lassen).
Dann schau ich mir gerne an, wo die Differenzen sind.

Dump per email unterwegs

Hallo,

Nun, das hatte ich vermutet, weil
a) IPS auch nach dem Start meldet, das es eine bestimmte Funktion nicht gibt
b) das nur bei diesem user bisher aufgetreten ist. Bei mir nicht, egal wie häufig ich eine Start gemacht habe bzw auch ein Update.

Aber das ist ja nur eine Vermutung, weil ich das selbst nicht reproduzieren kann. Kann natürlich sein, das ein IPS-Start auf Windows anders ist als auf einem raspberry.

Im Create oder im AppyChanges mache ich aber nichts besonderes bzw nichts, das mir aufgefallen ist. Schaue ich aber nachher gerne nochmal an. Eine Besonderheit gibt es, es sind dynamische Konfigurationsformulare, bei denen ich eine Auswahsliste fülle aufgrund der Daten eines HTTP-Calls. Aber diese Formulare werde doch erst aufgerufen, wenn das Formular aufgemacht wird, oder?

gruß
demel

Bei GetConfigurationForm ja.
Machst du eventuell irgendwelche externen Abfrage oder abfragen auf IPS-Instanzen im ApplyChanges?
Da es keine Reihenfolge gibt in welcher IPS Instanzen initialisiert, können sogar Befehle fehlschlagen welche z.b. auf das Webhook Control zugreifen.
Und das kann/muss dann nicht bei jedem zu einem Fehler führen.
Michael

sieht auf ersten blick richtig aus.
kannst Du mal schauen, ob in den Messages was steht?

noch eine idee: lösch doch mal die datentypen der beiden variablen und die variablen, geh in die konfiguration des moduls, ändre was und speicher ab. dann werden die variablen und datentypen neu angelegt

sonst baue ich morgen debug ein.

noch eine idee: lösch doch mal die datentypen der beiden variablen und die variablen, geh in die konfiguration des moduls, ändre was und speicher ab. dann werden die variablen und datentypen neu angelegt

sonst baue ich morgen debug ein.

Hat leider nicht geholfen :frowning:

siehst du in den Meldungen irgend einen interessanten Eintrag? und um ganznsicher zu sein: das Modul ist ganz sktuell?

Hallo,
ich habe Debug eingebaut, bitte aktualisieren.

Am Debug fehlen mir Ausgaben, sieht so aus, as ob die Verarbeitung abbrechen würde - das müsste in den Meldungen stehen.
Ist das Modul wirklich auf aktuellem Stand?

Auf jeden Fall sollte das nun in etwa so aussehen:

MowertActivity ist die aktuelle Aktivität, die Erklärung für die Zahl findet sich in dem README.md des Moduls.

Wenn es nicht klappt bitte wieder ein Protokoll.
Anmerkung: das mit dem vielen Hex ist nur, weil standardmäßig alles in Text und HexX ausgegeben wird. Links unten ist ein Toggle „Hex Ansicht“, der normalerweise gesetzt ist, aber gedimmt (hellgrau) aussieht. Wenn man da 2x draufklickt ist der Haken weg und es gibt nur Text-Ausgabe.

Gruß
deme

Nachtrag: es ist nun ein Schalter in der Konfigurationsseite hinzugekommen „mit GPS-Daten“, damit ist die Einstellung mit/ohne GPS nicht mehr vom Modell abhängig.

Ja. Ich habe definitiv die letzte Version des Moduls. Sonst wäre ja z.B. das mit den GPS Daten nicht drin…
Dump folgt wieder per email
Gruss und Dank
gros_ibou

Hallo,

anhand des Log sehe ich das Problem:


07/21/2018 9:11:46 AM | TimerPool | Automower (New) (UpdateStatus): <br />

<b>Fatal error</b>:  Uncaught Error: Call to undefined method IPSModule::GetValue() in /mnt/data/symcon/modules/IPSymconAutomowerConnect/libs/common.php:55

Stack trace:

#0 /mnt/data/symcon/modules/IPSymconAutomowerConnect/AutomoverConnectDevice/module.php(210): AutomowerDevice->GetValue('MowerActivity')

#1 /mnt/data/symcon/scripts/__generated.inc.php(135): AutomowerDevice->UpdateStatus()

#2 /-(1): AutomowerDevice_UpdateStatus(27439)

#3 {main}

  thrown in <b>/mnt/data/symcon/modules/IPSymconAutomowerConnect/libs/common.php</b> on line <b>55</b><br />

Kann es sein, das dein IPS 5 nicht ganz aktuell ist? Hintergrund: in einer der letzten IPS 5-Updates wurde ‚GetValue()‘ analog zu der SetValue()-Methode geändert (siehe hier). Das habe ich in den Modulen dann nachgezogen (in …/libs/common.php)


    protected function GetValue($Ident)
    {
        @$varID = $this->GetIDForIdent($Ident);
        if ($varID == false) {
            $this->SendDebug(__FUNCTION__, 'missing variable ' . $Ident, 0);
            return false;
        }

        if (IPS_GetKernelVersion() >= 5) {
            $ret = parent::GetValue($Ident);
        } else {
            $ret = GetValue($varID);
        }

        return $ret;
    }

Jetzt gibt es 3 Möglichkeiten

a) Du machst ein IPS 5-Update

b) du passt diese Funktion lokal so an


    protected function GetValue($Ident)
    {
        @$varID = $this->GetIDForIdent($Ident);
        if ($varID == false) {
            $this->SendDebug(__FUNCTION__, 'missing variable ' . $Ident, 0);
            return false;
        }

        $ret = GetValue($varID);

        return $ret;
    }

c) ich nehme temporär diese Änderung zurück.

Wenn ich das richtig gelesen habe kannst Du im Augenblick weder (a) noch (b) machen? Dann gib mir kurz eine Info, dann mache ich die temporäre Änderung (b), veröffentliche das Modul, du machst ein Moudul-Update, wenn es soweit funktioniert, würde ich das Modul wieder zurückändern und wieder veröffentlichen. Das IPS-Update müsstest du dann möglich bald nachholen.

gruß
demel

ps: das mit Hex war nur eine Info; das Log ist dann zwar etwas besser zu lesen, ist aber ja alle drin.

Hallo Michael,

ich habe mir die Module nochmal angeschaut

AUtomower: in dem als fehlerhaft markierten Instanz (AutomoverConnectConfig) wird im Create() nur zwei Properties registriert und im ApplyChanges() nur ein SetStatus() aufgerufen. In der zweiten Instanz (AutomoverConnectDevice) werden im Create() ein paar Variablentypen angelegt und im ApplyChanges neben dem SetStatus() ein paar Variablen per MaintainVariable() erzeugt,

Da kann ich nix problematisches dran erkennen.

Netatmo: bei dem Modul hatte Du mir seinerzeit auf die Sprünge geholfen, das sind 3 Untermodule, wobei bei dem „spannendsten“ Modul NetatmoWeatherDevice der Zugriff auf ein webhook so abgesichert:


    public function Create()
    {
        parent::Create();
...
        $this->RegisterMessage(0, IPS_KERNELMESSAGE);
    }

    // Inspired by module SymconTest/HookServe
    public function MessageSink($TimeStamp, $SenderID, $Message, $Data)
    {
        parent::MessageSink($TimeStamp, $SenderID, $Message, $Data);

        $module_type = $this->ReadPropertyString('module_type');

        if ($Message == IPS_KERNELMESSAGE && $Data[0] == KR_READY) {
            if ($module_type == 'Station') {
                $this->RegisterHook('/hook/NetatmoWeather');
            }
        }
    }

@hardlog:

Wenn die Idee von nall-chan zutrifft, müsste das m.E. durch ein IPS-Neustart zu reproduzieren sein.

Kannst du mir Deine IPS-Logs von dem Zeitpunkt des Update mailen (demel42@web.de)? Liegen auf einem raspi unter /var/log/symcon, Windows weis ich nicht.
Eigentlich würde ich erwarten, das im Log entsprechende Fehlermeldungen zu sehen sind, vielleicht kann ich da etwas erkennen.

Mache ich heute abend. Danke

Hardlog

Wenn die Idee von nall-chan zutrifft, müsste das m.E. durch ein IPS-Neustart zu reproduzieren sein.

Kannst du mir Deine IPS-Logs von dem Zeitpunkt des Update mailen (demel42@web.de)? Liegen auf einem raspi unter /var/log/symcon, Windows weis ich nicht.
Eigentlich würde ich erwarten, das im Log entsprechende Fehlermeldungen zu sehen sind, vielleicht kann ich da etwas erkennen.
Heute, 09:53demel42

Ja, nach jedem Neustart des IPS Dienstes tritt das Problem auf!

Ich schau jetzt mal nach der Log Datei und schicke sie dir per eMail

hardlog

kannst du mir auch schreiben, welche der Instanzen als fehlerhaft markiert sind. Bei Automower sind das ja zwei (Konfigurator, Geräteinstanz) verschiedene, bei Netatmo drei (I/O, Konfigurator und mehrere Geräteinstanzen)

demel

Hi,

hab dir gerade die Log-Datei geschickt.
Beim Automower-Modul wird der „AutomowerConnect Konfigurator“ unter Konfigurator Instanzen als fehlerhaft markiert. der „NetatmoWeather Konfigurator“ an dieser stelle nicht, doch wenn ich dort „Importieren der Station“ drücke kommt die Meldung:
Fehler1.JPG

hardlog