FRITZ!DECT 301 Temperatur vom Raspberry übertragen
- Robby
- Thread is Unresolved
-
-
zunächst vielen vielen Dank euch allen. Ich bekomme alles, was ich brauche zum Laufen! Ihr seid die Besten!
Nun noch meine Frage: Ich lasse alles über die Fritzbox momentan mit allen Rechten laufen. Wenn man das auf die "Smart-Home" Funktionen begrenzt, funktioniert es nämlich nicht mehr, da man dann auch nur über http://fritz.box/myfritz zugreifen kann. GIbt es ja eine simple Lösung für, bei der ihr mir helfen könntet?
-
Hallo.
Ich bin in Linux leider noch Laie.
Dafür entschuldige ich mich.
-
-
Dafür entschuldige ich mich.
Nicht entschuldigen. Lernen, mit den Dingen umzugehen, ist die bessere Variante. Es hat ja z.B. seinen Grund, dass Du Dich als "root" nur nach Änderungen am System bzw. über ssh anmelden kannst. Kleines Geheimnis: Jeder hier ist irgendwann einmal das erste Mal mit RPi bzw. Linux in Berührung gekommen.
Ab einer gar nicht so großen Komplexität kommst Du allerdings mit trial-and-error nicht weit, da solltest Du annhähernd wissen, was Du tust. Viel Freude weiterhin.
-
Hi, ich habe in der "heizkoerper.dat" gelesen, dass nur die Thermostate von AVM funktionieren... Hat da schon jemand was gefunden, um die Temperaturen der Eurotronic Comet DECT abfragen zu können?
Gruß und so
-
-
-
ich habe jetzt die Skripte bei mir rein kopiert, aber die Ausgabe ist gleich "nix". Ich habe auch keine vergleichbaren AVM Produkte zum vergleichen. Ich suche weiter
-
Welche Skripte hast denn Du wohin kopiert?
-
-
-
Ich hab es... Die Werte, die ausgelesen wurden, muss man sich natürlich noch ausgeben lassen.
-
-
Da musst Du gethkrtsoll abfragen. Siehe auch hier: https://avm.de/fileadmin/user_…en/AHA-HTTP-Interface.pdf (S.6)
-
-
-
Code
Display More// Temperatur vom Heizkörper 1 $urltmp=$ahaurl."?sid=$sid"."&ain=".rawurlencode($ainHeizk1).'&switchcmd='.$cmdtmp; $wertHK01 = file_get_contents($urltmp); $HK01 = substr($wertHK01, 0, -2); // Abtrennen Wert vor dem Komma $HK02 = substr($wertHK01, 2, -1); // Abtrennen Wert hinter dem komma $ainHeizkTemp1 = "".$HK01.",".$HK02." "; // Zusammensetzen Wert mit Komma und Grad # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Soll vom Heizkörper 1 $urltmp=$ahaurl."?sid=$sid"."&ain=".rawurlencode($ainHeizk1).'&switchcmd='.$cmdsoll; $wertHK01 = file_get_contents($urltmp); # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - echo "ID " . $ainHeizk1 ." | ". $ainHeizkTemp1 . " gemessen | ". $wertHK01/2 . " Soll<br>\n";
Ich habe die Temperatur- und das Sollabfrage 6 Mal für meine 6 Thermostate eingetragen und darunter die Ausgabe.
Über meine Endung (<br>\n";) nicht wundern... Das passt dann mit dem Zeilenumbruch in der Webseite, genau wie in der Konsole.
Wie hyle mich schon gemahnt hat
, die richtige Variable abzufragen, erwähne ich das hier noch mal, obwohl es klar auch im Quelltext steht. (ich schon älter und voll übersehen)
Die $cmdtmp bringt die gemessene Temperatur und die $cmdsoll, die aktuelle Solltemperatur. Es ist auch möglich die Absenk- und Komforttemperatur auszulesen. Die Zeiten, wann der Wechsel ist, habe ich nicht gesehen und nicht weiter gesucht, weil mir nicht wichtig.
PS: Ich hatte zuvor das eQ-3 MAX! Cube System, wo ich die Öffnung der Thermostate in Prozent auslesen konnte, das fehlt hier echt... Wer da was finden, bitte bescheid sagen
-
Moin zusammen,
ich wollte das shell script aus #5 benutzen aber mit Zugang zur Fritzbox über https.
Dazu braucht curl den Paramter "-k".
Merkwürdigerweise ist der nicht bei allen curl Aufrufen angegeben. Aber mit -k klappt es auch über https.
Ein weiterer Punkt ist, dass die grep Abfrage zum Auslesen der SID nicht funktioniert. Evt. liegt das m Firitz OS 7.50 ?
Also das funktioniert bei mir nicht (keine Ausgabe):
SID=$(curl -i -s -k -d "response=${RESPONSE}&username=${USER}" "${FBF}" | grep -Po -m 1 '(?<=sid=)[a-f\d]+')
aber so klappt es:
SID=$(curl -i -s -k -d "response=${RESPONSE}&username=${USER}" "${FBF}" | grep -oP '"sid": *"\K[^"]*')
Alternativ mit wget statt curl:
SID=$(wget --no-check-certificate -O - --post-data="response=${RESPONSE}&username=${USERNAME}" "${FBF}" | grep -oP '"sid": *"\K[^"]*')
--------------
Ich hab hier kein vollwertiges SmartHome im Einsatz aber ich hab diverse Temperatur Sensoren im Einsatz, u.a. Tuya Zigbee, Shelly H&T un dauch FritzBox Comet DECT.
Ich lese mittels cron job die Temperatur Daten aus und bastel dann eine Grafik mit Google Graph.
Klappt aus soweit aber trotz shell script aus #5 bekomme ich keien aktuelle Temperatur für meine Comet Teile.
Müsste das nicht so aussehen?...
AIN="11959%200531552"
...
TEMPINT=$(curl -s -k ${FBF}'/webservices/homeautoswitch.lua?ain='${AIN}'&switchcmd=gettemperatur&sid='${SID})
Oder geht das mit den Comet nicht? Ich bekomme einen Fehler "Bad request"
* Trying 2a01:...
* Connected to fritz.box (2a01:...) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
* CAfile: /etc/ssl/certs/ca-certificates.crt
* CApath: /etc/ssl/certs
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
* TLSv1.3 (IN), TLS handshake, Certificate (11):
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
* TLSv1.3 (IN), TLS handshake, Finished (20):
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.3 (OUT), TLS handshake, Finished (20):
* SSL connection using TLSv1.3 / TLS_AES_128_GCM_SHA256
* ALPN, server did not agree to a protocol
* Server certificate:
* subject: CN=dieko.goip.de
* start date: Jul 25 21:53:11 2022 GMT
* expire date: Jan 15 21:53:11 2038 GMT
* issuer: CN=dieko.goip.de
* SSL certificate verify result: self signed certificate (18), continuing anyway.
> GET /webservices/homeautoswitch.lua?ain=11959%200531552&switchcmd=gettemperatur&sid=4a8a420fbff647fa HTTP/1.1
> Host: fritz.box
> User-Agent: curl/7.74.0
> Accept: */*
>
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* old SSL session ID is stale, removing
* Mark bundle as not supporting multiuse
< HTTP/1.1 400 Bad Request
< Cache-Control: no-cache
< Connection: Keep-Alive
< Content-Length: 0
< Content-Type: text/plain; charset=utf-8
< Expires: -1
< Pragma: no-cache
< Keep-Alive: timeout=60, max=300
< X-Frame-Options: SAMEORIGIN
< X-XSS-Protection: 1; mode=block
< X-Content-Type-Options: nosniff
< Content-Security-Policy: default-src 'none'; connect-src 'self'; font-src 'self'; frame-src https://service.avm.de https://fritzhelp.avm.de/help/ https://help.avm.de https://www.avm.de https://avm.de https://assets.avm.de https://clickonce.avm.de http://clickonce.avm.de http://download.avm.de https://download.avm.de 'self'; img-src 'self' https://tv.avm.de https://help.avm.de/images/ http://help.avm.de/images/ data:; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; frame-ancestors 'self'; media-src 'self'
<
* Connection #0 to host fritz.box left intact
Danke für einen Hinweis...
-
-
Hab jetzt nur überflogen...
Müsste das nicht so aussehen?
...
AIN="11959%200531552"
Also bei mir wird von der AIN das Leerzeichen (oder Ersatz) weggelassen, also wäre die in Deinem Fall AIN="119590531552".
//Edit
Du kannst Dir evtl auch mal https://fritzconnection.readthedocs.io/en/latest/ anschauen. Vielleicht liegt Dir das ja eher.
-
OK, das Leerzeichen in der AIN war nicht das Problem, augenscheinlich muss man das entfernen oder durch %20 ersetzen, geht beides.
Aber das Problem war, ich hatte beim switchcmd temperatur kein 'e' am Ende geschrieben...
Nun läuft es wie erwartet, thx!
Die Doku werd ich mir aber auch mal anschauen...