[Modul] Ondilo ICO zum Erfassen von Messwerten eines Pools

Offenbar hat Ondilo die API geändert, bei der Anmeldung bekomme ich folgende Fehlermeldung:

Notice: Undefined variable: result in C:\ProgramData\symcon\modules\.store\fonzo.ondilo\Ondillo Cloud\module.php on line 279

Ich bekomme seit etwa 11:30 keine neuen Werte mehr.
Edit: Nach erneuter Installation und nachdem ich alles aktualisiert habe, bekomme ich die aktuellen Werte wieder. Der obige Fehler bleibt allerdings bestehen.

Wie oft fragst Du denn die Werte ab? Ich werde mal einen internen Timer einbauen der zu häufige Anfragen verhindert.

Der Ondilo sendet ja nur alle 60 Minuten neue Werte!
Oder?
Mfg
Maxx

Ich hab jetzt 15 Minuten drinnen. Und ja, er sendet nur alle 60 Minuten. Nur wenn du 60 Minuten eingibst, kann es dir aufgrund der „Zeitverschiebung“ passieren, dass die Werte mit hoher Verzögerung in IPS ankommen. Daher hab ich 15 Minuten gekommen. Was aber noch immer im Rahmen liegen sollte. Bei einer Aktualisierung von 60 Minuten in IPS werden Werte immer zur vollen Stunde geholt.

Hi,

ich habe das ICO Modul gerade frisch installiert und versucht, mich zu registrieren. Leider bekommen auch ich keine erfolgreiche Registrierung hin. Erster Versuch mit der derzeitigen Stable Version des Moduls:

Notice: Undefined variable: result in /var/lib/symcon/modules/.store/fonzo.ondilo/Ondillo Cloud/module.php on line 381

Danach habe ich die Beta probiert, hier kommt folgende Meldung:

Notice: Undefined variable: result in /var/lib/symcon/modules/.store/fonzo.ondilo/Ondillo Cloud/module.php on line 279

Da ich die API vorher nicht nicht verwendet hatte, nehme ich einfach mal an, dass die Limits von Ondilo wohl nicht das Problem sind.

@Fonzo: Wenn Du einen Testzugang brauchst, kann ich Dir gerne meine Login-Daten zur Verfügung stellen.

Edit: Ich habe grade entdeckt, dass trotz der Fehlermeldung das Modul aber zu funktionieren scheint. Der Konfigurator hat den Pool gefunden und ich kann die Werte abrufen :slight_smile: Jetzt bleibt nur noch der Wunsch nach dem Feature zum Abholen und Bestätigen der Meldungen/Empfehlungen :o

CU
Golo

Guten Morgen

Das mit den Empfehlungen hab ich auf diese Weise gelöst. Derzeit nur auf Englisch (ich denke das ist das original). Ich hab denen schon vorige Woche ein Mail geschrieben ob ich die Texte haben könnte (alle) bisher aber noch keine Antwort.

<?php

//Start writing your code here
if($_IPS['SENDER'] == 'WebHook') {
    $WebHookID="";
    $WebHookID=$_GET["ID"];
    ONDILO_ValidateRecommendation(15799/*Ondilo ICO*/,strval($WebHookID));
}
;
$Empfehlung=json_decode(ONDILO_GetListActiveRecommendations(15799/*Ondilo ICO*/),true);
$Empfehlung_HTML="";
$Anzahl = count($Empfehlung);
if ($Anzahl == 0 ) { 
    ips_sethidden(49458/*HTML Variable Empfehlungen*/,true);
    ips_sethidden(43926/*Link zu den Empfehlungen im WebFront*/,true);
}
else
{
    ips_sethidden(49458/*HTML Variable Empfehlungen*/,false);
    ips_sethidden(43926/*Link zu den Empfehlungen im Webfront*/,false);    
    $Empfehlung_HTML="<script>
                      function Confirm(ID) {
                        window.xhrGet=function xhrGet(o) {var HTTP = new XMLHttpRequest(); HTTP.open('GET',o.url,true);HTTP.send(); }; window.xhrGet({ url: 'hook/ICOValidieren?ID='+ID });
                      }</script>";
    $Empfehlung_HTML=$Empfehlung_HTML."<table style=\"width:100%\">";
    $Empfehlung_HTML = $Empfehlung_HTML."<tr><th align=\"center\">Titel</th><th align=\"center\">Nachricht</th><th align=\"center\">Erstellt</th><th align=\"center\">Bestätigen</th></tr>";
    for ($i=0;$i<=$Anzahl-1;$i++)
    {
        $Empfehlung_HTML = $Empfehlung_HTML."<tr>";
        $Empfehlung_HTML = $Empfehlung_HTML."
                            <td align=\"center\">".$Empfehlung[$i]["title"]."</td>"."
                            <td align=\"center\">".$Empfehlung[$i]["message"]."</td>"."
                            <td align=\"center\">".date('d.m.Y G:i',strtotime($Empfehlung[$i]["created_at"]))."</td>"."
                            <td align=\"center\"><button onclick=\"Confirm(".$Empfehlung[$i]["id"].")\">Ok</button></td>";
        $Empfehlung_HTML = $Empfehlung_HTML."</tr>";
    }
    $Empfehlung_HTML = $Empfehlung_HTML."</table>";
    /*Wenn sich die Anzahl der Empfehlungen erhöht hat, gebe ich eine Meldung aus*/
    if ($Anzahl > getvalue(57728/*hier speicher ich die Anzahl der Empfehlungen*/)){
        if ($Anzahl == 1){
            $Text = "Es ist eine Empfehlung vorhanden!";
        } else
        {
            $Text = "Es sind ".$Anzahl." Empfehlungen vorhanden!";
        }
        WFC_PushNotification(56676,"Pool",$Text,"",0);
        WFC_SendNotification(56676,"Pool",$Text,"",0);
    }
}
SetValue(49458/*Meldungen in HTML Variable*/,$Empfehlung_HTML);
SetValue(57728/*Anzahl der Empfehlungen*/,$Anzahl);

Das Skript wird alle 15 Minuten ausgeführt.

Du brauchst dazu noch einen Webhook - Siehe Bilder

Den Fehler bekomme ich übrigends nicht.

wh2.png

wh3.png

Leider bekomme ich auch beim Registrieren bereits folgende Fehlermeldung:

IPS-Err-PHP 2020-08-12 17:17:42.951 Notice: Undefined variable: result Error in Script C:\ProgramData\Symcon\modules.store\fonzo.ondilo\Ondillo Cloud\module.php on Line 381 134 in scripts\IPSLibrary\app\core\IPSLogger\IPSLogger.inc.php (call IPSLogger_Out) 44 in scripts\IPSLibrary\app\core\IPSLogger\IPSLogger_PhpErrorHandler.inc.php (call IPSLogger_Err) 381 in modules.store\fonzo.ondilo\Ondillo Cloud\module.php (call IPSLogger_PhpErrorHandler) 304 in modules.store\fonzo.ondilo\Ondillo Cloud\module.php (call FetchAccessToken) 322 in modules.store\fonzo.ondilo\Ondillo Cloud\module.php (call FetchRefreshToken) 3 in C:\Windows\System32- (call ProcessOAuthData) 4 in C:\Windows\System32- (call ProcessOAuthData)
Notice: Undefined variable: result in C:\ProgramData\Symcon\modules.store\fonzo.ondilo\Ondillo Cloud\module.php on line 381

Wenn ihr eine Liste der möglichen Meldung zur Verfügung stellt kann man das ergänzen.

Schon irgendwas gehört? Ansonsten müsstet ihr mal sammeln was es so gibt, damit das dann ergänzt werden kann.

Kannst Du mal kurzfristig auf Beta wechseln ein Update machen und schauen ob der Fehler dann weg ist? Werden die Werte dann ausgelesen bzw. steht das Gerät im Konfigurator zur Verfügung?

@Fonzo:
Leider hab ich noch nichts bekommen. Es ist aber urlaubsbedingt mit einer längeren Wartezeit zu rechnen. Oder ich bekomme gar nichts.
Die Meldungen kommen ja jetzt auch schon da sie in Klartext geliefert werden. Sind halt lediglich in Englisch, sonst aber gut auszuwerten.
Ich werde noch mal nachfragen.

Ich hab heute die Antword von Ondilo bekommen

Hello,

I asked our tech team.
You don’t need to translate. It is simply that when authenticating with your IP -Symcom home automation system you didn’t select the correct language.
You just need to log out and log back in with your system to choose the correct language.

I remain at your disposal

Kind regards

Mal schauen ob das funktioniert. Wie kann ich mich in IPS abmelden? Muss ich mich einfach nur neu anmelden oder muss ich auch den OAUTH Eintrag löschen?

Die Fehlermeldung kommt noch immer, die Werte werden jedoch korrekt ausgelesen.
Mit der letzten Version des Modules funktioniert auch das Auslesen der Empfehlungen, jedoch in Englisch.

Die Fehlermeldung kommt noch immer, die Werte werden jedoch korrekt ausgelesen.
Mit der letzten Version des Modules funktioniert auch das Auslesen der Empfehlungen, jedoch in Englisch.

Fehler bekomme ich mit der Beta auch keinen. Bei der normalen Bersion bekomme ich eine Notice. Soweit ich die Rückmeldung von Ondilo verstanden habe, muss man bei der Anmeldung lediglich die Sprache Deutsch wählen. Ich hab das mal gemacht und warte. Spätestens morgen sollte ich eine Meldung zum Reinigen der Filter erhalten. Dann wird sich zeigen, welche Sprache kommt.

So, es funktioniert tatsächlich so wie es in dem Mail beschrieben wurde. Mit der richtigen Sprachauswahl (in meinem Fall Deutsch), kommen die Empfehlungen auch in Deutsch.

Hallo @Fonzo
Kann es sein, dass die API geändert wurde? Ich bekomme seit gestern kurz vor 22:00 keine aktuellen Werte mehr. Es scheint so, dass schon was kommt, aber die sind nicht aktuell. In der App hab ich aktuelle Werte. Fehlermeldung im Debug gibt es auch keine.

image

Die Daten sind von 21:56

Noch etwas ist mir aufgefallen. Wenn ich auf den Button „Registrieren“ klicke, werde ich nicht auf die Seite weitergeleitet. Sie bleibt einfach nur weiß.
image

Wenn ich diese URL https://interop.ondilo.com aus deinem PHP aufrufe, bekomme ich Fehler 500.
Und wenn ich das Ondilo Customer API reference richtig lese, dann hat sich nichts geändert …
Und das bekomme ich wenn im Konfigurator auf „Auslesen“ klicke.

@hfichtinger Muss ich schauen irgendwas scheint sich ja geändert zu haben.
An error in the Ondilo Customer API application logic has been detected.

Hast Du eventuell mal Zeit da für einen Test näher drauf zu schauen? Ich hab ja selber keinen ICO.
Ich schau mal ob sich irgendwas geändert haben sollte.

Bin für einen Test jederzeit zu haben. Wir können das auch wieder mit meinen Daten machen. Ich hab auch ein Ticket bei Ondilo erstellt. Weil laut Beschreibung sollte die URL ja stimmen.

Hallo Fonzo,
ich habe meinen ICO gestern in Betrieb genommen und wollte ihn heute in das IPS integrieren. Ich bekomme aber auch bei der Registrierung den 500er Fehler:

"statusCode": 500,
"error": {
    "type": "SERVER_ERROR",
    "description": "Call to a member function prepare() on null"
}

}

hier der API Aufruf aus dem browser:

https://interop.ondilo.com/oauth2/authorize?response_type=code&client_id=IP-Symcon&redirect_uri=https%3A%2F%2Foauth.ipmagic.de%2Fforward%2Fondilo&state=2dc93f605208f8a8ed1930bbdd19553c&scope=api

Vg

Das sieht aber nach einem Fehler bei Ondilo aus. Magst du die mal anschreiben was da los ist?

paresy