Seite 1 von 2

Ein-/Auschalt-URL an Apilio

Verfasst: Do Nov 10, 2022 6:48 pm
von KlausHaus
Ich öffne hier einen neuen Thread ausgehend von hier: viewtopic.php?p=74953#p74953

Ich habe bisher das alte SmartHome zum Schalten eines Klimageräts (derzeit Heizgerät) über Apilio/IFTTT mit Einschalt- und Ausschalt-URL in Abhängigkeit vom PV Überschuss genutzt. Das funktionierte gut. Nun habe ich das 1:1 ins SmartHome 2.0 übertragen als HTTP Gerät, aber dort funktioniert es nicht. Die URL für Apilio erzeugt eine Fehlermeldung im SmartHome-Log. Kann mir jemand helfen was diese Fehlermeldung bedeutet?
2022-11-10 16:30:00,560 INFO (7) TEST manueller Modus aktiviert, keine Regelung
urllib.error.HTTPError: HTTP Error 403: Forbidden
raise HTTPError(req.full_url, code, msg, hdrs, fp)
File "/usr/lib/python3.5/urllib/request.py", line 590, in http_error_default
result = func(*args)
File "/usr/lib/python3.5/urllib/request.py", line 444, in _call_chain
return self._call_chain(*args)
File "/usr/lib/python3.5/urllib/request.py", line 510, in error
'http', request, response, code, msg, hdrs)
File "/usr/lib/python3.5/urllib/request.py", line 582, in http_response
response = meth(req, response)
File "/usr/lib/python3.5/urllib/request.py", line 472, in open
return opener.open(url, data, timeout)
File "/usr/lib/python3.5/urllib/request.py", line 163, in urlopen
urllib.request.urlopen(url, timeout=5)
File "/var/www/html/openWB/modules/smarthome/http/off.py", line 27, in <module>
Traceback (most recent call last):
Im HTTP-Log (http://<ip-adresse>/openWB/ramdisk/smarthome_device_7_http.log) erscheint die URL korrekt.
11/10/2022, 16:30:00 http off.py devicenr 7 url https://app.apilio.com/webhooks/v2/bool ... 77cfcc6cb1)
Wenn ich dieselbe URL über das Adressfeld im Browser sende, wird sie von Apilio empfangen und bestätigt.
Wenn ich als Ein-/Ausschalt-URL eine URL an IFTTT sende, funktioniert es auch.
Die URL für Apilio ist allerdings mit 231 Zeichen sehr viel länger (da ist ein sehr langer Schlüssel drin).

Danke für einen Hinweis was da nicht stimmen könnte.

openWB series2 standard+ mit Version: 1.9.281.

Re: Ein-/Auschalt-URL an Apilio

Verfasst: Do Nov 10, 2022 6:54 pm
von Gero
Drüben habe ich ja sxhon gesxhrieben, wie eine Abhilfe aussehen könnte. Es ist halt ein 403, den man mit einer Autentifizierung wegbekommt.

Re: Ein-/Auschalt-URL an Apilio

Verfasst: Do Nov 10, 2022 7:18 pm
von okaegi
Geros Idee ist gut, kannst du mal dein Browsercache löschen (mit Passwörtern und so) und es dann nochmal aus dem Browser versuchen ?
Gruss Oliver

Re: Ein-/Auschalt-URL an Apilio

Verfasst: Fr Nov 11, 2022 8:44 am
von KlausHaus
Hallo,

Danke für Unterstützung. Das habe ich gemacht, zusätzlich sogar vom PC meiner Frau, wo auch gar nichts von meinen Zugangsdaten zu Apilio oder IFTTT gespeichert sein kann. Wenn ich von dort die URL aufrufe, wird sie positiv quittiert und ich sehe den Eingang im Apilio Event Log. Wenn ich sie über openWB als Ein-/Ausschalt-URL aufrufe, kommt die Fehlermeldung und es gibt keinen Eintrag im Apilio Event Log.

Ich werde dir, Oliver, per PN eine Apilio URL senden für eine extra für diesen Test eingerichtete Boolean Variable. Die URL schaltet die Variable zwischen true/false. Sonst ist keine Aktion damit verknüpft. Die kannst du beliebig zum Testen verwenden. Danke.

Re: Ein-/Auschalt-URL an Apilio

Verfasst: Fr Nov 11, 2022 7:46 pm
von okaegi
Problem ist bekannt. Der Server erkennt, das ein python programm abfragt und lehnt den Zugriff ab.

https://stackoverflow.com/questions/242 ... st-urlopen

In smarthome 1.0 war das nicht aus einem python programm, ich muss mal schauen, wie wir das umgehen,
Gruss Oliver

Re: Ein-/Auschalt-URL an Apilio

Verfasst: Fr Nov 11, 2022 8:34 pm
von okaegi
Okay hab ne Möglichkeit gefunden.

headers = {'User-Agent': 'Mozilla/5.0'}
request = Request(url, headers=headers)
urlopen(request, timeout=5).read()

Wir erklären dem Server das wir ein Browser sind und nicht ein python programm.
Ich bau es mal in den on und off trigger ein und melde mich wenn es in der nightly ist.
Gruss Oliver

Re: Ein-/Auschalt-URL an Apilio

Verfasst: Sa Nov 12, 2022 9:33 am
von KlausHaus
Ich kann auch mal Apilio kontaktieren, ob die den Zugriff durch ein Python Programm freischalten können. Was meinst du? Oder macht es mehr Sinn das so zu umgehen, wie du oben vorschlägst?

Re: Ein-/Auschalt-URL an Apilio

Verfasst: Sa Nov 12, 2022 12:52 pm
von Gero
Den user-Agent abzufragen und danach zu entscheiden ob man sowas zulässt oder nicht, ist „security by obscurity“. Denn genauso wie Oliver sich als Browser ausgibt, kann das auch jeder andere.

Aber frag‘ ruhig mal nach, warum sie meinen, das so machen zu müssen. Schließlich bist du ja zahlender Kunde.

Re: Ein-/Auschalt-URL an Apilio

Verfasst: Sa Nov 12, 2022 7:25 pm
von KlausHaus
Hallo.

ich habe Apilio gefragt, ob sie den Zugriff durch ein Python Programm freischalten können. Antwort:
Hi Klaus,
thanks for the hint! I checked the Cloudflare firewall and indeed see that it was blocking Python clients.
I added an exception, so it should work now. You can try and let me know if it worked.
Bei einem erneuten Versuch mit der URL in openWB als Einschalt-URL kommt aber immer noch die Fehlermeldung im SmartHome-Log. Ich habe Apilio gebeten, es nochmal zu prüfen. Melde mich dann wieder.

Re: Ein-/Auschalt-URL an Apilio

Verfasst: Mo Nov 14, 2022 5:23 pm
von okaegi
Bitte neuste Nightly runterladen, da emulieren wir nun im Header ein Browser. Damit sollte es klappen.
Gruss Oliver