FBaha Unterstützung für Comet Dect Heizkörpertermostat

Begonnen von Netsurfer, 25 September 2015, 13:19:14

Vorheriges Thema - Nächstes Thema

errazzor

Als Ergänzung von mir:

Das Comet verhält sich in der Tat etwas seltsam.

Ich habe es zwar erfolgreich in FHEM eingebunden. Die Temperatur wird exakt alle 15 Minuten ausgelesen, das entspricht der Zeitspanne, in welcher Comet und Fritzbox mit einander reden (laut Anleitung).

Allerdings ist es so, dass das Comet nicht mehr angezeigt wird, wenn man beim FBAHA ein "get devList" ausführt. Da tauchen in 99,9% der Versuche nur die DECT-200 und der DECT-Repeater auf.

Ganz selten ist es so, dass auch das Comet (18) angezeigt wird. Ich *vermute*, dass es nur angezeigt wird, wenn es gerade mit der FB geredet hat.

Ein "get devInfo" auf das Comet funktioniert auch nur ganz selten, wie bereits erwähnt, vermutlich nur dann wenn es gerade aktiv mit der FB gefunkt hat.

Vielleicht helfen diese Infos.

grappa24

Hab mir jetzt auch ein Ventil für Testzwecke bestellt, bin auch an einer Anbindung in FHEM interessiert ... ;)
Gebäudesicherheit/-komfort, PV-Prognose/Verbrauchssteuerung, Heizungssteuerung, Multimedia, ...
KNX, FS20, HM, HUE, Tradfri, Shellies, KLF200, Netatmo, Nuki, SolarForecast, HEOS, Alexa-FHEM, ...
FHEM 6.4, 2 x RasPi 3B+, Debian Bullseye

rudolfkoenig

Schaut traurig aus: AVM schreibt, dass die von FHEM z.Zt verwendete "Message basierte" Schnittstelle eingestellt wird (grmpfl: ich hab sie auf deren Empfehlung hin verwendet/implementiert). Stattdessen gibt es die HTML Schnittstelle, und irgendwann eine TR064 basierte. Kann mir jemand ein Link fuer eine verstaendliche TR064 Einfuehrung schicken?

In beiden Faellen vermisse ich noch die Moeglichkeit der Benachrichtigung, d.h. FHEM muesste pollen. Da bei den bisherigen Geraeten eine schnelle Benachrichtigung nicht im Vordergrund steht, mag das verschmerzbar sein, elegant ist es aber sicher nicht.

Wie auch immer, FBAHA und FBDECT muessen komplett umgebaut werden, sinnvollerweise unter neuen Namen.
Vorschlaege?

rudolfkoenig

Zwischenstand:
- habe ein Comet an einem FB7490, 6.36 (Beta) angeschlossen.
- get fbaha devInfo liefert nur Daten ueber die DECT200, nicht ueber das Comet.
- das Comet meldete einmal ein tempAdjust 0.0. Selbst das stimmt nicht, es sollte -5.0 sein.
- das HTTP Interface scheint zuverlaessiger zu sein als die aktuell verwendete Message basierte: getdevicelistinfos liefert zuverlaessig alle relevanten Daten. Haken an dem Interface: man muss regelmaessig pollen, und ich weiss noch nicht, wann die sessionId ablaeuft, bzw. wie ich den Ablauf erkennen soll. Die in der Doku erwaehnten 10 Minuten stimmen schon mal nicht.

Kurzes HOWTO, fuer Bastler:
# SessionId besorgen:
{ use FritzBoxUtils;; FB_doCheckPW("fritz.box", "benutzername", "passwort") }
# Rueckgabewert merken, SID damit ersetzen
{ GetFileFromURL("http://fritz.box/webservices/homeautoswitch.lua?sid=SID&switchcmd=getdevicelistinfos") }
# Output als file.xml speichern, und im Browser oeffnen, identifier merken, und AID damit ersetzen.
# Temperatur auf 19 Grad setzen: 39 = 19*2
{ GetFileFromURL("http://fritz.box/webservices/homeautoswitch.lua?sid=SID&ain=AID&switchcmd=sethkrtsoll&param=39") }


Ich muss noch ueberlegen, wie und wann es hier weitergeht.

fr00sch

Hallo,
ich will mich etwas mit dem Thema in der nächsten Zeit beschäftigen.
- ich habe ein Comet an eine FB7390 mit der Firmwareversion 06.36-32037 BETA angeschlossen
- bei mir werden ebenfalls die Temperaturen zuverlässig angezeigt.
Hat sich noch jemand weiter mit dem Thema beschäftigt?
Grüße
RPi3B+ als FHEM mit VCCU,ZWave,Signalduino,MQTT
RPi4B als CCU3
QNAP TS451p(mit Docker) als Messwerte-Datenbank

fr00sch

Hallo nochmal,

ich habe den Code von rudolfkoenig so verwendet, um eine Änderung über die Oberfläche zu erzeugen.
Dazu muss man zuerst auf dem von Ihm beschriebenen manuellen Weg die AIN des Comet DECT herausfinden. Diese kann man dann anstelle des XXX eintragen in dem Code.

define Heizkoerper dummy
attr Heizkoerper event-on-change-reading state
attr Heizkoerper setList state:slider,8,0.5,28
attr Heizkoerper webCmd state
attr Heizkoerper widgetOverride state:knob,min:8,max:28,step:0.5,linecap:round,angleOffset:-125,angleArc:250

define HeizkoerperNotify notify Heizkoerper.* {\
use FritzBoxUtils;;\
my $sid   = FB_doCheckPW("fritz.box", "Nutzer", "EinPasswortDasAuchMalImLogAuftauchenDarf");;\
my $temp  = ReadingsVal("Heizkoerper", "state", "");;\
my $temp2 = int($temp)*2;;\
GetFileFromURL("http://fritz.box/webservices/homeautoswitch.lua?sid=$sid&ain=XXX&switchcmd=sethkrtsoll&param=$temp2");;\
}

Auch nach einem Neustart der FB funktioniert der Code noch einwandfrei, wenn sich nun aber die AIN ändert, wird es etwas schwieriger werden.

Grüße
RPi3B+ als FHEM mit VCCU,ZWave,Signalduino,MQTT
RPi4B als CCU3
QNAP TS451p(mit Docker) als Messwerte-Datenbank

rudolfkoenig

Soweit ich es verstanden habe, aendert sich ein AIN nicht.

fr00sch

#22
Ich habe den Code trotzdem nochmal erweitert  :D , das hat den Vorteil, das der Code direkt eingesetzt werden kann und man keine Untersuchung der AIN vorher machen muss.
Der Code in der Config-File muss geändert werden zu:

define Heizkoerper dummy
attr Heizkoerper event-on-change-reading state
attr Heizkoerper setList state:slider,8,0.5,28
attr Heizkoerper webCmd state
attr Heizkoerper widgetOverride state:knob,min:8,max:28,step:0.5,linecap:round,angleOffset:-125,angleArc:250

define HeizkoerperNotify notify Heizkoerper.* {\
setCometDect("FBDECT_fb1_17");;\
}

Wobei "FBDECT_fb1_17" abhängt von dem FBDECT-Devicenamen ab:

define FBDECT_fb1_17 FBDECT fb1:17 switch
attr FBDECT_fb1_17 IODev fb1
attr FBDECT_fb1_17 alias Heizkörper
attr FBDECT_fb1_17 event-min-interval temperature:120


Die Funktion "setCometDect()" kommt in die 99_myUtils.pm und sieht wie folgt aus:

sub setCometDect($) {
  my ($nameFBDECT) = @_;
 
  use FritzBoxUtils;
  use XML::Simple;
  #SID ermitteln
  my $sid   = FB_doCheckPW("fritz.box", "Nutzer", "EinPasswortDasAuchMalImLogAuftauchenDarf");
  #Daten auslesen und in XML-Form bringen
  $data = GetFileFromURL("http://fritz.box/webservices/homeautoswitch.lua?sid=$sid&switchcmd=getdevicelistinfos");
  my $cust_xml = XMLin($data, forcearray=>1);
  # ID des zu verändernden FBDECT-Devices ermitteln
  my $FBDECT_id  = InternalVal($nameFBDECT, "id", "");
   
  # Alle Devices der XML-Daten durchgehen
  for my $devices (@{$cust_xml->{device}}) {
#Productname und id ermitteln
my $productname =  $devices->{productname};
my $XML_id = $devices->{id};
# und kontrollieren ob diese Stimmen
if ($productname eq "Comet DECT" and $XML_id eq $FBDECT_id) {
  # die ain ermitteln und die Leerzeichen entfernen
  my $ain = $devices->{identifier};
  $ain =~ s/[a-z]| //gi;
  # die einzustellenden Temperatur ermitteln aus dem dummy
  my $temp  = ReadingsVal("Heizkoerper", "state", "");
  my $temp2 = sprintf("%.1f", $temp)*2;
  # den HTTP-Befehl erstellen und absenden
  $url = "http://fritz.box/webservices/homeautoswitch.lua?sid=$sid&ain=$ain&switchcmd=sethkrtsoll&param=$temp2";
  GetFileFromURL($url);
}
  }
}


Damit funktioniert die Einstellung ziemlich gut und wenn ich mich besser mit Perl auskennen würde, könnte ich auch ein Modul erstellen, aber ich arbeite das erstmal damit. :(
Ich habe mich versucht in die 10_FBDECT.pm einzuarbeiten, aber bis jetzt bin ich ratlos.

Ich hoffe ich kann damit jemandem helfen, der schon an einem Modul gearbeitet hat.
Grüße
RPi3B+ als FHEM mit VCCU,ZWave,Signalduino,MQTT
RPi4B als CCU3
QNAP TS451p(mit Docker) als Messwerte-Datenbank

fred_feuerstein

Hallo,

ich bin noch recht neu in der Materie, habe aber dank Forum, Wiki, etc. schon einiges mit dem Raspi mit RazBerry Modul zum Laufen gebracht. Einige Fibaro Rolladen-Aktoren, Steckdosen, Philips HUE Lampen, FritzDect Steckdosen etc.

Nun, da ich neben den FritzDect Steckdosen auch 2 Comet Dect Heizungsregler habe, wollte ich diese natürlich auch gerne korrekt einbinden.

Dazu habe ich also versucht, die Funktion setCometDect() von oben in meine bisher noch ungenutzte und bis auf defaulteinträge leere 99_myUtils.pm einzufügen.
Dabei erhalte ich beim Speichern die Fehlermeldung:

ERROR:
Global symbol "$data" requires explicit package name at ./FHEM/99_myUtils.pm line 30. Global symbol "$data" requires explicit package name at ./FHEM/99_myUtils.pm line 31. Global symbol "$url" requires explicit package name at ./FHEM/99_myUtils.pm line 49. Global symbol "$url" requires explicit package name at ./FHEM/99_myUtils.pm line 50.


Was muss ich da tun, um das zu beheben?

Dann noch die Frage bzgl. Login bei der Fritzbox. Aktuell benötige ich dort nur ein Passwort. In der Funktion wird aber User und Passwort abgefragt. Wie muss ich das eintragen, wenn ich nur Passwort benötige?

Ich denke, bevor ich diese Grundprobleme nicht gelöst habe, brauche ich auch noch nicht mit define ... weitermachen.

Wäre schön, wenn mir da jemand behilflich sein könnte.

Gruß,
Fred
Gruß, Fred

NEU: FHEM auf Raspberry PI 5, OS: Bookworm, mit Z-Wave RaZberry-Modul, 868CUL (WMBUS), LaCrosseCUL (Temp) und knapp 300 Devices aller Art
ALT: FHEM auf Raspberry PI 3B+ im 7Zoll TouchDisplay Gehäuse, OS: Bullseye, mit Z-Wave RaZberry-Modul, 868CUL (WMBUS), LaCrosseCUL (Temp)

rudolfkoenig

ZitatWas muss ich da tun, um das zu beheben?
Vmtl. my vor dem ersten $data schreiben.

ZitatWie muss ich das eintragen, wenn ich nur Passwort benötige?
Vermutlich muss dafuer die FB auf Mehrbenutzer (d.h. Benutzername/Passwort) umgestellt werden.
Bin aber nicht der Experte auf diesem Gebiet.

tupol

Übrigens kann man schon die DECT-Geräteinfos über TR064 auslesen. Z. B. mit:
get Fritzbox tr064Command X_AVM-DE_Homeauto:1 x_homeauto GetGenericDeviceInfos NewIndex 0

raspklaus

Hallo,

bei mir kommt die Meldung:

Global symbol "$url" requires explicit package name at ./FHEM/99_myUtils.pm line 283.

da hilft aber kein my

fr00sch

Hallo,
@tupol: der Befehl "tr064Command" exisitiert bei mir gar nicht und kann nicht ausgeführt werden? :-[  Mach ich irgendetwas falsch, wenn ich den testweise oben in der Befehlszeile eintrage?

@raspklaus: das ist für mich nicht ersichtlich, weil der Fehler eigentlich auf ein fehlendes "my" hindeutet laut Netz. Hast du noch andere Textstellen in der Datei, du könntest versuchen diese auszukommentieren, um zu schauen, ob es irgendeine Interaktion gibt.

Grüße
RPi3B+ als FHEM mit VCCU,ZWave,Signalduino,MQTT
RPi4B als CCU3
QNAP TS451p(mit Docker) als Messwerte-Datenbank

Tyllux

#28
@fr00sch,

damit du nicht nur Readings der FB per TR-064 auslesen, sondern via FHEM auch aktiv auf diese Programmier-Schnittstelle zugreifen kannst, muss dies im Fritzbox-Modul explizit aktiviert werden:

attr <device> allowTR064Command 1

Dann könnte es klappen.  ;)

Siehe auch http://www.fhemwiki.de/wiki/FRITZBOX

rudolfkoenig

In der Zwischenzeit gibt es das FBAHAHTTP Modul, darueber sollte man das Comet DECT ansteuern koennen, ich kann es jedenfalls.